Fix#250 - Added a caching of state to send a single shoot of visual state. When setting visual states for chests it was causing opening/closing of the chest if you were not already in range of it. See SendStateCommand and ProcessStateCommands in client.cpp for more
Fix#302 - Integrated GiveQuestItem into the Client::DisplayQuestComplete / Client::AcceptQuestReward process. There is support for temp rewards/status/coin.
LUA Functions added, ONLY CALLED BEFORE GiveQuestItem, NOT to be used with GiveQuestReward
SetStatusTmpReward(quest, status)
SetCoinTmpReward(quest, coin)
- Also addressed quests not updating properly in the journal where sub tasks would completely disappear
Fix#299 - AoM client Addressed hot swapping a bagged item to equipment slots poofing the item. Note: DoF client seems to have inventory issues of its own, those are not addressed here
Fix#207 - Chests have new rules for exposure times
RULE_INIT(R_Loot, ChestUnlockedTimeDrop, "1200"); // time in seconds, 20 minutes by default, triggers only if AllowChestUnlockByDropTime is 1
RULE_INIT(R_Loot, AllowChestUnlockByDropTime, "1"); // when set to 1 we will start a countdown timer to allow anyone to loot once ChestUnlockedTimeDrop elapsed
RULE_INIT(R_Loot, ChestUnlockedTimeTrap, "600"); // time in seconds, 10 minutes by default
RULE_INIT(R_Loot, AllowChestUnlockByTrapTime, "1"); // when set to 1 we will allow unlocking the chest to all players after the trap is triggered (or chest is open) and period ChestUnlockedTimeTrap elapsed
Fix#297 - Prevent stacking of food / drink effects. Also added spell_type Food and Drink to enumeration. When these are set it tells the server these are unique effects to food/drink and cannot stack with other consumed items.
In conjunction with this fix, auto consume is implemented (while in zone). Flips the auto consume on/off option as well as 'yellow tints' the background behind the auto consume options when 'on'.
Issue #305 has been created to allow 'cross zone' of maintained effects / effects on the player.
- Few additional fixes:
* if you remove an item from inventory and there is a dialog screen, you can now close it (see last parchment in Taint quest before main boss mob, it wasnt letting you put the parchment away).
* equipment serialized to the player now always includes the player pointer, this was causing menu item information for food/drink to be omitted on zone-in
*
- Few crash fixes, Deleting spells on players from lua_interface when zoning, protection on QuestStep instantiation, we recreate all the ids and locations so as to not be dependent on the prior step should it be deleted
Fix#267 - spell stacking restrictions in place
min_class_skill_req is now pulled from the database
sint32 type_group_spell_id added to spells, can use this to distinguish spells of different classes not competing (eg. wards of templar/inquisitor dont stack)
GetSpellData and SetSpellData support min_class_skill_req and type_group_spell_id
Fix#256 - status points function and SetInfoStructUInt can set them
Fix#273 - fields in player profile not updating
Fix#290 - add SetSpawnGroupID(Spawn, group_id) lua function
Fix#289 - pets don't follow
Fix#288 - FaceTarget(Originator, Target, disable_action_state) - disable_action_state defaults to true
Fix#287 - pause on hail
RULE_INIT(R_Spawn, HailMovementPause, "5000"); // time in milliseconds the spawn is paused on hail
RULE_INIT(R_Spawn, HailDistance, "5"); // max distance to hail a spawn/npc
Fix#286 - PauseMovement(Spawn, time_in_ms) added
Fix#261 - spawn_npcs added water_type and flying_type, temp rules added also
alter table spawn_npcs add column water_type tinyint(1) unsigned not null default 0;
alter table spawn_npcs add column flying_type tinyint(1) unsigned not null default 0;
RULE_INIT(R_Spawn, UseHardCodeWaterModelType, "1"); // uses alternate method of setting water type by model type (hardcoded) versus relying on just DB
RULE_INIT(R_Spawn, UseHardCodeFlyingModelType, "1"); // uses alternate method of setting flying type by model type (hardcoded) versus relying on just DB
xp_debt in InfoStruct changed to float use SetInfoStructFloat and GetInfoStructFloat for it
SpawnScript file is now listed in /spawn details on the last page
LUA functions added:
bool GetRuleFlagBool(category, name)
float GetRuleFlagFloat(category, name)
int32 GetShardID(Spawn)
int32 GetShardCharID(Spawn)
int64 GetShardCreatedTimestamp(Spawn)
bool DeleteDBShardID(shardid) -- using GetShardID
int32 GetCharacterID(Spawn)
bool SetAccessToEntityCommandByCharID(Spawn, CharID, command_string, val) -- same as SetAccessToEntityCommand, but using a CharID instead of player
Rules added:
RULE_INIT(R_Combat, DeathExperienceDebt, "50.00"); // divide by 100, 50/100 = .5% debt per pve death
RULE_INIT(R_Combat, PVPDeathExperienceDebt, "25.00"); // divide by 100, 25/100 = .25% debt per pvp death
RULE_INIT(R_Combat, GroupExperienceDebt, "0"); // set to 1 means we will share debt between the group
RULE_INIT(R_Combat, ExperienceToDebt, "50.00"); // percentage of xp earned to debt vs obtained xp 50/100 = 50% to debt
RULE_INIT(R_Combat, ExperienceDebtRecoveryPercent, "5.00"); // recovery percentage per period of time, 5/100 = 5% recovered (so if .5% debt, .5*.05 = .025, .5-.025=.475% debt left)
RULE_INIT(R_Combat, ExperienceDebtRecoveryPeriod, "600"); // every 10 minutes (x*60 seconds) recover ExperienceDebtRecoveryPercent
RULE_INIT(R_Combat, EnableSpiritShards, "1");
RULE_INIT(R_Combat, SpiritShardSpawnScript, "SpawnScripts/Generic/SpiritShard.lua");
RULE_INIT(R_Combat, ShardDebtRecoveryPercent, "25.00"); // recovered percentage of debt upon obtainig shard, 25/100 means 25%. If there is .5 DeathExperienceDebt, .5*25% = .125, .5 - .125 = .375