Combat Revamp -- BREAKING CHANGES -- see changelog

Changelog updated for combat revamp
This commit is contained in:
Michael Cook (mackal) 2017-01-17 23:30:50 -05:00
parent 8f21b01b7e
commit f614c35f6e

View File

@ -1,5 +1,18 @@
EQEMu Changelog (Started on Sept 24, 2003 15:50) EQEMu Changelog (Started on Sept 24, 2003 15:50)
------------------------------------------------------- -------------------------------------------------------
== 01/17/2017 ==
Mackal: Combat Revamp
- This change brings melee combat into line with how combat is done on live.
- This correctly applies the PC damage tables and corrects stacking order of many spells
- Given the scope of what had to be rewritten, it was not feasible to preserve the old combat system.
This means you will likely have to rebalance your server, which sucks, but this is very
accurate so shouldn't require any more changes, at least none that would cause you to have
to rebalance your server again.
- For rebalancing, I would recommend running the optional SQL and tweaking from there.
- To help with rebalancing there is a simulator included at utils/combat-sim.
- You can enter the mitigation or offense values you would like to balance around (#showstats will show you them)
a 1 on the sim is min damage 20 is max.
- Quick recommendations for best ways to improve PC DPS, give them some worn (or AA) SE_DamageModifier and/or SE_MinDamageModifier
== 12/03/2016 == == 12/03/2016 ==
Uleat: Added hack detection to trade code Uleat: Added hack detection to trade code
- If illegal items are found in trade slots when the 'trade' button is clicked, the trade is cancelled and a message is sent to the offending player - If illegal items are found in trade slots when the 'trade' button is clicked, the trade is cancelled and a message is sent to the offending player
@ -28,7 +41,7 @@ take into account that rogue was sneaking. Now sneaking rogues can see full
inventory on merchants (well, unless an item requires a + faction value). inventory on merchants (well, unless an item requires a + faction value).
== 09/12/2016 == == 09/12/2016 ==
Akkadius: Massive overhaul of the update system and EQEmu Server management utility framework Akkadius: Massive overhaul of the update system and EQEmu Server management utility framework
(known as eqemu_update.pl) now known as eqemu_server.pl (known as eqemu_update.pl) now known as eqemu_server.pl
- eqemu_server.pl is now a general EQEmu Server management utiltiy framework that can be used - eqemu_server.pl is now a general EQEmu Server management utiltiy framework that can be used
to extend to many purposes. It's main purpose is to simplify server management to extend to many purposes. It's main purpose is to simplify server management
@ -49,7 +62,7 @@ Akkadius: Massive overhaul of the update system and EQEmu Server management util
- Regular bots database schema changes now happen automatically similarily to the above - Regular bots database schema changes now happen automatically similarily to the above
- Database checks can also be ran manually via the script menu - Database checks can also be ran manually via the script menu
- CLI Arguments - CLI Arguments
- Arguments passed to eqemu_server.pl can execute the same name-based operations that - Arguments passed to eqemu_server.pl can execute the same name-based operations that
are present in the interactive menu are present in the interactive menu
- Example: "perl eqemu_server.pl opcodes" will download opcodes - Example: "perl eqemu_server.pl opcodes" will download opcodes
- Example: "perl eqemu_server.pl backup_player_tables" will backup and export player tables - Example: "perl eqemu_server.pl backup_player_tables" will backup and export player tables
@ -64,7 +77,7 @@ Akkadius: Massive overhaul of the update system and EQEmu Server management util
- server_start_dev.sh - server_start_dev.sh
- server_start.sh - server_start.sh
- server_status.sh - server_status.sh
- server_stop.sh - server_stop.sh
- Usage analytics - Usage analytics
- eqemu_server.pl now collects usage analytics, this is very helpful for our developers - eqemu_server.pl now collects usage analytics, this is very helpful for our developers
- Example: We can see how many installs have been performed: - Example: We can see how many installs have been performed:
@ -76,10 +89,10 @@ Akkadius: Massive overhaul of the update system and EQEmu Server management util
- 'New Server' Utility - 'New Server' Utility
- Running 'new_server' from the main menu or 'perl eqemu_server.pl new_server' while in - Running 'new_server' from the main menu or 'perl eqemu_server.pl new_server' while in
a completely new folder with just the script present, will allow a server operator a completely new folder with just the script present, will allow a server operator
to initiate a full clean PEQ install in that folder. Pulling down all assets and to initiate a full clean PEQ install in that folder. Pulling down all assets and
installing a PEQ database with the name the server operator gives the prompts in the installing a PEQ database with the name the server operator gives the prompts in the
script script
== 09/10/2016 == == 09/10/2016 ==
noudess: Task system experience based on a % of a level did not take into noudess: Task system experience based on a % of a level did not take into
account the hell levels rule. Now it does. account the hell levels rule. Now it does.
@ -133,7 +146,7 @@ Kinglykrab: Implemented optional avoidance cap rules.
- Rule Names: - Rule Names:
- Character:EnableAvoidanceCap (default is false) - Character:EnableAvoidanceCap (default is false)
- Character:AvoidanceCap (default is 750, beyond 1,000 seems to make characters dodge all attacks) - Character:AvoidanceCap (default is 750, beyond 1,000 seems to make characters dodge all attacks)
== 08/02/2016 == == 08/02/2016 ==
Uleat: Changed 'SendZoneSpawnsBulk' behavior to use near/far criteria (live-like) when sending packets. Uleat: Changed 'SendZoneSpawnsBulk' behavior to use near/far criteria (live-like) when sending packets.
- Zone-to-Zone client loading will see a small decrease in time (less than 10~15%) - Zone-to-Zone client loading will see a small decrease in time (less than 10~15%)
@ -171,7 +184,7 @@ mackal: Fix up the SpellBuff struct
Uleat: Important fix for mob pathing Uleat: Important fix for mob pathing
- This should fix failed pathing issues (and high cpu usage for zone.exe) for mobs in affect zones - This should fix failed pathing issues (and high cpu usage for zone.exe) for mobs in affect zones
- Changed variable 'gridno' type from int16 to int32 to reflect actual return value of fetch (values do exceed 32767 aka int16.max) - Changed variable 'gridno' type from int16 to int32 to reflect actual return value of fetch (values do exceed 32767 aka int16.max)
- Precision loss from int32 to int16 conversion was causing grid id to be changed to quest controlled movement in cases where (gridno & 0x8000 == true) - Precision loss from int32 to int16 conversion was causing grid id to be changed to quest controlled movement in cases where (gridno & 0x8000 == true)
== 06/28/2016 == == 06/28/2016 ==
Noudess: Resurrection effects now block certain buffs like on live. Noudess: Resurrection effects now block certain buffs like on live.
@ -240,7 +253,7 @@ Uleat: Moved database query code out of bot.cpp and into the new BotDatabase cla
== 03/25/2016 == == 03/25/2016 ==
Uleat: Fix for heal rotation 'Stack Overflow' error Uleat: Fix for heal rotation 'Stack Overflow' error
Kayen: Defensive procs will now only proc once per attack round (instead of every attack chance). Kayen: Defensive procs will now only proc once per attack round (instead of every attack chance).
Live like modifier added that decreases defensive proc chance if you are higher level then your attacker. Live like modifier added that decreases defensive proc chance if you are higher level then your attacker.
== 03/24/2016 == == 03/24/2016 ==
@ -283,7 +296,7 @@ Kinglykrab: Modified #flag so you can refresh your target's account status (GM s
- Just target the person whose flag you want to refresh and type #flag. - Just target the person whose flag you want to refresh and type #flag.
Uleat: Added itemlink functionality to the #summonitem command. Current use is limited to extracting the item id from the link. Uleat: Added itemlink functionality to the #summonitem command. Current use is limited to extracting the item id from the link.
- Invoking by item link '#summonitem Arrow' produces the same result as by item id '#summonitem 8005' - Invoking by item link '#summonitem Arrow' produces the same result as by item id '#summonitem 8005'
== 01/12/2016 == == 01/12/2016 ==
Athrogate: Adding ClearCompassMark() to Lua. Athrogate: Adding ClearCompassMark() to Lua.
- Lua didn't have ClearCompassMark(). Perl already had this. - Lua didn't have ClearCompassMark(). Perl already had this.
@ -313,7 +326,7 @@ Kinglykrab: Added GetInstanceTimer() to Perl and Lua.
- Note: If you do not provide an instance id in the method it defaults to instance id 0 and returns 0 for time remaining. - Note: If you do not provide an instance id in the method it defaults to instance id 0 and returns 0 for time remaining.
- Added UpdateZoneHeader(type, value) to Perl and Lua. - Added UpdateZoneHeader(type, value) to Perl and Lua.
- Note: UpdateZoneHeader allows you to manipulate fog color, fog density, and many other zone header settings on the fly in Perl and Lua. - Note: UpdateZoneHeader allows you to manipulate fog color, fog density, and many other zone header settings on the fly in Perl and Lua.
== 12/21/2015 == == 12/21/2015 ==
Natedog: Updated item table fields and added a few missing fields for evolving items Natedog: Updated item table fields and added a few missing fields for evolving items
-DO NOT implement Heirloom items till the inventory code is fixed to allow placing NO DROP -DO NOT implement Heirloom items till the inventory code is fixed to allow placing NO DROP
@ -322,7 +335,7 @@ Natedog: Updated item table fields and added a few missing fields for evolving i
100% 2HSlashing (Max 50) - can only increase 2hslash by 50 MAX! (item field located though) 100% 2HSlashing (Max 50) - can only increase 2hslash by 50 MAX! (item field located though)
Kinglykrab: Added GetMeleeMitigation() for NPCs and Clients in Perl and Lua. Kinglykrab: Added GetMeleeMitigation() for NPCs and Clients in Perl and Lua.
- This allows you to check total item, spell, and AA melee mitigation contribution. - This allows you to check total item, spell, and AA melee mitigation contribution.
== 12/19/2015 == == 12/19/2015 ==
Kinglykrab: Added many methods to Perl and Lua, list below: Kinglykrab: Added many methods to Perl and Lua, list below:
- SeeInvisible() - SeeInvisible()
@ -344,7 +357,7 @@ Kinglykrab: Added many methods to Perl and Lua, list below:
- HasPet() - HasPet()
- IsSilenced() - IsSilenced()
- IsAmnesiad() - IsAmnesiad()
== 12/16/2015 == == 12/16/2015 ==
Noudess: Repaired issue with Bind Wounds on someone else. Message was not coming out on client (hold still) and a bind wounds on someone already binding their wounds would interrupt their bind and make them stand. Also removed some duplicate messaging. Noudess: Repaired issue with Bind Wounds on someone else. Message was not coming out on client (hold still) and a bind wounds on someone already binding their wounds would interrupt their bind and make them stand. Also removed some duplicate messaging.
@ -353,7 +366,7 @@ Kinglykrab: Added IsBlind() and IsFeared() functionality to Perl and Lua.
- Note: Both methods are Mob methods and may be used on NPCs or PCs. - Note: Both methods are Mob methods and may be used on NPCs or PCs.
Natedog: Added Discipline functions, UpdateInstanceTimer function, and UnmemSpellBySpellID to lua and perl Natedog: Added Discipline functions, UpdateInstanceTimer function, and UnmemSpellBySpellID to lua and perl
-Examples: http://wiki.eqemulator.org/i?M=Pastebin&Paste=BJ0ygmNM -Examples: http://wiki.eqemulator.org/i?M=Pastebin&Paste=BJ0ygmNM
== 12/07/2015 == == 12/07/2015 ==
Uleat: Command aliases are no longer handled through the command_add() function. Uleat: Command aliases are no longer handled through the command_add() function.
- To add a command alias, edit the database table `command_settings` - here, you will find three columns: `command`, `access` and `aliases` - To add a command alias, edit the database table `command_settings` - here, you will find three columns: `command`, `access` and `aliases`
@ -366,7 +379,7 @@ Uleat: Command aliases are no longer handled through the command_add() function.
- If you need need more name space for aliases, simply edit the `command_settings` table and increase the size of the `aliases` column - If you need need more name space for aliases, simply edit the `command_settings` table and increase the size of the `aliases` column
- The old `commands` table has been renamed to `commands_old` for reference - The old `commands` table has been renamed to `commands_old` for reference
- All of the current 'standard' commands have been added to the new `command_settings` table - All of the current 'standard' commands have been added to the new `command_settings` table
- YOU WILL NEED TO VERIFY/IMPORT OLD ACCESS VALUES AS THIS CHANGE REVERTS ALL COMMAND ACCESS VALUES TO THEIR PEQDB DEFAULTS - YOU WILL NEED TO VERIFY/IMPORT OLD ACCESS VALUES AS THIS CHANGE REVERTS ALL COMMAND ACCESS VALUES TO THEIR PEQDB DEFAULTS
== 11/30/2015 == == 11/30/2015 ==
@ -388,7 +401,7 @@ Akkadius: Performance boost (exponential) - Adjusted default idle cast check tim
- Database version 9089 will take care of this update automatically only if you used the default values - Database version 9089 will take care of this update automatically only if you used the default values
- The CPU cost of NPC's checking the entire entity list to cast beneficial spells (Heals/Buffs) becomes extremely high when higher NPC count zones exist (Based off of process profiling) - The CPU cost of NPC's checking the entire entity list to cast beneficial spells (Heals/Buffs) becomes extremely high when higher NPC count zones exist (Based off of process profiling)
- Distance checks for every single NPC to every single other NPC who are casting beneficial spells occur every .5 - 2 seconds unless npc_spells dictates other values, which most of the time it does not - Distance checks for every single NPC to every single other NPC who are casting beneficial spells occur every .5 - 2 seconds unless npc_spells dictates other values, which most of the time it does not
- Zones that once fluctuated from 1-8% CPU with no activity (Idle but players present) now idle at .5% based on my testings due - Zones that once fluctuated from 1-8% CPU with no activity (Idle but players present) now idle at .5% based on my testings due
to this change in conjunction with the past few performance commits, these are zones that have 600-800 NPC's in them to this change in conjunction with the past few performance commits, these are zones that have 600-800 NPC's in them
- These values normally are overidden by the spells table (npc_spells), fields (idle_no_sp_recast_min, idle_no_sp_recast_max) - These values normally are overidden by the spells table (npc_spells), fields (idle_no_sp_recast_min, idle_no_sp_recast_max)
@ -396,7 +409,7 @@ Akkadius: Performance boost (exponential) - Adjusted default idle cast check tim
Akkadius: Made many performance optimizing oriented code changes in the source Akkadius: Made many performance optimizing oriented code changes in the source
- Added Rate limit the rate in which signals are processed for NPC's (.5 seconds instead of .01 seconds) - Added Rate limit the rate in which signals are processed for NPC's (.5 seconds instead of .01 seconds)
Akkadius: Added Perl Export Settings which should heavily reduce the Perl footprint Akkadius: Added Perl Export Settings which should heavily reduce the Perl footprint
- Normally when any sub EVENT_ gets triggered, all kinds of variables have to get exported every single time an event is triggered and - Normally when any sub EVENT_ gets triggered, all kinds of variables have to get exported every single time an event is triggered and
this can make Perl very slow when events are triggered constantly this can make Perl very slow when events are triggered constantly
- The two most taxing variable exports are the item variables ($itemcount{} $hasitem{} $oncursor{}) and qglobals ($qglobals{}) - The two most taxing variable exports are the item variables ($itemcount{} $hasitem{} $oncursor{}) and qglobals ($qglobals{})
- qglobals can pose to be an issue quickly when global qglobals build up, it is highly recommend to use the GetGlobal() and SetGlobal() - qglobals can pose to be an issue quickly when global qglobals build up, it is highly recommend to use the GetGlobal() and SetGlobal()
@ -424,7 +437,7 @@ Akkadius: Added Perl Export Settings which should heavily reduce the Perl footpr
| 4 | EVENT_ATTACK | 0 | 1 | 1 | 0 | 1 | | 4 | EVENT_ATTACK | 0 | 1 | 1 | 0 | 1 |
| 5 | EVENT_COMBAT | 1 | 1 | 1 | 0 | 1 | | 5 | EVENT_COMBAT | 1 | 1 | 1 | 0 | 1 |
+----------+-----------------------------------------+-----------------+------------+-------------+-------------+--------------+ +----------+-----------------------------------------+-----------------+------------+-------------+-------------+--------------+
- If a change is made to this table while the server is live and running, you can hot reload all zone process settings via: - If a change is made to this table while the server is live and running, you can hot reload all zone process settings via:
#reloadperlexportsettings #reloadperlexportsettings
- For those who wonder what "exports" are, they are reference to variables that are made available at runtime of the sub event, such as: - For those who wonder what "exports" are, they are reference to variables that are made available at runtime of the sub event, such as:
@ -433,7 +446,7 @@ Akkadius: Added Perl Export Settings which should heavily reduce the Perl footpr
(export_zone) : $zoneid, $instanceid, $zoneln etc. https://github.com/EQEmu/Server/blob/master/zone/embparser.cpp#L1083 (export_zone) : $zoneid, $instanceid, $zoneln etc. https://github.com/EQEmu/Server/blob/master/zone/embparser.cpp#L1083
(export_mob) : $x, $y, $z, $h, $hpratio etc. https://github.com/EQEmu/Server/blob/master/zone/embparser.cpp#L1032 (export_mob) : $x, $y, $z, $h, $hpratio etc. https://github.com/EQEmu/Server/blob/master/zone/embparser.cpp#L1032
(export_event) : (event specific) IE: EVENT_SAY ($text) https://github.com/EQEmu/Server/blob/master/zone/embparser.cpp#L1141 (export_event) : (event specific) IE: EVENT_SAY ($text) https://github.com/EQEmu/Server/blob/master/zone/embparser.cpp#L1141
== 10/16/2015 == == 10/16/2015 ==
Uleat: Added command '#bot clearfollowdistance [ <target> | spawned | all ]' to coincide with the activation of the load/save feature for follow_distance Uleat: Added command '#bot clearfollowdistance [ <target> | spawned | all ]' to coincide with the activation of the load/save feature for follow_distance
@ -465,7 +478,7 @@ rules:
commands: commands:
'#invsnapshot' - Takes a snapshot of target client's inventory (feature active or inactive) '#invsnapshot' - Takes a snapshot of target client's inventory (feature active or inactive)
'#clearinvsnapshots [use rule]' - Clears snapshot entries based on bool argument ([true] - honors the 'InvSnapshotHistoryD' rule, [false] - erases all) '#clearinvsnapshots [use rule]' - Clears snapshot entries based on bool argument ([true] - honors the 'InvSnapshotHistoryD' rule, [false] - erases all)
== 08/02/2015 == == 08/02/2015 ==
Shendare: VS2013 query StringFormat glitches when "%f" is passed for the int GetRunSpeed(). Shendare: VS2013 query StringFormat glitches when "%f" is passed for the int GetRunSpeed().
Shendare: In CreateNewNPCCommand(), the npc_type_id and spawngroupid are created in the database, but never set in the spawn class, so later it can't delete them with #npcspawn remove or #npcspawn delete. Shendare: In CreateNewNPCCommand(), the npc_type_id and spawngroupid are created in the database, but never set in the spawn class, so later it can't delete them with #npcspawn remove or #npcspawn delete.