- Rule R_Loot, LootDistributionTime added to set lotto/NBG timer countdown for distribution, default 120 (in seconds)
- /setautolootmode [x] command now supported, 0 = none, 1 = need/lotto, 2 = decline
DB Update: update commands set handler=534 where command='setautolootmode';
- /loot list details added - tracks the loot windows of players and tells if they are still open or closed (to determine when loot should dispense)
- Addressed spells causing crashes on deconstruct of NPCs
- Fixed inner struct data honoring the IfVariableSet/IfVariableNotSet flag, eg. previously item_id would not honor IfVariableSet/IfVariableNotSet:
<Data ElementName="item_count" Type="int8" IfVariableNotSet="loot_all"/>
<Data ElementName="item_list" Type="Array" ArraySizeVariable="item_count" IfVariableNotSet="loot_all">
<Data ElementName="item_id" Type="int32" IfVariableNotSet="loot_all"/>
</Data>
1. build components showing as 0/1 in red when component was available(tradeskillpackets.cpp)
2. select item not showing list properly(worldstruct.xml)
- Corner cases with examine inventory in DoF resolved. Now tracked through a max index id to avoid mis-indexing an item as "new" to the client array or building on the old array the client has already created (items get removed/added/so on, but this max id remains unchanged from the initial zone-in).
- Unfriendly spells are now removed from Entity/NPCs when ClearEncounter is called
- Food/Drink can be accessed equip/unequip on DoF client.
Performance:
- Improvements to ProcessMovement loop
- lua interface process cleanup now handled at World level (since zones may not be running to process it). Every zone used to call lua process (ick).
Memory leaks:
- Spells no longer leak into memory (NPC spell lists, player spells and passive spells)
- Player languages no longer leaks memory
- No more memory leak from player mail
- Fixed memory leak in Map loading of V3
- item memory leak fix with lore conflict/no space in inventory
- Addressed a hangup issue shutting down the world server in that pthread_cond_destroy(&cond) cannot be called until pthread_cond_broadcast(&cond) is called first
- Fixed server crashing trying to send spawn packets when handling a bad version of the client entering zone (or malformed packets causing bad versioning).
- Character History is now only saved on requirement, reduced DB load.
- Avoidance of reuse for Query class as it can cause crashes
- Fixed a potential issue with AoM/DoF inventory, in which it would continually build up the array instead of re-using the first slot, eventually causing the client to crash
- Fix#109 Soulrend does not knock down target (finish spell cast, ZoneServer::SendCastSpellPacket spell_visual is disabled) when no damage applied
* alter table character_spell_effects add column has_damaged tinyint(3) unsigned not null default 0 after resisted;
- Fix#536, SpellDamage now can drain power. Also Fixed AoM and DoF client WS_HearSiphonSpellDamage
- SpellDamage LUA Function now returns a boolean whether damage is dealt (or spell resisted) -- (true is damage/false is no damage or resisted). See Spells/Fighter/Crusader/Shadowknight/Soulrend.lua for a sample.
- DamageSpawn LUA Function now returns a boolean whether damage is dealt, updated to allow take_power argument DamageSpawn(Attacker, Victim, victim, type, dmg_type, low_dmg, high_dmg, spell_name, crit_mod, is_tick, no_calcs, ignore_attacker, take_power)
- new LUA Functions (both can be used in and outside of a LUA Spell):
* SpellDamageExt(Target, type, min_damage, max_damage, crit_mod, no_calcs, override_packet_type, take_power, class_id_reqs...) -- extends support for take_power field (SpellDamage function does not have this and would break other potential spells)
* SendHearCast(Spawn, spell_visual_id, cast_time, Caster, Target) -- lets the Spawn see a spell visual on Target. If Caster is not defined, we use Spawn, same goes for Target.
- Fixed WS_HearHeal struct for DoF client (displays critically heal vs heal) and proper spell name. DoF does not support absorb or other types.
- Support for translation of spell_visual (spells table) aka spellcast.dat from assets vpl.
CREATE TABLE `spell_visuals` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`alternate_spell_visual` varchar(128) DEFAULT NOT NULL '',
`spell_visual_id` int(10) unsigned NOT NULL DEFAULT 0,
`min_version_range` int(10) unsigned NOT NULL DEFAULT 0,
`max_version_range` int(10) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
** MAKE SURE TO GET spell_visuals sql included with update inserted!
- Fixed right-click inventory examine (again?) - tested and it is working for main invetory, bags and items in bags!
- DoF bags support up to 36 slots now instead of the restricted 20 for "classic" client
- DoF and classic equipment restricts to 22 slots instead of trying to send client 25 slots (the additional do not exist)
- Fix crash on signs due to lack of nullptr check on entity_command
- SetInfoStructString / GetInfoStructString now supports combat_action_state -- can be used without overriding action_state outside of combat.