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!