diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 2073691..04ae233 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2635,7 +2635,7 @@ void Human::ProcLootCar(Loot* entity, MetaData::Equip* item_meta) SetPos(entity->GetPos()); MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(car_.meta->i->buffid()); if (buff_meta) { - AddBuff(buff_meta, 1); + AddBuff(this, buff_meta, 1); } CancelAction(); SyncAroundPlayers(__FILE__, __LINE__, __func__); @@ -2876,21 +2876,21 @@ void Human::TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type) case kBuffTargetSelf: //自己 { if (hum == this) { - hum->AddBuff(buff_meta, GetSkillLv()); + hum->AddBuff(this, buff_meta, GetSkillLv()); } } break; case kBuffTargetFriendly: //友军 { if (hum->team_id == team_id) { - hum->AddBuff(buff_meta, GetSkillLv()); + hum->AddBuff(this, buff_meta, GetSkillLv()); } } break; case kBuffTargetEnemy: //敌军 { if (hum->team_id != team_id) { - hum->AddBuff(buff_meta, GetSkillLv()); + hum->AddBuff(this, buff_meta, GetSkillLv()); } } break; @@ -2908,7 +2908,7 @@ void Human::TriggerBuff(std::set& target_list, BuffTriggerType_e trigge } } -void Human::AddBuff(MetaData::Buff* buff_meta, int skill_lv) +void Human::AddBuff(Human* caster, MetaData::Buff* buff_meta, int skill_lv) { if (GetBuffById(buff_meta->i->buff_id())) { return; @@ -2956,7 +2956,7 @@ void Human::AddBuff(MetaData::Buff* buff_meta, int skill_lv) &buff->xtimer_attacher.timer_list_ ); } - ProcBuffEffect(buff); + ProcBuffEffect(caster, buff); } void Human::RemoveBuffById(int buff_id) @@ -3008,7 +3008,7 @@ bool Human::HasBuffEffect(int buff_effect_id) return GetBuffByEffectId(buff_effect_id) != nullptr; } -void Human::ProcBuffEffect(Buff* buff) +void Human::ProcBuffEffect(Human* caster, Buff* buff) { switch (buff->meta->i->buff_effect()) { case kBET_ChgAttr: @@ -3217,7 +3217,7 @@ void Human::Revive() { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(kREVIVE_BUFF_ID); if (buff_meta) { - AddBuff(buff_meta, 1); + AddBuff(this, buff_meta, 1); } } room->frame_event.AddRevive(this); @@ -3772,7 +3772,7 @@ void Human::AddPassiveSkillBuff(MetaData::Skill* skill_meta) for (int buff_id : skill_meta->buff_list) { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id); if (buff_meta) { - AddBuff(buff_meta, buff_id); + AddBuff(this, buff_meta, buff_id); } } } diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 4c55c65..a86d7b3 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -255,14 +255,14 @@ class Human : public MoveableEntity float GetSkillAtkAdd(int skill_id); void TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type); void TriggerBuff(std::set& target_list, BuffTriggerType_e trigger_type); - void AddBuff(MetaData::Buff* buff_meta, int skill_lv); + void AddBuff(Human* caster, MetaData::Buff* buff_meta, int skill_lv); void RemoveBuffById(int buff_id); void RemoveBuffByEffectId(int buff_effect_id); void ClearBuffList(); bool HasBuffEffect(int buff_effect_id); Buff* GetBuffByEffectId(int effect_id); void RecalcBuffAttr(); - void ProcBuffEffect(Buff* buff); + void ProcBuffEffect(Human* caster, Buff* buff); int GetLevel() {return 1;}; void OnAttack() {}; void OnHit() {}; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 88b290a..dc22641 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -282,7 +282,7 @@ void Player::UpdateUseItemId() if (HasBuffEffect(kBET_Camouflage)) { RemoveBuffByEffectId(kBET_Camouflage); } - AddBuff(buff_meta, 1); + AddBuff(this, buff_meta, 1); DecItem(use_item_id, 1); } } @@ -800,7 +800,7 @@ void Player::ProcPrepareItems(const ::google::protobuf::RepeatedField< ::google: car_.meta = item_meta; MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(car_.meta->i->buffid()); if (buff_meta) { - AddBuff(buff_meta, 1); + AddBuff(this, buff_meta, 1); } } } @@ -1213,7 +1213,7 @@ void Player::_CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg) { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(kREVIVE_BUFF_ID); if (buff_meta) { - AddBuff(buff_meta, 1); + AddBuff(this, buff_meta, 1); } } #endif @@ -1246,7 +1246,7 @@ void Player::_CMAdStart(f8::MsgHdr& hdr, const cs::CMAdStart& msg) } MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(ADPLAY_BUFFID); if (buff_meta) { - AddBuff(buff_meta, 1); + AddBuff(this, buff_meta, 1); room->xtimer. AddDeadLineTimerAndAttach( buff_meta->i->duration_time() * SERVER_FRAME_RATE + 2, @@ -1309,14 +1309,14 @@ void Player::InternalAdOk() } if (lord_buff_meta) { a8::SetBitFlag(status, HS_AlreadyLordMode); - AddBuff(lord_buff_meta, 1); + AddBuff(this, lord_buff_meta, 1); std::vector strings; a8::Split(lord_buff_meta->i->buff_param1(), strings, ':'); for (auto& str : strings) { int buff_id = a8::XValue(str); MetaData::Buff* ext_buff_meta = MetaMgr::Instance()->GetBuff(buff_id); if (ext_buff_meta) { - AddBuff(ext_buff_meta, 1); + AddBuff(this, ext_buff_meta, 1); } } } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 21c8cb3..2ff96e7 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2555,7 +2555,7 @@ void Room::AddPlayerPostProc(Player* hum) for (int buff_id : MetaMgr::Instance()->newbie_buff_list) { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id); if (buff_meta) { - hum->AddBuff(buff_meta, 1); + hum->AddBuff(hum, buff_meta, 1); } } if (room_type_ == RT_MidBrid) {