[Quest API] Add Area Damage Methods to Perl/Lua. (#2549)

* [Quest API] Add Area Damage Methods to Perl/Lua.

# Perl
- Add `$mob->DamageArea(damage)`.
- Add `$mob->DamageArea(damage, distance)`.
- Add `$mob->DamageAreaBots(damage)`.
- Add `$mob->DamageAreaBots(damage, distance)`.
- Add `$mob->DamageAreaClients(damage)`.
- Add `$mob->DamageAreaClients(damage, distance)`.
- Add `$mob->DamageAreaNPCs(damage)`.
- Add `$mob->DamageAreaNPCs(damage, distance)`.
- Add `$mob->DamageAreaPercentage(damage)`.
- Add `$mob->DamageAreaPercentage(damage, distance)`.
- Add `$mob->DamageAreaBotsPercentage(damage)`.
- Add `$mob->DamageAreaBotsPercentage(damage, distance)`.
- Add `$mob->DamageAreaClientsPercentage(damage)`.
- Add `$mob->DamageAreaClientsPercentage(damage, distance)`.
- Add `$mob->DamageAreaNPCsPercentage(damage)`.
- Add `$mob->DamageAreaNPCsPercentage(damage, distance)`.

# Lua
- Add `mob:DamageArea(damage)`.
- Add `mob:DamageArea(damage, distance)`.
- Add `mob:DamageAreaBots(damage)`.
- Add `mob:DamageAreaBots(damage, distance)`.
- Add `mob:DamageAreaClients(damage)`.
- Add `mob:DamageAreaClients(damage, distance)`.
- Add `mob:DamageAreaNPCs(damage)`.
- Add `mob:DamageAreaNPCs(damage, distance)`.
- Add `mob:DamageAreaPercentage(damage)`.
- Add `mob:DamageAreaPercentage(damage, distance)`.
- Add `mob:DamageAreaBotsPercentage(damage)`.
- Add `mob:DamageAreaBotsPercentage(damage, distance)`.
- Add `mob:DamageAreaClientsPercentage(damage)`.
- Add `mob:DamageAreaClientsPercentage(damage, distance)`.
- Add `mob:DamageAreaNPCsPercentage(damage)`.
- Add `mob:DamageAreaNPCsPercentage(damage, distance)`.

# Notes
- Cleanup parameter order of damage methods.
- These methods allow you to damage all Bots, Clients, Mobs, or NPCs in a zone or by distance from the Mob.
- Fix math with percentage damage.

* Update entity.cpp
This commit is contained in:
Kinglykrab
2022-11-16 22:11:01 -05:00
committed by GitHub
parent 856aa51cb8
commit 0003f6f863
9 changed files with 373 additions and 81 deletions
+4 -9
View File
@@ -19,6 +19,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#ifndef HATELIST_H
#define HATELIST_H
#include "../common/emu_constants.h"
class Client;
class Group;
class Mob;
@@ -34,13 +36,6 @@ struct struct_HateList {
uint32 last_modified; // we need to remove this if it gets higher than 10 mins
};
enum HateListFilterTypes : uint8 {
All,
Bots,
Clients,
NPCs
};
class HateList {
public:
HateList();
@@ -73,13 +68,13 @@ public:
std::list<struct_HateList *> &GetHateList() { return list; }
std::list<struct_HateList *> GetFilteredHateList(
uint32 distance = 0,
uint8 filter_type = HateListFilterTypes::All
uint8 filter_type = EntityFilterTypes::All
);
void DamageHateList(
int64 damage,
uint32 distance = 0,
uint8 filter_type = HateListFilterTypes::All,
uint8 filter_type = EntityFilterTypes::All,
bool is_percentage = false
);