This commit is contained in:
aozhiwei 2022-12-30 09:20:03 +08:00
parent 498f7350d9
commit 8a389c0371
5 changed files with 28 additions and 12 deletions

View File

@ -14,9 +14,6 @@ void AutoShotBuff::Activate()
{ {
if (a8::TIMER_EXEC_EVENT == event) { if (a8::TIMER_EXEC_EVENT == event) {
if (owner->IsHuman()) { if (owner->IsHuman()) {
#if 0
owner->AsHuman()->shot_start = true;
#endif
owner->AsHuman()->shot_hold = true; owner->AsHuman()->shot_hold = true;
owner->AsHuman()->series_shot_frames = 0; owner->AsHuman()->series_shot_frames = 0;
} }

View File

@ -12,6 +12,18 @@
#include "mt/SkillNumber.h" #include "mt/SkillNumber.h"
void MachineGunBuff::Activate() void MachineGunBuff::Activate()
{
SwitchWeapons();
ProcSkill();
}
void MachineGunBuff::Deactivate()
{
owner->GetTrigger()->DispatchEvent(kEndSwitchWeaponBuffEvent, {this});
RecoverHoldWeapons();
}
void MachineGunBuff::SwitchWeapons()
{ {
hold_curr_weapon_idx_ = caster_.Get()->GetCurrWeapon()->weapon_idx; hold_curr_weapon_idx_ = caster_.Get()->GetCurrWeapon()->weapon_idx;
{ {
@ -40,6 +52,10 @@ void MachineGunBuff::Activate()
caster_.Get()->MarkSyncActivePlayer(__FILE__, __LINE__, __func__); caster_.Get()->MarkSyncActivePlayer(__FILE__, __LINE__, __func__);
caster_.Get()->UpdateCharImage(__FILE__, __LINE__, __func__); caster_.Get()->UpdateCharImage(__FILE__, __LINE__, __func__);
} }
}
void MachineGunBuff::ProcSkill()
{
if (skill_meta && skill_meta->_number_meta) { if (skill_meta && skill_meta->_number_meta) {
switch (skill_meta->GetMagicId()) { switch (skill_meta->GetMagicId()) {
case MAGIC_HLYZ: case MAGIC_HLYZ:
@ -150,9 +166,3 @@ void MachineGunBuff::Activate()
} }
} }
} }
void MachineGunBuff::Deactivate()
{
owner->GetTrigger()->DispatchEvent(kEndSwitchWeaponBuffEvent, {this});
RecoverHoldWeapons();
}

View File

@ -9,4 +9,8 @@ class MachineGunBuff : public Buff
virtual void Activate() override; virtual void Activate() override;
virtual void Deactivate() override; virtual void Deactivate() override;
private:
void SwitchWeapons();
void ProcSkill();
}; };

View File

@ -2092,22 +2092,26 @@ float Creature::GetHPRate()
} }
void Creature::GetHitEnemys(std::set<Creature*>& enemys, float radius) void Creature::GetHitEnemys(std::set<Creature*>& enemys, float radius)
{
GetHitEnemys(enemys, GetPos().ToGlmVec3(), radius);
}
void Creature::GetHitEnemys(std::set<Creature*>& enemys, const glm::vec3 center, float radius)
{ {
float min_distance = 9999999999; float min_distance = 9999999999;
room->grid_service->TraverseCreatures room->grid_service->TraverseCreatures
(room->GetRoomIdx(), (room->GetRoomIdx(),
GetGridList(), GetGridList(),
[this, &enemys, radius, &min_distance] (Creature* c, bool& stop) [this, &enemys, center, radius, &min_distance] (Creature* c, bool& stop)
{ {
if (IsProperTarget(c)) { if (IsProperTarget(c)) {
float distance = GetPos().Distance2D2(c->GetPos()); float distance = GetPos().DistanceGlmVec3(center);
min_distance = std::min(min_distance, distance); min_distance = std::min(min_distance, distance);
if (distance < radius) { if (distance < radius) {
enemys.insert(c); enemys.insert(c);
} }
} }
}); });
int i = 0;
} }
void Creature::AddHp(float hp) void Creature::AddHp(float hp)

View File

@ -248,6 +248,7 @@ class Creature : public MoveableEntity
float GetMaxHP(); float GetMaxHP();
float GetHPRate(); float GetHPRate();
void GetHitEnemys(std::set<Creature*>& enemys, float radius); void GetHitEnemys(std::set<Creature*>& enemys, float radius);
void GetHitEnemys(std::set<Creature*>& enemys, const glm::vec3 center, float radius);
bool TryMove(const Position& target_pos, Position& out_pos); bool TryMove(const Position& target_pos, Position& out_pos);
void SetInfiniteBulletMode(); void SetInfiniteBulletMode();
void FindLocation(); void FindLocation();