This commit is contained in:
aozhiwei 2023-03-14 15:12:13 +08:00
parent 754925b80a
commit 052ba3bd57
2 changed files with 43 additions and 0 deletions

View File

@ -23,8 +23,45 @@ void HoldShieldBuff::Activate()
kPropShieldHp,
owner->shield_max_hp_,
owner->shield_hp_);
hold_param2_ = meta->GetBuffParam2(this);
check_interval_time_ = meta->GetBuffParam3(this);
if (meta->_int_buff_param1) {
std::map<int, long long> hited_objects = std::map<int, long long>();
owner->room->xtimer.SetIntervalEx
(
SERVER_FRAME_RATE,
[this, hited_objects] (int event, const a8::Args* args) mutable
{
if (a8::TIMER_EXEC_EVENT == event) {
std::set<Creature*> enemys;
owner->GetHitEnemys(enemys, owner->GetPos().ToGlmVec3(), hold_param2_);
for (auto& enemy : enemys) {
auto itr = hited_objects.find(enemy->GetUniId());
if (itr != hited_objects.end()) {
if (owner->room->GetFrameNo() - itr->second <
check_interval_time_ * SERVER_FRAME_RATE) {
continue;
}
}
if (enemy->IsEntityType(ET_Car)) {
continue;
}
hited_objects[enemy->GetUniId()] = owner->room->GetFrameNo();
OnEnemyHit(enemy);
}
}
},
&xtimer_attacher);
}
}
void HoldShieldBuff::Deactivate()
{
}
void HoldShieldBuff::OnEnemyHit(Creature* enemy)
{
enemy->TryAddBuff(GetCaster().Get(), meta->_int_buff_param1, skill_meta);
}

View File

@ -9,4 +9,10 @@ class HoldShieldBuff : public Buff
virtual void Activate() override;
virtual void Deactivate() override;
private:
void OnEnemyHit(Creature* enemy);
private:
float hold_param2_ = 0.0f;
float check_interval_time_ = 0.0f;
};