Revision: 789 Author: Yeahlight Date: 12:26:02 AM, Wednesday, November 02, 2011 Message: Added: The starting support for the monster summoning spell line. Updated: Rewrote the rune absorption logic to properly support traditional and spell-only runes. Updated: Rewrote the buff loading routine for clients. This includes support for persistent client state effects, such as invisibility, levitation, etc. Fixed: A critical issue in our spell stacking logic. Fixed: A number of redundant packet payload initializations. Fixed: A handful of critical memory initialization issues associated with non-C structures. ---- Revision: 788 Author: Yeahlight Date: 6:43:03 PM, Saturday, October 29, 2011 Message: Added: Support for the recourse spell line. This addition includes the correct handling for all drain spells, including life taps, mana drains, reverse life taps and attribute drains. Mana drains will not land unless the target has a mana pool. Fixed: Identified the last remaining byte in the spell buff struct, the beneficial/detrimental recourse flag. Our client does not have dedicated recourse effect spells, so this flag controls the way the buff behaves (takes away or gives). Fixed: Made the distinction between dispellable and non-dispellable buffs. Non-dispellable buffs currently include resurrection effects and all drain recourse buffs (the client enforces the latter). Fixed: Combat sensitive buffs now fade when the owner makes an offensive action (the client actually handles this for us). ---- Revision: 787 Author: Yeahlight Date: 3:51:22 AM, Wednesday, October 26, 2011 Message: Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: Identified the total play time field in the player profile struct. Fixed: The server's representation of the client's player profile is now completely overwritten by the client's uploaded version only when the CRC32 checksum matches the server's calculation and when the incoming player profile data passes all thorough sanity checks. Fixed: We now keep track of the number of each spell effect on a mob to prevent wrongfully changing a mob's state before all necessary effects have been removed. For instance, a mob with two sources of invisibility will no longer become visible when one wears off. These checks are only made against redundant spell effects (invisibility, root, fear, see invis, etc.). Fixed: Combat sensitive buffs (e.g., Scale of Wolf) now fade when taking damage. Fixed: Heal agro is now based on the amount healed instead of the maximum heal amount. Fixed: Root spells with damage components no longer prematurely fade themselves (the damage in the root does not count towards a break). Fixed: Lifetaps function properly again. Fixed: Made the distinction between melee and magic runes. Fixed: The mana pool spell effect now functions properly. ---- Revision: 786 Author: Yeahlight Date: 8:28:35 PM, Monday, October 24, 2011 Message: Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: Identified the character creation time stamp in the player profile. Fixed: Finally discovered the correct protocol for updating a client's current mana from spells such as the iconless bard mana song and necro twitch line. Fixed: Bard modifications are now stored properly for each spell on the server. Fixed: Spell casting mistakes when using clicky items no longer consumes mana. ---- Revision: 785 Author: Yeahlight Date: 4:39:44 AM, Friday, October 21, 2011 Message: Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: The bard revamp is now complete. Fixed: Unified the attacking rules for all entities (PCs, NPCs and triggers). Fixed: Rewrote the entire area of effect (AE and PBAE) spell routine. Fixed: NPCs may now use rain spells. Fixed: Rain spells are now capped at four targets. Fixed: The server can now tell when a buff has ended prematurely on the client (clicked off or faded by the client). Fixed: Channeling is interrupted when charm wears off. ---- Revision: 784 Author: Yeahlight Date: 2:07:04 AM, Thursday, October 20, 2011 Message: Added: Support for synchronizing the effects of dynamic spells (those whose effects change in intensity over time). Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: Continued the bard class revamp. Features of the bard class may be broken until the next update(s). Fixed: Buff durations between the client and server are now synchronized. Fixed: The effect values for dynamic spells are now correct. Fixed: The available slot discovery routine is now correct. ---- Revision: 783 Author: Yeahlight Date: 8:20:04 PM, Tuesday, October 18, 2011 Message: Added: The correct classic spell stacking rules that agree with the client (props to Harakiri for the discovery!). These rules are far more erratic and complex than I anticipated, and services such as Lucy are not an accurate representation of how spells stacked in the classic era. Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: Continued the bard class revamp. Features of the bard class may be broken until the next update(s). Updated: Rewrote and simplified the attacking rules (sans PvP). Updated: Rewrote the spell landing permission rules (sans PvP). The new rules are as follows: Casters may always land spells on themselves; if the spell is detrimental, the spell will only land if the caster may attack its target; if the spell is a beneficial buff with a minimum casting level of 50, the spell will only land if the caster's target cons blue or higher; if the spell is a beneficial spell, the spell will not land on clients whose master may be attacked by the caster; if the spell is a beneficial spell, the spell will not land on NPCs who may be attacked by the caster or whose master may be attacked by the caster. Checks for a target's master is recursive, thus if any of the target's masters (there is no limit) violate the rules, the spell will not land. It is important to note that these rules make it impossible to apply detrimental spells to a charmed mob whose master is friendly, thus the charm debuff on the mob cannot ever be refreshed. Fixed: Regardless if a spell is resisted or not, a client will always receive (when landing is permitted) the buff placement packet. Since the client handles its own stacking rules, this approach will not produce any negative results but errors with our server-side implementation will now be easy to spot. Fixed: Group-only spells are now enforced, which are not to be confused with group buff spells. These spells include bind affinity, cancel magic, shrink, grow, etc. Fixed: The bard instrument modification now comes from the stronger of the two possible instruments wielded. ---- Revision: 782 Author: Yeahlight Date: 10:45:41 PM, Saturday, October 15, 2011 Message: Added: Mana cost reduction for spell casting specialization. The mana reduction returns are linear between 0 and 10 percent as the skill increases from 0 to 200 (the minimum obtainable skill is 30, so there will always be a reduction present). Added: Targeted binding exceptions (additions) for Kael (EW/WL zone lines), Iceclad Ocean (docks near Stormfeather) and corrected those for Skyshrine (now the entire first "floor"). Please source ./db/zone_rules.sql. Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: Continued the bard class revamp. Features of the bard class may be broken until the next update(s). Fixed: Implemented all twenty-two correct spell effect value formulas (props to Harakiri for discovering them!). These formulas cover all buff and debuff stat calculations, including dynamic effects such as Splurt, Resurrection Effects, etc. ---- Revision: 781 Author: Yeahlight Date: 4:24:46 PM, Saturday, October 15, 2011 Message: Added: Bind restrictions to the following zones marked as openly bindable (caster may bind target): Frontier Mountains (empty ruins), Field of Bone (Kaesora area), North Karana (gypsy camp), Firiona (docks), Overthere (docks), Skyshrine (barkeep area). Kael will probably make this list in the future. Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: Continued the bard class revamp. Features of the bard class may be broken until the next update(s). Fixed: The packets the client is expecting when channeling is concluded are now sent in the correct order. Spell gem availability no longer disagrees with the data in the spell file. ---- Revision: 780 Author: Yeahlight Date: 6:09:12 PM, Friday, October 14, 2011 Message: Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: Continued the bard class revamp. Features of the bard class may be broken until the next update(s). Updated: Identified the social animation ID in the spell struct. Fixed: Bards no longer receive mana regeneration from songs, spells or items. By the same token, bards no longer lose mana from debuffs and other detrimental effects. A bard's mana regeneration will forever be +1 / tic standing and +2 / tic sitting. Fixed: Stun and mesmerize now properly interrupt channeling. Fixed: Pulled weapon procs out of the channeling system. Weapon procs no longer overwrite active channeling data (this really only applies to bards). Removed: Roughly one hundred redundant payload (packet buffer) initializations. ---- Revision: 779 Author: Yeahlight Date: 10:01:57 PM, Thursday, October 13, 2011 Message: Updated: Continued the spell casting system revamp. Features of spell casting may be broken until the next update(s). Updated: Continued the bard class revamp. Features of the bard class may be broken until the next update(s). Fixed: The channeling monitoring system has been rewritten and should now be unbreakable (no more getting locked out of spell casting). Fixed: The "mana update" opcode was incorrectly described. This opcode is really the channeling conclusion opcode that just happens to have a current mana component. If a client receives this opcode while casting, their channeling will be interrupted, thus this opcode is not sufficient for spells that add or subtract from current mana, such as the necro twitch line. We will need to find a way to increase / decrease a client's mana pool through some other method. Fixed: Recurring effects (HP, mana and endurance) in buffs / debuffs are no longer applied the moment a spell lands. These effects do not take hold until a tic has been processed. Fixed: Bard songs may no longer be interrupted by basic melee combat. Fixed: Bards no longer receive mana regeneration benefits from their meditation skill. Fixed: The correct spell casting animations for all classes now trigger. Fixed: When overwriting an identical buff on the client, the old version is no longer removed but rather updated. Fixed: Spells and songs are now gracefully interrupted when required. Fixed: Bard fizzling is now working correctly. Fixed: Bards may now channel clicky items on the run. ---- Revision: 778 Author: Yeahlight Date: 5:03:58 AM, Wednesday, October 12, 2011 Message: Added: The correct spell fizzling formulas for casters and bards. A caster's primary stat (INT or WIS), casting skill, specialization and spell's difficulty level all influence fizzle rates for a minimum success rate of 5% and a maximum success rate of 98%. A bard's DEX, CHA, instrument skill and song difficulty all influence missing note rates for a minimum success rate of 1% and a maximum success rate of 98%. The amount of mana lost due to a fizzle is 40% of the spell's mana cost or 12.5% of the caster's total mana pool, whichever is smaller. Updated: Continued the spell casting revamp. Fixed: Finally acknowledged the presence of spell casting specializations. Casting specializations reduce fizzle chances and a spell's mana cost (not yet implemented). A caster may only have one specialization beyond 50, capping at 200. ---- Revision: 777 Author: Yeahlight Date: 10:47:48 PM, Saturday, October 08, 2011 Message: Fixed: We now only have eight user defined data types instead of the redundant group of fifteen or so. They are as follows: int[8/16/32/64] and sint[8/16/32/64]. Updated: Resumed the spell casting system revamp. Many outstanding bugs, redundant packets and oversights have been corrected, but this work is incomplete so many spell casting related features may be broken until my next update(s). The logic behind bard mechanics is also being rewritten to properly reflect how bards and their buffs should function. ---- Revision: 776 Author: Yeahlight Date: 4:31:03 AM, Friday, October 07, 2011 Message: Added: The combat fatigue formulas that agree with our client. Heavier weapons induce more fatigue than lighter ones. Added: Fatigue for traveling. Swimming burns more stamina than running, which burns more stamina than walking / standing still. Added: A generic alcohol consumption formula and the correct sobering formula. As calculated by the client, drunkenness is quite random, thus it is not possible to synchronize with the server (except when the client fires off a save), but the implemented formula is accurate over the long run. Updated: Finished stamina (yellow bar) synchronization with the client. Stamina regeneration / fatigue has many more variables than mana regeneration, plus some of the formulas have random number generation components, thus stamina's synchronization cannot be guaranteed accurate; the more chaotic a client's movements, the less accurate their stamina level will be. Updated: The correct drunkenness penalties have been applied to avoidance AC and accuracy ATK formulas. Fixed: Various monk related issues with AC calculations. ---- Revision: 775 Author: Yeahlight Date: 5:27:52 AM, Thursday, October 06, 2011 Message: Added: Correct encumbrance formulas that agree with our client for both weight and critically low HP. Added: Fatigue penalties to STR, AGI and DEX. Added: Drunkenness bonuses to STR and STA and penalties for DEX, AGI, INT and WIS. Added: Encumbrance penalty to AGI. Updated: Started the process of synchronizing a client's stamina (the yellow bar, not the stat) with the server. Much like HP and mana, we no longer send the client direct stamina updates. Fixed: Several precision errors in the AC component formulas. A few monk related errors are currently outstanding, though. ---- Revision: 774 Author: Yeahlight Date: 7:09:54 AM, Wednesday, October 05, 2011 Message: Added: The ability to calculate a client's weight (equipment + inventory + cursor + coin) using the correct formulas that agree with our client. These formulas take into consideration both item and coin reduction bags, too. Fixed: Identified the actual maximum amount of client HP. Fixed: The maximum client HP formula now agrees with our client. ---- Revision: 773 Author: Yeahlight Date: 12:36:33 AM, Wednesday, October 05, 2011 Message: Added: Routines to determine PC drunkenness and its associated degree of drunkenness as instructed by the client. Added: Routine to properly determine if an entity (PC and NPC) has a skill (bool Mob::HasSkill()). Fixed: We have now the correct mitigation AC, avoidance AC, efficiency ATK, accuracy ATK, AC combination and ATK combination formulas for which all agree with the client. Encumbrance (normal and monk) and drunkenness penalties are currently absent from these formulas. Fixed: Added a lower bound to the HP synchronization routine to prevent a majority of the false positive warnings. Removed: All unnecessary attribute estimation formulas and switches. ---- Revision: 772 Author: Harakiri Date: 6:23:06 PM, Sunday, October 02, 2011 Message: Added: Identified Opcode to sent switches (doors, bridges, traps etc) as one compressed bulk packet Added: Switches will no longer be sent one at a time when zoning in, they are sent as one compressed bulk packet, this should reduce the network and processing overhead. Added: Identified how to sent the players inventory as one compressed packet, items are no longer sent one at a time during zone in, this should reduce the network and processing overhead and will get rid of other side effects. Added: Initial commit of new merchant item shop list - these are are "hand picked" and contain the correct shop list for felwithea, felwitheb, gfaydark(kelethin) and halas - over 165+ merchants with correct inventory. Please source eqc_merchant_shop_items_*.sql Updated: The merchants inventory will now be first loaded from the clean shop list, if no entry exists it will default to the old table. ---- Revision: 771 Author: Harakiri Date: 2:24:21 PM, Saturday, October 01, 2011 Message: Added: Identified previously unknown opcode sent by the client - OP_UnknownSpawn. When the server sends a position update for a spawn ID the client is not aware of, the unknown ID is sent back. Added: Function to resent a spawn to the client if the client requested a specific spawn ID. Updated: Identified all fields in the social action struct sent while using /emote. Updated: The main processing loops min sleep delay has been increased, this should reduce the CPU usage. Updated: The fall back for using items from the non blob item table now works correctly. Updated: No rent items are now correctly removed when the clients last login is more than 30min. Fixed: The server should no longer sent empty position updates each time. Updated: Loot messages are now sent to the looter and his group only. Added: A merchant will now greet the player with a selection of specific phrases. Updated: Using the correct 3d model for the bard lutes, the lutes are now visible when equipping. ---- Revision: 770 Author: Yeahlight Date: 2:19:29 AM, Saturday, October 01, 2011 Message: Fixed: HP and mana pools are now correctly updated server side after leveling. Fixed: Clients level 34 and below are now forced to stare at their spell book to gain the meditation bonus. Fixed: We now properly determine which classes have mana pools and at which levels they become active (bool Mob::HasManaPool()). Fixed: The base HP regeneration for standing and sitting now agrees with the client. Fixed: Implemented the correct total mana pool calculation formula. Fixed: Clients may no longer receive more than fifteen points of mana regeneration (flowing thought) per tic from items alone (good luck reaching this cap, anyway). Removed: All of the infinite loop checks. ---- Revision: 769 Author: Yeahlight Date: 4:38:52 AM, Friday, September 30, 2011 Message: Updated: The HP sync tolerance is now based on the PC's regeneration rate (base + item + spell) instead of a flat HP amount. Fixed: The correct mana gain formulas for INT/WIS have been implemented to match the client. As instructed by the client, PCs no longer accumulate additional mana from INT/WIS after the 200 mark. Fixed: The correct mana regeneration rates for standing, sitting and meditating have been implemented to match the client. Fixed: The number of buff tics on the server now agree with the client. Fixed: DoTs with a nuke component now work properly. ---- Revision: 768 Author: Yeahlight Date: 10:26:52 PM, Tuesday, September 27, 2011 Message: Updated: The healing and damaging routines for all entities have been unified under Mob::Heal(...) and Mob::Damage(...). The client HP synchronization should now be complete. Updated: HP updates for entities are no longer sent to PCs unless a change in its HP is greater than or equal to 2%. Entities will still continue to send their spawn updates every six seconds regardless of change in HP. Updated: Rewrote the entire mend routine. Fixed: Removed several unnecessary polymorphic declarations from the entity headers. Fixed: Numerous initialization oversights associated with allocated memory. Fixed: Numerous memory leaks associated with redundant payload allocations. Fixed: The server no longer forces death onto a PC. Fixed: Client side buffs are no longer removed by the server unless the buffs have ended prematurely (cancel magic, variably lengthed buff durations, death, etc.). ---- Revision: 767 Author: Yeahlight Date: 6:23:09 AM, Wednesday, September 21, 2011 Message: Added: The green exp consider level to the preprocessed consider table. Added: GroupedWithClient(...) to determine if two clients are grouped. Please use this function from now on. Added: The heading attribute to the zone explorer. Updated: The consider table is now a member of the zone class. Updated: Started the process of removing all routines that force a specific HP amount onto the client. We now rely on the client to tell us its current HP amount and all HP adjustments from the server will use the proper methods to adjust a client's HP (no more sending out HP update packets back to the client). If the server and client fall too far out of sync between tics, a warning message will fire. ---- Revision: 766 Author: Harakiri Date: 6:16:44 PM, Tuesday, September 20, 2011 Message: Updated: Identified value in item struct, the bard instrument modifier. Updated: The calculation of the bard modifier for spells has been refactored, the amount of code has been greatly reduced. Updated: Switching weapons is now correctly reflected server side for selecting the attacking skill. Updated: Identified field in the cast struct, the animation ID. ---- Revision: 765 Author: Harakiri Date: 9:25:27 PM, Sunday, September 18, 2011 Message: Updated: The clients looting process has been completely refactored, that includes corpse locking, listing items on a corpse, looting items, looting items within bag containers, auto equiping items while looting, looting items onto the cursor. Part of the corpse handling has also been refactored. Updated: The items are now taken by default from the blob table, the fallback is now the newer item table data when the blob item does not exist. Updated: #npcstats now shows the loot for corpses too Updated: Removed some files with empty class skeletons which were not used at all. Added: Found four fear related opcodes which either lock or unlock the clients interface. Added: client->LockInterface function to lock/unlock the players interface. Added: Found four attack related opcodes to influence the clients attack function. Added: Found Opcode to disable all chatting from the client, i.e. its not sent to the server anymore. Updated: Identified field in playerprofile - the conscious state of the player. Fixed: Figured out why the client sends four times the error opcode upon login. It was a sanity check related to memory corruption regarding the inventory items. The complete inventory is now sent at a later login stage. Fixed: The contents of a bag is now checked for lore items before the client can loot it from a corpse. Fixed: Memory leak while loading items from DB for world server process. Fixed: Non blob items with passive worn effects are now correctly used client side. ---- Revision: 764 Author: Yeahlight Date: 4:54:16 AM, Friday, September 16, 2011 Message: Added: The complete, preprocessed, consider table (green, blue, white, yellow & red) as instructed by the client for mobs level 1 to 75. No more greenies giving exp! ---- Revision: 763 Author: Harakiri Date: 5:34:12 PM, Thursday, September 15, 2011 Message: Updated: The players merchant interaction (listing items, buying, selling) has been completely rewritten from scratch (and needs alot less code =p). Merchants now differentiate between unlimited supply items (static inventory) and player sold items (limited, not persisted). A merchant now also correctly remembers the amounts of charges on a limited charge item, a player has sold. The inventory handling while buying items has also been fixed, stackable items go to existing stackable items first. Finally a merchant is now locked for other players as long as he is doing business with one player similar to world containers (forges). Fixed: Artifact items are now correctly displayed as "Artifact" Fixed: Lore items are now correctly displayed as "Lore" Fixed: Items with worn effect now correctly display the effects name Added: Command #listmercinv to list all items (visible or not) a merchant has, indicates player sold items ---- Revision: 762 Author: Yeahlight Date: 8:15:13 PM, Wednesday, September 14, 2011 Message: Added: Support for the sacrifice spell. Updated: Pulled several NPC and Client functions up through the entity hierarchy to avoid redundancy and type casting mistakes. Updated: Rewrote the LocateGround() routine to be more efficient. Removed: The old line of sight system. Replaced all line of sight calls with the new system, but these are not necessarily correct and line of sight will remain broken until I rewrite the entire NPC decision tree (this is up next). Removed: Quest files for zones that we do not support. ---- Revision: 761 Author: Harakiri Date: 7:06:19 PM, Friday, September 09, 2011 Message: Updated: The order of putting items into the inventory while trading or canceling a trade has been enhanced. First all containers which were in a trade slot are moved to an available free slot. Second, all stackable items are dispensed on existing stacks of the same type. Third, any items or charges left are normally put either into the inventory if a free slot is found or on the ground if not. ---- Revision: 760 Author: Harakiri Date: 5:14:30 PM, Friday, September 09, 2011 Message: Added: Support for random ground spawn items, they can now spawn at random locations in a zone and will respawn after a certain time when picked up! Updated: Please source new ground_spawns.* SQL file. Updated: Player dropped items and coins will now despawn after a certain time. Fixed: Spell Recast Timers should now work correctly. Updated: The available items have been limited to ID 32000 to prevent accidental summoning of invalid items for trilogy client. ---- Revision: 759 Author: Harakiri Date: 9:04:38 PM, Thursday, September 08, 2011 Message: Updated: Switches/Doors/Bridges/Triggers etc have been completely refactored. They are now represented by a generic WorldSwitch object. All associated handling (disarm, unlock, zone, trigger, etc) has been refactored too. Updated: All lifts (gfaydark, paineel) should now work correctly, all changes are now updated to other clients. The trigger of a lift is now also moved. Updated: /kill works again ---- Revision: 758 Author: Harakiri Date: 4:31:50 PM, Wednesday, September 07, 2011 Message: Fixed: Stackable items will no longer diplay "charges" while inspecting Fixed: Some array overruns, wrong type casting, memset which exceed size of destination. Updated: Added configuration for non debug build. ---- Revision: 757 Author: Harakiri Date: 1:37:37 PM, Tuesday, September 06, 2011 Message: Added: Handling for new opcode when the client picks up coins, identified the important bits in the PickupCoin_Struct. Updated: Figured out that the client handles dropped coins differently then dropped items (they need to be sent with another opcode/struct). Identified the important bits in the DropCoin struct. Dropping and picking up coins has been refactored, the client now finally sees the picked up money on the cursor. Updated: The sending of inventory items upon login has been refactored, reduced code by 90% =p Fixed: Only clicky items with limited charges will now be consumed, additionally only clickies which are consumable will be deleted when they have 0 charges left. Updated: Trying to combine items which do not represent a valid recipe will result in losing all components, like in vanilla eq. Updated: Items now remain in the a world container when a user leaves/close it (e.g. forge). No Drop items are still returned automatically tho. ---- Revision: 756 Author: Yeahlight Date: 6:54:06 PM, Monday, September 05, 2011 Message: Added: A quadtree visualization to the zone explorer. Added: An aggressive line of sight check to the zone explorer. Added: The new line of sight system has been added to the EQC project. The old system still exists and will be removed when a new NPC decision tree is implemented. Updated: The locate ground routine in the zone explorer now has a failsafe to fall back on when needed. ---- Revision: 755 Author: Harakiri Date: 3:07:21 PM, Sunday, September 04, 2011 Message: Updated: The world object handling (Tradeskill Containers like Oven, Dropped Items, Money) has been completely refactored and thoroughly tested. Dropped Items are now persisted, the contents of the a World Tradeskill container too. Use the new WorldObject class for any player interaction. Fixed: Dropping container items with items in it will now be correctly saved, picking up bags with contents will now correctly update the client too e.g. the client will see the bag contents immediately. Updated: Dropping/Taking Coins or Items has been completely refactored and tested. Updated: The tradeskill process has been refactored to use the new inventory and world object handling. Updated: When a client picks up money from the ground, the cash sound is now played client side. Updated: Please source the new contents*sql for saving world container items. Fixed: Some "doors/objects" in timorous had wrong data - this has been fixed. Please source update_doors_timorous*.sql Fixed: Items with passive effects e.g. cloak of flame will now correctly show the effect name when inspecting the item. Fixed: The contents of a traded container will now be immediately visible to the other player. Fixed: NPCs will now attack again =p Updated: When the inventory is full while finishing a trade with another player, the overflowing items are now dropped on the ground. Updated: All Entities GetName() and their child classes now return const strings, all associated methods have been refactored. Updated: Some more cleanup with inventory and trade handling, processing is now split into multiple files. Added: Backup of old SQL deltas, please do not remove these. Added: Identified Opcode to sent client an item of type book into a specific equipment slot. Added: Identified Opcode to sent client an item of type container into a specific equipment slot. ---- Revision: 754 Author: Yeahlight Date: 6:11:52 AM, Friday, September 02, 2011 Message: Added: Our new locate ground z-axis function to the zone explorer (LocateGround(...)). I have not yet exhaustively tested this routine, but I have not seen the camera fall "below the world," thus it already appears infinitely better than our old solution. Added: "Gravity" mode to the zone explorer (as emulated by LocateGround(...)). This mode pins the camera to the ground much like you would expect to see in the client. No clipping is still enabled, so the camera will trip if you run through a wall. Updated: Implemented a new collision detection algorithm to the zone explorer. This one is roughly fifteen percent more efficient than our previous method. ---- Revision: 753 Author: Harakiri Date: 4:49:48 PM, Thursday, September 01, 2011 Message: Updated: The Inventory and Item Management has been completely refactored. This is a major milestone and the result of 40h+ of work. The inventory should no longer be accessed through the the properties of the player profile but through the GetInventory() class in the client. It provides all needed functionality for any item handling. Updated: Due the Inventory refactoring, the Player->Player and Player->NPC trading has been refactored. Both the inventory and trade mechanics should now be much more stable, the changes also resulted in less code overall =) Added: Identified Opcode to (re)move charges from a stackable item (finally! no more workarounds) Added: Identified Opcode to substract specific amount of money from players inventory Added: Identified Opcode to substract specific amount of money from players bank inventory Added: Identified Opcode to delete all items and money in inventory and bank Added: Identified Opcode to delete an item in the inventory by its uniqueID (not item ID) Added: Identified Opcode to delete an item in the bank by its uniqueID (not item ID) Added: Identified Opcode for success of delete item by unique ID for bank and inventory Added: Method to delete items by their unique ID either for inventory or bank, identified accompanied struct the client needs for deletion Added: Command #delunique to delete an item by its unique id for testing Updated: Refactored consuming of spell components Updated: GMs can now #cast spells without requiring the spell components, the missing components are still reported ---- Revision: 752 Author: Yeahlight Date: 2:25:35 PM, Thursday, September 01, 2011 Message: Fixed: Collisions in the zone explorer are now only possible within the boundaries of the line of sight segment. Updated: The line of sight system in the zone explorer now traverses the quadtree in the zone's *.map file to locate nearby geometry. Added: Press F4 in the zone explorer to view the first collision along the segment's path instead of all possible collisions (F3). ---- Revision: 751 Author: Yeahlight Date: 12:10:07 PM, Wednesday, August 31, 2011 Message: Added: An elegant, linear algebra driven vector and triangle collision system to the zone explorer (see the README for usage). Instead of the old caveman approach of walking along a vector between two points constantly polling all nearby geometry with "Am I touching you yet? Am I touching you yet? Am I touching you yet?," we now know--practically instantaneously--which triangles in the zone our vector intersects with 100% accuracy. Distance between line of sight destinations no longer dramatically inflates execution time, as our computational complexity is now constant (insignificant). ---- Revision: 750 Author: Yeahlight Date: 4:34:15 PM, Monday, August 29, 2011 Message: Updated: The zone explorer now supports map files (*.map) instead of 3D graphs. Updated: The zone explorer's camera pitch is now limited to the range between zero and one hundred eighty degrees. ---- Revision: 749 Author: Yeahlight Date: 4:33:02 AM, Friday, August 26, 2011 Message: Added: The zone explorer project (sample file included [fieldofbone3dgraph.txt]). Please see ./Tools/Zone Explorer/README.txt for details ---- Revision: 748 Author: Harakiri Date: 8:11:24 PM, Wednesday, August 24, 2011 Message: Added: Identified 2 Opcodes and the associated structs which the client sents when you ask him for a dump of his client side inventory Added: Debug Command #diffinv which compares the inventory the client currently has with the values stored on the server Added: Debug Command #resetinv which will reset the server side inventory with all values from the client Fixed: Players which command a boat will no longer receive movement updates from the boat, this fixes the eradic behaviour due float/int conversion Fixed: Players will no longer receive swimming skill ups while on a boat =) ---- Revision: 747 Author: Harakiri Date: 7:33:26 PM, Tuesday, August 23, 2011 Message: Updated: Identified all fields in the GMZoneRequest_Struct Updated: Completely refactored and cleaned up the /zone command processing Updated: Fixed some issues related to player controlled ships and how movement looks to other players in the zone Updated: Identified the stolen item (Item_Struct) within the PickPockets_Struct and where the client should put the item (cursor, inventory, etc) Updated: Completely refactored and cleaned up the Pick Pocket processing ---- Revision: 746 Author: Harakiri Date: 7:11:13 PM, Monday, August 22, 2011 Message: Updated: Identified the primary/secondary melee weapon material settings in the Character Select Struct. Weapons finally show correctly in the char select screen, this is the intended way no need for workarounds with wear change =p Updated: Identified all equipment color fields in the players zonentry struct. Updated: Initial Commit of updated PickPocket logic by DarkAkuma ---- Revision: 745 Author: Yeahlight Date: 6:54:55 PM, Monday, August 22, 2011 Message: Updated: Identified the gravitational effects (levitation) field in the spawn struct. Updated: The x, y, and z-delta fields in the spawn position update struct have been combined into one field (deltas). Until we find a need to populate these fields for NPCs, breaking these delta fields down is unnecessary. Fixed: NPCs now swim underwater instead of just teleporting from update to update. Fixed: The PC spawn position update logic has been rewritten. PC movement is now perfectly fluid along all axises to all other PCs in the zone. ---- Revision: 744 Author: Harakiri Date: 11:19:02 AM, Sunday, August 21, 2011 Message: Added: Identified boat reset opcode, moves player to safe location. Added: Identified OP_ZoneRejectPlayer and OP_Corpse_XYZ opcode. Added: Working Map for Timorous Deep, previously the pathing would not work there Updated: Identified 6 fields in the ServerZoneEntry_Struct - the remaining equipment materials Updated: Identified the face field in the Spawn_Struct Updated: Refactored and cleaned up the ZoneEntry method, filling in the zonentry and the playerprofile is now done in dedicated methods ---- Revision: 743 Author: Harakiri Date: 8:07:32 PM, Wednesday, August 17, 2011 Message: Added: Barrel Barge boat route Oasis<->Timorous Added: The Gwenavyne boat route in Halas Added: Gondola boat route in Cabalis (Thats it! We now should have finished all boats. There are now 17 boats working with 33 different routes in their dedicated zones! Another small milestone =p) Fixed: Use default Z value for spawns when no approriate near ground Z could be found. Updated: Please source the boat*.sql files again. ---- Revision: 742 Author: Harakiri Date: 7:45:58 PM, Tuesday, August 16, 2011 Message: Added: Boat Bloated Belly route Overthere<->Timorous Updated: Boat family members are no longer hardcoded, please update boat*.sql Updated: Starting Cleaning Up Database Functions, now uses Logging System instead of StdOut ---- Revision: 741 Author: Harakiri Date: 8:48:00 PM, Monday, August 15, 2011 Message: Added: 4 Boats - Shuttles for Butcherblock <-> Timorous transfer to the Maidens Voyage, please source all boat*.sql files Added: Command #boatreset to tell the World Server to restart the boat route for a specific boat Fixed: Boats will no longer DePop all NPCs =) (why did RemoveNPC() that in the first place ..?) ---- Revision: 740 Author: Harakiri Date: 6:29:35 PM, Monday, August 08, 2011 Message: Added: Boat Maidens Voyage route Firiona<->Timorous. Added: Boat Island Shuttle route in Timorous, used to get passengers from Maidens Voyage to Island. Added: The correct message channels/attack skill ID for damage shields. Damage shields can now correctly be filtered client side. Updated: Fixed deadlock in boat management. ---- Revision: 739 Author: Harakiri Date: 5:46:53 PM, Friday, August 05, 2011 Message: Added: New Boat Worldserver command SIGNAL_OTHER_BOAT "boatname". A Boat can now signal a specific shuttle boat to start its process from the isle to the ship to bring or get passengers. Additionally added WAIT_FOR_SIGNAL worldserver command so that shuttle boats for example in Erudin wait till they get a order from a boat. Previously this was handled indirectly through counting down the time when a boat enters a zone and a global check, this however could result in error prone synchronization between the shuttle and the boat. Furthermore the logic did not support multiple shuttles in a zone for one boat like they are needed in overthere, now a boat can explicitly trigger the shuttle which is needed. Updated: Due to a game client mechanic the teleporting logic for players on boats had to be refactored. Normally the client will sent the server the information when a player enters or leaves a boat. The client however does not sent this information when a player moves directly from one shuttle to the boat or vice versa. Even tho the player was on the boat and ready to zone with the boat, the server thought the player was still on the shuttle. Now we scan the location around the boats position right before zoning for players which are in range and should be on a boat. To be sure that we have the correct players location upon scanning, the teleport process now waits a few seconds that all game clients have sent their position update. Updated: The Erudin<->Qeynos Boat Routes have been updated to reflect the new system. Updated: The Boatmanager has been cleaned up and uses the standard logging facility everywhere instead of printing to stdout. Updated: A boat which cannot zone because the next zone is down will now wait a bit and try again to zone, previously the boat was removed from the current zone and players would fall into water. This information is also broadcastet to players in the zone. Updated: The Erudin<->Qeynos Boat Routes have been updated to reflect the new system. ---- Revision: 738 Author: Harakiri Date: 1:19:20 PM, Thursday, August 04, 2011 Message: Added: Persistent cooldown/recast timers for spells and SHD/PAL class ability. The timers now persist through zoning/logout, previously they would be lost upon zoning. The timers are now per spell, no longer per spell gem, meaning swapping spells no longer resets the timer of the previous spell. Fixed: SHD/PAL class ability works again =) ---- Revision: 737 Author: Harakiri Date: 5:33:03 PM, Wednesday, August 03, 2011 Message: Added: Implemented server side chat filtering (/serverfilter on/off) for all chat channels and emotes. Unwanted messages are no longer sent to the client at all (for dial-up users =) Updated: Identified PVP Server Setting Opcode (NoPVP/Team PVP/Normal PVP) for Client, Enables/Disables Grouping/Attacking/Casting with specific character deities Updated: Identified all struct data sent by client for SetServerFilter Updated: Found out how to trigger the client to tell us his current chat filter settings on login (was previously incorrectly named as SAT_Camp and needed client id) Updated: Cleaned up and documented login sequence a bit Updated: Fixed client side crash which could be triggered by sending a message to the client which was not yet fully connected. Updated: Added missing quest function used for triggering signals to other npcs. Updated: Found and fixed issue of slow processing time in the setMoving() method for npcs. ---- Revision: 736 Author: Harakiri Date: 10:52:35 AM, Sunday, July 31, 2011 Message: Added: Implemented the correct way to initiate a boat zone transfer for passengers. The server now honors the clients relative position on the boat and restores it upon zoning in. Previously a manual zoning process was used, and the position of the passengers was manually calculated - this could result in passengers falling off the boat after zoning. Added: Due the new boat zone transfer, it is now possible to logout while on a boat and login on the same relative position on the boat again regardless if the boat has moved meanwhile or not. The also means the boat now no longer has to wait for its passengers after a zone and can start moving without worrying about slow zoning clients falling into water. Added: The server can now correctly answer to a clients boat locate request (where is the boat i should be on). Even if the boat is not in the current zone, it will ask the worldserver for the boats location. The worldserver will answer to the zone where the boat is, and then the client will receive the answer. That means, when you logged out in oot while on a boat and the boat is now in freporte - you will be automatically moved to the boat in freporte again - you wont fall into water =) Added: ForceClientSentOPSave() to force the client to save&sent its client side profile to the server. Available as command #forcesave Updated: Explained and documented the differences between the two save methods the client uses to sent the profile to the save. Updated: /goto now uses TeleportPC client side instead of ClientUpdate - you will now correctly transfer to entities e.g. /goto Stormbreaker00 will put you on the boat, not below in the water. ---- Revision: 735 Author: Harakiri Date: 6:25:53 PM, Tuesday, July 19, 2011 Message: Added: Stormbreaker boat route Butcherblock -> OOT -> Freeport Added: Sirensbane boat route Butcherblock -> OOT -> Freeport -> OOT -> Butcherblock (OOT boat routes are now complete) Updated: Please source updated boat*.sql ---- Revision: 734 Author: Harakiri Date: 9:04:04 PM, Thursday, July 14, 2011 Message: Added: Stormbreaker boat route Freeport -> OOT -> Butcherblock Updated: boat sql and some unneeded npcs, please source updated *.sql ---- Revision: 733 Author: Harakiri Date: 8:02:20 PM, Thursday, July 07, 2011 Message: Added: Pirate Runners Skiff boat route for nro <-> iceclad, please source updated boat sql Fixed: Since Icebreaker is the only boat with animation, other boats will no longer receive an animation stop update, previously this could result in inclined boats =) ---- Revision: 732 Author: Yeahlight Date: 7:44:48 PM, Thursday, June 09, 2011 Message: Updated: Spell stacking routine has been further updated with addition stacking rules and exceptions. This routine is now satisfactory and we may finish the rules and exceptions in the future under a joint effort. Fixed: The remaining PC debug messages have been wrapped with our debug preprocessor. ---- Revision: 731 Author: Yeahlight Date: 5:41:51 AM, Wednesday, June 08, 2011 Message: Fixed: The spell stacking rules have been rewritten to agree with most of the client's hardcoded exceptions and rules. There are some disagreements between the server and client, but we are much closer now to perfected stacking rules. Fixed: Entities stunned while moving now update correctly. ---- Revision: 730 Author: Harakiri Date: 6:36:01 PM, Wednesday, April 20, 2011 Message: Updated: Made some modifications to the icebreakers route, the boat should now have the correct heading once it has stopped at another dock Added: New command #boatgoto, instantly warps boat to specific node ID of route and continues from there ---- Revision: 729 Author: Harakiri Date: 7:08:09 PM, Wednesday, April 13, 2011 Message: Added: Icebreaker's boat route for Iceclad Ocean Added: Finally found opcode/struct combination to set a pet's owner. We no longer need to despawn an NPC when its charmed to spawn a dummy npc that can be player controlled. Mob::SetOwnerID automatically takes care of this now. Added: Commands setsize and spawnnpc. Updated: The auto boot of zones now honors the IP address of the server supplied in the LoginServer.ini, the auto boot now also works if the server listens on an external interface. Updated: Identified two fields in the PlayerProfile Updated: Identified three fields in the players spawn entry. Updated: Some NPC runspeed fixes for current DB, please source new *.sql ---- Revision: 728 Author: Harakiri Date: 4:59:06 PM, Wednesday, March 16, 2011 Message: Added: Identified WS_SEND_LOGIN_INVALID_CREDENTIALS opcode, tells the client that the username/password was invalid. Sending this now when the server cannot authenticate user, previously the client waited till network timeout. Added: Identified opcode to initiate session key based encryption of specific packets, still needs correct struct. Updated: Identified OP_CreateObject (similar to OP_DropItem) but used mostly for forges and switches Updated: Potentially identified gm only flag in item struct Updated: Made autobootzones=true default in LoginServer.ini since it seems to work well Updated: The #goto command will now use the TeleportPC function insteadof MoveTo because MoveTo would move you to the ground z coordinate, TeleportPC will put you at the given z coordinate, even in air. ---- Revision: 727 Author: Harakiri Date: 7:58:41 PM, Wednesday, March 02, 2011 Message: Added: Auto booting for zones, use autobootzones=true in LoginServer.ini below [LoginServer] settings. The world server will scan for an available port on the localhost and will launch a zone process with an unused port. When you use this setting, you no longer needed to launch zones manually. ---- Revision: 726 Author: Harakiri Date: 5:28:39 PM, Tuesday, March 01, 2011 Message: Added: QuestUtil for perl, exposed to perl scripts. Includes missing helper functions for quests, there should be no perl errors now when loading zones e.g. freportw or when turning in quests to npcs which give you a random reward. ---- Revision: 725 Author: Harakiri Date: 2:45:19 PM, Thursday, February 17, 2011 Message: Fixed: Stackable items should no longer show "charges X" Fixed: Clickies from inventory should now work (again) ---- Revision: 724 Author: Yeahlight Date: 2:31:18 AM, Wednesday, February 02, 2011 Message: Added: Routine to dump the entire spell stacking chart. Updated: Additional refactoring and cleanup of our spell routines. Fixed: Rewrote the spell value calculation routine and implemented our missing formulas. These calculations have not yet been verified correct, so you may experience odd results. Fixed: The stacking rules have been adapted for DoTs. When a stacking conflict arises between two DoTs, the new DoT is permitted to land if its resistance type is disease, if its resistance type differs from the other DoT, or the class that owns the new DoT differs from the class that owns the other DoT. These rules mean that a Shaman may stack all of their disease DoTs, that a Necro may stack Dooming Darkness with Boil Blood, and that a Druid may stack Stinging Swarm with a Necro's Dooming Darkness, respectively. As always, the identical spell check is made first prior to checking for stacking conflicts, thus a Shaman will never be able to stack Plague with a Necro's Plague. Fixed: Removed the giant switch for calculating spell haste. We are now using the new formula routine. Fixed: The rules that describe a duration based buff are now correct. Fixed: The rules that describe a DoT are now correct. ---- Revision: 723 Author: Yeahlight Date: 5:01:35 AM, Saturday, January 29, 2011 Message: Updated: Continued work on the spell file refactorization and cleanup. ---- Revision: 722 Author: Yeahlight Date: 3:27:10 AM, Friday, January 28, 2011 Message: Updated: Continued work on the spell file refactorization. ---- Revision: 721 Author: Yeahlight Date: 6:01:47 PM, Thursday, January 27, 2011 Message: Updated: Continued work on the spell file refactorization. ---- Revision: 720 Author: Yeahlight Date: 1:19:55 AM, Thursday, January 27, 2011 Message: Updated: Started the task of refactoring and reducing our spell data files to match only the data present in our spdat.eff file. ---- Revision: 719 Author: Harakiri Date: 4:33:51 PM, Monday, January 24, 2011 Message: Added: Found Opcode to tell client the zone teleport destinations and the associated struct for sending a list of destination points, no more server side scanning for zone lines or teleport pads needed! Added: New db\*.sql for working list of intra zone and zone to zone destination points, please source this file. Updated: Identified field in zone_change struct Updated: ScanForZoneLines has been disabled ---- Revision: 718 Author: Yeahlight Date: 4:49:00 AM, Saturday, January 22, 2011 Message: Added: Data folder to the SVN for game data (skills, spells, etc.). Added: Complete spell dump file of our spdat.eff to the SVN. Added: Support for the day time and night time line of spells. Updated: Identified the indoor/outdoor and time of day (day/night) flags in the spell record struct. Updated: Refactored the spell casting process. Fixed: Several bugs and crashes within the spell casting routines. Fixed: PCs must have LoS to cast detrimental spells on targets. ---- Revision: 717 Author: Yeahlight Date: 1:39:16 AM, Friday, January 21, 2011 Message: Added: Charmed NPCs now generate hate towards their master during the charm's duration. Fixed: Melee attacks, no matter the outcome, now generate the same amount of hate based on the mob's damage potential (maximum hit). Fixed: Resisted nukes and DoTs now generate hate. Fixed: Resisted spells no longer generate a fraction of the original hate. Fixed: Mesmerized and feared PCs may no longer attack. ---- Revision: 716 Author: Yeahlight Date: 1:48:02 AM, Wednesday, January 19, 2011 Message: Added: Hate caps for heal agro for targets level 50 and below and 60 to 51. Fixed: The hate management system no longer derives hate from melee/spell damage. It will now use the passed in hate value. Fixed: Pet damage credits the pet with only hate points and credits the owner with only damage points, such that the pet retains the true calculated hate and the owner is credited with damage for loot rights. Fixed: Heal agro no longer divides the total hate amongst all the entities hating the caster's target. Fixed: Heal agro is now 2:3 for hate:heal points. Fixed: Mesmerized and stunned NPCs generate far less hate when in the presence of a heal spell. Fixed: Using beneficial spells on a charmed mob no longer generates hate. ---- Revision: 715 Author: Yeahlight Date: 3:36:50 PM, Saturday, January 15, 2011 Message: Added: Restrictions for level 51+ buffs. These buffs will only land when the receiving entity cons blue or higher to the minimum level required to cast the buff for any one class. For instance, a level 60 paladin may buff a level 1 PC with their highest HP buff as long as this buff is shared with another class that may cast it prior to level 51. Fixed: A mob affected with any sort of DoT spell (detrimental or beneficial) will strip all forms of mesmerization off on the next HP tick. It turns out that the client decides when a mesmerization spell should wear off, and--unfortunately--its decision is simply a check whether or not the client is currently DoT'ed with no regard to verifying if the DoT is actually causing any harm after regeneration effects. Sorry PvP Enchanters! Fixed: Beneficial DoTs (see: Arch Lich) no longer nuke the target on the first tick. ---- Revision: 714 Author: Yeahlight Date: 12:51:28 AM, Friday, January 14, 2011 Message: Added: Support for diminishing stat return calculations. Updated: Rewrote the variably lengthed spell duration routine. The distribution for detrimental spells is now the symmetrical normal distribution with the median and mode starting at the spell's maximum duration divided by two. Level and stat bonuses now only shift this distribution left and right; there are no more changes to variance. Beneficial buffs still pull their durations from an asymmetrical normal distribution, though. The stat bonus calculation for charm (the only type of spell where stats are pinned against each other) is now 5:3 (CHA:SVM), meaning that every five points of CHA from the caster negates three points of SVM on the target. When diminishing returns kick in, the caster requires twenty five points of CHA to negate three points of SVM. Fixed: Resisted or not, all detrimental spells fade the target's invisibility and cancel FD. Fixed: In order for a mez to be broken by a DoT, the total detrimental DoT damage (lich damage not included) on the mob (PCs included) must surpass their total spell, item and racial regeneration bonus. ---- Revision: 713 Author: Harakiri Date: 5:45:59 PM, Thursday, January 13, 2011 Message: Fixed: Range Attack Animations should now work correctly, again Added: Found Opcode to play specific sound files by ID, use #playsound to try it out! ---- Revision: 712 Author: Harakiri Date: 7:59:40 PM, Wednesday, January 12, 2011 Message: Updated: Found initial camera position (yaw,roll) and deltaXYZ values in the ServerZoneEntry_Struct ---- Revision: 711 Author: Yeahlight Date: 7:19:28 PM, Wednesday, January 12, 2011 Message: Added: Support for heal agro from non-percentile heal spells (direct heals and HoTs). Fixed: Stun, fear and DoT ticks now remove mesmerization and invisibility effects. Fixed: DoTs no longer act as a nuke on the first tick. Fixed: Refined the definition of a DoT spell. ---- Revision: 710 Author: Yeahlight Date: 8:20:08 AM, Wednesday, January 12, 2011 Message: Added: Support for spell fading warnings (these are not to be confused with the messages that the client produces when a buff fades). Added: DoT debuffs now inform the caster when they have faded. Added: SVN directory for formula research. Fixed: Adjusted the variably lengthed duration stat bonus calculations to include the target's save vs. magic. Fixed: Instead of simply forcing a duration of one onto negatively calculated variably lengthed durations, the calculations are redone to choose a legitimate value from the distribution. ---- Revision: 709 Author: Harakiri Date: 7:43:21 PM, Tuesday, January 11, 2011 Message: Updated: Reverse engineered some fields in ServerZoneEntry_Struct ---- Revision: 708 Author: Yeahlight Date: 1:59:04 AM, Tuesday, January 11, 2011 Message: Added: Support for discovering the charm permission opcode. Yaaayyyy opcode/packet hunting :/ Fixed: The owner of an eye of zomm no longer receives packets for their own movements. Fixed: Mesmerization effects now fade when the victim receives any sort of damage. ---- Revision: 707 Author: Yeahlight Date: 6:50:30 PM, Sunday, January 09, 2011 Message: Added: Root spells may now break early when encountered by direct damage portions of spells. Added: The (incomplete?) list of spells which have variably lengthed durations. Fixed: Life drain spells now set the caster's HP correctly when targeting a PC. Fixed: Call of the Hero drops agro from the target when the distance between the caster and target is greater than or equal to 200. Fixed: A charmed entity may no longer be charmed again until the original charm spell has completely worn off. Fixed: Blind and mez spells are no longer considered variably lengthed. ---- Revision: 706 Author: Harakiri Date: 1:00:03 PM, Sunday, January 09, 2011 Message: Added: Intra Zone Teleport Points for erudnext and felwitheb, Teleport Pads work now Added: Zone Points gfaydark<->felwithea<->felwitheb and erudnext<->tox and erudnext<->erudnint please source new *.sql Updated: Using TeleportPC instead of SpawnPositionUpdate for teleporting the player within a zone Fixed: Bards can disarm traps again Fixed: Zoning with softcoded zone points had x and y reversed ---- Revision: 705 Author: Yeahlight Date: 6:21:19 PM, Tuesday, January 04, 2011 Message: Fixed: Switched to the asymmetrical, normal (Gaussian) distribution for variably lengthed buff and debuff durations. The exponential distribution was too harsh. Fixed: Level gap bonuses and situational bonuses for variably lengthed buff and debuff durations are now working correctly. These bonuses reduce the variance (standard deviation) of the distribution, netting more favorable durations for the caster. ---- Revision: 704 Author: Yeahlight Date: 2:47:13 AM, Tuesday, January 04, 2011 Message: Added: Support for the stamina regeneration spell line. Added: Support for variably lengthed buffs and debuffs (invis, root, charm, mez, fear, etc.). The durations are pulled from an exponential distribution with bonuses derived from the caster's CHA (for charm, mez, fear) and any applicable level gaps between the caster and target. Fixed: The grow spell line may only be casted indoors now. Fixed: The Whirl Till You Hurl spell line now acts as a mesmerize instead of a stun. Fixed: The Divine Aura spell line now drops the caster to the bottom of all hate lists. ---- Revision: 703 Author: Yeahlight Date: 7:22:59 PM, Sunday, January 02, 2011 Message: Fixed: Teleportation objects (doors) no longer display the summoned message to the user. Fixed: PCs may only strip buffs from other PCs with the cancel magic spell line while grouped. Fixed: PCs may only summon other PCs with the Call of the Hero spell line while grouped. Fixed: The Call of the Hero spell line now purges all hate from the caster's target. ---- Revision: 702 Author: Yeahlight Date: 4:43:41 PM, Friday, December 24, 2010 Message: Added: Quest files to the SVN ---- Revision: 701 Author: Yeahlight Date: 1:44:40 AM, Saturday, September 04, 2010 Message: Added: Support for MySQL 5.1 (4.1 is no longer supported). Added: A new database batch file. Source this for the MySQL 5.1 support. Added: #shownodes now displays the roamboxes. Fixed: Ogres are once again immune to frontal, melee stuns. ---- Revision: 700 Author: Harakiri Date: 10:37:18 AM, Tuesday, July 27, 2010 Message: Added: Identified client opcodes OP_RequestGuildInfo, OP_ToggleChannelFilter, OP_RequestChannels and WS_Client_Quit. Added: Identified Toggle Channel Filter and Request Guild Info struct. Added initial server side recognition of these queries. ---- Revision: 699 Author: Harakiri Date: 6:38:53 PM, Monday, July 26, 2010 Message: Updated: Extended TriggerSpawn setting to include random min and max spawns, a random number of npcs can now spawn around a trigger. Added: Some more triggered spawns and traps, please update sql delta for trigger*.sql and trigger_spawn*.sql Added: Identified opcodes related to checksums of clients game files. Added: Methods to generate checksum serverside for specific game files. Added: Clients game and meta data file checksums must now match our enforced version, if not login will be prohibited. Modifying game files will no longer be easy, it will now take a more sophisticated hacker =). Updated: World Server was cleaned up a bit with using standing logging facilities. Updated: CastSpell_Struct is now fully identified and documented. Added: Fully identified the weather struct. Readded #weather command ---- Revision: 698 Author: cofruben Date: 5:05:04 PM, Wednesday, July 14, 2010 Message: Note: In order to help testing, GM's can now cast all spells indoors such as sow etc. Note: Restored my previous debugging system in order to tackle the item bugs (#cdebug items 1) Note: Split client.cpp into items.cpp and merchants.cpp to make it cleaner. ---- Revision: 697 Author: cofruben Date: 3:40:53 PM, Wednesday, July 14, 2010 Message: Fixed: Anti ghost code is now working correctly adding EntityList::CheckDuplicated(char* name). Fixed: some client connecting stuff, now using less packets to complete it. ---- Revision: 696 Author: Harakiri Date: 6:49:08 PM, Tuesday, July 13, 2010 Message: Added: Triggers now use a database based configuration, Velious/Kunark traps can now also spawn N specific mobs at a specific locations. Added; Velious/Kunark traps can now be disarmed. Added: Added over 50 different traps and trigger messages for specific zones, please source trigger*.sql and trigger_spawn*.sql Updated: Fixed heading on some vanilla traps, added missing qeynos doors, fixed door issues in necropolis. Please source update_doors*.sql Fixed: Spell effects by triggers should now be always visible to the client. Added: command #dist to show the distance to the target Fixed: Most messages sent to the clients should now use DEFAULT_MESSAGE_RANGE instead of a to low value. Fixed: Sending larger messages to the client should now work correctly. ---- Revision: 695 Author: cofruben Date: 4:41:30 PM, Monday, July 12, 2010 Message: Note: Cleaned up client connecting process a little making it more efficient & human readable. Note: Made APPLAYERs constant for all processing of packets so that's more secure. Note: Those steps were needed in order to approach the actual EQEmu networking system, so more changes in the way. ---- Revision: 694 Author: Harakiri Date: 7:45:12 PM, Wednesday, July 07, 2010 Message: Added: Framework for Trigger based Entities (i.e. Kunark/Velious Traps or Environment Messages), when clients enter the proximity of these triggers they can either just print out a message (for example: water drips from the stalactite to the stalagmite) and/or cast specific spells on surrounding targets. Added: Clients can now sense Kunark/Velious Traps. Added: Command #showtriggers to make these invisible triggers appear temporary. Fixed: Weapons for primary/secondary slot should now correctly show their effect. Added: SetAppearance is now available through the perl interface for NPCs. ---- Revision: 693 Author: cofruben Date: 10:16:52 AM, Tuesday, July 06, 2010 Message: Fixed: a zone crash when using just "/tell" with no target. ---- Revision: 692 Author: Yeahlight Date: 4:16:25 AM, Sunday, July 04, 2010 Message: Added: Reserved primary and off-hand attacks for NPCs when they are out of melee range (this was previously only enabled during spell channeling). Fixed: When an NPC cannot find a complete path from its nearest pathing node to a chosen destination node (recall that this only happens when line of sight is not present), the NPC will now resort to teleportation instead of freaking the hell out. This means that NPCs may now make the transition between disconnected systems of nodes (mini-dungeons). Fixed: Cleaned up the CastOn struct. ---- Revision: 691 Author: Yeahlight Date: 10:33:56 AM, Wednesday, June 30, 2010 Message: Empty message. ---- Revision: 690 Author: Yeahlight Date: 7:10:59 AM, Tuesday, June 29, 2010 Message: Added: The start of feedback messages warning the PC when a specific NPC process is requiring too much processing time. Fixed: Memory allocation for pathing nodes is now dynamic. Fixed: The binary search algorithm for finding the closest node to a mob has been completely rewritten and optimized. If this new formula is not sufficient for zones with a large number of nodes, then we can look into creating binary space partitions for each zone. ---- Revision: 689 Author: Harakiri Date: 8:42:29 PM, Monday, June 28, 2010 Message: Added: Rogue Skill Sense Traps, when successful the player will now face automatically to the nearest trap. Added: Rogue Skill Disarm Traps, when successful the trap will temporary stop - this works both by either clicking on the trap or using the skill disarm trap to disarm the nearest trap. Added: Identified field in player zone entry, the players size. Added: Found different actions for stopping a trap. Added: Found Opcode and Answer Struct for Sense Traps. Added: Identified field in player profile, a pointer to the zone entry. Updated: Refactored Door Handling. ---- Revision: 688 Author: Yeahlight Date: 8:10:33 PM, Monday, June 28, 2010 Message: Added: #removelineofsight command to delete a line of sight record between a targeted node and another node in the zone. Fixed: The formula to connect two locations with a strait line of objects has been fixed. ---- Revision: 687 Author: Yeahlight Date: 2:47:29 AM, Friday, June 25, 2010 Message: Added: The #forcelineofsight command to establish a line of sight link between a targeted node and an existing node in the zone. Added: #shownodes now displays a visual link (a series of gold coins) between all nodes with line of sight. Fixed: #addnode / #addwaternode now resorts the list of nodes on insertion. Fixed: Tweaked the restricted line of sight formula. ---- Revision: 686 Author: Harakiri Date: 8:28:07 PM, Wednesday, June 23, 2010 Message: Updated: Fixed zone crash when using a static zone instance Added: Deadly Strikes for Rogues Added: Cooldown Timer for Range Attacks Added: Warriors have a chance to stun kick their target starting with level 55. Updated: Refactored clients CombatAbility/Kick processing ---- Revision: 685 Author: Harakiri Date: 4:24:27 PM, Monday, June 21, 2010 Message: Added: Identified PlayerProfile field how much air the player has left before drowning. The current value will now also be saved and loaded, clients should no longer start to drown instantly as soon as they zone while being underwater without enduring breath. Added: New command #listentities/le, lists all npcs and their coordinates. Updated: Tradeskill combine/failures will now be broadcasted to the players group. Added: Some debugging methods for quests. ---- Revision: 684 Author: Harakiri Date: 9:18:57 AM, Friday, June 18, 2010 Message: Added: The non blob item table is now the default one, all inventory/summoning is now done using the data from the non blob table. Please source the update*.sql, it includes fixes for items which use a newer ID 3D model file than the client can handle. When you want to use items from the blob table, use the command #si2. Fixed: Possible zone crash in CanEquipThisItem due array length exceeded error. Using bitmask operations now. Fixed: Non blob item bags should no longer result that bags had always a tiny capacity. Updated: Identified 2 16bit fields in the item struct. Fixed: Summon Spells should now summon the correct ammount of items instead of always 1. ---- Revision: 683 Author: Harakiri Date: 12:03:40 PM, Tuesday, June 15, 2010 Message: Added: Completed refactoring of range attack code, it now uses a similar miss calculation like melee and a new damage calculation which includes the correct primary stat for range damage. Added: Range weapons like bows can now proc an effect. Updated: The command summonitem has now an optional secondary parameter, the number of charges for the item to be summoned. Updated: Identified some bits in the zonentry struct. ---- Revision: 682 Author: Yeahlight Date: 5:18:37 AM, Saturday, June 05, 2010 Message: Added: Batch file to copy and move executables from the build directory to the working directory, launch said executables, minimize all windows and launch the client. Added: Water maps for each zone. Added: No clipping mode (#noclip). Unfortunately, clients cannot break into the empty sections of the zone geometry, but this mode still has some worthwhile applications (skipping doors, etc.). Added: Zoning with critically low HP now heals the client slightly and strips all their buffs. Added: Hailing a node now results in the node telling you their node ID. The client does not display numbers in names, so this is as good as it is going to get. Fixed: The node placement and path generation commands are now available again (#addnode, #addwaternode, #deletenode, #shownodes, #createdirectedgraph, #resolvepaths). Fixed: The node system is now unified and does not require any third party executables for sorting, checking and parsing. Fixed: The save routine has been rewritten and cleaned up. Fixed: Reversed the zone freeze condition when no clients are present. If a client trained NPCs to the zone line and no clients remained in the zone, the NPCs would never head home. ---- Revision: 681 Author: Harakiri Date: 6:54:45 PM, Wednesday, June 02, 2010 Message: Fixed: GM Players should no longer see the endurance bar go up and down (they are never actually thirsty or hungry according to the client). Added: Endurance check now actually tests if the player is in water, he will now lose a small amount of endurance while swimming. Updated: Some minor housekeeping ---- Revision: 680 Author: Yeahlight Date: 8:06:28 PM, Tuesday, June 01, 2010 Message: Fixed: The client and server are now in sync with client login locations ---- Revision: 679 Author: Yeahlight Date: 9:52:44 PM, Tuesday, May 18, 2010 Message: Fixed: Item projectile travel and collision calculations ---- Revision: 678 Author: Harakiri Date: 12:09:42 PM, Tuesday, May 04, 2010 Message: Added: Mob/Client GetID() is now also available using perl scripting Added: Executing range attacks now spawns a projectile moving towards the target (Arrows, Throwing Knifes etc). Furthermore the damage/miss calculation/text is only done when the projectile reaches the target, not instantly after using a range attack. Updated: Initial refactoring of range combat, fixed consuming of ammo. Updated: Extended Projectile packet documentation and handling. Added: Sample #spawnmissle to perl commands ---- Revision: 677 Author: Harakiri Date: 8:21:06 AM, Tuesday, April 27, 2010 Message: Added: "classic" duration time for all disciplines Added: "classic" base cooldown time for all disciplines Added: "classic" formula to reduce the cooldown by each level after you initially got the disciplines for all disciplines ---- Revision: 676 Author: Yeahlight Date: 6:24:47 PM, Saturday, April 17, 2010 Message: Core repository changes for the move to the new server ---- Revision: 675 Author: Yeahlight Date: 2:50:40 AM, Thursday, April 08, 2010 Message: Added: Support for bulk spawn update packets for both close and distant ranges. Fixed: Mobs no longer issue close range updates unless they are moving and/or changing their cardinal heading. Instead, clients now request bulk spawn updates from the server. ---- Revision: 674 Author: Yeahlight Date: 12:59:21 AM, Tuesday, April 06, 2010 Message: Added: Persistent spell recast timers (zoning/camping no longer resets recast timers) with continuous updates Fixed: Spell recast timers are now functioning correctly ---- Revision: 673 Author: Harakiri Date: 9:26:44 PM, Wednesday, January 27, 2010 Message: Added: Identified PlayerProfile Bit SpawnAppearance, also some additional cleanup. ---- Revision: 672 Author: Harakiri Date: 11:59:04 AM, Monday, January 25, 2010 Message: Added: Implemented Persistent Timer Framework to store reuse/cooldown time accross zoning/logout/login. Please source timer*.sql in \db dir!. Use client->GetPersistentTimers() to implement your own timers. Added: Disciplines now use a persistent timer for active and reuse time. ---- Revision: 671 Author: Harakiri Date: 11:51:35 AM, Friday, January 22, 2010 Message: Added: Player controlled small boats are now working correctly. Players may now "move" over water using a boat. ---- Revision: 670 Author: Harakiri Date: 11:48:20 AM, Monday, January 18, 2010 Message: Added: Identified property in playerprofile, the name of the boat the player is currently on. When the player disconnects/zones the client tries to automatically teleport him where the boat is, if this property is set. Added: Found new opcode OP_LocateBoat & OP_LocateBoatAnswer. When the boat is not in the current zone and the playerprofile has a boatname set, the client asks for the zone where the boat currently is. OP_LocateBoatAnswer is used to tell the client the zone. Added: Implemented Bard Disciplines Deft Dance and Puretone - All Bard Disciplines are now implemented Added: Implemented Paladin Disciplines Holy Forge and Sanctification - All Paladin Disciplines are now implemented Added: Implemented Ranger Disciplines Trueshot and Weaponshield - All Ranger Disciplines are now implemented Added: Implemented Shadowknight Disciplines Unholy Aura and Leechcurse - All Shadowknight Disciplines are now implemented Fixed: Only classes with double attack skill may now have a chance to double attack with offhand. ---- Revision: 669 Author: Harakiri Date: 11:32:41 AM, Thursday, January 14, 2010 Message: Added: Implemented Monk Discipline Hundred Fists - All Monk Disciplines are now implemented Added: Implemented Rogue Discipline Blinding Speed - All Rogue Disciplines are now implemented Added: Implemented Warrior Disciplines Evasive, Mighty Strike, Precision, Aggressive - All Warrior Disciplines are now implemented ---- Revision: 668 Author: Harakiri Date: 12:25:02 PM, Wednesday, January 13, 2010 Message: Added: Implemented Monk Disciplines: Stone Stance, Whirlwind, Void Dance, Inner Flame Added: Implemented Rogue Disciplines: Counterattack, Deadeye, Nimble, Kinesthetics, Duelist Added: Implemented Warrior Disciplines: Charge, Defensive, Furious, Fell Strike, Fortitude ---- Revision: 667 Author: Harakiri Date: 9:12:06 AM, Tuesday, January 12, 2010 Message: Added: Base Resist Calculations for all class/race combinations, these are now included server side when using CalcBonuses() Added: command #clientstats to compare server side stats (i.e. resists) with client side displayed values Added: Implemented Fearless discipline for all melee/hybrid classes Added: Implemented Resistance discipline for all melee/hybrid classes Added: Found opcode to confirm activation of a discipline to the client, i.e. the client will show the correct resist increase values when the resistance displine is active ---- Revision: 666 Author: Harakiri Date: 10:37:29 AM, Wednesday, December 23, 2009 Message: Added: Framework/Container for handling disciplines Added: Data for all 33 Disciplines, please source db/disciplines_*.sql Added: Identified all client side IDs for each /discipline command Added: Implemented Monk Disciplines Thunderkick, Silent Fist and Ashenhand . Only 30 more to go! =p Added: Example to commands.pl to sent all emote/animation ids ---- Revision: 665 Author: wizzel Date: 6:05:38 PM, Thursday, December 03, 2009 Message: Fixed: Fixed a few possible zone crashes introduced by a developer whose name starts with W. ---- Revision: 664 Author: Harakiri Date: 12:24:24 PM, Wednesday, December 02, 2009 Message: Fixed: Small fix to make $entity_list available when using perl commands ---- Revision: 663 Author: Wizzel Date: 01:45:41 AM, Tuesday, December 01, 2009 Message: Added: Support for PvP arena detection. Added: Basic attack support for PvP arenas. Removed: Old swimming skill up function. TODO: I am going to be adding a huge amount of attack, spell casting and pet mechanics in terms of dueling, arena PvP, and PvP flagged players. Please check the community feedback forum to help. ---- Revision: 662 Author: Wizzel Date: 07:01:15 PM, Saturday, November 28, 2009 Message: Added: New swimming skillup function and formula with exploit checks for AFK swimmers. Added: New zonevars.sql file (not necissary to source). Added: Completely functional lift system - and Greater Faydark lift values. Added: Lift timers to avoid abuse. Fixed: Lifts now go up and down from both triggers. Fixed: Water creatures can no longer roam onto land to attack you. Sorry Land Sharks. Fixed: You can no longer cast a spell or attack a water bound creature from land. Fixed: Clients that are killed by their duel opponent while in duels no longer loose EXP. Moved: Put the entire forage process into forage.cpp and forage.h ---- Revision: 661 Author: Harakiri Date: 11:00:11 AM, Wednesday, November 11, 2009 Message: Added: Identified unknown field in item_struct - the merchants sell rate. For example, now we know why the item price for Keg of Vox Tail Ale is 1 copper, but the merchant wants 100pp from the player =) but gives only 1 copper when the player sells it. Different items have different sell rates. Added: Items sold by Player to Merchant now immediately show up in the merchants item window Fixed: Buying Items from Merchant now calculates the correct price server side, there is no longer a mismatch between what the client tells the player it cost, and what the player really pays. Updated: Cleaned up Sell/Buy functions, added log facility Updated: SummonItemNonBlob now also includes the new merchants sell rate, there is virtually byte wise no difference now between the items from the blob table and the nonblob tab. ---- Revision: 660 Author: VitaminB3 Date: 9:05:19 PM, Tuesday, October 27, 2009 Message: Minor housekeeping commit. Removed the commited user config file. Moved some sources to where they belong. Got rid of the ClassDiagram files and the Solution Project items. ---- Revision: 659 Author: Harakiri Date: 12:06:53 PM, Sunday, October 25, 2009 Message: Added: Found opcode OP_SetMoney to reset all specific money values client side, AddMoneyToPP now will use this, this way we are always certain the server side value is the same as the one displayed on the client. Also added UpdateMoneyInClient to sent the current stored values to the client. SendSetMoney will sent the new values to the client. Added: Found new debug opcode OP_QueryCompleteInventory, client will sent all the items it thinks it has in the inventory, equiped and in the bank slot. We can now compare this with the server side values. Added: getAssociatedWeaponSkill method, to get the skill ID used for a specific weapon Added: Alternative Gain Level Opcode - this one is used to directly set the level Updated: Fixed ProcessOP_ShopRequest, the calculated price modifier will now be memorized so that the client receives the correct money for selling an item. Previously the client was telling the player a price which we did not use. Also added CalcPriceMod, calculates merchant prices based of clients charisma and faction standing. Furthermore refactored the ProcessOP_ShopPlayerSell method, selling items should now correctly work. ---- Revision: 658 Author: VitaminB3 Date: 9:58:35 PM, Saturday, October 24, 2009 Message: Proposal for new database layout for schema/data. Includes two simple ruby scripts for dumping and sourcing entire database. These dumps are done in the grouped insert format, which makes them ill suited for directly editing, but the entire database sources in under 5 minutes on my machine including the time to unzip the data folder. ---- Revision: 657 Author: VitaminB3 Date: 1:13:40 AM, Friday, October 23, 2009 Message: LFG support for /who within zones. New packet struct, LFG_Update_Struct, uses OP_LFG. Updated ProcessOP_LFG to send update to other players. New method in EntityList, SendLFGList for informing players zoning in. ---- Revision: 656 Author: wizzel Date: 9:00:31 PM, Thursday, October 22, 2009 Message: Added: A command for spawnappearance_packet testing. Fixed: Players now see other players who are AFK with the tag next to their name in game. Fixed: Changes in the light a player emits (i.e. equipping a lantern) is now shown to other players. Fixed: A lot of cleanup and bug fixes on my sloppy duel implementation from two years ago including: Added: Duel.cpp - All duel code is here. Added: OP_DuelFinished, struct, and handling. Fixed: /decline in response to a duel is now working correctly. Fixed: All player attack mechanics within duels. Fixed: Players in duels may no longer be healed or buffed by other players who are not dueling. Fixed: Players in duels may no longer cast on other players in other duels. Removed: boat.h - It was unused. ---- Revision: 655 Author: Harakiri Date: 8:45:40 PM, Thursday, October 15, 2009 Message: Added: Identified a 120 byte and 24 byte field in the PlayerProfile Added: Found Opcode to initiate consuming of a consumable (food,drink,potion) from the server. (SendInitiateConsumeItem) Added: Method and Opcode to sent the client the names of missing items it needs for casting a spell/using a bard song or any other item requirement. (SendItemMissing) Added: Opcodes for PlayerDeath and the two different PlayerSave Opcodes, also cleaned up the logic and moved them to separate methods. Updated: Cleaned up itemtypes header Fixed: DeleteItemInInventory for charge items which had only "0" charges left, when the client already removed one charge (i.e. through consuming food) Updated: Cleaned Up Spell components consume to reuse RemoveOneCharge method Fixed: ProcessOP_ConsumeItem now correctly consumes the item (no matter which type) Fixed: Consuming Alcohol now also saves the drunkness state in the PP server side. No more relogging/zoning to make you sober again ha! Fixed: Auto consume/manual consume food/drink should work again, also verified hungerlevel/thirstlevel formula ---- Revision: 654 Author: Harakiri Date: 11:29:42 AM, Tuesday, October 13, 2009 Message: Added: Figured out some unknown bits of the item_struct, these are actually a unique ID per item to differentiate between the same item (i.e. 2 potions of blood of wolf) in the inventory. Also potentially identified one bit as FV no drop flag. Fixed: Apply Poison will now sent the correct slot id where the poison is, that was actually used - tho you need the nonblob item summon #si2 to test it atm. Now the correct poison will be applied and not the first one of type poison which could be found in the inventory. ---- Revision: 653 Author: wizzel Date: 11:20:10 PM, Friday, October 09, 2009 Message: Added: A new system for loading zone appearance variables. It replaces the CFG files with a single table in the database. Furthermore, it also resolves the issue that we were missing most if not all CFG files from Velious. Added: Complete documentation of the newzone_struct. Added: Reinstated numerous commands dealing with zone configuration. Added: New table 'zonevars'. Please source it!!! Removed: Obsolete CFG files. ---- Revision: 652 Author: Harakiri Date: 6:12:30 PM, Friday, October 09, 2009 Message: Added: Finished implementing ApplyPoison, applying a poison only works for rogues and when a piercing weapon is equipped. The poison's spell is now added to the player as "bonus proc spell", and can only proc if the main hand (primary weapon) swings. Fixed: For ItemNonBlob, the effect id of a poison is taken from the proc ID. Added: Command #debug ---- Revision: 651 Author: Harakiri Date: 10:10:38 AM, Friday, October 09, 2009 Message: Added: Modified plugin scripts for perl quests, now with debugging info to see which items are needed for each turn in. Also includes the deletion of multiquest items once a turn in is successful. ---- Revision: 650 Author: Harakiri Date: 9:59:31 AM, Friday, October 09, 2009 Message: Updated: Cleaned up MultiQuesting turn in logic Added: NPCs now 'forget' MultiQuesting items once a quest has been completed successful ---- Revision: 649 Author: Harakiri Date: 8:34:06 AM, Monday, October 05, 2009 Message: Added: Initial Multiquesting support, npcs may now remember when they already got an item turned in, the person who turns in the last needed item will complete the quest. This should work for all quests. Still need to work on the "npcs should forget quest items when quest is finished" task, currently there is a timer. Added: Identified apply poison opcode. Added routine that client receives success opcode when applying a poison is finished, so that the client may not lock up anymore. ---- Revision: 648 Author: Harakiri Date: 5:21:08 PM, Wednesday, September 23, 2009 Message: Added: Utility and documentation to auto generate perl mapping classes. Added: Remaining Perl Mapping Classes for Entity and EntityList Updated: Regenerated Perl Mapping Classes for Client and Mob, all important functions should now be available from perl. Updated: QuestManager will now summon items from the non blob item table ---- Revision: 647 Author: Harakiri Date: 5:27:15 PM, Tuesday, September 22, 2009 Message: Updated: Small error with my last commit ---- Revision: 646 Author: Harakiri Date: 4:54:04 PM, Tuesday, September 22, 2009 Message: Updated: Refactored Client_Commands removed giant if/else block, each admin command is now in a separate method. Adding new commands is now much easier, #help to list command will now dynamically list all available commands depending on the admin level. Furthermore, it is now possible to search for a command using #help. Added: Perl Command support, it is now possible to build #commands at runtime using perl scripts - no need to rebuild zone or restart client. Added: PerlPacket Utility to test opcodes/structs on runtime, there is no longer a need to rebuild the zone or restart the client when you are experimenting with unknown client structs/opcodes. Added: Perl Mappings for classes client and mob, you can now directly access functions from these c++ classes in perl scripts for example, in perl commands. ---- Revision: 645 Author: Harakiri Date: 6:51:17 AM, Friday, September 18, 2009 Message: Fixed: Small error in my last commit ---- Revision: 644 Author: Harakiri Date: 7:35:11 PM, Thursday, September 17, 2009 Message: Added: Found new Opcode TeleportPC! Identified the needed data for TeleportPC Struct, we no longer need to misuse the translocate Opcode for zoning players now. TeleportPC can handle both intra zone teleport and teleport to another zone. Intrazone teleport now supports clients heading! Updated: Fixed Translocate Spells, identifed the missing bytes in the Translocate_Struct for the spellID. Now players get the correct confirm dialog whether they want to get translocated to their bind spot or to a specific zone Updated: Translocate to bind point is now possible Added: Client functions TeleportPC and TranslocatePC Added: Commands #teleport and #translocate to test intrazone teleport differences Other: Im now almost certain that the ZoneChange Opcode will never sent the coords the player should zone to, the client does not transfer this data. ---- Revision: 643 Author: Harakiri Date: 6:53:20 PM, Tuesday, September 15, 2009 Message: Added: GetItemNonBlob/SummonItemNonBlob - It is now possible to create an ItemStruct from the nonblob item table, we can now use the latest item table dumps available and no longer need to use the item blob tables. Please update your DB with the additional item table found in \db Added: Command #summonitem2/#si2 to summon an item from the nonblob table Added: Command #diffitem to print the different bytes between the blobitem and nonblob item Updated: Refactored and commented the Item_Struct to use more meaningful property identifiers (i.e. skill->itemType, nosave -> norent, numSlots->Bagslots etc..) Added: Identified the deity bits in the Item_Struct, deity specific items can now be used from item nonblob Added: Identified Opcode OP_ClientError, sent by client when an error has occured for example, invalid item received Added: IsConsumable() for ItemInst, to identify if an item depending on its type (food,drink,potion..) can be deleted after all charges have been removed Fixed: PlayerProfile ItemProperties_Struct charges should be sint not uint to identify unlimited charge items (-1) Fixed: SummonItem - Consumable items should now be correctly be consumed/removed by RemoveOneCharge Fixed: Items with right click effect and unlimited charges should now never run out of charges Fixed: Moved RemoveOneCharge call for items with limited charges (potions, etc) to the SpellFinished method, charges will only be removed after a successful cast ---- Revision: 642 Author: Harakiri Date: 6:51:45 PM, Sunday, September 06, 2009 Message: Added: EVENT_SLAY, EVENT_NPC_SLAY - used to signal pc or npc death to execute an action, for example they say "Begone insect, I have much slaying yet to do!" Added: EVENT_ATTACK - trigger mobs when being attacked to execute an action, for example they call for help "Centurions!! Legionnaires!! Come join the fight!" Added: EVENT_DEATH - trigger mobs when being killed to execute an action, for example they say: "You shall have all the Crushbone orc legions on your tail for my death!" Added: EVENT_AGGRO and EVENT_COMBAT - trigger mobs when they still have aggro to execute an action, for example they say "I shall chop you down as your people chopped down the beauty of the forests!!" Added: EVENT_TIMER quest/mobs may now trigger some specific actions after N seconds, i.e. spawn a mob or drop an item Added: Command #reloadquests ---- Revision: 641 Author: enr4ged Date: 7:56:45 PM, Friday, September 04, 2009 Message: Updated: Translocate spells should be mostly functional now just a few things left to work out (reagant consumption and translocate message.) ---- Revision: 640 Author: Yeahlight Date: 11:42:47 PM, Tuesday, September 01, 2009 Message: Fixed: Small error with my last commit ---- Revision: 639 Author: Harakiri Date: 3:12:11 PM, Monday, August 31, 2009 Message: Removed: Libaries folder, please update your workspace settings! ---- Revision: 638 Author: Harakiri Date: 3:04:26 PM, Monday, August 31, 2009 Message: Added: We finally put the word Quest into EQC! We now have a working quest system with over 3000 quests. NPCs may now answer your Hail request and share their interesting stories if they have a dedicated quest file. Currently the majority of quests should work because they are only based on EVENT_SAY and EVENT_ITEM, more events to come. Added: Item Class. Use ItemInst constructor from a Item_Struct to access a dozen useful functions like IsEquipable, CanItemFitInContainer, GetCharges, GetPrice etc. Added: Quest Fanfare! Identified the struct which needs to be sent to the client to indicate a quest is complete with money reward from the quest npc and that distinctive quest fanfare sound. Added: New schema for quest, please source quest_globals_AUGUST_31_2009.sql ---- Revision: 637 Author: cofruben Date: 11:10:07 AM, Monday, August 31, 2009 Message: Added: shared memory basics. Added: items are now located in shared memory. Please report bugs/problems! ---- Revision: 636 Author: enr4ged Date: 4:37:55 PM, Saturday, August 29, 2009 Message: Updated: changes for translocate spell line support. ---- Revision: 635 Author: Yeahlight Date: 5:44:08 PM, Friday, August 28, 2009 Message: Added: Spell recovery and recast rules (client is not in agreement with these rules yet). Added: Charm level caps. Added: Mez level caps. Added: Stacking haste (v2 haste). Fixed: Haste/slow rules and calculations for PCs and NPCs. Fixed: The resurrection struct and final rez processes (thanks Harakiri). Fixed: Cleaned up the spell casting routines. Fixed: Cleaned up the spell resist routines. Fixed: Debuffs now tick while on a stunned NPC. Fixed: Bind affinity and gate routines. ---- Revision: 634 Author: Harakiri Date: 8:51:36 PM, Wednesday, August 26, 2009 Message: Updated: Identified PlayerProfile with bit pvpEnabled ---- Revision: 633 Author: Harakiri Date: 5:51:20 PM, Wednesday, August 26, 2009 Message: Updated: Identified the bit in the playerProfile which tells the client that a discipline is available /disc now triggers the opcode Added: Identified the OPCode the client sends when issuing /disc something Added: ProcessOP_UseDiscipline to implement all class specific disciplines ---- Revision: 632 Author: Harakiri Date: 12:15:28 PM, Wednesday, August 26, 2009 Message: Updated: Modified the language skill increase message to the correct message "Your language skills have improved." instead of "You have become better at.." ---- Revision: 631 Author: Harakiri Date: 8:52:35 PM, Tuesday, August 25, 2009 Message: Added: Item Type int for every container and world combine container. Use GetContainerName to display as String. Updated: Refactored Tradeskills to use new Logging API Updated: EQCUtils should now print properly for larger strings ---- Revision: 630 Author: Harakiri Date: 6:05:50 PM, Tuesday, August 25, 2009 Message: Removed: All empty and never used cpp/header files created by .. you know who =p ---- Revision: 629 Author: enr4ged Date: 5:31:16 PM, Tuesday, August 25, 2009 Message: Initial support for translocate spells. ---- Revision: 628 Author: Harakiri Date: 5:26:24 PM, Tuesday, August 25, 2009 Message: Added: Utility method to Log with existing CodePlace categories in EQCUtils ---- Revision: 627 Author: enr4ged Date: 5:19:35 PM, Tuesday, August 25, 2009 Message: Updated to include TranslocateResponse_Struct ---- Revision: 626 Author: Harakiri Date: 5:02:04 PM, Tuesday, August 25, 2009 Message: Added: Logger System, EQCUtils::PrintF will now default to writing to a logfile and console, modify EQDEBUG in Logger.h to tune the different levels. Please use LogFile->write(DEBUG/ERROR/NORMAL) now instead of cout. LogFiles will be created for each zone in the logs\ dir and for the world. ---- Revision: 625 Author: Moraj Date: 3:47:24 PM, Tuesday, August 25, 2009 Message: Added: Fully implemented Bind Wound skill. ---- Revision: 624 Author: melinko Date: 9:38:14 PM, Monday, August 24, 2009 Message: Added: Critical hits to warriors upon reaching level 12, as well as converting critical hits into crippling blows while in berserker frenzy. ---- Revision: 623 Author: melinko Date: 11:33:10 AM, Monday, August 24, 2009 Message: Added: Warriors now have berserker frenzy handling. Added: Max skill values for slam that large races can utilize. ---- Revision: 622 Author: Harakiri Date: 8:42:53 AM, Monday, August 24, 2009 Message: Updated: Identified bard_modifier field in SpellBuff_Struct Added: Spell Bind Sight now works, furthermore it can now be cast on any PC/NPC ---- Revision: 621 Author: Yeahlight Date: 11:09:34 PM, Sunday, August 23, 2009 Message: Added: Reserved melee attacks for PCs. Added: A large switch to handle every single haste and slow spell (including the scaling formulas). Fixed: Spell slow calculations for both PCs and NPCs. Fixed: All haste spell effects on items are now properly handled. ---- Revision: 620 Author: Yeahlight Date: 8:41:18 PM, Saturday, August 22, 2009 Message: Added: Continued work on projectiles Fixed: Rewrote, fixed-up and reorganized the main spell casting routines Fixed: PCs may no longer use instant click items to bypass the global 2.25 second spell cool down timer; suckers! ---- Revision: 619 Author: Yeahlight Date: 11:13:23 AM, Saturday, August 22, 2009 Message: Added: Continued work on projectiles ---- Revision: 618 Author: melinko Date: 5:04:02 AM, Saturday, August 22, 2009 Message: Updated: Changed group songs to now be considered using AE range of spell. This should be the proper calculation for bard song ranges while grouped. ---- Revision: 617 Author: melinko Date: 9:29:20 PM, Friday, August 21, 2009 Message: Fixed: Bard songs that required instruments to be casted are now functioning correctly. Fixed: Bug was occurring when casting group spells/songs, that would state your target was not in range, which is no longer considered. Added: Group spell/songs now are take into account the range of different players in your group and will only effect those that are in range. ---- Revision: 616 Author: Yeahlight Date: 10:53:23 AM, Friday, August 21, 2009 Message: Added: Continued work on projectiles ---- Revision: 615 Author: Harakiri Date: 3:32:19 PM, Thursday, August 20, 2009 Message: Updated: #scribespells now orders the spell ascending from level 1 to x, it is also now possible to scribespells to a target. Updated: Some Playerprofile unknown bits ---- Revision: 614 Author: Kibanu Date: 2:37:37 PM, Thursday, August 20, 2009 Message: Updated: Re-wrote spawngroup / spawnentry code to do away with LinkedLists. They both now use vectors with custom structs to better support Time of Day / spawn limit modifications. This methodology is much more efficient. ---- Revision: 613 Author: Kibanu Date: 2:26:54 PM, Thursday, August 20, 2009 Message: Added: Support for spawn_limit on NPCs. Useful for named NPCs that can spawn in multiple places, also useful for only spawning X number of any NPCs in a zone. Added: time_of_day field in spawnentry table to support Time of Day flag on NPC spawns. Added: Time of Day support. NPCs can be assigned a flag to control what time of day they spawn. NPCs that have the DayTime-Only or NightTime-Only flags will despawn when the appropriate time of day is reached. To stagger spawns (think Kithicor Woods), NPCs will despawn between 0 and 5 minutes and respawn 10-15 seconds after that ( gives you a chance to get to a safe spot ). NPCs must not be engaged in order to despawn. ---- Revision: 612 Author: Yeahlight Date: 11:18:23 AM, Thursday, August 20, 2009 Message: Added: Beginning support for spell projectiles. ---- Revision: 611 Author: Harakiri Date: 10:01:45 PM, Wednesday, August 19, 2009 Message: Added: Identified the cooldown fields in the player profile for the cast gems and class abilities LoH and DT. ---- Revision: 610 Author: Harakiri Date: 4:21:17 PM, Wednesday, August 19, 2009 Message: Added: Implemented Instill Doubt (Intimidation) Skill, players can skill up on any target (corpse, npc, player) with no range check. However to successfully land a fear, the player needs to be in melee range of the target. Also made sure that this skill is a pain to skill up =p. ---- Revision: 609 Author: Harakiri Date: 6:48:12 PM, Sunday, August 16, 2009 Message: Fixed: Client::RemoveOneCharge now also works for items in inventory containers. ---- Revision: 608 Author: Tazadar Date: 6:12:54 PM, Sunday, August 16, 2009 Message: Fixed : You can now summon several item in one wave. ---- Revision: 607 Author: Harakiri Date: 5:22:22 PM, Sunday, August 16, 2009 Message: Added: Chance to increase swimming skill while in water. Updated: IsInWater() now makes an additionally check with subtracting the players size to better work while swimming and levitating. ---- Revision: 606 Author: Harakiri Date: 4:10:48 PM, Sunday, August 16, 2009 Message: Fixed: Fix world build error, added correct location for skills.h ---- Revision: 605 Author: Harakiri Date: 3:57:02 PM, Sunday, August 16, 2009 Message: Added: Watermap support! It is now possible to check whether a player/mob is in water, in lava etc. A wtr file is needed for each zone in the maps\maps folder. Fixed: It is no longer possible to fish on dry land or at lava. The player will only able to fish when he is next to or over water. Added: Client methods IsInLava() and IsInWater() Added: CreateWaterMaps.bat add awater.exe precompiled, to generate water map files from s3d files. ---- Revision: 604 Author: Harakiri Date: 12:21:41 PM, Sunday, August 16, 2009 Message: Added: Implemented Skill Fishing. Player can either catch zone specific items or generic drops (Fresh Fish, Rusty Dagger etc). Player has a chance to lose one bait if fishing was not successful. Player has also a chance to break the fishing pole. Fishing is only possible when any item of bait is within the players inventory, first item with attribute bait which is found in the inventory will be consumed. Player can still hunt for land sharks tho till i implemented water maps. Added: FindItemTypeInInventory, use this to check if a player has a specific item type in the inventory (bait, bandages, etc). Updated: RemoveOneCharge now has the option to delete an item if its the last charge. Added: inventory.h enum InventorySlot, use the static identifiers when referring to a slot i.e. SLOT_PRIMARY instead of 13. ---- Revision: 603 Author: Harakiri Date: 11:12:19 AM, Friday, August 14, 2009 Message: Added: Documented all racial forges and their location Update: Added default combine container(s) to every tradeskill recipe depending on the tradeskill, every recipe should now work, need to add missing recipes tho. Please source tradeskill_recipes_AUGUST_14_2009.sql again. Fixed: A recipe which could be combined in different items (i.e. small and large sewing kit) should now work. Added: Utility used for converting old tradeskill schema to new one. ---- Revision: 602 Author: Harakiri Date: 7:19:41 PM, Thursday, August 13, 2009 Message: Added: Implemented generic logic for all tradeskills. All tradeskills should now work i.e. spell research, blacksmithing, backing etc. as long as a valid recipe is found in the database table. Added: Chance to failure and chance to succeed a tradeskill combine using eqtraders.com formula. Added: Chance to increase a tradeskill. Added: Two admin commands #recipesearch to search for a specific recipe and #recipesummon to summon all needed items for a recipe. Added: Redesigned tradeskill tables, now they are split into two tables tradeskill_recipe and tradeskill_recipe_entries. A tradeskill recipe now also includes the valid combine containers for a successful result. Also added/merged an up2date version of all recipes. The recipes are still incomplete and need testing, but are independent of the code base now, everything tradeskill wise is now decided by database entries. Added: Schema Update, please source tradeskill_recipes_AUGUST_14_2009.sql. Fixed: Combine_Struct, identified correct packet position for world object id and container slot id Removed: All unneeded empty classes which were related to Tradeskilling. ---- Revision: 601 Author: Harakiri Date: 9:38:31 PM, Tuesday, August 11, 2009 Message: Added: It is now possible to learn languages from party chat or say from other players, as long as the teachers language skill is equal or better then your own. ---- Revision: 600 Author: Kianu Date: 9:03:05 PM, Tuesday, August 11, 2009 Message: Fixed: Re-added groupleader field in character_ table. ---- Revision: 599 Author: Harakiri Date: 6:00:54 PM, Tuesday, August 11, 2009 Message: Added: 20 Client Opcodes i found through bruteforcing. ---- Revision: 598 Author: Harakiri Date: 5:16:19 PM, Tuesday, August 11, 2009 Message: Fixed: Identified the packet byte which differentiates between a normal skill and a language training in ClassSkillChange_Struct. Fixed: Found the correct location for the language max skill value a trainer will teach you in ClassTrain_Struct. Added: Training a language at the GM Trainer now works, the client will also receive the correct message "You have become better at *lang*". Furthermore verified the language field in the playerprofile. Added: New Admin Commands #setlang langID skillValue to set the language skill of a target and #listlang to view all available languages. Added: New method to convert language int to String for displaying the client message "You have become better at..." Fixed: You no longer need to logout when using the Admin command #points ---- Revision: 597 Author: Harakiri Date: 4:39:42 PM, Tuesday, August 11, 2009 Message: Added: All existing and still missing races (50+) from the client, added each race to GetRaceName method. ---- Revision: 596 Author: Yeahlight Date: 3:13:22 PM, Monday, August 10, 2009 Message: Fixing an issue with the last commit ---- Revision: 595 Author: Yeahlight Date: 3:11:13 PM, Monday, August 10, 2009 Message: Added: Several new opcodes discovered in my brute force routines. Added: IsAlive() member functions to the mob class. Use this instead of comparing 'GetHP() > 0' for NPCs and 'GetHP() > -10' for PCs. Fixed: NPCs no longer drop agro on PCs when their HP falls below 0. Fixed: Some logic errors with AE spells. Fixed: Some logic errors with HP regeneration. ---- Revision: 594 Author: Harakiri Date: 2:52:06 PM, Monday, August 10, 2009 Message: Removed SenseHeading.cpp, it is resolved client side. The only thing are the skill ups which are already handled. ---- Revision: 593 Author: Harakiri Date: 11:26:39 AM, Monday, August 10, 2009 Message: Added: The body of a message is now displayed in the detail window along with author, subject and date. The different language setting also work, i.e. when somebody posted in Dark Elvish, only those with enough language skill can comprehend his message. This only applies to the body, not to the subject of a message. The message board should be fully functional now. ---- Revision: 592 Author: Harakiri Date: 9:10:51 PM, Sunday, August 09, 2009 Message: Fixed: A message of the message board has an ID of uint32 instead of uint16, schema update reflect this change ---- Revision: 591 Author: Yeahlight Date: 6:42:20 PM, Sunday, August 09, 2009 Message: Added: Default db.ini file ---- Revision: 590 Author: Harakiri Date: 11:17:15 AM, Sunday, August 09, 2009 Message: Added: Message Board Support, Players can now view, post, reply and erase (their own) posts for example in South Qeynos Lion's Mane Inn. Admins can use #showmb to view the Message Board from everywhere. Added: SQL Schema mb_messages_AUGUST_07_2009.sql , please update your db first! Added: 6 new opcodes for Message Board Handling. ---- Revision: 589 Author: Yeahlight Date: 1:34:06 PM, Friday, August 07, 2009 Message: Added: Default LS.ini file ---- Revision: 588 Author: Kibanu Date: 7:33:01 PM, Wednesday, August 05, 2009 Message: Fixed: Some unprotected pointers in original EQCEmu group packet code on zone server. ---- Revision: 587 Author: Kibanu Date: 10:45:01 PM, Thursday, July 30, 2009 Message: Fixed: Crash bug with uninitialized zone and trying to send Time of Day information. Added: is_daytime field in time_of_day table in the database. Modified: When a zone server starts up, it now pulls daytime/nighttime data directly from the database to get around non-initialized zone pointer. ---- Revision: 586 Author: Kibanu Date: 5:06:56 PM, Thursday, July 30, 2009 Message: Added TimeOfDay class to the World server. It keeps track of time/days and sends appropriate Day/Night time packets to the Zone servers for spawn logic (next on the list). It also sends out synchronization time packets to all clients every 3 minutes ( in-game hour ) to keep all clients at the same time even if their computer lags a little bit. The time and date is saved to the database every 3 minutes as well. ---- Revision: 585 Author: Yeahlight Date: 5:20:24 PM, Thursday, July 09, 2009 Message: Added: Support for the AE rain spell line. Fixed: Rewrote the logic behind all AE spells. Fixed: Some trailing issues with resurrection. Fixed: Found the NPC body type that cannot be targeted by PCs. Fixed: Found the correct location in the player profile struct for the bind affinity location. ---- Revision: 584 Author: Yeahlight Date: 5:48:42 AM, Wednesday, July 08, 2009 Message: Added: Safe locations locations (plus headings) for both clients and GMs for every single classic era zone. Fixed: After a long struggle with getting the gate line to work properly, I finally realized that--believe it or not--gate is actually resolved client side and it now works well. One issue remains because the player profile is incorrect and the client is always sent to 0,0,0 if they attempt to gate in the same zone they are currently bound. Fixed: When a player dies, it now produces a legitmate corpse for all other PCs in the zone. By legitimate, I mean each of the client's client now actually accepts the corpse as a real corpse and not just a player laying on the ground. Fixed: Went back and edited all forms of PC movement packets and created a unified system to handle the client z-axis conversion. Fixed: Optimized the NPC movement update process a bit. ---- Revision: 583 Author: Tazadar Date: 10:45:51 AM, Monday, July 06, 2009 Message: Added: SendInventoryItems2 which send items in bulk, this is not functional. If you want to improve/fix it please use the #test command. ---- Revision: 582 Author: Yeahlight Date: 7:32:32 AM, Sunday, July 05, 2009 Message: Added: New zone batch boot ALL file. ---- Revision: 581 Author: Yeahlight Date: 6:30:24 AM, Sunday, July 05, 2009 Message: Added: The fundamental work for the World server to manage crashing or freezing zone servers. Fixed: The client's UI is now locked when they fall over unconscious or die. Fixed: Undead NPCs no longer flee. Fixed: NPC HP updates are now only issued when there is a change in their HP percentage. Fixed: Spells no longer aid in NPC push. Fixed: Clients now zone in with their actual HP and mana levels displayed. Fixed: Stripped various buffs and debuffs upon zoning based on their effects (mez, charm, stun, illusion, etc). Fixed: The server now uses FindGroundZ() when a client casts bind affinity. This accurately places the client on the correct z-axis when zoning into their bind zone. ---- Revision: 580 Author: Tazadar Date: 5:27:51 AM, Sunday, July 05, 2009 Message: Helping Yeahlight for a World static array. ---- Revision: 579 Author: Yeahlight Date: 10:39:23 AM, Friday, July 03, 2009 Message: Added: Resurrection confirmation box support thanks to Tazadar's discovery! Added: PCs now only have three minutes to respond to a resurrection request. Added: Resurrection exp returns based on spell casted. Fixed: Many, many issues with PC coordinate passes to the database. Fixed: Some issues with directly setting a client's level. Fixed: An position update issue with boats. Fixed: Bind affinity. ---- Revision: 578 Author: Tazadar Date: 5:38:52 AM, Friday, July 03, 2009 Message: Added: Sacrifice Opcode + Struct. ---- Revision: 577 Author: Tazadar Date: 4:37:15 PM, Thursday, July 02, 2009 Message: Added: New working Resurrect_Struct please read before filling it or you wont see any window! Modified: Commented several lines in the function RezzPlayer() in WorldServer.cpp because of the old fields which are no longer used. ---- Revision: 576 Author: Tazadar Date: 11:46:49 AM, Thursday, July 02, 2009 Message: Added: WAIT_FAMILY implementation in Boat Process(), It is used to synchronize the different boats of a same route. Added: ProcessBoatOnly() which is used when no players are in a zone. Boats process are only run. Added: We calculate clients relative coordinates to the boat before zoning then we use them to zone. Added: All the files for the qeynos route. (This route is now complete and works !) Added: We remove a player from the boat passenger when he LD. (some work is still needed) Added: When a zone is down the route continues. If the zone goes up again the boat will spawn only when it reaches the zone.(Exception : Boats which live in one zone will immediately spawn). External: Made a function to make boat curves (they are exponential like) . Fixed: Boat who lives in one zone Spawn only once ! Fixed: The World no longer use 100% of the CPU. ---- Revision: 575 Author: Yeahlight Date: 6:13:50 AM, Thursday, July 02, 2009 Message: Added: Support for the resurrection spell line. I failed to get the rez box to fire, so I had to settle with a command line request to the corpse owner for now. The owner of the corpse must simply type 'yes' or 'no' instead of clicking 'yes' or 'no'. The response is hooked and is not passed to other clients in the area like a normal say message would. There are still a few things remaining, but this spell line is mostly complete. Fixed: PCs dieing to a double, triple or quad attack no longer suffer from losing experience multiple times. ---- Revision: 574 Author: Yeahlight Date: 10:44:47 PM, Saturday, June 27, 2009 Message: Added: Differentiating rot timers for PC corpses. All PCs level five and below leave behind thirty minute corpses. PCs level six and above will leave behind twenty-four hour corpses for geared bodies and three hour corpses for naked bodies. The rot timer on PC corpses adjusts based on the character's account activity. The rot timers on PC bodies decrements slower by a favor of seven, such that a geared body may last up to one week if the account never logs in. PC corpse rot timers are updated automatically in batch every fifteen seconds by the world server. Added: Resurrection timers to corpses. All PC bodies have a three hour rez timer. Unlike the rot timer, this rez timer will *not* advance if the character's account is logged out of the game. Added: All PC corpses are automatically saved (backed up) to the database every five minutes. Added: Rudimentary work for the rez spell line. Fixed: Naked NPC corpses now have a rot timer of forty-five seconds. Fixed: Protected the NPC class pathing members. Fixed: Eye of Zomm NPCs always grant the killer one experience point at all levels. Fixed: The 'Eye of Veeshan' is no longer considered an Eye of Zomm NPC! ---- Revision: 573 Author: Yeahlight Date: 2:57:39 PM, Friday, June 26, 2009 Message: Added: Support for reverse damage shield spell line. Reverse damage shields also cancel the effects of normal damage shields, much like a slow will cancel an entity's spell haste. Added: Feedback messages when an entity attacks another entity with a damage shield. Added: Loot rights to the rewarding group or single rewarding entity. After two and a half minutes pass, a corpse is marked as "free for all" and all PCs may loot it. Added: Corpse decay timer messages. Added: A new category for spells called Utility. These spells are flagged as beneficial but should otherwise be considered detrimental by the target of the spell (e.g., cancel magic, lull, calm, mark of karn, etc). Fixed: Only those on the hate list of an NPC will receive a message about someone looting an item from the corpse. Fixed: Standardized ranges for basic and advanced combat messages. Fixed: Many, many skills now fade all forms of invisibility on the user. Fixed: Level 55 and above NPCs are granted a thirty minute decay timer instead of the default eight minute timer. Fixed: If 100% of an NPC's health is removed by the effects of a damage shield, the NPC will poof and no rewards will be issued. Fixed: Merchants, bankers and GMs will ignore PCs if they are invisible. ---- Revision: 572 Author: Yeahlight Date: 8:26:10 AM, Thursday, June 25, 2009 Message: Added: Support for the voice graft spell line. Added: Passive see invis and passive see invis vs undead abilities to NPCs. Added: A new, single routine to handle invisibility checks from both spells and abilities. Added: A new, single routine to handle spell landing permission checks on a caster's target. PCs may only buff other PCs and pets. Likewise, PCs may only cast detrimental spells on NPCs and duel targets. Added: A new, single routine to handle PC attack permission checks on their target. Fixed: All invis type spells fade from PCs when they attack, are attacked and when they cast a spell. Fixed: Ships may no longer be attacked. Fixed: Pets now con amiably to their master and indifferently to all others (including other NPCs). Fixed: Cancel magic and memory blur spells are now considered both detrimental and beneficial, thus eliminating agro and casting restriction logic errors. Fixed: Spells that change an entity's velocity now issue velocity changes immediately. NPCs no longer need to stop before velocity changes are applied to future movement. Fixed: The invisibility spell line now drops all pets. Fixed: Boats are now issuing update packets between node checkpoints. Fixed: PC and Boat update ranges. ---- Revision: 571 Author: Yeahlight Date: 3:51:11 AM, Thursday, June 25, 2009 Message: Updates for Tazadar to continue working on boats. Other updates will be explained in my follow commit(s). ---- Revision: 570 Author: Tazadar Date: 2:40:28 PM, Tuesday, June 23, 2009 Message: Added: getBoatPath for World Boat class and Zone npc class, these 2 functions load world and zone path from files. Added: New opcode ServerOP_TravelDone , this one is used when a boat has reached its destination. The zone warns the world with it. Added: travelFinished function for World Boat class and Zone npc class. The NPC one makes a packet with the ServerOP_TravelDone opcode, The world one is called when the ServerOP_TravelDone is recieved. Added: Process for World Boat class which executes the route loaded from one route .txt file Added: Boats Folder in Map Folder which contains files for Zone and World routes ( !! This is not complete yet !! ) Modified: Process for Zone NPC class which executes the route loaded from one zone zone txt file Modified: We now have one thread for all the boats. (World side) Modified: Passengers are stored with their names in World Boat class.(we no longer use their ID) Modified: ServerOP_ZoneBoat function zone side, we read player names now (not their ID). Fixed: SetMoving function now set moving to _moving for boats. ---- Revision: 569 Author: Yeahlight Date: 11:53:23 PM, Thursday, June 18, 2009 Message: Added: Pet taunt. Added: Additional agro rules for all undead NPCs. After agro has been established, undead NPCs will continue to scan their surroundings for additional entities to attack. Undead NPCs will also target the nearest entity prior to becoming fully engaged in a battle (undead NPC is above 90%). This basically means that undead NPCs will train on other nearby entities during a pull. Added: Sitting entities now lose their level demodifiers on frenzy checks. Fixed: Undead NPCs base frenzy radius is equal to a blue con at all times regardless if the entity is much higher level than the undead NPC. Fixed: NPCs are no longer under the same zone restrictions as PCs for casting spells. Fixed: Clients no longer deal melee damage if they have non-weapon items equiped. Fixed: Various cosmetics improvements for pets. Fixed: Reorganized the damage evasion order of events. The riposte check is made at the end of the evasion checks, thus reducing the overall chance of executing a riposte before a dodge/block/parry. Fixed: It is now *much* easier to attack a moving entity. Fixed: A large logic error with taunt. ---- Revision: 568 Author: Yeahlight Date: 9:18:14 AM, Wednesday, June 17, 2009 Message: Fixed: Some things for Tazadar ---- Revision: 567 Author: Tazadar Date: 6:30:17 AM, Wednesday, June 17, 2009 Message: Added: BoatManager class, this class receive message from zone and send them to the concerned Boat. This class also start a thread for each boat (this will be changed soon). Added: Boat Class, It handles one boat, It sends packet to a zone to give it order. Added: ServerOP_BoatNP, ServerOP_BoatPL with their packets. Theses 2 opcodes are used when someone boards/leaves a boat. The zone sends the correct packet to tell the concerned Boat entity that there is a passenger action. Added: ServerOP_RemoveBoat, ServerOP_SpawnBoat, ServerOP_ZoneBoat ,ServerOP_BoatGoTo. Theses 4 opcodes are used to give order to a Zone. The Boat entity in World can remove/spawn/move a boat and zone players with these opcodes. Added: The OP Functions for all these opcodes Added: 2 structs (ZoneBoat_Struct & WorldBoat_Struct)to read files for boats for zone/world (not yet used) Modified: The old Wizzel function when boarding/leaving a boat. removed: You no longer need the boat passenger table, you can remove it ! Fixed: Removed ton of world memory leaks. ---- Revision: 566 Author: neorab Date: 1:15:41 AM, Wednesday, June 17, 2009 Message: Fixed: Messages in begging code. Other very minor adjustments that I just didn't want lost that form the start of me looking at network optimizations. ---- Revision: 565 Author: Yeahlight Date: 12:19:10 PM, Tuesday, June 16, 2009 Message: Added: Pets now face the closest entity that is not their owner or themselves when guarding position. Fixed: Pets now consider indifferent to all entities. Fixed: Pets no longer switch targets during combat. Fixed: Pet pathing cosmetics while switching positions. ---- Revision: 564 Author: Yeahlight Date: 8:08:57 AM, Tuesday, June 16, 2009 Message: Fixed some changes for Tazadar ---- Revision: 563 Author: Yeahlight Date: 7:57:27 AM, Tuesday, June 16, 2009 Message: Added more stuff for Tazadar ---- Revision: 562 Author: Yeahlight Date: 5:58:41 AM, Tuesday, June 16, 2009 Message: Fixed NPC velocity formula for Tazadar ---- Revision: 561 Author: Yeahlight Date: 5:08:38 AM, Tuesday, June 16, 2009 Message: Added: Boat work for Tazadar ---- Revision: 560 Author: Yeahlight Date: 10:32:22 PM, Monday, June 15, 2009 Message: Fixing the zone boot batch file ---- Revision: 559 Author: Yeahlight Date: 10:30:27 PM, Monday, June 15, 2009 Message: Adding/removing files from the SVN ---- Revision: 558 Author: Yeahlight Date: 5:45:23 AM, Monday, June 15, 2009 Message: Added: #benchmark. This command returns the average process time in milliseconds for the average entity in your zone to complete the ->Process() function. The more entities in the zone, the less of an impact the overhead associated with #benchmark becomes. For instance, #benchmark will tell you that the average process time in Tutorial (empty zone with zero entities) is 1.5ms, while returning 0.00850ms in a full zone such as Sebilis. Added: All the remaining pathing and assisting logic for charmed PCs. Fixed: Cosmetics for PC pathing while charmed by another PC. Fixed: All the pet commands for PCs when their pet is a charmed PC. Fixed: Charms, illusions, stuns and fears all fade when a client zones. Fixed: Feared entities may no longer attack. ---- Revision: 557 Author: Yeahlight Date: 7:15:43 PM, Thursday, June 11, 2009 Message: Added: PC on NPC / NPC on NPC charm. Added: PC on PC charm. Added: Two minute depop timer on all summoned pets when their master feigns death. Added: Pet commands for client pets. Fixed: PC charm pathing cosmetics. Fixed: Enchanter summoned pets have no direct pet commands, but enchanter charmed pets do. Fixed: Smoothed out NPC random pathing cosmetics and, at the same time, eliminated a lot of the overhead associated with the old method compared to the new one. Fixed: Cleaned up a lot of the stuff with the charm command hack. ---- Revision: 556 Author: Tazadar Date: 2:30:11 PM, Thursday, June 04, 2009 Message: Merchants update : -They no longer sell to dubiously people. -They no longer sell while fighting. To come : CHA/Faction formula and merchant insults (when they do not want to sell :) ) ---- Revision: 555 Author: Yeahlight Date: 8:23:20 PM, Wednesday, June 03, 2009 Message: I will list my changes on the next commit, sending this now to get the new DB source online. Do not use pet commands or charming right now!