From eb337405de436db6e4a7a4081d8aa84c407a256a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 Jul 2019 11:14:14 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 4 ++++ server/gameserver/human.cc | 5 +++++ server/gameserver/human.h | 1 + server/gameserver/obstacle.cc | 1 + 4 files changed, 11 insertions(+) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 666e51e..840816f 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -64,6 +64,7 @@ void Bullet::OnHit(std::set& objects) float def = hum->ability.def + hum->ability.def_add; float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K); player->stats.damage_amount_out += finaly_dmg; + hum->OnHit(); if (!hum->HasBuffEffect(BET_Invincible)) { hum->DecHP(finaly_dmg, player->entity_uniid, player->name, meta->i->id()); } @@ -204,6 +205,7 @@ 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->OnHit(); if (!hum->HasBuffEffect(BET_Invincible)) { hum->DecHP(obstacle->meta->i->damage(), sender->entity_uniid, sender->name, 0); } @@ -246,6 +248,7 @@ void Bullet::ProcMissible(const a8::XParams& param) if (target && !target->dead) { if (bullet_meta->i->equip_subtype() == BulletType_Trace) { if (src_pos.Distance(target->pos) < bullet_meta->i->range()) { + target->OnHit(); if (!target->HasBuffEffect(BET_Invincible)) { target->DecHP(bullet_meta->i->atk(), sender->entity_uniid, @@ -255,6 +258,7 @@ void Bullet::ProcMissible(const a8::XParams& param) } } } else { + target->OnHit(); if (!target->HasBuffEffect(BET_Invincible)) { target->DecHP(bullet_meta->i->atk(), sender->entity_uniid, diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 6543ef8..58cb7a7 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1397,6 +1397,11 @@ void Human::OnAttack() GrassTempShow(); } +void Human::OnHit() +{ + GrassTempShow(); +} + void Human::OnEnterGrass() { if (a8::HasBitFlag(status, HS_InGrass)) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index a8d9658..0a4a816 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -199,6 +199,7 @@ class Human : public Entity void RecalcBuffAttr(); void ProcBuffEffect(Buff* buff); void OnAttack(); + void OnHit(); void OnEnterGrass(); void OnLeaveGrass(); void CheckGrass(); diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 22f1865..d7dbff4 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -207,6 +207,7 @@ void Obstacle::Explosion() float dmg = meta->i->damage(); float def = hum->ability.def + hum->ability.def_add; float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K); + hum->OnHit(); if (!hum->HasBuffEffect(BET_Invincible)) { hum->DecHP(finaly_dmg, VP_Mine, "地雷", VW_Mine); }