* Spells now have level and class checks
* Recipes now have class checks (already had level checks)
* Recipes now fallback to the item recipebook info to populate players recipes from a recipe book if the recipe book is not properly configured by book name
Fix#396 - Implemented subspawn tables so we can update specific types of spawns, in this case collectors when we remove the red book
Fix#205 - ground spawns now can have random heading assigned or forced heading
alter table spawn_ground add column randomize_heading tinyint(3) unsigned default 1;
randomize_heading = 0 uses base heading in the spawn location
randomize_heading = 1 means all spawns will have a random heading 0-360 degrees
Fix#118 - Knowledge sorting / spell book updates now correctly work.
* Down/Across patterns now supported (zig-zag was default)
Fixed a crash when a spawn spell is interrupted and then the spawn dies to a melee attack could cause memory corruption removing spell timer pointers
Startup opcode warnings are now grouped by versioning to allow easier troubleshooting, DoF uses 546 and AoM 60085, thus most opcodes warnings are not relevant to supported cases
Fixed a regex crash on /findspawn
Fix#458 - fixed memory leaks in lua quest step location/zone loc functions and also languages memory cleanup
New Rules:
RULE_INIT(R_PVP, PVPMitigationModByLevel, "25"); // gives a bonus to mitigation for PVP combat to offset the percentage level * mod (default 25)
RULE_INIT(R_Combat, EffectiveMitigationCapLevel, "80"); // level multiplier for max effective cap, level * 80 (default)
RULE_INIT(R_Combat, CalculatedMitigationCapLevel, "100"); // The cap to calculate your mitigation from is [level*100].
RULE_INIT(R_Combat, MitigationLevelEffectivenessMax, "1.5"); // ratio victim level / attacker level for max effectiveness, when victim is higher level cap can reach 1.5
RULE_INIT(R_Combat, MitigationLevelEffectivenessMin, ".5"); // ratio victim level / attacker level for min effectiveness
RULE_INIT(R_Combat, MaxMitigationAllowed, ".75"); // percentage max mitigation allowed, eg. 75% of damage can be mitigated max in PVE
RULE_INIT(R_Combat, MaxMitigationAllowedPVP, ".75"); // percentage max mitigation allowed, eg. 75% of damage can be mitigated max in PVP
InfoStruct now has two unsigned int16 values that offer mitigation percentage values in integer formats, eg 155 = 15.5% mitigation
mitigation_pve
mitigation_pvp
Updated formulas to use effective_level (mentor/actual level) vs just player level
* Dodge
* Block
Bug fix for crash in non existent quest being called for /modify quest advance
Bug fix for improperly trying to stack items that are not stackable (count of 0 items, stack count of 1)
Bug fix for inventory updates, typically with overflow slots and after deleting items from inventory (packet count needs to be updated with current size in PlayerItemList::serialize)
Collections/Rewards:
- Display is now one reward at a time
- Display of award now only allows the reward cash, status to be provided once
- Database persistence of unaccepted rewards cross-zone with two new tables
- Selectable collections now checks if either field provided in /accept_reward is a potential item id (this is likely due to a client versioning)
PlayFlavorID(NPC, type, id, index, Player, language)
Set Player to 'nil' to send to all clients, specifying a Player will make it send ONLY to that player
New command /reload voiceovers added
- versioning updated to 0.9.4-aquarii
- Fix#454 Support for SendShowBook to have language, items field 'book_language' added
- Some debug log cleanup
- Fixed some additional lacking group member checks and bad returns inside mutex locks
- Fix#432 - set languages on sign/conversation, we can now set language in spawn_signs, language setting only garbles description, not title of spawn_signs
* StartDialogConversation has a 9th parameter (after key2) for language (int8), 10th parameter is can_close (defaults to 1)
* StartConversation has an 8th parameter (after key2) for language (int8), 9th prameter is can_close (defaults to 1)
* spawn_signs table now supports the language parameter, db update:
alter table spawn_signs add column language tinyint(3) unsigned default 0;
- Fixed AoM skill display for general skills, languages now display too, but we need to discover how to omit skill values
- /spawn details now includes sign language on the third page if the spawn is a sign.
- Update Activities for AOM added (someday we need a table based on versions to handle these)
- In turn of updating activities, client side enforced drowning, swimming is now correct
- transmuting skill / item stat now calculated
- Fixed sending certain information to client before they are zoned in
- Player is blocked from being attacked until they send their 'ready' message to the server (visual UI display can be seen)
- New swim rules:
RULE_INIT(R_Player, SwimmingSkillMinSpeed, "20");
RULE_INIT(R_Player, SwimmingSkillMaxSpeed, "200");
RULE_INIT(R_Player, SwimmingSkillMinBreathLength, "30"); // these are probably in seconds
RULE_INIT(R_Player, SwimmingSkillMaxBreathLength, "1000");
* May need further expansion some day to compare other clients, we can map btype, but the itype/ltype may also need to be mapped.
- Fixed Item::HasStat to work for stats in the 100-199 range since they only match the type (1) and the subtype is the value, meaning we have to match up the skill name
Partial addressing of Issue #279
- Ministration Skill/Power reduction added with rules
RULE_INIT(R_Spells, MinistrationSkillID, "366253016"); // ministration skill id used to map power reduction rule MinistrationPowerReductionMax
RULE_INIT(R_Spells, MinistrationPowerReductionMax, "15.0"); // max percentage of power reduction for spells with ministration mastery skill (default is 15.0 for 15%)
RULE_INIT(R_Spells, MinistrationPowerReductionSkill, "25"); // divides by integer value to establish how much skill req for higher power reduction
- Subjugation, Disruption, Ordination and Aggression resistance reduction by skill of the attacker
RULE_INIT(R_Spells, MasterSkillReduceSpellResist, "25"); // divides by integer value to establish how much skill bonus for reducing spell resistance on target
- Weapon Skills item stat now added to the weapon skill (crush/slash/pierce) for determinehit
- Fix#329 /cureplayer implementation (minus RAID support)
update commands set handler=531 where command='cureplayer';
- cures will now remove the maintained spell of the caster if all targets are gone
- target support for item scripts 'used' function, eg.
function used(Item, Player, Target)
-- do stuff
end
- effect_type added to items table, currently used to map to cure types
alter table items add column effect_type int(10) unsigned not null default 0;
NO_EFFECT_TYPE=0,
EFFECT_CURE_TYPE_ALL=1,
EFFECT_CURE_TYPE_ARCANE=2,
EFFECT_CURE_TYPE_TRAUMA=3,
EFFECT_CURE_TYPE_NOXIOUS=4,
EFFECT_CURE_TYPE_CURSE=5,
EFFECT_CURE_TYPE_MAGIC=6
- created sample cure using item id 48868 Translucent Remedy of the Gods
update items set lua_script='ItemScripts/cure_test.lua' where id=48868;
update items set usable=1,effect_type=1 where id=48868;
I know, not the items real purpose, but this was just a fun test since the other effect cure types would be specific to the type
- removed dump packet of lower layer packet opcode 3 (reduce noise in console)
- Temporary item flag support (removes item 30 minutes from camp out)
Rule R_Player, TemporaryItemLogoutTime added for seconds to deletion of item
- Heirloom item flag support added (limited to group support)
Rule R_Player, HeirloomItemShareExpiration added for seconds to inability to trade item between prior group members(tbd raid)
SQL Updates:
CREATE TABLE `character_items_group_members` (
`unique_id` int(10) unsigned NOT NULL default 0,
`character_id` int(10) unsigned NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
alter table character_items add column last_saved timestamp default current_timestamp on update current_timestamp;
alter table character_items add column created timestamp default current_timestamp;
- SpellProcess::DeleteCasterSpell now unshades/ungreys a spell that was in maintained effects when cancelled. This is for Fix#383 in relation to pet spells, but extends to any endless duration maintained spells.
- Fix#315 Implemented /cancel_effect [spell_id] - need DB query update: update commands set handler=530 where command='cancel_effect';
- Spell bonuses should properly be removed when spell is removed from a entity/spawn (char sheet stats should update and bonuses re-calculated)
- Sanity checks on /cancel_maintained so you cannot overflow the array and crash the server
- Resisted spells should no longer add control effects or do other spell like impacts when the cast is complete, this is based on the SpellDamage/Attack (that resists, then additional effects will be ignored in the cast function)
- Root, stun and mesmerize now hold the NPC in place
- We purge their previous movement plans to avoid wandering pointlessly when an NPC is stunned, mesmerized or rooted
- starting_languages update
R_World StartingZoneLanguages
Value 0: Does a match specific to race id (ignores starting_zone in the SQL query, so it consumes all) and inserts the languages applicable
Value 1: Looks for all matching to starting_city, which is based on the client see starting_zones for examples. Also wildcard for starting city of 0 and race id match.
update starting_languages set race=2 where race=3 and language_id=3; #dwarf (2) language id of 3 is not erudite race (3)