From 67af9c6066de1a258f7f6a50e05d7d90d142abf3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 30 Mar 2023 12:51:26 +0800 Subject: [PATCH] 1 --- server/gameserver/car.cc | 32 ++++++++++++++++--- server/gameserver/hero.cc | 32 ++++++++++++++++--- server/gameserver/human.cc | 63 ++++++++++++++++++++++++++++++++------ 3 files changed, 107 insertions(+), 20 deletions(-) diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index 52a53e74..fb1172e9 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -21,6 +21,7 @@ #include "battledatacontext.h" #include "buff.h" #include "stats.h" +#include "hero.h" #include "mt/Hero.h" #include "mt/Equip.h" @@ -300,11 +301,32 @@ void Car::OnBulletHit(IBullet* bullet) if (bullet->GetSender().Get() && !bullet->GetSender().Get()->dead && dmg_out > 0.0f && - !bullet->GetSkillMeta() && - bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct() > 0.0f) { - float recover_hp = dmg_out * - bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct(); - bullet->GetSender().Get()->AddHp(recover_hp); + !bullet->GetSkillMeta() + ) { + { + if (bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct() > 0.0f) { + float recover_hp = dmg_out * + bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct(); + if (recover_hp > 0.0f) { + bullet->GetSender().Get()->AddHp(recover_hp); + } + } + } + { + if (bullet->GetSender().Get()->IsEntityType(ET_Hero)) { + Hero* hero = (Hero*)bullet->GetSender().Get(); + if (hero->GetAbility()->GetSwitchTimes(kEnableDmgForwardTimes) > 0 && + hero->master.Get() && + !hero->master.Get()->dead && + hero->master.Get()->GetBattleContext()->GetBrainLifePct() > 0.0f){ + float recover_hp = dmg_out * + hero->master.Get()->GetBattleContext()->GetBrainLifePct(); + if (recover_hp > 0.0f) { + hero->master.Get()->AddHp(recover_hp); + } + } + } + } } } if (bullet->GetBulletMeta()->_buff_meta) { diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index cb70b014..f4ae753d 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -19,6 +19,7 @@ #include "stats.h" #include "hero_agent.h" #include "movement.h" +#include "ability.h" #include "f8/btmgr.h" @@ -183,11 +184,32 @@ void Hero::OnBulletHit(IBullet* bullet) if (bullet->GetSender().Get() && !bullet->GetSender().Get()->dead && dmg_out > 0.0f && - !bullet->GetSkillMeta() && - bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct() > 0.0f) { - float recover_hp = dmg_out * - bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct(); - bullet->GetSender().Get()->AddHp(recover_hp); + !bullet->GetSkillMeta() + ) { + { + if (bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct() > 0.0f) { + float recover_hp = dmg_out * + bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct(); + if (recover_hp > 0.0f) { + bullet->GetSender().Get()->AddHp(recover_hp); + } + } + } + { + if (bullet->GetSender().Get()->IsEntityType(ET_Hero)) { + Hero* hero = (Hero*)bullet->GetSender().Get(); + if (hero->GetAbility()->GetSwitchTimes(kEnableDmgForwardTimes) > 0 && + hero->master.Get() && + !hero->master.Get()->dead && + hero->master.Get()->GetBattleContext()->GetBrainLifePct() > 0.0f){ + float recover_hp = dmg_out * + hero->master.Get()->GetBattleContext()->GetBrainLifePct(); + if (recover_hp > 0.0f) { + hero->master.Get()->AddHp(recover_hp); + } + } + } + } } } } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 4faebe8d..f75aad85 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -41,6 +41,8 @@ #include "trigger.h" #include "ability.h" #include "stats.h" +#include "hero.h" + #include "buff/sprint.h" #include "mt/Param.h" @@ -2143,11 +2145,32 @@ void Human::OnBulletHit(IBullet* bullet) if (bullet->GetSender().Get() && !bullet->GetSender().Get()->dead && dmg_out > 0.0f && - !bullet->GetSkillMeta() && - bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct() > 0.0f) { - float recover_hp = dmg_out * - bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct(); - bullet->GetSender().Get()->AddHp(recover_hp); + !bullet->GetSkillMeta() + ) { + { + if (bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct() > 0.0f) { + float recover_hp = dmg_out * + bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct(); + if (recover_hp > 0.0f) { + bullet->GetSender().Get()->AddHp(recover_hp); + } + } + } + { + if (bullet->GetSender().Get()->IsEntityType(ET_Hero)) { + Hero* hero = (Hero*)bullet->GetSender().Get(); + if (hero->GetAbility()->GetSwitchTimes(kEnableDmgForwardTimes) > 0 && + hero->master.Get() && + !hero->master.Get()->dead && + hero->master.Get()->GetBattleContext()->GetBrainLifePct() > 0.0f){ + float recover_hp = dmg_out * + hero->master.Get()->GetBattleContext()->GetBrainLifePct(); + if (recover_hp > 0.0f) { + hero->master.Get()->AddHp(recover_hp); + } + } + } + } } } } else { @@ -2168,11 +2191,31 @@ void Human::OnBulletHit(IBullet* bullet) if (bullet->GetSender().Get() && !bullet->GetSender().Get()->dead && dmg_out > 0.0f && - !bullet->GetSkillMeta() && - bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct() > 0.0f) { - float recover_hp = dmg_out * - bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct(); - bullet->GetSender().Get()->AddHp(recover_hp); + !bullet->GetSkillMeta()) { + { + if (bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct() > 0.0f) { + float recover_hp = dmg_out * + bullet->GetSender().Get()->GetBattleContext()->GetBrainLifePct(); + if (recover_hp > 0.0f) { + bullet->GetSender().Get()->AddHp(recover_hp); + } + } + } + { + if (bullet->GetSender().Get()->IsEntityType(ET_Hero)) { + Hero* hero = (Hero*)bullet->GetSender().Get(); + if (hero->GetAbility()->GetSwitchTimes(kEnableDmgForwardTimes) > 0 && + hero->master.Get() && + !hero->master.Get()->dead && + hero->master.Get()->GetBattleContext()->GetBrainLifePct() > 0.0f){ + float recover_hp = dmg_out * + hero->master.Get()->GetBattleContext()->GetBrainLifePct(); + if (recover_hp > 0.0f) { + hero->master.Get()->AddHp(recover_hp); + } + } + } + } } } }