mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 22:58:34 +00:00
[Quest API] Add GetCloseMobList() and CalculateDistance() overload to Perl/Lua (#3455)
* [Quest API] Add GetCloseMobList() and CalculateDistance() overload to Perl/Lua # Perl - Add `$entity_list->GetCloseMobList(mob)`. - Add `$entity_list->GetCloseMobList(mob, distance)`. - Add `$mob->CalculateDistance(mob)`. - Add `$mob->GetCloseMobList()`. - Add `$mob->GetCloseMobList(distance)`. # Lua - Add `eq.get_entity_list():GetCloseMobList(mob)`. - Add `eq.get_entity_list():GetCloseMobList(mob, distance)`. - Add `mob:CalculateDistance(mob)`. - Add `mob:GetCloseMobList()`. - Add `mob:GetCloseMobList(distance)`. * Ignore Self * Update lua_entity_list.cpp * Cleanup
This commit is contained in:
+63
-1
@@ -1374,6 +1374,11 @@ float Perl_Mob_CalculateDistance(Mob* self, float x, float y, float z) // @categ
|
||||
return self->CalculateDistance(x, y, z);
|
||||
}
|
||||
|
||||
float Perl_Mob_CalculateDistance(Mob* self, Mob* mob) // @categories Script Utility
|
||||
{
|
||||
return self->CalculateDistance(mob);
|
||||
}
|
||||
|
||||
void Perl_Mob_SendTo(Mob* self, float new_x, float new_y, float new_z) // @categories Script Utility
|
||||
{
|
||||
self->SendTo(new_x, new_y, new_z);
|
||||
@@ -3005,6 +3010,59 @@ bool Perl_Mob_HasSpellEffect(Mob* self, int effect_id)
|
||||
return self->HasSpellEffect(effect_id);
|
||||
}
|
||||
|
||||
perl::array Perl_Mob_GetCloseMobList(Mob* self)
|
||||
{
|
||||
perl::array result;
|
||||
|
||||
const auto& l = entity_list.GetCloseMobList(self);
|
||||
|
||||
result.reserve(l.size());
|
||||
|
||||
for (const auto& e : l) {
|
||||
result.push_back(e.second);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
perl::array Perl_Mob_GetCloseMobList(Mob* self, float distance)
|
||||
{
|
||||
perl::array result;
|
||||
|
||||
const auto& l = entity_list.GetCloseMobList(self, distance);
|
||||
|
||||
result.reserve(l.size());
|
||||
|
||||
for (const auto& e : l) {
|
||||
if (self->CalculateDistance(e.second) <= distance) {
|
||||
result.push_back(e.second);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
perl::array Perl_Mob_GetCloseMobList(Mob* self, float distance, bool ignore_self)
|
||||
{
|
||||
perl::array result;
|
||||
|
||||
const auto& l = entity_list.GetCloseMobList(self, distance);
|
||||
|
||||
result.reserve(l.size());
|
||||
|
||||
for (const auto& e : l) {
|
||||
if (ignore_self && e.second == self) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (self->CalculateDistance(e.second) <= distance) {
|
||||
result.push_back(e.second);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
StatBonuses* Perl_Mob_GetAABonuses(Mob* self)
|
||||
{
|
||||
return self->GetAABonusesPtr();
|
||||
@@ -3050,7 +3108,8 @@ void perl_register_mob()
|
||||
package.add("BuffFadeBySlot", (void(*)(Mob*, int))&Perl_Mob_BuffFadeBySlot);
|
||||
package.add("BuffFadeBySlot", (void(*)(Mob*, int, bool))&Perl_Mob_BuffFadeBySlot);
|
||||
package.add("BuffFadeBySpellID", &Perl_Mob_BuffFadeBySpellID);
|
||||
package.add("CalculateDistance", &Perl_Mob_CalculateDistance);
|
||||
package.add("CalculateDistance", (float(*)(Mob*, float, float, float))&Perl_Mob_CalculateDistance);
|
||||
package.add("CalculateDistance", (float(*)(Mob*, Mob*))&Perl_Mob_CalculateDistance);
|
||||
package.add("CalculateHeadingToTarget", &Perl_Mob_CalculateHeadingToTarget);
|
||||
package.add("CameraEffect", (void(*)(Mob*, uint32))&Perl_Mob_CameraEffect);
|
||||
package.add("CameraEffect", (void(*)(Mob*, uint32, float))&Perl_Mob_CameraEffect);
|
||||
@@ -3211,6 +3270,9 @@ void perl_register_mob()
|
||||
package.add("GetClassLevelFactor", &Perl_Mob_GetClassLevelFactor);
|
||||
package.add("GetClassName", &Perl_Mob_GetClassName);
|
||||
package.add("GetCleanName", &Perl_Mob_GetCleanName);
|
||||
package.add("GetCloseMobList", (perl::array(*)(Mob*))&Perl_Mob_GetCloseMobList);
|
||||
package.add("GetCloseMobList", (perl::array(*)(Mob*, float))&Perl_Mob_GetCloseMobList);
|
||||
package.add("GetCloseMobList", (perl::array(*)(Mob*, float, bool))&Perl_Mob_GetCloseMobList);
|
||||
package.add("GetCorruption", &Perl_Mob_GetCorruption);
|
||||
package.add("GetDefaultRaceSize", (float(*)(Mob*))&Perl_Mob_GetDefaultRaceSize);
|
||||
package.add("GetDefaultRaceSize", (float(*)(Mob*, int))&Perl_Mob_GetDefaultRaceSize);
|
||||
|
||||
Reference in New Issue
Block a user