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
Fix#277 - hp / power regen rewrite
Also added power_regen_override and hp_regen_override, when set to 1, you can LUA manually set hp_regen and power_regen to enforce it in code
RULE R_Spawn, ClassicRegen added. Set to 1 means we do not have both regens when out of combat (eg. out of combat = out of combat regen + in combat regen). In classic you only received in combat or out of combat regen individually.
Fix#278 - HatedBy now properly handled, we know when a player/spawn is being hated by other targets
Fix#275 - Parry/Riposte, Block and Dodge implemented. Missing Block formula which will become its own issue.
Entity GetInfoStruct/SetInfoStruct, cur_avoidance, parry, parry_base, deflection, block are now floats. Added sint16 power_regen adn hp_regen, lastly power_regen_override and hp_regen_override are int8's.
Fix#274 - Implemented stats Crushing, Defense, Deflection, Disruption, Fishing, Focus, Foresting, Gathering, Mining, Parry, Piercing, Safe Fall, Slashing and Trapping
/waypoint command now allows flushing waypoint if you do not have active target
/spawn details [x] supports behind, infront and flank
/craftitem added per EmemJr update
INSERT INTO commands SET TYPE=1,command='craftitem',subcommand='',HANDLER=526,required_status=100;
Crash fix for /add_aa hitting bad spell id
LUA Functions:
RemoveSpawnSpellBonus(spawn) - used in LUASpell script
GetSpell(spell_id, tier, custom_lua_script) - third argument added to setup custom script file
AddIconValue(spawn, value)
RemoveIconValue(spawn, value)
Fix#169 - evac now works correctly, no ghost spawn of self and you can go into combat and see damage taken/given.
Also simplified the player spawn / index map (had duplicates unneeded)
Fixed region_map_v1 throwing errors on special variable for signed vs unsigned
Allows to stop the bot from following you or continue following when in group. Also fixed the default runspeed on NPC's to be set to MaxSpeed. Should resolve any unexpected stationary npc's/bots.
Partial address issue #246 - normal mail can be sent/received without corrupting the packet. 'Double' 0x80 item packets need serialize support, LE was working on it for crafting, holding off fully addressing 246 with that addition.
Fix#253
bool return = SetEquippedItemByID(Entity, slot, item_id)
bool return = SetEquippedItem(Entity, slot, item)
return = false if it fails to set the item, means the slot is in use already, have to unequip first
UnequipSlot(Entity, slot, no_delete_item) -- does delete the item upon unequipping by default, otherwise set no_delete_item = true
SetEquipment(Entity, slot, type, r, g, b, h_r, h_g, h_b) -- (r = red, g = green, b = blue, h_ = highlights)