1
This commit is contained in:
parent
2594ab3610
commit
deb8ec286d
@ -190,6 +190,11 @@ void CallFuncBuff::Deactivate()
|
|||||||
owner->GetCurrWeapon()->buff_id = 0;
|
owner->GetCurrWeapon()->buff_id = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case BuffCallFunc_e::kAddEnergyShield:
|
||||||
|
{
|
||||||
|
owner->ClearEnergyShield();
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -333,7 +338,26 @@ void CallFuncBuff::ProcFlashMove()
|
|||||||
|
|
||||||
void CallFuncBuff::ProcAddEnergyShield()
|
void CallFuncBuff::ProcAddEnergyShield()
|
||||||
{
|
{
|
||||||
owner->AddEnergyShield(hold_param2_);
|
if (!owner->dead && !owner->downed) {
|
||||||
|
if (owner->energy_shield > 0) {
|
||||||
|
is_valid_ = false;
|
||||||
|
owner->GetTrigger()->UpdateEnergyShield(hold_param2_, meta->GetDurationTime(this) * FRAME_RATE_MS);
|
||||||
|
} else {
|
||||||
|
owner->AddEnergyShield(hold_param2_);
|
||||||
|
event_handlers_.push_back(owner->GetTrigger()->AddListener
|
||||||
|
(
|
||||||
|
kUpdateEnergyShieldEvent,
|
||||||
|
[this] (const a8::Args& args) mutable
|
||||||
|
{
|
||||||
|
}));
|
||||||
|
event_handlers_.push_back(owner->GetTrigger()->AddListener
|
||||||
|
(
|
||||||
|
kDestoryEnergyShieldEvent,
|
||||||
|
[this] (const a8::Args& args) mutable
|
||||||
|
{
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallFuncBuff::ProcAddHp()
|
void CallFuncBuff::ProcAddHp()
|
||||||
|
@ -261,6 +261,7 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string killer_name, in
|
|||||||
energy_shield,
|
energy_shield,
|
||||||
max_energy_shield,
|
max_energy_shield,
|
||||||
true);
|
true);
|
||||||
|
GetTrigger()->ReceiveDmg();
|
||||||
} else {
|
} else {
|
||||||
float old_health = GetHP();
|
float old_health = GetHP();
|
||||||
float new_health = std::max(0.0f, GetHP() - dec_hp);
|
float new_health = std::max(0.0f, GetHP() - dec_hp);
|
||||||
|
@ -574,3 +574,13 @@ void Trigger::EndReload()
|
|||||||
{
|
{
|
||||||
DispatchEvent(kEndReloadEvent, {});
|
DispatchEvent(kEndReloadEvent, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Trigger::UpdateEnergyShield(int value, int new_time)
|
||||||
|
{
|
||||||
|
DispatchEvent(kUpdateEnergyShieldEvent, {value, new_time});
|
||||||
|
}
|
||||||
|
|
||||||
|
void Trigger::DestoryEnergyShield()
|
||||||
|
{
|
||||||
|
DispatchEvent(kDestoryEnergyShieldEvent, {});
|
||||||
|
}
|
||||||
|
@ -46,7 +46,9 @@ enum EventId_e
|
|||||||
kAttackTargetEvent,
|
kAttackTargetEvent,
|
||||||
kStartReloadEvent,
|
kStartReloadEvent,
|
||||||
kEndReloadEvent,
|
kEndReloadEvent,
|
||||||
kDownedEvent
|
kDownedEvent,
|
||||||
|
kUpdateEnergyShieldEvent,
|
||||||
|
kDestoryEnergyShieldEvent
|
||||||
};
|
};
|
||||||
|
|
||||||
class Weapon;
|
class Weapon;
|
||||||
@ -92,6 +94,8 @@ public:
|
|||||||
void Downed();
|
void Downed();
|
||||||
void StartReload();
|
void StartReload();
|
||||||
void EndReload();
|
void EndReload();
|
||||||
|
void UpdateEnergyShield(int value, int new_time);
|
||||||
|
void DestoryEnergyShield();
|
||||||
|
|
||||||
std::weak_ptr<EventHandlerPtr> AddListener(int event_id, a8::CommonCbProc cb);
|
std::weak_ptr<EventHandlerPtr> AddListener(int event_id, a8::CommonCbProc cb);
|
||||||
void RemoveEventHandler(std::weak_ptr<EventHandlerPtr> handler_ptr);
|
void RemoveEventHandler(std::weak_ptr<EventHandlerPtr> handler_ptr);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user