This commit is contained in:
aozhiwei 2022-10-12 11:22:25 +08:00
parent ee4446d406
commit 186a17e594
4 changed files with 12 additions and 4 deletions

View File

@ -1114,7 +1114,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
{ {
Entity* killer = room->GetEntityByUniId(killer_id); Entity* killer = room->GetEntityByUniId(killer_id);
if (killer && killer->IsCreature(room)) { if (killer && killer->IsCreature(room)) {
((Creature*)killer)->GetTrigger()->Kill(this); ((Creature*)killer)->GetTrigger()->Kill(this, weapon_id);
} }
} }
if (room->IsPveRoom()){ if (room->IsPveRoom()){

View File

@ -418,6 +418,14 @@ void Skill::ProcJSHX()
kKillEvent, kKillEvent,
[this] (const std::vector<std::any>& params) [this] (const std::vector<std::any>& params)
{ {
int weapon_id = std::any_cast<int>(params.at(2));
if (owner->GetCurrWeapon()->meta->i->id() != weapon_id) {
return;
}
if (!owner->GetCurrWeapon()->skill_meta ||
owner->GetCurrWeapon()->skill_meta->GetMagicId() != MAGIC_HLYZ) {
return;
}
if (!owner->dead) { if (!owner->dead) {
float add_hp = SkillHelper::GetJshxHp(owner, meta); float add_hp = SkillHelper::GetJshxHp(owner, meta);
float real_add_hp = std::max(0.0f, std::min(owner->GetMaxHP() - owner->GetHP(), add_hp)); float real_add_hp = std::max(0.0f, std::min(owner->GetMaxHP() - owner->GetHP(), add_hp));

View File

@ -129,7 +129,7 @@ void Trigger::Shot(MetaData::Equip* weapon_meta)
} }
} }
void Trigger::Kill(Creature* target) void Trigger::Kill(Creature* target, int weapon_id)
{ {
if (owner_->IsHuman() && target->IsHuman()) { if (owner_->IsHuman() && target->IsHuman()) {
owner_->AsHuman()->stats.kills++; owner_->AsHuman()->stats.kills++;
@ -149,7 +149,7 @@ void Trigger::Kill(Creature* target)
AddBuffs(buff->meta->int_param1, buff->meta->param4_int_list); AddBuffs(buff->meta->int_param1, buff->meta->param4_int_list);
} }
}); });
DispatchEvent(kKillEvent, {kill_num_, target}); DispatchEvent(kKillEvent, {kill_num_, target, weapon_id});
} }
void Trigger::UseItemAction(int slot_id) void Trigger::UseItemAction(int slot_id)

View File

@ -55,7 +55,7 @@ public:
Creature* GetOwner() { return owner_; }; Creature* GetOwner() { return owner_; };
void TakeonWeapon(Weapon* old_weapon, Weapon* new_weapon); void TakeonWeapon(Weapon* old_weapon, Weapon* new_weapon);
void Shot(MetaData::Equip* weapon_meta); void Shot(MetaData::Equip* weapon_meta);
void Kill(Creature* target); void Kill(Creature* target, int weapon_id);
void UseItemAction(int slot_id); void UseItemAction(int slot_id);
void UseSkill(Skill* skill); void UseSkill(Skill* skill);
void HpChg(); void HpChg();