Current source code now resides at https://github.com/emagi/eq2emu/
Changelog is based originally on Open Source Code Base for EQ2Emu at https://git.eq2emu.com/devn00b/EQ2EMu/ (to be defunct)
Capricorn Stage started in late Dec 2020 but falls into January 2021 as to keep the stage together it is included on this page.
Jan 19th 2021: Extended Capricorn Stage 2.0 to Jan 31st. Then a new monthly system will be used for versioning.
- Tradeskill Updates:
- Fixed issue when examining recipes from book Live vs Classic recipe info would be displayed ( now uses ID vs name to retrieve recipe info
- fixed issue where create recipe would not show all available primary items that are available in inventory
- hover/examine recipe now show toal number available correctly
- fixed issue where examining a recipe from book in inventory would crash the server if book was not scriped already
- Remove instant save spell effect in Client::TriggerSpellSave, we can only save in Client::Process too dangerous otherwise to conflict with spell target
- tradeskill fix of not being able to examine recipes from recipe book
- Player hp/power details properly persist cross zone
- Fix vision to be a int32 as it is in the char info structure
- Pets cannot aggro their master, this addresses charming a pet and being able to sent it to attack, follow you correctly without locking encounter
- Fix for issue #500. Crashing while reviving to another zone.
- Loginserver Updates
- Resolve unexpected login->world issues when there is multiple entries in login_characters for same name and server id
- Write client version/world version/server last seen to database, world sends max char level to loginserver to calculate vet bonus
- LoginServer support via database for max createable Chars per acct, and ceteran EXP bonus display requires SQL update. Database table login_config field config_values added max_characters_per_account, max_level_for_vet_reward.
- Tradeskill Fixes/Improvements:
- Counter successes/fails don't seem to have any effect on durability/progress more than a regular tick.
- Every recipe has the description "The art of sculpting metal into a candelabra." in the mouseover tooltip.
- Materials and fuels stored in bank are counted for use in recipes
- Recipes with a primary component that is not owned in inventory (or bank) show as "Primary Component: [0]" in the recipe tooltip when hovering the recipe icon in the recipe window, instead of red-colored text "Primary Component: Bronze Cluster [0]". This is only with primary components. Build components and fuel components don't have this same behavior.
- Recipes can be crafted from recipe window, without having a crafting station selected or even being near one.
- T1 rawhide leather pelts harvested from dens are not the same pelts needed for any recipe that requires rawhide leather pelts: Alder, Bronze, Sackcloth, Tranquil Sackcloth, Waxed Leather, Woven Waxed, Elm, Rawhide Leather, Woven Rawhide, Threadbare, Tranquil Threadbare, Tin (probably more)
- examine recipe windows fixed, including showing total amounts of components in your inventory and previously created stage now displays as intended
- when in the craft recipe screen (prior to pressing begin) you may now select components to craft with, all available will be listed that can be used
- Updated loginserver to write created date to account table
- Fixed info_struct->get_account_age_base() so account age displays on character page.
- /claim function and veteran rewards added
- Fix #491 GetEquippedItemBySlot can be used by entities, not just players
- Fix #422 - switching from bow attack to melee when in range and use combat ability, fixed consuming food after drink not working
- Fix SetMaxHP crashing if spawn ptr is invalid
- Fix #382 - ground mobs will swim in water instead of going to bottom surface
- Fix swim skill increase for AoM client
- fix /reload spells crashing
- fix spawns in sending state not being removed when private spawn
- Map memory cache disabled by default, enable with R_World, MemoryCacheZoneMaps set to 1
- Changed Spawns no longer a MutexList, was terribly inefficient, in debug 50% cpu performance improvement on moving spawns
- Fix hangup on cure spell
- Grid breakdown of spawns, performance improvements to SpellProcess
- Removed update cost (both status, and coin) from initial purchase. Starter houses are now free!
- Fix #468 glow queue fix and version update to 0.9.5 EpsilonCMa
- Fixed missing strength damage on primary weapon
- Fix temporary and final quest rewards giving wrong description
- Fixed where new scribed books would send updated device info
- Fix additional issues with runback causing server to hangup
- Added LUA Function DamageEquippedItems(Spawn, damage_percent_amount)
- Fix #455 - Falling underworld to safe spot support
- Removed base stat/resist increase on level. Removed stat/resist increase/decrease on mentor. Starting stats/resists now pull correctly from starting_details.
- Fix UnequipSlot not properly handling third field which is no_delete_item
- Fix LUA UnequipItem so that UnequipSlot(Player, slot) removes item and deletes, UnequipSlot(Player, slot, true) will not delete, but put in free inv slot, usually first bag for now
- Widget ID support added to RegionScripts, test zone is tutorial_island02 (queens colony, overlord outpost, isle of refuge)
- You can now add a new region identified by its grid and widget id (use /grid to identify when standing over it)
- New LUA Functions:
- CreateWidgetRegion(Zone, Version, RegionName, EnvName, GridID, WidgetID, Dist)
- Dist is optional when set to 0.0f we rely only on the widget id, when dist is set we do a radius around the widgets locations
- RegionName and EnvName define the script file so if you are in QueensColony (tutorial_island02) and the RegionName is TestRegion, script is RegionScripts/tutorial_island02/TestRegion.lua
- RemoveRegion(Zone, Version, RegionName)
- By default Version is 0 on both, but you could specify a version like 546 if you had a DoF client mapped
- SetInfoStructUInt(NPC, friendly_target_npc, 1) will allow casting friendly spells on NPC
- c++17 implementation
- EQ2Maps v3 (underworld and widgets support)
- Fix EnterRegion script to send the right region type
- Fix #262 added /gm sight [on|off] with target to follow pov of spawn, LUA implemented SetPlayerPOVGhost(Player, Target_Spawn) if target_spawn is nil it will disable the ghost pov
- Fix #381 - NPC Spell Enhancements
- spawn_npc_spells is now globally loaded (World level) instead of per Zone.
- spawn_npc_spells now has a on_spawn_cast and on_aggro_cast column, these are as described. on_spawn_cast will be subset of buffing, but first casted. Same with on aggro, once on aggro is casted it will no longer cast unless using SetCastOnAggroComplete to reset.
- NPC AI code updated to support spawn group targets for buffs
- Fixed NPC's being unable to cast friendly spells on each other (heals should work and other spells now)
- Added /reload spells npc command to reload specifically npc spell lists, /reload spells also will include them
- Added LUA Function IsCastOnAggroComplete(NPC) / SetCastOnAggroComplete(NPC, true|false) - this will allow overriding the cast on aggro, if you want the NPC to repeatedly trigger sublists you can keep setting to false
- Add IsCastOnAggroComplete to LuaInterface
- Fixed house crash when you place an item and pick it up while the same zone instance is running
- Fixed cures not working correctly, it was checking the class while matching level requirements, it was checking the victim class, but we can't rely on the caster class being valid since /castspell among other customization options
- MSpellInfo Mutex updated to shared_mutex since there was a deadlock noticed before calling MSpellInfo.lock
- Inventory can no longer fold into itself (delete item) when you move item to its original slot holding left click
- protections around item not having a proper recipe book tied to it (avoid crash)
- LUA Function Cleanu
- More EQStream cleanup
- Reward / Temp Reward now stack count by item id when putting in player inventory, not single item
- Current caveat is the display in the reward box shows them as individual items, the count display was not working.
- Crash fix for Client::GetPendingQuestAcceptance, accepting quest reward after deleting quest
- Addressed temporary quest reward continuously trying to assign reward when quest was deleted
- Fixed sql escape issue with GM /castspell search_string
- Fix #477 - spells healing twice, targets listed twice in id
- Spell crashes due to food/drink addressed
- Loginserver crashfix on equipment updates with Windows.
- protection for lua user data inner data being deleted, protection around conversation options
- Fix for possible crash in SaveCharacterPicture related to stringstream.
- Fix for non-dual wielding classes being able to dual wield. Fixes issue #482
- Remove LUA SpawnList design, changed GetSpawnListByID and its adjacent lua functions to use lua tables
- bot camp remove group member lockup
- Fix for /set_language 0 crashing server.
- Fix for issue #476. Lua forced language change on learning new languages.
- Fix for issue #479. Rewrite of GetSpeed Function.
- Fix for issue #481. Added check to prevent sale of bags with items in them
- Added Heirloom check to shared bank.
- Fixed pets spawn script to not inherit other spawns
- Fix #320 persist pet name cross zone
- Fix aggro radius checks to do a line of sight check
- move gender command to /modify character set gender x, fixed log message for name filter
- Fix for issue #489. Secondary/Ranged were returning the delay of the main hand.
- Fix custom spells persisting cross zone, food/drink as an example
- Added auto pay from bank when buying a house. Part of issue #492.
- Added auto bank withdrawl of funds when paying house upkeep and you lack the coin on you. Closing issue #492
- Removed/Fixed a todo. Red popup to client when equipment is broken
- Fix #453 PlayFlavor re-design
- 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
- Fix #454 Support for SendShowBook to have language, items field 'book_language' added
- Fixes for crash on windows with UTF-16 NPC names (should never happen) and Fix for high CPU usage on windows with constant loading zones
- Fix #451 - basic pvp mitigation / mitigation integration
- 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
- 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)
- Fix quest reward acceptance when there are no items to be accepted, dialog won't keep queueing
- Fixes:
- Fix #448 - Scroll/Recipe scribing fixes
- 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, 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
- house lore support, mapping item ids to spawn and spawn id to to item id.
- Also fixed a crash when placing a item and there is no item script assigned to the item
- Fix #269 - Support for Player Inspection /inspection command of Equipment and Appearance Items
- Fix
- Client::CreateMail was memsetting over std::strings
- Loaded new recipe tables into current tradeskilling code
- The RecipeID foreign key in the character_recipes tables needs to be updated to new `recipe` table
- There is extra data in the recipe tables not being utilized due to current code constraints/missing items etc
- Fixed an issue with the Recipe(Recipe*) constructor and level requirements not being loaded into recipe_books for scribe checks
- Made character recipe/book updates async
- Fix
- Strength damage now applicable to both low and high damage
- ChangeLevel now properly called inside AddXP when player level changes (this is required!) else skill ups do not occur.
- Added weaponry to skillups (piercing, slashing, so on) since it wasn't skilling up
- Fixed crash upon not being able to load a recipe (if someone were to remove recipes from the DB that a character needed)
- Range attack now has strength based damage added
- Fixed "Ranged" skill-ups instead of damage type (piercing, slashing so on)
- Fixed skill ups not occurring if you are behind target
- Can now /reload items [item_id] to reload a single item
- Fix #437 /spawn set loot_tier and loot_drop_type now available for spawns
- fix items being attached due to bad isnumber check on set mail item
- Fixed new mail not being available to player until zoning
- Fix #465
- Memory leak on send mail addressed when target player is not on server at time of mail being sent.
- Removed old MISC TODO logs and functions that were not relevant, already completed or had other alternative options (code, lua, otherwise)
- Additional comments or commented code that were not needed any further
- /trade reject now just calls trade cancel (same thing right?)
- EmemJR: fix level display for item recipe requirements
- Fixed city zones not initiating shutdown when clients leave after a bootup (keeping a zone up always is reserved for always_loaded flag)
- Fix #463 can't use spells/combat after being revived
- spawn access requirement can now be enforced with spawn signs to not show title and description
- Fix #450 can restrict SpellDamage by race id and type
- Fix #172 lock spelleffects until removal in group
- Fix #306 - added language support for player chat. Additional log cleanup of unnecessary messages.
- Added ability to search 'Tradeskill' items from the broker
- Added ability to search broker for tinkered items. SQL update needed.
- Added ability to search broker for Sales Displays
- Fix #412 - "placed" function now called on ItemScript placement in homes. The placed spawn will be the target field (after player).
- Fixed some additional lacking group member checks and bad returns inside mutex locks
- 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.
- 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;
- Fix #279 regarding item stats and skills complete
- 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");
- Tradeskill resist/failure support for additional skills in work for Fix #279
- Broker and item stat fixes
- Broker 'btypes' (special effects) addressed for AoM client, new table broker_item_map created check DB/updates/broker_item_map_july3_2022.sql Fix #336
- 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
- Cures added!
- Fixed Cure not working if there was no levels table on the detrimental spell
- 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
- Threat transfer pointer better handled
- Item flags last set completed
- 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)
- Series of fixes
- ZoneServer::PlayAnimation Fix #395 - spawn id 0 check to avoid bad packets, also client versioning methodology added, no longer creating a packet for each client
- 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.
- start_alignment added to starting_zones
- added new rule R_World, EnforceRacialAlignment default is 1, (true). When 0, will allow you to bypass the hard coded race restrictions in the code for good/evil/neutral
- PVP alignment work
- More item flags added, additionally group member checks to avoid crashes
- No Repair implemented
Evil Only, Good Only implemented
No Value updated/implemented
Fixed house items being removed unless properly picked up by player
Broken items can no longer be used
Cannot swap equipped items in combat
Additional indestructible checks
- Fixed LUA AddControlEffect crash, item flags added
- No Destroy
No Zone
Lore
Lore Equip
Stack Lore
- Fixed inspect window mitigation and avoidance percentage
- LUA SetCanGate added
- Gate to bind continues.. Lua Functions GetCanGate(Player)/SetCanGate(Player,Val)
- Fix crash on eq2world shutdown
- group loot drop support added with loot_drop_type
- SetLootTier(loot_tier) and GetLootTier(), SetLootDropType(drop_type) and GetLootDropType() added to lua
- Repair items now displays UI popup
- Fixed self mentor in group
- Fixed new mail UI message
- race_types added to spawn set and expansion of race_types table, spawn details updated with race details
- Bind check enforcement
- attack_type added to InfoStruct along with other combat settings, delay, type, damage
- Quest step update crash fixes
- Fix issue #434 quest reward crash
- loot tier fixes for spawns
- Max characters on login increased to 30
- Fix for spawn details crash on widget
- Fix for /mood state, UI text for bind and home zone fixed
- spawn_location_placement added additional overrides of base stats, str, sta, wis, int, agi, heat, cold, magic, mental, divine, disease, poison, difficulty
- spawn_location_placement added lvl_override, hp_override, mp_override
- Fixes for InfoStruct, hp_regen_set and hp_regen_override set
- starting_languages table added
- More faction changes for handling/saving in DB
- Faction DB call removed as not required (handled by char save)
- LUA HasCoin(Spawn, Value) added, value being copper amount
- LUA ChangeFaction(Spawn, faction_id, faction_change) added
- Fixing nullptr crashes due to group members and removing equipped item causing a crash
- Corrected LUA SummonItem displaying the UI text with the correct number of items
- LUA ClearRunback() added
- LUA SummonItem supports an item count, SummonItem(Spawn, item_id, send_messages, location, item_count)
- XYZH added to LUA Evac, Evac(X,Y,Z,H)
- Server name is now in the title bar of the application (command line)
- Fix outgoing tell looking like you ‘tell yourself’
- Additional ghost map fixing with relation to SpawnState changes #2, changes #3
- Added SpawnState for sending/updating/removal of spawns, this is to prevent ghost map from occurring due to the multi-threaded nature of the WorldServer
- FaceTarget pausing and handling added, hard-coded 30s delay.
- HP reset only on runback, not for interactions with players
- Removal of unnecessary zone level spawn heading code (use case was fixing crashing world with a pet)
- Bad ‘slash’ ‘/’ command handling prevented with status restriction.
- House item placement updated to prevent sending move spawn packet too early, causing client to become the object/crash
- Crash fix on DeleteSpawns (called on zone shutdown, reload of spawns) assure spawn is removed from spawn_list completely
- Fixed a bug (SPGrid 0) with the grid retrieval against an X/Z coordinate. This was causing unclickable/hidden/flickering ground spawns, objects, spawns, etc and other strange behavior with the world.
- Objects no longer fixed to ground
- Crash fix on item destroy for item that did not exist
- Crash fix on maintained effects
- Fixed naming of “persist_through_death” also attached to crash fix below with casters removal
- Crash fix, Casters removed from spell when the player/client is not available
- Better handling of SpawnScriptTimers so as to not interfere with the memory space
- Fixed low level network issue accepting a undersized or 0 byte buffer
- LUA StopTimer(Spawn, “timer_name”) added, LUA fixes continue regarding stack cleanup
- SpellProcess stability fixes (watchdog/crash prevention), Crash fix on LUA SetSpeed call
- Quest crash fix on defective quest design
- Added a Deleted Spawn state so as to remove certain spawns from being sent out to clients zoning in/entering an area when we haven't completely removed the spawn from world (it is essentially hidden from players)
- resolved spells with duration until cancel blinking after zoning
- hard coded activity status to solid/transport flags on lifts/boats resolves falling through lifts when moving on them
- stats clearing when calculating bonuses on entity
- Player equipment mutex lock protection (watchdog/crash prevention)
- Fix GetFactionAmount to be Signed Integer
- Crash fix spell removal on zone shutdown when player already left
- PlayerItems mutex fixes (watchdog/crash prevention)
- Movement Location mutex fixes (watchdog/crash prevention)
- Can use /reload luasystem and /reload spells without causing a crash
- Log messages at spell/warning level for NPC casting when it doesn't have enough mana/concentration/etc
- Fixed a set of ASan crashes: #370, #371, #372, #373
- - healthchanged function for SpawnScripts can now return a modified health. healthchanged also now receives a third argument, Damage eg function healthchanged(Spawn, Attacker, Damage)
-1 = immune (hit damage is set to 0).
0 (or no return) = default
damage 1 or higher = new damage (before wards/procs take place)
2. Fixed locking issues with player quests when calling /reload quests
3. AddQuestStep now supports spawn ids as arguments 9+ (after the usableitemid) -- this will also set the quest flag icon that you would similarily see in a QuestStepKill noting a Spawn is involved with the quest
4. Fixed ruleset error message to only display if we don't get a ruleset id
5. Fixed a ASam crash in spawn_update_packet, didn't like our null_byte use. Changed it to not bother since we memset the data, it is already a 0x00 byte no reason to memcpy it in.
- loot_global enhancement, loot_tier added
- Additional 700 range item_stats supported
#define ITEM_STAT_SPELL_DAMAGE 700
#define ITEM_STAT_HEAL_AMOUNT 701
#define ITEM_STAT_SPELL_AND_HEAL 702
#define ITEM_STAT_COMBAT_ART_DAMAGE 703
#define ITEM_STAT_SPELL_AND_COMBAT_ART_DAMAGE 704
#define ITEM_STAT_TAUNT_AMOUNT 705
#define ITEM_STAT_TAUNT_AND_COMBAT_ART_DAMAGE 706
#define ITEM_STAT_ABILITY_MODIFIER 707
3. Added check for default_ruleset_id entry in the variables table, otherwise rules are hardcoded
- Fix #367 - Put additional protection to rest of player_quests calls, using read/write locks now also
- Fix #363 - Added rule R_Loot, SkipLootGrayMob, default is on "1". Set to "0" to allow chests and 'non body' or 'non quest' drops from gray mobs
- Fix #362 - Removed charge based items when charges depleted
- Fix #255 - Added World Time LUA Functions GetWorldTimeYear(), GetWorldTimeMonth(), GetWorldTimeHour(), GetWorldTimeMinute(), SetWorldTime(int16 years, sint32 months, sint32 hours, sint32 minutes), SendTimeUpdate()
- Additionally fixed camping and logging back in immediately, there was a 30 second delay. That is no longer the case.
- Fixed effective level updating on level changes, this prevents the unexpected purple inventory and mentor level display
- Fix #364 - Linkdead caused instability to world server and also the process of reconnecting a formerly connected player was not setup correctly (need to clear xor packets and other variables, visual states, player states)
- Fixed a crash issue with toggling client offline in database
- Encounter spells NPC->Player now properly handled
- Fix #360, appearance types cheek_type, chin_type, ear_type, eye_brow_type, eye_type, lip_type, nose_type, body_age, body_size supported in SpawnSet.
- Fix #359, better handling of movement locations and assure its protected multi-threaded
- Fix #353, merchant sales will properly reflect your inventory
- “obtained” lua function now triggers for ItemScripts when looted, not just added to the player through other means
- Fix #342, lock down fuel components
- Fix #361, expansion holiday flag logging to warning instead of default error adding spawn.
- Deadlock fix on spawn removal / delete of spawns (spawn list vs the spawn pointer handling)
- no_drop_quest_completed added to lootdrop table, allows specifying a Quest ID (int32) which will be checked against player and/or their group, if one person does not have the quest completed item will drop, otherwise will not drop.
- Zone Instancing Type added to a cache to avoid consistent database polling on the instance type
- Mentor now removes spells when mentoring down or unmentoring.
- Added LUA function GetZoneLockoutTimer(Player, ZoneID, displayClient=false) - returns string with the lockout timer length (or empty string if no lockout). DisplayClient = true will display the result to the player if there is a lockout.
- Can no longer Hail dead spawns
- Crash fix in TempRemoveGroup if group id is a non-existent group pointer.
IsTransportSpawn(Spawn)
GetSpawnByRailID(railid)
GetSpawnListByRailID(railid)
GetPassengerSpawnList(Spawn)
SetRailID(Spawn, sint64:rail_id)
IsZoneLoading(Zone)
IsRunning(Spawn)
Fix display level to match when you level up (or down) when not grouped or mentoring
Items now display purple when mentored due to level requirement of item
- secondary targets working for casting heal spells, recast is more or not working correctly now..
- overrides existing spell when there is a duration of time or trigger count to the spell
- doesnt prematurely show the icons available (eg. you cancel a spell then it pops up and you cant reuse or it starts a recast timer when it shouldnt)
- doesnt reset the recast timer (sometimes giving double the time to cast)
- unlocking a spell when all spells locked, no longer occurs
- GroupTarget spell_type designation to allow “cast” function to trigger for each spawn vs a single call to “cast” on the target (and relying on group functions to make impact on the group). This is used in scenarios such as summoning an item (Divine Awakening)
- Fix Login Server not accepting a new connection after a previously rejected one
- Broker fixes, 1h/2h equip fixes, swapping equip works, additional spell fixes (group spells, targetted AE), more crash fixes
- Disabling buy item on a merchant supported, ptr checks / crash fixes
- Item/Merchant/Scribing/Inventory Updates: item_description function which returns a string added to ItemScripts, new rule RULE_INIT(R_Spells, RequirePreviousTierScribe, "0"); - when enabled requires tiering up spell apprentice→journeyman→adept→etc
- Login Server Updates: DoF/Classic auto-login on character creation instead of getting stuck, soga/standard model color displayed for character, fixed disabled flag for world servers, added ban by ip list
- Albireo Update #2
- Appearance equipment now supported and saved in database
- Added rule to disable alignment check for house purchasing - RULE_INIT(R_Player, DisableHouseAlignmentRequirement, "1");
- loot_criteria functions in ZoneScripts added for global loot
- item_difficulty function created in ItemScripts to allow overriding the merchant difficulty setting
RULE_INIT(R_Spells, EnableCrossZoneGroupBuffs, "0"); // enables/disables allowing cross zone group buffs
RULE_INIT(R_Spells, EnableCrossZoneTargetBuffs, "0"); // enables/disables allowing cross zone target buffs
RULE_INIT(R_Spells, PlayerSpellSaveStateWaitInterval, "100"); // time in milliseconds we wait before performing a save when the spell save trigger is activated, allows additional actions to take place until the cap is hit
RULE_INIT(R_Spells, PlayerSpellSaveStateCap, "1000"); // sets a maximum wait time before we queue a spell state save to the DB, given a lot can go on in a short period with players especially in combat, maybe good to have this at a higher interval.
RULE_INIT(R_Spells, EnableFizzleSpells, "1"); // enables/disables the 'fizzling' of spells based on can_fizzle in the spells table. This also enables increasing specialized skills for classes based on spells/abilities.
RULE_INIT(R_Spells, DefaultFizzleChance, "10.0"); // default percentage x / 100, eg 10% is 10.0
RULE_INIT(R_Spells, FizzleMaxSkill, "1.2"); // 1.0 is 100%, 1.2 is 120%, so you get 120% your max skill against a spell, no fizzle
RULE_INIT(R_Spells, FizzleDefaultSkill, ".2"); // offset against MaxSkill to average out to 100%, default of .2f so we don't go over the threshold if no skill
- Fixed chests opening/closing added new process of one off visual state using SendStateCommand
- Integrated GiveQuestItem into the Client::DisplayQuestComplete / Client::AcceptQuestReward process. There is support for temp rewards/status/coin. SetStatusTmpReward(quest, status) and SetCoinTmpReward(quest, coin)
- Addressed quests not updating properly in the journal where sub tasks would completely disappear
- 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
- Chests have new rules for exposure times RULE_INIT(R_Loot, ChestUnlockedTimeDrop, "1200"); - RULE_INIT(R_Loot, AllowChestUnlockByDropTime, "1"); - RULE_INIT(R_Loot, ChestUnlockedTimeTrap, "600"); - RULE_INIT(R_Loot, AllowChestUnlockByTrapTime, "1");
- 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. spells DB needs updates for spell_type to properly reflect Food/Drink value.
- 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'. Todo not complete: maintained effects / effects need cross zone support, this would include consumed food/drink.
- 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
- Cleanup of LUASpell on a entity when it is deconstructed, so as to not leave dead pointers around (esp on camp of player)
- Disabled Paperdoll packet, was corrupting memory
- Spell stacking restrictions implemented, DD and DoT are the only exempt. Spell types however are not configured correctly and need DB work.
- LUA Function Added: AddToSpawnGroup(spawn, group_id), AddLanguage now also updates client correctly
- Fixed another crash on water scenario
- LUA Function SpawnSet “faction” fixed
- Status is supported for housing, purchase of, upkeep and escrow
- LUA Function Updated: GiveQuestItem(Quest, Player, Description, ItemID1, ItemID2) - now supports multiple items
- Spell Concentration now works, no_interrupt added to SetInfoStructUInt with value of 1 entity cannot be interrupted casting spells
- SpawnSet given color options via function SpawnSet(Spawn, "fieldname", "R G B") - SpawnSet also temporary by default now
hair_color1, hair_color2, hair_type_color, hair_face_color, hair_type_highlight_color, face_hairlight_color, hair_highlight, model_color, eye_color soga_skin_color, soga_hair_color1, soga_hair_color2, soga_hair_type_color, soga_hair_face_color, soga_hair_type_highlight_color, soga_face_hairlight_color, soga_hair_highlight, soga_model_color, soga_eye_color
- Fixed pets not following
- LUA Function expanded: FaceTarget(Originator, Target, disable_action_state) - disable_action_state defaults to true
- Pause on hail options - RULE_INIT(R_Spawn, HailMovementPause, "5000"); and RULE_INIT(R_Spawn, HailDistance, "5");
- LUA Function Added: PauseMovement(Spawn, time_in_ms)
- spawn_npcs added water_type and flying_type
- HP / Power Regen rewrite, consolidated calculations and support in and out of combat settings.
- Rule RSpawn, ClassicRegen added to allow circa 2004-2005 regen (out of combat did not include in combat regen). Set to "1" to enable.
- HatedBy was incorrectly tracking mobs a spawn/player was aggroed by. Fixed the 'counter'.
- Parry/Riposte/Block/Dodge implemented more in line with known resources, some formulas like block need more details to properly calculate.
- GetInfoStruct/SetInfoStruct cur_avoidance, parry, parry_base, deflection, block are now floats
- GetInfoStruct/SetInfoStruct sint16 power_regen and hp_regen, lastly power_regen_override and hp_regen_override are int8 -- both added in relation to HP / power regen rewrite
- Item skill support added for Crushing, Defense, Deflection, Disruption, Fishing, Focus, Foresting, Gathering, Mining, Parry, Piercing, Safe Fall, Slashing and Trapping
- /waypoint can now be cleared with no target and issuing just /waypoint command
- /spawn details [x] now supports behind, infront, flank to get your relationship to the targetted mob
- EmemJr: /craftitem added
Requires query:
INSERT INTO commands SET TYPE=1,command='craftitem',subcommand='',HANDLER=526,required_status=100;
- /add_aa crash fix
- LUA Functions Added: RemoveSpawnSpellBonus(spawn), AddIconValue(spawn, value), RemoveIconValue(spawn, value)
- LUA Function updated: GetSpell(spell_id, tier, custom_lua_script) - third argument added to setup custom script file
- Evac now correctly allows you to reload the zone (fast reload skips a lot of loading process) and you do not see a duplicate of your spawn, combat is not 'silent' (you can see damage to and from spawns)
- Player / Spawn index mapping simplified (less wasted memory/cpu/tracking)
- region_map_v1 code updated to match unsigned values (signed vs unsigned was causing compile issues)
- /bot follow id and /bot stopfollow id added
- Fixed bot camp crashing when in group
- Fixed SpawnSet LUA crashes
- Heroic Opportunity starter stage fix
- GetSpellSlot deadlock fix
- Heroic Opportunity crash fix when DB not in sync
- LUA Function Added: MakeRandomInt(min,max) and MakeRandomFloat(min,max)
- LUA Equipment commands SetEquippedItemByID(Entity, slot, itemid) SetEquippedItem(Entity, slot, item) both return false if unable to equip. UnequipSlot(Entity, slot, nodeleteitem), SetEquipment(Entity, slot, type, r , g , b , hr , hg, hb)
- Quest leaf flag update will now correctly display (eg. for quest npcs) when in-range of mob upon the update
- ModelViewer / MapEditor updated with latest code (Region updates for lava/death regions, etc)
- Better Quest class memory management
- New GM command /movecharacter [charname] [zoneshortname]
- /castspell now also includes a new argument /castspell [spellid] [selfcast] - if selfcast is 0 this means the target will cast on themselves, not YOU casting on them.