UOX3 Changelog

New in version 0.98-4.0

January 23rd, 2009
  • Source Changes/Fixes:
  • Fixed an issue causing JS gumps to interfere with eachother.
  • Fixed an issue causing serial numbers in the istats gump to display improperly.
  • Fixed an issue with CPFightOccurring packet which would cause the client to lockup.
  • Made use of the CPFightOccurring packet during combat.
  • Fixed an issue when a monster attacked a player who was not in combat UOX3
  • would not inform the client of a new target.
  • Added a flag to CChar::PushDirection() allowing us to push to the front or back of the pathToFollow list.
  • Changed CChar::mNPC::pathToFollow to a deque for more robust functionality.
  • Fixed an issue with the A* Pathfinding routine causing creatures to path in reverse.
  • Added some debugging information to A* Pathfinding (when running in Debug mode).
  • Fixed a possible issue with TextEntry in JS gumps.
  • Fixed an issue with the following JS events:
  • OnSnooped
  • OnSpellGain
  • OnSpellLoss
  • OnCommand
  • OnPacketReceive
  • Fixed several MingW32 compiler warnings.
  • Fixed a Flagging issue with Racial enemies.
  • Added uox.ini flag to disable/enable the A* Pathfinding routine: ADVANCEDPATHFINDING=0/1
  • Fixed an issue causing errors when compiling under *nix.
  • Fixed an issue causing monsters to constantly attempt to pathfind to a target they can't reach.
  • Made onResurrect trigger before a resurrection instead of after, added option to override hard code by returning false
  • Fixed an issue making it impossible to place items on tables.
  • Fixed an issue with the uox.ini entry for log resource respawn area.
  • Simplified many entries in uox.ini, making them easier to read.
  • Fixed a crash when attempting to place a house item outside a house.
  • Fixed the location check when placing house items to allow them to be placed inside houses.
  • Added a check on house items to only allow them to be placed in your house (Or anywhere by GM's).
  • Bumped up the limit on items in create.dfn from 999 to 32,766.
  • Removed FOREIGN and MINAMOUNT tags from ore entries in skills.dfn as they were superfluous
  • Fixed CHANCEFORBIGORE tag handling from regions.dfn to give a % chance out of 100 to get a pile of 5 rather than 1 ore.
  • Modified the order of the arguments in the RESOURCE tag in create-DFNs to fit the following:
  • RESOURCE=ID AMOUNT COLOUR (AMOUNT and COLOUR are optional)
  • Changed item limit in create dfn down to 4,999 to fix a bug in gump handling.
  • Fixed several issues with the UseResource JS Method
  • UseResource JS Method can now be used with both items (containers) and characters
  • Added CPIAOSCommand packet including logging
  • Changed CPISubcommands::Receive so that it doesn't log multiple times
  • Updated party packet details
  • Added basic party implementation. Adding, removal and kicking works, speech does not
  • Added sent packets CPPartyMemberList, CPPartyMemberRemove and CPPartyInvitation
  • Updated dragging contents out of packs so that pet friends should be able to do so
  • Added CPPartyTell packet
  • Promoted Party::SendPacket to public method
  • Added speech (individual and group) to party methods
  • Added commentary to some of the party classes headers
  • Updated AddMember() and RemoveMember() to return a bool as to it's success
  • Updated Leader() change code so that the leader is always first on the list
  • Added isNPC property to the Party class to help us with how our code will go
  • CChar now has an InParty() method, which is currently unused - will be used for fast lookups of party presence later. This is NOT to be saved, as it disappears on server shutdown.
  • Exposed the new party classes to the JS Engine
  • var partyObject = CreateParty( leader ); // Returns NULL if the party failed to be made
  • Party Class
  • Methods
  • bool Remove( memberToRemove );
  • bool Add( memberToAdd ); // If it's a PC, then it will send an INVITE ONLY It is up to the PC to accept/decline
  • obj GetMember( index ); // Returns a character object for the member at that index
  • Properties
  • leader // Character object that is the leader, can return null - EDITABLE
  • memberCount // Returns the number of characters in the group - READONLY
  • isNPC // Returns true if it's an NPC party, false if not - EDITABLE
  • Character Class
  • Properties
  • party // Returns a party object that is the party associated, or null - READONLY (use party management for this!)
  • partyLootable // Boolean that dictates whether the character is lootable by the party - EDITABLE - Note that if you are not in a party, this does nothing!
  • Fixed the spawning of NPCs in CSpawnRegion::RegionSpawnChar() so that they are put into the correct world.
  • Updated UOX3_Official.dsp to contain the files from the party system.
  • Change cMagic::SelectSpell() to first check for reagents and then for skill.
  • Added more details to the weapon tooltips.
  • Fixed %tstamp output in the HTML templates.
  • Fixed a compiler warning with the Party System
  • Fixed an issue causing weight not to be added when grabbing items from a bank box.
  • Moved BankBox creation to Player creation, addressing a situation where the first
  • time a player opened his bank it would close immediately or crash the client.
  • Added FindRootContainer() to simplify finding the top-most item containing other items.
  • Fixed an issue causing it to be "snooping" to open a pack in a trade window.
  • Added support for the OnPickup() JS Hook, note a return value of false will bounce the item.
  • Fixed an issue with TriggerEvent() that can cause a script to stop functioning if the triggered event did not return true
  • Moved dynamic parts of [worldlight] section from uox.ini to their own output file in the /shared/ directory
  • Exported telltime function along with the clock item and 'time command handling to JS.
  • Fix a bug where items, that have a script but no onPickup event, get always bounced.
  • Allow party members to remove themselfes from the party, even if they aren't the leader.
  • Update the CPWalkOK Packet (0x22), the second byte contains the notoriety value (flag color) and make use of it.
  • Added a new target type to the speech system, SPTRG_ONLYRECEIVER which sends the message
  • only to the receiver and doesn't display it on the sender.
  • Use the new target type in CSocket::objMessage() and CSocket::ShowCharName() to display
  • the player name and serial only to the char requesting the information.
  • Fix the format of the pingIP field in the CPGameServerList::AddServer() function. Now the
  • client shows, after a moment, latency and packet loss information for the servers. It still
  • doesn't work all the time.
  • Small rewrite of the weather system. Calculate snow, rain and storm intensitys only every
  • server hour and use their values for the amount of weather effects on the screen.
  • Committed some linux build error fixes on behalf of Cavalier
  • Allowed customization of supported client features via uox.ini
  • CLIENTFEATURES
  • SERVERFEATURES
  • Note that these are bit-settings similar to the way STARTPRIV works.
  • One will need knowledge of how to set individual bits in a value,
  • or an editor to customize these features.
  • Removed CLIENTSUPPORT from the uox.ini
  • Fix the onCreate JS script functions, they used the same event id. So if one didn't exist the other was also marked as not existing.
  • Changed CPICreateCharacter::Handle(), if the start location for the new PC isn't send
  • by the client it now uses the first start location from the uox.ini instead of the fixed
  • location in britain.
  • Use an enum for the states of the skill locks, makes reading the code a bit easier.
  • Fixed cSkills::HandleSkillChange(), the re-ordering of the atrophy created doubles
  • and dropped entrys.
  • Rewrote cSkills::AdvanceStats() so that the statlocks are actually used.
  • Fixed cMagic::CheckBook(), it was calculating wrong numbers for the spells.
  • Let chars randomly fall forward or backward when they die.
  • The DISPLAYHITMSG setting from the uox.ini now also controls the damage display.
  • Fixed the position of the coprse item when the char died falling forward.
  • Corpses should now display the hair and beard of the char they where created from.
  • Modified CItem::SetCont() so that it checks against the item layer instead of fixed
  • IDs to see if an item is hair or a beard.
  • Fixed a bug where we dropped the hair and beard items, from corpses, on the ground.
  • Added a new setting to the uox.ini, LOOTINGISCRIME. If you set it to 0 looting
  • corpses of innocent chars is not taken as a crime.
  • Fixed and changed parts of the walking code. If NPCs have the RUNS tag set they
  • will really run when they attack, instead of just showing the running animation.
  • Tamed chars will now run, if the char they follow is running, this should reduce
  • the warping effect of them a bit.
  • Remove some not needed code and slow fleeing NPCs a bit down, so that other chars
  • can still catch up with them.
  • Make sure we check for scripts envoked by type or id before we use the global script.
  • Added JavaScript function "Moon( moonNum, newVal )" which will get and set the server moon values.
  • Modified JavaScript Item.decaytime and Item.tempTimer to calculate the new value as a future time in seconds (unless a 0 is passed).
  • Fixed a couple crashes caused by targeting non-PC's in the PartySystem.
  • Modified cMovement::NpcMovement() and cMovement::HandleNPCWander() so that NPCs
  • only run while they still have stamina left.
  • Added two new settings to the uox.ini, NPCRUNNINGSPEED and NPCFLEEINGSPEED, they
  • work the same way as NPCMOVEMENTSPEED.
  • Added three new DFN tags for NPCs. WALKINGSPEED, RUNNINGSPEED and FLEEINGSPEED
  • they also work the same way as the uox.ini settings, and will override those if present.
  • Allow faster attacks on fleeing NPCs, so they won't be chased without an end.
  • Allow following NPCs to run if their target went to far away, so they can catch up on it.
  • Fix reading of the new SPEED DFN tags for NPCs.
  • Added the JavaScript CSocket methods FirstTriggerWord(), NextTriggerWord(), FinishedTriggerWords() to allow handling trigger words sent from the client during speech.
  • Added support for updated UOKR packets.
  • Added a new setting to the uox.ini: BASICTOOLTIPSONLY. If this is set to 1 the
  • tooltips will only contain basic information, like the name and the weight of an item.
  • Use an enum for racial relations, should help with reading the code.
  • Fix a bug where racial allys would attack each other.
  • Added new JS property for items: "speed" this can be used to get and set the speed of weapons.
  • Added new setting to spawn.dfn: "ONLYOUTSIDE" set this to one so that items and chars
  • will only spawn outside of buildings in that area.
  • Modified the spawn code for spawnregions so that NPCs with wandermode 3 (box) and 4 (circle)
  • keep within the spawnarea boundaries.
  • Send NPCs that left their wander area for some reasons back there.
  • Force the wandermode of NPCs spawned by spawnregions to 3 (box), so they can travel the whole spawnregion.
  • Properly initialize the wander area when the location of an NPC changes.
  • Use the old OSI way of calculating hit chances.
  • Properly initialize the wander area when the wandermode of an NPC changes.
  • Use stamina instead of dexterity when calculating the attack delay to match up with the old OSI combat calculations.
  • Split onUse into onUseChecked and onUseUnChecked.
  • Made magical shortbows and elven composite bows fire arrows instead of crossbolts
  • Added support for Visual Studio 2008
  • Fixed an issue causing a player to be poisoned when a JS call to SetPoisoned(0,0) was made.
  • Fixed several issues with tracking.
  • Fixed a crash caused by passing an invalid object to the JS Method TurnToward
  • Modified UString to function without crashing under VS2008
  • Fixed a bug in CItem::RemoveFromSight() causing items inside containers on the ground not to properly notify nearby players when removed.
  • Fixed a bug in CPIDropItem() when the compiler does not automatically instantiate booleans to false
  • Fixed an infinite loop crash caused by a DFN entry calling itself with GET
  • Added JS Character Propery "poisonStrength" to set the strength of the poison a character will inflict on his foe during combat.
  • Implemented supermoleet's fix for the black screen after logging in to a different world
  • Added error handling to prevent a crash if GetByte/GetWord/GetDWord were passed an invalid offset
  • Changed the tweakItem and tweakChar handlers to use command level rather than the "IsGM" flag.
  • Defaulted the starting serial to 0x1 rather than 0x0, as some UO packets don't recognize 0x0 as a valid serial.
  • Modified the JSMethod CBase_GetTag to avoid a possible crash.
  • Removed the following variables from CWorldMain cmem, imem, nextCharSerial, nextItemSerial as this functionality is handled by the ObjectFactory
  • Changed the system message being displayed when fatigued due to being overloaded
  • Added system message for when character becomes overloaded after picking up item
  • The math for calculating max carrying capactity for players matches OSI values more closely
  • Default WeightPerStr changed from 5 to 3.5, to closer match the values used by OSI
  • Animal taming no longer checks for the "ANIMAL"-tag in creatures.dfn
  • Converted WeightPerStr from UI08 to R32, so it can support decimal values
  • The onFall JS event will now work if characters fall further than 20 Z tiles (CChar.cpp)
  • TWEAK now works for any admin character, no matter their commandlevel (gumps.cpp)
  • The onPickup JS-event should now work
  • Entry for ScriptID added to 'CSTATS, 'ISTATS and 'TWEAK menu
  • Fixed an update-issue with race-gates
  • Increased MAX_Z_LEVITATE from 10 to 15 to better deal with moving on uneven terrain (like in T2A)
  • It should now be possible to walk through secret entrances made up of walk-through-able grass/mountain tiles
  • #ifdef'd ODBCManager implementation. You will need to enable through Config.h, and add 2 files to project.
  • Accounts load and save from a database, falling back to read/write if connection doesn't exist
  • Both logins are logged into SQL database
  • ODBCManager exposed to JS Engine - note, columns MUST be fetched in ascending numeric starting from 0
  • Long strings printed to the console will now wrap in a friendly fashion
  • Unknown INI file tags will now print out at startup
  • Bug fix on GetColumn JS implementation
  • Error checking on statement indexes in GetColumn() in ODBCManager
  • Fixed a bug that prevented players from picking up/moving items in their own backpacks
  • Implemented 0xBD CPClientVersion packet to request the version from the client.
  • Possible fix for clients > 6.0.5.0.
  • Fixed the handling for the UOX ini tags OVERLOADPACKETS and DARKLEVEL