1
This commit is contained in:
parent
d47a9f9f20
commit
6ed7e738b0
@ -217,10 +217,12 @@ void CondAddBuff::ProcDisengageBattle()
|
||||
owner->room->xtimer.ResetTimer(timer);
|
||||
};
|
||||
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
kReceiveDmgEvent,
|
||||
cb
|
||||
handlers_.push_back
|
||||
(owner->GetTrigger()->AddListener
|
||||
(
|
||||
kReceiveDmgEvent,
|
||||
cb
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@ -287,25 +289,80 @@ void CondAddBuff::ProcLimitTimeKillTarget()
|
||||
}
|
||||
}
|
||||
});
|
||||
handlers_.push_back(handler);
|
||||
context->watch_targets[target->GetUniId()] = std::make_tuple(timer_wp, handler);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
kAttackTargetEvent,
|
||||
cb
|
||||
handlers_.push_back
|
||||
(owner->GetTrigger()->AddListener
|
||||
(
|
||||
kAttackTargetEvent,
|
||||
cb
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
void CondAddBuff::ProcReload()
|
||||
{
|
||||
auto context = A8_MAKE_ANON_STRUCT_SHARED
|
||||
(
|
||||
std::vector<int> buffs;
|
||||
);
|
||||
|
||||
handlers_.push_back
|
||||
(owner->GetTrigger()->AddListener
|
||||
(
|
||||
kStartReloadEvent,
|
||||
[this, context] (const a8::Args& args) mutable
|
||||
{
|
||||
if (!owner->dead) {
|
||||
int buff_uniid = owner->TryAddBuff(GetCaster().Get(),
|
||||
meta->_int_buff_param4,
|
||||
skill_meta,
|
||||
nullptr,
|
||||
buff_vars);
|
||||
if (buff_uniid > 0) {
|
||||
context->buffs.push_back(buff_uniid);
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
handlers_.push_back
|
||||
(owner->GetTrigger()->AddListener
|
||||
(
|
||||
kEndReloadEvent,
|
||||
[this, context] (const a8::Args& args) mutable
|
||||
{
|
||||
for (int buff_uniid : context->buffs) {
|
||||
owner->RemoveBuffByUniId(buff_uniid);
|
||||
}
|
||||
context->buffs.clear();
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
void CondAddBuff::ProcShot()
|
||||
{
|
||||
|
||||
handlers_.push_back
|
||||
(owner->GetTrigger()->AddListener
|
||||
(
|
||||
kShotEvent,
|
||||
[this] (const a8::Args& args) mutable
|
||||
{
|
||||
if (!owner->dead) {
|
||||
owner->TryAddBuff(GetCaster().Get(),
|
||||
meta->_int_buff_param4,
|
||||
skill_meta,
|
||||
nullptr,
|
||||
buff_vars);
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -1087,6 +1087,9 @@ void Creature::StartAction(ActionType_e action_type,
|
||||
this->action_target_id == target_id) {
|
||||
return;
|
||||
}
|
||||
if (action_type == AT_Reload) {
|
||||
GetTrigger()->StartReload();
|
||||
}
|
||||
action_duration = std::max(0, action_duration);
|
||||
this->action_type = action_type;
|
||||
this->action_frameno = room->GetFrameNo();
|
||||
@ -1114,6 +1117,9 @@ void Creature::CancelAction()
|
||||
if (action_type == AT_Rescue) {
|
||||
RemoveBuffByEffectId(kBET_InRescue);
|
||||
}
|
||||
if (action_type == AT_Reload) {
|
||||
GetTrigger()->EndReload();
|
||||
}
|
||||
ResetAction();
|
||||
}
|
||||
|
||||
|
@ -1750,6 +1750,7 @@ void Human::ProcReloadAction()
|
||||
}
|
||||
|
||||
}
|
||||
GetTrigger()->EndReload();
|
||||
}
|
||||
|
||||
void Human::ProcUseItemAction()
|
||||
|
Loading…
x
Reference in New Issue
Block a user