This commit is contained in:
aozhiwei 2022-11-10 19:59:08 +08:00
parent 80507ffd22
commit 1fa5c3c4f6
6 changed files with 16 additions and 7 deletions

View File

@ -434,7 +434,7 @@ void Car::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
); );
room->NotifyUiUpdate(); room->NotifyUiUpdate();
room->frame_event.AddDead(GetWeakPtrRef(), 0); room->frame_event.AddDead(GetWeakPtrRef(), 0);
GetTrigger()->Die(); GetTrigger()->Die(killer_id, weapon_id);
} }
void Car::GetAabbBox(AabbCollider& aabb_box) void Car::GetAabbBox(AabbCollider& aabb_box)

View File

@ -286,7 +286,7 @@ void Hero::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
room->pve_data.OnBeKill(this); room->pve_data.OnBeKill(this);
room->NotifyUiUpdate(); room->NotifyUiUpdate();
} }
GetTrigger()->Die(); GetTrigger()->Die(killer_id, weapon_id);
} }
void Hero::OnAddToTargetPartObject(Entity* target) void Hero::OnAddToTargetPartObject(Entity* target)

View File

@ -4395,7 +4395,7 @@ void Human::InternalBeKill(int killer_id, const std::string& killer_name, int we
downed = false; downed = false;
SetHP(0.0f); SetHP(0.0f);
dead_frameno = room->GetFrameNo(); dead_frameno = room->GetFrameNo();
GetTrigger()->Die(); GetTrigger()->Die(killer_id, weapon_id);
OnDie(); OnDie();
KillMgr::Instance()->OnHumanDead(this, &info); KillMgr::Instance()->OnHumanDead(this, &info);
room->frame_event.AddDead(GetWeakPtrRef(), 0); room->frame_event.AddDead(GetWeakPtrRef(), 0);

View File

@ -471,6 +471,7 @@ void Skill::ProcSWZB()
kPreDieEvent, kPreDieEvent,
[this] (const std::vector<std::any>& params) [this] (const std::vector<std::any>& params)
{ {
int killer_id = std::any_cast<int>(params.at(0));
CreatureWeakPtr sender = owner->GetWeakPtrRef(); CreatureWeakPtr sender = owner->GetWeakPtrRef();
MetaData::Skill* skill_meta = meta; MetaData::Skill* skill_meta = meta;
a8::Vec2 center = owner->GetPos(); a8::Vec2 center = owner->GetPos();
@ -516,7 +517,8 @@ void Skill::ProcSWZB()
SkillHelper::GetSwzbEffect(meta), SkillHelper::GetSwzbEffect(meta),
0 0
); );
if (!meta->raw_phases.empty()) { Entity* killer = owner->room->GetEntityByUniId(killer_id);
if (killer && !meta->raw_phases.empty()) {
owner->over_delay_time = meta->raw_phases.at(0).param1; owner->over_delay_time = meta->raw_phases.at(0).param1;
} }
#ifdef DEBUG #ifdef DEBUG
@ -537,6 +539,13 @@ void Skill::ProcSWZB()
#endif #endif
} }
); );
owner->GetTrigger()->AddListener
(
kDieEvent,
[this] (const std::vector<std::any>& params)
{
});
} }
void Skill::ProcCMXD() void Skill::ProcCMXD()

View File

@ -237,7 +237,7 @@ void Trigger::PreDie(int killer_id, int weapon_id)
DispatchEvent(kPreDieEvent, {killer_id, weapon_id}); DispatchEvent(kPreDieEvent, {killer_id, weapon_id});
} }
void Trigger::Die() void Trigger::Die(int killer_id, int weapon_id)
{ {
{ {
std::vector<int> list; std::vector<int> list;
@ -254,7 +254,7 @@ void Trigger::Die()
} }
} }
TriggeCondBuffAll(kCondBuffDid); TriggeCondBuffAll(kCondBuffDid);
DispatchEvent(kDieEvent, {}); DispatchEvent(kDieEvent, {killer_id, weapon_id});
} }
void Trigger::TraverseCondBuffs(int cond, std::function<void (Buff*, bool&)> func) void Trigger::TraverseCondBuffs(int cond, std::function<void (Buff*, bool&)> func)

View File

@ -64,7 +64,7 @@ public:
void HpChg(); void HpChg();
void ReceiveDmg(); void ReceiveDmg();
void PreDie(int killer_id, int weapon_id); void PreDie(int killer_id, int weapon_id);
void Die(); void Die(int killer_id, int weapon_id);
void ActiveBuff(MetaData::Buff* buff_meta); void ActiveBuff(MetaData::Buff* buff_meta);
void DeactiveBuff(MetaData::Buff* buff_meta); void DeactiveBuff(MetaData::Buff* buff_meta);
void BulletHit(IBullet* bullet, Creature* target); void BulletHit(IBullet* bullet, Creature* target);