This commit is contained in:
aozhiwei 2021-09-08 19:07:26 +08:00
parent e6abb61885
commit aa7309819c
3 changed files with 8 additions and 7 deletions

View File

@ -361,8 +361,11 @@ void Buff::ProcSprint()
Buff* buff = (Buff*)param.sender.GetUserData();
std::set<int>* hited_objects = (std::set<int>*)param.param1.GetUserData();
std::set<Creature*> enemys;
buff->owner->GetHitEnemys(enemys);
buff->owner->GetHitEnemys(enemys, buff->meta->param2);
for (auto& enemy : enemys) {
if (enemy->IsEntityType(ET_Car)) {
continue;
}
if (hited_objects->find(enemy->GetUniId()) != hited_objects->end()) {
hited_objects->insert(enemy->GetUniId());
for (int buff_id : buff->meta->param3_int_list) {

View File

@ -2259,17 +2259,15 @@ void Creature::SetDef(float def)
ability.def = def;
}
void Creature::GetHitEnemys(std::set<Creature*>& enemys)
void Creature::GetHitEnemys(std::set<Creature*>& enemys, float radius)
{
room->grid_service->TraverseCreatures
(room->GetRoomIdx(),
GetGridList(),
[this, &enemys] (Creature* c, bool& stop)
[this, &enemys, radius] (Creature* c, bool& stop)
{
if (IsProperTarget(c)) {
AabbCollider aabb_box;
c->GetHitAabbBox(aabb_box);
if (!c->dead && TestCollision(room, &aabb_box)) {
if (!c->dead && GetPos().Distance(c->GetPos()) < radius) {
enemys.insert(c);
}
}

View File

@ -224,7 +224,7 @@ class Creature : public MoveableEntity
float GetMaxHP();
float GetDef();
void SetDef(float def);
void GetHitEnemys(std::set<Creature*>& enemys);
void GetHitEnemys(std::set<Creature*>& enemys, float radius);
bool TryMove(const a8::Vec2& target_pos, a8::Vec2& out_pos);
void SetInfiniteBulletMode();
void FindLocation();