- 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>
- 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.
- AoM and DoF now properly sync their appearance properties (hair, face, chest, legs). This is limited to classic (non-SOGA). SOGA will be reviewed in Issue #443
- Fixed inventory being unable to move items around after moving a equipped item to inventory
- DoF: Ranged weapons now properly display in examine, this means they also work in quest accept display windows(Hawk Hunt quest).
- Fixed merchants freezing up on DoF client. DoF and earlier disabled the merchant flag in serialization of items (different structures that were not updated for DoF).
- Disabled item types in DoF (not supported): 'Thrown','House Container','Adornment','Profile','Pattern Set','Item Set','Book','Decoration','Dungeon Maker','Marketplace','Reward Crate2','Infuser1','Infuser2','Experience Vial','Overseer'
- Fixed DoF client crash with merchants (eg. Scion of Khaalista in NorthFreeport).
- DoF bauble items set to generic item packet until structure is properly identified.
- Fix#434 - AttackAllowed now checks for attackable against NPCs. Added more AttackAllowed checks around AE/Enemy target to avoid non-attackable npcs
- Fix#531 - DoF house support, AoM client also fixed inside house for door widget
- Fix#543 - Addressed AE/other spells including unattackable spawns
- Support for LUA Function InFront(Spawn, Target)
- Fix AE max targets exceeding cap
- AoM and DoF both properly display recipes inside recipe book examine
- Adding recipes from a book to a player will now add correctly (via CRC ID) if we cannot identify recipe book by its book name.
Fix#521 - Spells can now be examined correctly, loot now pops up for previously failing with items like master spells.
- Capped rain/wind to 0.0 - 1.0, going beyond 1.0 crashed DoF client
- Removed stats from clients that do not support them (DoF and AoM vice versa)
- Encounter list no longer splits exp when pet is part of encounter, only bots/players count in the split.
- Rule R_Player, AutoSkillUpBaseSkills added, 0 by default. Setting to 1 automatically sets current skill = max skill for armor,shield,class,weapon skills
- DoF client Quest complete reward now includes temp rewards item data, previously you would see an empty quest reward window.
- DoF client properly in combat (no re-sheething of weapon while in combat)
- DoF client fixed spells to do start and end cast at appropriate times (struct fix).
- DoF client casting on self says "not a friend" -- now says not an enemy. When being too far away, instead of saying "too close" now says "too far away".
- DoF fixed selecting self interrupts /camp
- DoF client server/client properly synched for inventory (food/drink and other equipped slots previously not working right)
- DoF Broker no longer crashes client, limited implementation to get first 8 results. WIP
- DoF fixed examine equipped items didn't work for drink/potentially mismatched other slots
- DoF item stat review of resists now properly display
- DoF client is constantly sending HandleExamineInfoRequest packets for spells, fixed. Greatly improved performance of DoF cause it was constantly sending these packets for all spells in your book per second!
- DoF collections window is fixed, collections now display correctly in journal window. Upon turning in complete collections, client no longer crashes. Outstanding note: DoF client has EXP show up as % of level (60?) instead of just bare XP points. This might need more discovery, but isn't a huge issue right now.
- DoF player profile inspection inventory, DoF and AoM both display inventory (DoF does not support appearance gear). Cross client inspection works also. Avoidance (DoF and AOM) / ATK (DoF) stats need to be reviewed and matched in the structure, but not a big priority.
- DoF client /who list is broken (if more than one player, by myself /who works) -- structure updated for some unknown bytes tail of packet
- DoF client gestures now show up visually and not as an /emote-
- DoF item display fixed for house items (the items themselves in inventory/broker/so on were previosuly displayed corrupted)
- DoF Merchant "sell to merchant" just shows buy window, sell window was displaying buy items, there is already a sell window with the buy window.
- DoF merchant mender/repair no longer crashes the client -- currently worked around by sending buy screen then repair screen.. displays both, need to get buy screen disabled, will be its own git issue.
- Remove/Add skills via LUA will now properly update/reflect the database.
- starting_skills and starting_spells no longer applies on each login, this will stop the restoring of spells/skills on zoning that are removed with LUA
- Login sequence into world now initially load spells/skills (and also sync if first time into the world for the character). This will allow us to avoid an unneccessary blocking behavior with World::SyncCharAbilities (it waited for 5 loops and hold the thread to see if the DB is updating the character). Now we enforce this behavior with an updated state machine for the login, no longer blocking/holding the thread.
alter table characters add column first_world_login tinyint(1) unsigned not null default 0;
- R_World, DisplayItemTiers rule made to display item tiers (1) / disable (0)
- Bots are no longer impacted by /depop or /repop
- fixed crash with Player::CheckQuestFlag where we try to send updates based on quest, dead quest ptr when calling CheckQuestChatUpdate
- revive points now support an always_included option, otherwise it only shows the closest distance
- Database updates:
alter table revive_points add column always_included tinyint(1) unsigned not null default 0;
alter table characters add column first_world_login tinyint(1) unsigned not null default 0;
- LoginServer
* LoginServer.ini now supports (integer) fields expansionsflag, citiesflag, defaultsubscriptionlevel, enabledraces under the "LoginConfig" block
eg. enabledraces = 65535 allows all races
enabledraces = 57343 removes sarnak as playable race (-8192), another -4096 would remove Arasai. -2048 removes Fae.
Default values (in hex, you can only use integer in the ini):
// full support = 0x7CFF
// 1 << 12 (-4096) = missing echoes of faydwer, disables Fae and Arasai (black portraits) and kelethin as starting city
// 1 << 13 (-8192) = disables sarnak (black portraits) and gorowyn as starting city
expansionFlag = 0x7CFF; // 0x4CF5
/* dword_1ECBA18 operand for race flag packs (sublevel 0,1,2?) -- (sublevel -1) controls starting zones omission 0xEE vs 0xCF (CF misses halas)
1 = city of qeynos
2 = city of freeport
4 = city of kelethin
8 = city of neriak
16 = gorowyn
32 = new halas
64 = queens colony
128 = outpost overlord
*/
citiesFlag = 0xFF;
// sub_level 0xFFFFFFFF = blacks out all portraits for class alignments, considered non membership
// sub_level > 0 = class alignments still required, but portraits are viewable and race selectable
// sub_level = 2 membership, you can 'create characters on time locked servers' vs standard
// sub_level = 0 forces popup on close to web browser
defaultSubscriptionLevel = 0xFFFFFFFF;
// disable extra races FAE(16) ARASAI (17) SARNAK (18) -- with 4096/8192 flags, no visibility of portraits
enabledRaces = 0xFFFF; // 0xCFFF