This commit is contained in:
aozhiwei 2019-07-15 13:23:42 +08:00
parent b8362a8754
commit 855d90204f
3 changed files with 32 additions and 36 deletions

View File

@ -64,15 +64,9 @@ void Bullet::OnHit(std::set<Entity*>& objects)
float def = hum->def + hum->ability.def_add;
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
player->stats.damage_amount_out += finaly_dmg;
hum->DecHP(finaly_dmg, player->entity_uniid, player->name, meta->i->id());
#if 0
if (a8::HasBitFlag(hum->status, HS_ReflectDamage) && hum->skill_meta) {
float reflect_dmg = finaly_dmg * hum->skill_meta->value1;
if (reflect_dmg > 1.0f) {
player->DecHP(reflect_dmg, hum->entity_uniid, hum->name, gun_meta->i->id());
}
if (!hum->HasBuffEffect(BET_Invincible)) {
hum->DecHP(finaly_dmg, player->entity_uniid, player->name, meta->i->id());
}
#endif
}
}
break;
@ -206,7 +200,9 @@ void Bullet::PostAttack()
for (auto& grid : grid_list) {
for (Human* hum: grid->human_list) {
if (hum->pos.Distance(obstacle->pos) < obstacle->meta->i->damage_dia()) {
hum->DecHP(obstacle->meta->i->damage(), sender->entity_uniid, sender->name, 0);
if (!hum->HasBuffEffect(BET_Invincible)) {
hum->DecHP(obstacle->meta->i->damage(), sender->entity_uniid, sender->name, 0);
}
}
}
}

View File

@ -1921,7 +1921,9 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase)
for (auto& cell : grid_list) {
for (Human* hum : cell->human_list) {
if (hum->team_id != team_id && hum->pos.Distance(skill_target_pos) < hum->GetRadius()) {
hum->DecHP(phase->param1.GetDouble(), entity_uniid, name, 0);
if (!hum->HasBuffEffect(BET_Invincible)) {
hum->DecHP(phase->param1.GetDouble(), entity_uniid, name, 0);
}
a8::Vec2 pull_dir = pos - old_pos;
if (std::abs(pull_dir.x) > FLT_EPSILON ||
std::abs(pull_dir.y) > FLT_EPSILON) {

View File

@ -204,38 +204,36 @@ void Obstacle::Explosion()
case ET_Player:
{
Human* hum = (Human*)target;
#if 1
if (!hum->dead) {
#else
if (!hum->dead && (hum->team_id == 0 || hum->team_id != player->team_id)) {
#endif
float dmg = meta->i->damage();
float def = hum->def + hum->ability.def_add;
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
float dmg = meta->i->damage();
float def = hum->def + hum->ability.def_add;
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
if (!hum->HasBuffEffect(BET_Invincible)) {
hum->DecHP(finaly_dmg, VP_Mine, "地雷", VW_Mine);
}
}
break;
case ET_Obstacle:
{
Obstacle* obstacle = (Obstacle*)target;
if (!obstacle->dead && obstacle->meta->i->attack_type() == 1) {
float dmg = meta->i->damage();
float def = 0;
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
}
break;
case ET_Obstacle:
{
Obstacle* obstacle = (Obstacle*)target;
if (!obstacle->dead && obstacle->meta->i->attack_type() == 1) {
float dmg = meta->i->damage();
float def = 0;
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
obstacle->health = std::max(0.0f, obstacle->health - finaly_dmg);
obstacle->dead = obstacle->health <= 0.01f;
obstacle->dead_frameno = room->frame_no;
if (obstacle->dead) {
room->ScatterDrop(obstacle->pos, obstacle->meta->i->drop());
}
obstacle->BroadcastFullState();
}
obstacle->health = std::max(0.0f, obstacle->health - finaly_dmg);
obstacle->dead = obstacle->health <= 0.01f;
obstacle->dead_frameno = room->frame_no;
if (obstacle->dead) {
room->ScatterDrop(obstacle->pos, obstacle->meta->i->drop());
}
break;
default:
break;
obstacle->BroadcastFullState();
}
}
break;
default:
break;
}
}