NPC Special Attacks should all work right: also huge explanation in changelog.txt

This commit is contained in:
KimLS
2013-07-11 13:44:45 -07:00
parent ab2c184b54
commit 239d4afb13
10 changed files with 233 additions and 36 deletions
+109
View File
@@ -1,5 +1,114 @@
EQEMu Changelog (Started on Sept 24, 2003 15:50)
-------------------------------------------------------
== 07/11/2013 ==
KLS: Added a few lua functions.
KLS: Redid the npcspecialatk system with a new system that is more flexible but a little more complicated (this will break any 3rd party tools that deal with them).
Instead of a string such as "ERS" to denote "Enrage Rampage Summon" abilities are indexed by their ability number, level and params separated by '^'.
It is stored in the following format: ability,level[,param0,param1,param2,param3,param4,param5,param6,param7] Params will be read until there are 8 total or a '^' is reached.
Eg: 'ERS' -> '2,1^3,1^1,1
Levels allow us to dictate how abilities behave that may be different even though they're the same ability.
Params allow us to further refine behaviors on a case by case basis. Passing 0 as a param will use the default value.
NOTE: Be sure to source 2013_07_11_NPC_Special_Abilities.sql. Also due to the large impact this has on a database it is very HIGHLY SUGGESTED to BACKUP YOUR DATABASE FIRST.
The following are the special abilities currently in the game as well as their levels and parameters currently in use:
SPECATK_SUMMON = 1
Level 1: Summon target to NPC
Level 2: Summon NPC to target
Param0: Cooldown in ms (default: 6000)
Param1: HP ratio required to summon (default: 97)
SPECATK_ENRAGE = 2
Param0: HP ratio required to enrage (default: rule NPC:StartEnrageValue)
Param1: Enrage duration in ms (default: 10000)
Param2: Enrage cooldown in ms (default: 360000)
SPECATK_RAMPAGE = 3
Param0: Proc chance (default: 20)
Param1: Rampage target count (default: rule Combat:MaxRampageTargets)
Param2: Percent of a normal attack damage to deal (default: 100)
Param3: Flat damage bonus to add to the rampage attack (default: 0)
Param4: Ignore % armor for this attack (default 0)
Param5: Ignore flat armor for this attack (default 0)
Param6: Percent of npc's natual crit that can go toward this rampage (default: 100)
Param7: Flat crit bonus on top of npc's natual crit that can go toward this attack (default 0)
SPECATK_AREA_RAMPAGE = 4
Param0: Proc chance (default: 20)
Param1: Rampage target count (default: 1)
Param2: Percent of a normal attack damage to deal (default: 100)
Param3: Flat damage bonus to add to the rampage attack (default: 0)
Param4: Ignore % armor for this attack (default 0)
Param5: Ignore flat armor for this attack (default 0)
Param6: Percent of npc's natual crit that can go toward this rampage (default: 100)
Param7: Flat crit bonus on top of npc's natual crit that can go toward this attack (default 0)
SPECATK_FLURRY = 5
Param0: Proc chance (default: rule Combat:NPCFlurryChance)
Param1: Flurry attack count (default: rule Combat:MaxFlurryHits)
Param2: Percent of a normal attack damage to deal (default: 100)
Param3: Flat damage bonus to add to the flurry attack (default: 0)
Param4: Ignore % armor for this attack (default 0)
Param5: Ignore flat armor for this attack (default 0)
Param6: Percent of npc's natual crit that can go toward this attack (default: 100)
Param7: Flat crit bonus on top of npc's natual crit that can go toward this attack (default 0)
Ex: Normal Flurry with 25% proc rate and 100% crit chance that ignores 500 armor.
5,1,25,0,0,0,0,500,0,100
SPECATK_TRIPLE = 6
SPECATK_QUAD = 7
SPECATK_INNATE_DW = 8
SPECATK_BANE = 9
SPECATK_MAGICAL = 10
SPECATK_RANGED_ATK = 11
UNSLOWABLE = 12
UNMEZABLE = 13
UNCHARMABLE = 14
UNSTUNABLE = 15
UNSNAREABLE = 16
UNFEARABLE = 17
UNDISPELLABLE = 18
IMMUNE_MELEE = 19
IMMUNE_MAGIC = 20
IMMUNE_FLEEING = 21
IMMUNE_MELEE_EXCEPT_BANE = 22
IMMUNE_MELEE_NONMAGICAL = 23
IMMUNE_AGGRO = 24
IMMUNE_AGGRO_ON = 25
IMMUNE_CASTING_FROM_RANGE = 26
IMMUNE_FEIGN_DEATH = 27
IMMUNE_TAUNT = 28
NPC_TUNNELVISION = 29
Param0: Aggro modifier on non-tanks (default: rule Aggro:TunnelVisionAggroMod)
NPC_NO_BUFFHEAL_FRIENDS = 30
IMMUNE_PACIFY = 31
LEASH = 32
Param0: Range (default: aggro range * aggro range)
TETHER = 33
Param0: Range (default: aggro range * aggro range)
DESTRUCTIBLE_OBJECT = 34
NO_HARM_FROM_CLIENT = 35
The following Lua API functions were added to deal with the new system:
Integer GetSpecialAbility(Integer ability);
Integer GetSpecialAbilityParam(Integer ability, Integer param);
Void SetSpecialAbility(Integer ability, Integer level);
Void SetSpecialAbilityParam(Integer ability, Integer param, Integer value);
Void ClearSpecialAbilities();
Void ProcessSpecialAbilities(String str);
The old API functions that worked with letters still exist for backwards compatibility reasons but wont be updated further.
== 07/08/2013 ==
Secrets: Cleanup of some log functions that did not have an 'off' function.**
Secrets: Unknown opcode messages only show on EQDEBUG* >= 5 or higher now. (including the dumped packet)