Latest Core Changes
Last Modified: 01-21-2012POL099
| 01-21-2012 | Turley |
|---|---|
| Fixed | RequestInputUC() for eg russian chars |
| 01-16-2012 | Turley |
|---|---|
| Changed | SpeedUp for uoconvert |
| 01-14-2012 | Turley |
|---|---|
| Changed | UnicodespeechEvent additional Member "tokens" if speech has (speech.mul) Tokens, gives array of spoken TokenIDs |
| Added | servspecopt.cfg SeperateSpeechTokens=1/0 default 0 when set RegisterForSpeechEvents() and EnableEvents/DisableEvents behave different |
| Added | uo:RegisterForSpeechEvents Flags LISTENPT_HEAR_TOKENS,LISTENPT_NO_SPEECH |
| Added | SYSEVENT_TOKEN_SPEECH:=0x4000 and SYSEVENT_TOKEN_GHOST_SPEECH:=0x8000 for uo:EnableEvents/DisableEvents |
| Note | if SeperateSpeechTokens is set you can control which events you get, for NPCs you only get speech with tokens if you set SYSEVENT_TOKEN_SPEECH/SYSEVENT_TOKEN_GHOST_SPEECH and non Token speech with SYSEVENT_SPEECH,SYSEVENT_GHOST_SPEECH for RegisterForSpeechEvents() you get speech with and without Tokens when setting LISTENPT_HEAR_TOKENS and no speech without Tokens setting LISTENPT_NO_SPEECH |
| Note | Token and nonToken Eventtype is still the same (SYSEVENT_SPEECH) |
| 01-03-2012 | Turley |
|---|---|
| Changed | major rewrite of primitive operators +,-,*,/,... major speedup of +=,-=,... |
| Added | finally support for +=,-=,*=,/=,%= with objectmembers, like who.resist_fire_mod+=1 |
| Note | if member would return UnInit or Error it does nothing
so its like (only faster and atomic): var temp:=who.resist_fire_mod; if (!(TypeOfInt(temp) in {OT_UNINIT,OT_ERROR})) temp+=1; who.resist_fire_mod:=temp; endif |
| 01-02-2012 | Turley |
|---|---|
| Added | XMLFile/XMLNode.removexmlnode(int value) removes node of given index XMLFile/XMLNode.removexmlnode(XmlNode node) removes given node XmlNode.clonenode() since all NodeObjects get destroyed when the corresponding XmlFileObject is destroyed, use this method to store a node for later use. |
| 12-18-2011 | Nando |
|---|---|
| Changed | internal handling of intrinsic weapons' unload. |
| Removed | INTRINSIC property from Weapon template in itemdesc.cfg. An error occurs if it's set. Some shards might have forgot to set it, which would cause damage to intrinsic wrestling weapon. This is now handled automatically. |
| 12-17-2011 | Nando |
|---|---|
| Changed | boats.cfg entries are now "Name Graphic X Y <Z>", where Z is optional and defaults to zero. |
| 12-17-2011 | Tomi |
|---|---|
| Added | Support for hued boats, use the normal .color r/w member to change the hue Patch Submitted by Agata |
| 12-14-2011 | Tomi |
|---|---|
| Removed | pol.cfg MaxObjtype limit removed, now it accepts up to 0xFFFFFFFF ( 4294967295 ) but try to keep it as low as possible, default value still 0x20000 |
| Changed | objtype vectors changed to maps to only reserve as much memory as there are itemdesc entries, not reserving memory for up to 4 billions of objtypes. |
| Changed | boats.cfg entries changed from "Name Graphic X Y" to "Name Graphic X Y Z" because some of the new boat components requires different Z levels than the boat itself. |
| 12-13-2011 | Austin |
|---|---|
| Added | Support for destroy scripts on multis. |
| 12-13-2011 | Tomi |
|---|---|
| Added | Support for HSA boats ( no smooth move yet, but now all boats are usable ) |
| Changed | boat.cfg to support new entries "Rope", "Wheel", "Hull", "Tiller", "Rudder", "Sails", "Storage", "Weaponslot" there can be more than 1 of each entry the old entries "Tillerman", "Hold", "PortGangplankExtended", "PortGangplankRetracted", "StarboarGangplankExtended", "StarboardGangplankRetracted" support just 1 entry each or the boat members get broken |
| Added | ReadOnly members for boats .components returns an array of ItemRefs of all the components on the boat .hull returns an array of ItemRefs of all the hull components on the boat, or empty array if none. .rope returns an array of ItemRefs of all the rope components on the boat, or empty array if none. .wheel returns an array of ItemRefs of all the wheel components on the boat, or empty array if none. .rudder returns an array of ItemRefs of all the rudder components on the boat, or empty array if none. .tiller returns an array of ItemRefs of all the tiller components on the boat, or empty array if none. .sails returns an array of ItemRefs of all the sails components on the boat, or empty array if none. .storage returns an array of ItemRefs of all the storage components on the boat, or empty array if none. .weaponslot returns an array of ItemRefs of all the weaponslot components on the boat, or empty array if none. Changed extobj.cfg to support new entries for all the new boat component types and changed the default value of all entries. extobj.cfg entries with default values: Tillerman=0x1F010 Port_Plank=0x1F011 Starboard_Plank=0x1F012 Hold=0x1F013 Rope=0x1F014 Wheel=0x1F015 Hull=0x1F016 Tiller=0x1F017 Rudder=0x1F018 Sails=0x1F019 Storage=0x1F01A Weaponslot=0x1F01B Wrestling=0x1F020 Mount=0x1F021 Secure_Trade_Container=0x1FF01 Wornitems_Container=0x1FF02 |
| Note | extobj entries just let you define the objtypes, all of these still have to be defined in itemdescs for boats to work correctly. |
| 12-05-2011 | Tomi |
|---|---|
| Fixed | Door methods .open() and .close() were working opposite what they should. |
| 12-04-2011 | Tomi |
|---|---|
| Fixed | EA broke the prof.txt with the latest clients adding "Evaluating Intelligence" and "Spirit Speak" with spaces that resulted into skillnumber 0xFF and skillvalue 0 |
| Added | UO::UpdateItem( item ); updates the item to every client in range, good to use for example after returning 1 in some packethook and the item get invisible. |
| 12-03-2011 | Tomi |
|---|---|
| Changed | startlocs.cfg readded default values for MapID ( 0 ) and Cliloc ( 1075072 which is the Yew town information ) Pol doesnt anymore throw an error if these values are missing. |
| 12-01-2011 | Nando |
|---|---|
| Fixed | Client hanging after having his connection refused on login. I recommend testing different ways of having a client disconnected, like acct.disable(), .ban() and others. |
| 12-01-2011 | Tomi |
|---|---|
| Changed | Polcfg setting MaxObjtype now limited to max 0xFFFFFF (16777215) |
| Note | Try to keep it as low as possible |
| 12-01-2011 | MuadDib |
|---|---|
| Changed | UoClientGeneral.maxskills changed to unsigned short. Few places in loops with it changed to use same for the loop counter. |
| 11-30-2011 | Tomi |
|---|---|
| Fixed | Old style spellbooks. |
| 11-29-2011 | MuadDib |
|---|---|
| Fixed | Fixed a script breaker caused by inserting new TypeOfInt() constants in the middle of the Enum. Moved SQL Types to end of list. |
| Added | Added SQL entries to the Basic.EM since were missing. |
| 11-29-2011 | Tomi |
|---|---|
| Added | Opengraphic itemdesc entry for Doors ( optional parameter, no need to define if you dont want to use the built in methods ) |
| Changed | how built in .open() .close() and .toggle() methods works. The now read the graphic what to open to from itemdesc instead of just checking with & 0x1. this makes those methods works for new doors too and not only T2A era doors. |
| Changed | basic::CChrz( intarray ) to basic::CChrz( intarray, break_at_first_null := 0 ); if the break_at_first_null parameter is 0 it uses the old behaviour to just skip the nulls and still convert everything if the break_at_first_null parameter is set to 1 it stops the conversion to string at the first null it finds. |
| Changed | All Write(ctBeu16( calls for graphics and colors to use WriteFlipped, this seems to have fixed the assertion errors that occured with removal of the color_ext and graphic_ext |
| Changed | Pol throws now an error if some location is missing the MapID or Cliloc Definition in startloc.cfg ( New clients crashed when some were missing ) Removed the defualt values 0 for MapID and Cliloc ( for older clients it doesnt matter what the values are but clients >= 7.0.13.0 needs them ) |
| 11-28-2011 | MuadDib |
|---|---|
| Removed | UObject->Color_Ext : Removed, and when used is replaced with ctBEu16() calls. This includes read/write of /data files. |
| Removed | Last of any UOX references for imports. Most was all commented, a few empty refences was also left. All now removed completely. |
| 11-27-2011 | MuadDib |
|---|---|
| Removed | UObject->Graphic_Ext : Removed, and when used is replaced with ctBEu16() calls. This includes read/write of /data files. |
| Note | UObject->Serial_Ext will not be removed as previously considered, due to the orphan system making primary use of this. |
| 11-27-2011 | Nando |
|---|---|
| Fixed | corrected memory leak in cfgfile::GetConfigStringDictionary(...) |
| 11-26-2011 | Tomi |
|---|---|
| Changed | CascZ( str ) to CascZ( str, nullterm := 0 ) if nullterm 1 it adds the terminating 0 in the end of array. |
| Note | Recompile of scripts needed. |
| 11-24-2011 | Tomi |
|---|---|
| Added | Support for Mysticism and BardMasteries spell books Mysticism Spell ID's 678 -> 693 and BardMasteries spell ID's 701+ |
| 11-23-2011 | Tomi |
|---|---|
| Added | can_insert and on_insert scripts for Tradewindows |
| 11-22-2011 | Kevin |
|---|---|
| Added | pol/sqlscrobj.cpp pol/sqlscrobj.h |
| Changed | pol/module/sqlmod.cpp pol/module/sqlmod.h Add preliminary MySQL database support. New eScript objects: BSQLConnection, BSQLResultSet, BSQLRow Added several new sql module functions: mysql_connect(host,username,password); mysql_query(connection,query); mysql_fetch_row(result); mysql_affected_rows(result); mysql_num_fields(result); mysql_num_rows(result); mysql_select_db(connection,database); mysql_field_name(result,column_index); mysql_free_result(result); mysql_close(connection); In order to build with MySQL support, define the HAVE_MYSQL preprocessor directive in your build configuration. You must have the MySQL headers and libraries installed. Only really tested with dynamically linking mysql libraries on Linux. |
| Added | pol/network/auxclient.h |
| Changed | pol/network/auxclient.cpp pol/module/osmod.cpp pol/module/osmod.h clib/socketsvc.cpp clib/socketsvc.h Moved AuxClient-related classes to its own header file (shared between auxclient.cpp and osmod.cpp) Implemented os::OpenConnection() to create outgoing TCP/IP connections. |
| Changed | runecl/runecl.cpp Added the sql module to runecl to allow quick testing |
| Changed | pol/uoscrobj.cpp pol/mobile/charactr.cpp pol/mobile/character.h bscript/parser.cpp bscript/objmembers.h Added read/write property "mountedsteps" for mobiles. Represents number of steps taken while character was mounted. |
| Changed | bscript/parser.cpp Declaring an array only using "{}" will show a compiler warning; please explicitly state 'array', 'struct', or 'dictionary' |
| Changed | pol/pol.cpp If using Linux, remove pol.pid on shutdown of pol. |
| Changed | pol/uoexec.h pol/scrsched.cpp Added script option "AUXSVC_ASSUME_STRING" which will allow aux service connections to send and receive non-packed strings. |
| Changed | ecompile/ecompile.cpp If using Linux, a slash ("/") cannot be used to define ecompile options to allow support for absolute filenames. |
| Changed | bscript/object.cpp bscript/bobject.h Implemented array operation MultiSubscript. Will return a splice of an array, eg: array{"a","b","c","d","e"}[2,4] will return array{"b","c","d"} |
| 11-12-2011 | Tomi |
|---|---|
| Added | Pol/config/extobj.cfg Values it accept now and default values are Tillerman=0xF010 Port_Plank=0xF011 Starboard_Plank=0xF012 Hold=0xF013 Wrestling=0xF020 Mount=0xF021 Secure_Trade_Container=0xFF01 Wornitems_Container=0xFF02 |
| Note | These values HAVE TO BE > pol.cfg max_tile_id and the same as objtype for them in itemdescs |
| Changed | uoconvert now adds to multis 0x1000 to the ID |
| Note | boats.cfg uses the same value as multis.cfg and itemdesc graphic entry for multis have to be the same. itemdesc entries for multis need to have the entry MultiID for updating multis ( you can find values using UOFiddler ) |
| Added | UOExpansion HSA server sends now 0x387DF |
| 11-11-2011 | Tomi |
|---|---|
| Changed | Objtypes are now from 2 up to max_objtype from pol.cfg |
| Note | if objtypes <= pol.cfg max_tile_id and no graphic defined in itemdesc Pol uses objtype as graphic. Multis and custom items should all be moved to > pol.cfg max_tile_id |
| Added | support for new 0xA9 packet for clients >= 7.0.13.0 |
| Changed | startloc.cfg now have Cliloc and MapID entry for every startlocation ( default values 0 ) Example: StartingLocation Yew { City Yew Description Town Center Coordinate 535,992,0 MapID 0 Cliloc 1075072 } |
| Note | MapID is the same number as in mapX.mul files Cliloc values are the description of the start locations Newest clients has max stats during char creation 90 |
| 11-06-2011 | Tomi |
|---|---|
| Added | pol.cfg setting MaxObjtype <default 0x20000> |
| Note | the value can only be any value between 0x20000 and 0xFFFFFFFF |
| 10-26-2011 | Tomi |
|---|---|
| Added | support for clients >= 7.0.16.0 ( 2D ) char create packet 0xF8 Enchanced clients still use packet 0x8D |
| 10-15-2011 | Austin |
|---|---|
| Added | .doubleclickrange for items (read only). |
| 09-03-2011 | Turley |
|---|---|
| Added | DestroyMulti(house) returns error "House currently being customized." |
| Added | house.cancelediting(chr, drop_changes) will stop editing mode. drop_changes 1/0 if true drops all non committed changes Errors: "House is not custom","House is currently not been edited","Character is not editing this house" |
| Added | Syshook CloseCustomHouse(mobile, house) called after client quits editing, or when house.cancelediting() is called return value is ignored |
| Added | servspecopt.cfg "SpeedHack_MountRunDelay" default 80 ms "SpeedHack_MountWalkDelay" default 180 ms "SpeedHack_FootRunDelay" default 180 ms "SpeedHack_FootWalkDelay" default 380 ms Change them on your own risk |
| 08-08-2011 | Austin |
|---|---|
| Added | servspecopt.cfg flag "ScriptedMerchantHandlers" default is 0 which results in no change in behavior. If enabled, the below change will come into effect: |
| Changed | When a player buys something from a merchant the core will not longer handle taking gold from the player, and moving items to the players pack. When the event for EVID_MERCHANT_SOLD and EVID_MERCHANT_BOUGHT is sent it will be a struct containing the following struct: struct.type = EVID_MERCHANT_SOLD or EVID_MERCHANT_BOUGHT struct.source = player buying struct.shoppinglist = array( struct.item, struct.amount ) The shopping list items will still be items in the merchant's container. It is up to the script to split the items from the stacks there and move them to the player's pack. It is also up to the script to handle gold checks and consumption. |
| Added | item.SplitStackInto(container, amount) Will split the item into 2 stacks. Returns a reference to the new stack made from item. Places new stack into the container. |
| Added | item.SplitStackAt(x, y, z, realm, amount) Will split the item into 2 stacks. Returns a reference to the new stack made from item. Places new stack at the coordinates. |
| 05-19-2011 | Turley |
|---|---|
| Added | CustomHousing Support (beta) officially added uo::SendHousingTool( who, house ); |
| Added | script call of "scripts/misc/customhousecommit.ecl" on commit (noncritical) params: ( who, house, houseelemarray ) houseelem = struct{graphic,xoffset,yoffset,z} to get the real coords from an elem add house.x/y called after client presses the commit button to accept the changes call new method house.acceptcommit(chr,1) or house.acceptcommit(chr,0) to drop the commit main purpose should be calculation of cost (with delta support for later changes), link establishing of houseteleporters (0x181D - 0x1828) and adding a signhanger/sign if you didnt added it during multifoundation buildup Doors and Teleporters are added to house components as normal items without any special treatment so dont forget to add scripts/itemdesc entries |
| Added | member multi.house_parts returns array of structs{graphic,xoffset,yoffset,z} or error if not a custom house, or currently been edited to get the real coords from an elem add house.x/y |
| Added | method multi.addhousepart(graphic,xoffset,yoffset,z) returns true or error |
| Added | method multi.erasehousepart(graphic,xoffset,yoffset,z) returns true or error |
| Added | members multi.house_editing / who.house_editing returns true if house is currently been edited / who is currently editing |
| Note | house.setcustom(1) is needed before SendHousingTool() works |
| Note | during editing chr is only allowed to walk inside the house all components which are not invisible get removed from component list during edit and added to design (not invisible to give the chance to eg protect a house sign from been removed from the editing char) any item inside the house will be invisible for the chr any other mobiles get moved outside the house |
| Note | param houseelemarray in script call is the current list of houseparts, multi.house_parts gives you the last stored list |
| Note | until no house.acceptcommit() is called and start of commitscript no new SendHousingTool() for this house is allowed |
| 05-04-2011 | Turley |
|---|---|
| Fixed | Questarrow packet |
| 04-30-2011 | Turley |
|---|---|
| Fixed | enter/leave-events for NPCs (OWHorus) |
| Fixed | diagonal moves in npc::CanMove() and uo::FindPath() (OWHorus) |
| 04-03-2011 | Turley |
|---|---|
| Added | uotool param checkmultis prints infos about used center item |
| 03-12-2011 | Turley |
|---|---|
| Fixed | npc:SayUC() sends SpeechEvent for do_event==SAY_DOEVENT_ENABLE |
| Changed | removed warning "No handler for skill.." and changed sysmsg to "That skill cannot be used directly." since most of the time the behaviour is wanted |
| Added | basic::TypeOfInt( expr ) + basic.em constants returns like TypeOf() the type of given parameter, but returns instead of a string an integer (see basic.em constants) since integer comparison are way faster then string comparison this function should always be used for comparisons |
| 03-10-2011 | Turley |
|---|---|
| Added | pol.cfg AccountDataSave (default -1) Values: -1 : old behaviour, saves accounts.txt immediately after an account change 0 : saves only during worldsave (if needed) >0 : saves every X seconds and during worldsave (if needed) |
| 02-15-2011 | Turley |
|---|---|
| Changed | "in" keyword now returns the arrayindex or 0 if no match was found |
| 02-05-2011 | Turley |
|---|---|
| Fixed | no exception will be thrown if region enter/leavescript doesnt exist |
| Fixed | windows trayicon |
| 10-22-2010 | Turley |
|---|---|
| Fixed | UOHSA packet changes |
| Added | mobile.clienttype / client.clienttype HSA flag 0x200 |
| 09-06-2010 | Turley |
|---|---|
| Added | TinyXML based xml reading/writing |
| Added | file::OpenXMLFile(filename)
opens given filename and returns XMLFile object fileaccess.cfg is checked file::CreateXMLFile() creates an empty XMLFile object XMLFile.setxmldeclaration(string version, string encoding, string standalone) sets xmldeclaration eg <?xml version="1.0" encoding="UTF-8" standalone="no" ?> XMLFile.appendxmlnode(string value, struct{attributes}) appends Node with name value and given attributes (key=name, value=value) XMLFile.appendxmlcomment(string value) appends Comment XMLFile.removexmlnode(string value) removes first node of given value XMLFile.savexml(string filename) saves to filename fileaccess.cfg is checked XMLFile.xmltostring([string indent]) returns the xml file as String with given indent string {default "\t"} XMLFile[string] returns first node of given name XMLFile[integer] returns node of given index (1-based) |
| Added | XMLNode object XMLNode.attributes returns XMLAttributes object XMLNode.type returns type string (XMLComment, XMLDeclaration, XMLDocument, XMLElement, XMLText, XMLTypeCount, XMLUnknown) XMLNode.firstxmlchild([string value]) returns first child or first child of given name XMLNode.nextxmlsibling([string value]) returns next sibling, or next sibling of given name XMLNode.appendxmlnode(string value, struct{attributes}) appends Node with name value and given attributes (key=name, value=value) XMLNode.appendxmlcomment(string value) appends Comment XMLNode.setxmlattribute(struct{attributes}) sets attributes for node XMLNode.removexmlattribute(string key) removes attribute of given key XMLNode.removexmlnode(string value) removes first node of given value XMLNode.appendxmltext(string text) appends text to node XMLNode[string] returns first node of given name XMLNode[integer] returns node of given index (1-based) |
| Added | XMLAttributes object XMLAttributes.propnames() returns Array of all attribute names XMLAttributes[string] returns value of given attribute name |
| Added | foreach loop support: XMLFile, XMLNode: iterates over all child Nodes iterator is XMLNode object, "_iterator_iter" is integer index XMlAttributes: iterates over all attributes iterator is a struct with key=attributename, value=attributevalue "_iterator_iter" is integer index |
| Note | small examples: one way to read an xml file: <?xml version="1.0" ?> <root> <Hello>World</Hello> <!--Comment--> <nodetwo i="1" /> </root> var file:=OpenXMLFile("helloworld.xml"); parsenode(file,""); function parsenode(node,i) foreach blubb in node syslog(i+cstr(blubb)+" ["+blubb.type+"] ("+cstr(_blubb_iter)+")"); parseattrib(blubb,i+"-"); parsenode(blubb,i+" "); endforeach endfunction function parseattrib(node,i) foreach ele in (node.attributes) syslog(i+cstr(ele)+" ("+_ele_iter+")"); endforeach endfunction one way how to create such an file: var file:=CreateXMLFile(); file.setxmldeclaration("1.0","",""); file.appendxmlnode("root"); file["root"].appendxmlnode("Hello"); file["root"]["Hello"].appendxmltext("World"); file["root"].appendxmlcomment("Comment"); file["root"].appendxmlnode("nodetwo",struct{i:=1}); file.savexml("helloworld.xml"); |
| 08-20-2010 | Turley |
|---|---|
| Fixed | util:StrFormatTime() checks if format string is correct and if not returns "Invalid Format String." error instead of server crash |
| 08-09-2010 | Turley |
|---|---|
| Fixed | exported function calls a different exported function stops execution (eg repsys functions in same script) |
| 06-22-2010 | Turley |
|---|---|
| Fixed | uo::RestartScript() wakes up old script so it stops immediately |
| 06-19-2010 | Turley |
|---|---|
| Fixed | uo::SendDialogGump SENDDIALOGMENU_FORCE_OLD for 2d 7.x clients (UOKR & UOSA clients ignore the flag) |
| 03-27-2010 | Turley |
|---|---|
| Added | os::Start_Skill_Script( chr, attr_name, script_name := "", param := 0 ) starts for given chr and attr_name definied script (overrideable with param script_name) param is any UObject given to skill script as second param (first is chr) performs the same checks like normal skillusage (death,frozen,skilldelay,...) (Tomi) |
| 03-26-2010 | Turley |
|---|---|
| Changed | uo::DisconnectClient() now accepts client or character object (Tomi) |
| 03-24-2010 | Turley |
|---|---|
| Added | ClientRef object pkt.sendpacket() & SendPacket() now accepts client or character r/o members: ip, acctname, clientversion, clientinfo, clienttype, clientver_detail, uo_expansion_client methods: compareversion() used as prelogin param for packethooks instead of old struct (so you can send packets) |
| Added | character.client returns ClientRef object or error |
| Note | This or next release duplicate members/methods get deleted from chr (except acctname) |
| 03-17-2010 | Turley |
|---|---|
| Fixed | Trim: left&right doesnt return empty string if complete string has to be trimmed |
| 03-12-2010 | Turley |
|---|---|
| Fixed | uoconvert - default value of MaxTileID (0x3FFF) |
| Added | uoconvert param {maxtileid=0x3FFF/0x7FFF} (if uodata= param is given pol.cfg never gets read) |
| 02-20-2010 | Turley |
|---|---|
| Changed | ListStaticsInBox,ListObjectsInBox,ListMultisInBox now swap x,y,z values if in wrong order |
| Added | uo::DistanceEuclidean(obj1, obj2) & uo::CoordinateDistanceEuclidean(x1, y1, x2, y2) returns the Euclidean distance as double ( sqrt(pow(x1-x2,2)+pow(y1-y2,2)) ) |
| 02-18-2010 | Turley |
|---|---|
| Added | (Tomi) Syshook UnHide(mobile) return values 0 stops the char from unhiding and 1 let the core process it. |
| Added | (Tomi) "DisableCoreChecks" 0/1 (default 0) to each attribute entry in attribute.cfg if true the core will not check during skill_use ( from skillwindow ) for active skills, active spells, frozen, paralyzed or delay if false core will check everything as it does now. |
| Changed | Increased Maximum UO SkillID to 57 (default value of uoclient::MaxSkillID) |
| 02-17-2010 | Turley |
|---|---|
| Fixed | direct usage of struct/dictionary initializer in array/dictionary/struct definition eg: var dict:=dictionary; dict["blubb"]:=struct{a:=1}; |
| 02-16-2010 | Turley |
|---|---|
| Fixed | StrReplace,SubStrReplace return "Invalid parameter type" instead of crashing if non string object is given as to_replace, replace_with |
| Fixed | Several small memoryleaks |
| 02-04-2010 | Turley |
|---|---|
| Added | polcfg:DiscardOldEvents 1/0 {default 0} if set instead of discarding new event if queue is full it discards oldest event and adds the new event |
| Changed | "Event queue is full.." only prints if polcfg.LogLevel >= 11 |
| 02-03-2010 | Turley |
|---|---|
| Added | MethodScript support for mobiles NPC: npcdesc.cfg MethodScript entry Character: uoclient.cfg section "General" MethodScript entry |
| 02-01-2010 | Turley |
|---|---|
| Added | multi create additionally checks for valid realm coord of the corners |
| Changed | uotool staticdefrag [britannia] (removed "realm=") |
| Added | uotool formatdesc [desc] little helper prints singular & plural form of given desc |
| 01-22-2010 | Turley |
|---|---|
| Added | Speedhack Prevention System |
| Added | ssopt::SpeedhackPrevention 0/1 (default 0) |
| Added | chr priv "speedhack" disables Speedhack Prevention for chr |
| 01-15-2010 | Turley |
|---|---|
| Added | (Tomi) chr priv "runwhilestealth" you can run while you are in stealth for as many stealthsteps you have |
| Added | (Tomi) new npcdesc entry "SaveOnExit" 0/1 ( defaults to 1 ) |
| Note | this also means that SaveOnExit can be definied in the override_properties struct |
| Changed | vitals::ApplyDamage( mobile, damage, userepsys := DAMAGE_USE_REPSYS, send_damage := DAMAGE_USE_DEFAULT ) vitals::ApplyRawDamage( character, hits, userepsys := DAMAGE_USE_REPSYS, send_damage := DAMAGE_USE_DEFAULT ) const DAMAGE_NO_SHOW := 0; const DAMAGE_SHOW := 1; const DAMAGE_USE_DEFAULT := 2; DAMAGE_USE_DEFAULT uses the SendDamagePacket setting from combat.cfg (Tomi) |
| Added | uo::SendOverallSeason( season_id, playsound := 1 ) Used to send the Season packet 0xBC to all clients logged on. This function doesnt resend the lightlevel or weather after it sends season, that has to be done by scripts. chr.setseason( season_id, playsound ) Used to send the Season packet 0xBC to a single character. This method doesnt resend the lightlevel or weather after it sends season, that has to be done by scripts. (Tomi) |
| Changed | (Tomi) uo::SpeakPowerWords( who, spellid, font := _DEFAULT_TEXT_FONT, color := _DEFAULT_TEXT_COLOR) font, color like every speech function |
| 01-14-2010 | Turley |
|---|---|
| Fixed | (Arkham) ip byteorder for gameserverlist if hostname is given |
| Changed | (Tomi) gargoyle char create equips 0x1F03 robe |
| Added | (Tomi) ssopt.NewbieStartingEquipment 1/0 (default 1) to determine if equipped items created during the character creation should be newbied or not. |
| Changed | misc/oncreate.src added third param profession some clients doesnt send skillvalues if profession is given now core doesnt stop char creation, based on third param you can set the skillvalues in oncreate |
| Added | more errorchecks to char create, it now checks if hair/beard/face can be equipped (fixes crash with latest OSI tiledata where facial horn has the same layer as "normal" horn) |
| Added | Combatcfg:AttackWhileFrozen 1/0 (default 1) if set to false attack checks if chr is frozen or paralyzed |
| 01-12-2010 | Turley |
|---|---|
| Added | on Profile opening and update request "scripts/misc/charprofile.ecl" is called params are character, of_who, mode,uctext if mode==0 (request) uctext is 0 if mode==1 (update) uctext is new unicode array both modes ignore the return value - Tomi |
| Added | uo::SendCharProfile( character, of_who, title, uneditable_text := CHARPROFILE_NO_UNEDITABLE_TEXT, editable_text := CHARPROFILE_NO_EDITABLE_TEXT ) will send the serverside charprofile packet back to client and display it for the player. uneditable_text & editable_text are unicode arrays constants are: const CHARPROFILE_NO_UNEDITABLE_TEXT := array; const CHARPROFILE_NO_EDITABLE_TEXT := array; - Tomi |
| Note | Only a script interface for making a fully working CharProfile without packethooks. Not a fully working charprofile system controlled by the core, ALL text strings still have to be stored somewhere by scripts. |
| 01-01-2010 | Nando |
|---|---|
| Added | (Tomi) New itemdesc property "StackLimit", defines the maximum stack of that item (lower than 60k). If not defined, will default to 60000. |
| Note | Happy new year. :) |
POL099 Beta #2
| 12-21-2009 | Turley |
|---|---|
| Fixed | call of built-in method with ._methodname if overridden |
| Added | Multis now support method script |
| 12-18-2009 | Turley |
|---|---|
| Added | file::CreateDirectory( dirname ) returns 1 on success else error ("Error in dirname descriptor","No parent path traversal please.", "Directory already exists.","Could not create directory.") |
| Added | file::ListDirectory( dirname, extension := LISTDIR_ALL_FILES, listdirs := LISTDIR_DONT_LIST_DIRS ) extension param can be extension without "." or file.em constant file.em constants: const LISTDIR_LIST_DIRS := 0x1; const LISTDIR_DONT_LIST_DIRS := 0x0; const LISTDIR_NO_FILES := ""; const LISTDIR_ALL_FILES := "*"; returns array of strings or error ("Error in dirname descriptor","No parent path traversal please.","Directory not found.") |
| Note | Both functions doesnt check file access rights |
| 12-17-2009 | Turley |
|---|---|
| Added | uo::CloseWindow( character, type, object ) - Tomi possible values for type const CLOSE_PAPERDOLL := 1; const CLOSE_STATUS := 2; const CLOSE_PROFILE := 8; const CLOSE_CONTAINER := 12; |
| Note | if ( type == CLOSE_CONTAINER ) object has to be a ContainerRef, to close the open container gump. else object has to be a MobRef to close paperdoll, status or profile of the chosen mob. |
| 12-16-2009 | Turley |
|---|---|
| Added | Encrypted Client support - Tomi |
| Changed | uoclient.cfg Listener::Encryption and pol.cfg ClientEncryptionVersion now support ignition = uorice = none, 2.0.0x and due to autocalculation major.minor.build (no patch) e.g. 7.0.4 for latest client 7.0.4.1 default for both is "none" |
| Note | Till OSI changes the encryption type pol now supports every encrypted client without updating the core (last change was 2.0.4) |
| 12-04-2009 | Turley |
|---|---|
| Removed | deprecated pol.cfg entries "MasterKey1","MasterKey2","ClientVersion","KeyFile" - Tomi |
| Added | Gargoyles count as mounted while flying |
| 12-03-2009 | Turley |
|---|---|
| Added | basic gargoyle flying support (new movemode "F") |
| Fixed | poison status for newer clients |
| Note | gargoyles can "fly" on tiles with tiledata flag HOVEROVER (MAPDATA_FLAG_OVERFLIGHT) rebuilding of all realms is required currently flymode can only be activated clientside (0xBF:0x32) and if race=RACE_GARGOYLE renamed uo:TILEDATA_FLAG_NODIAGONAL to uo:TILEDATA_FLAG_HOVEROVER |
| 12-02-2009 | Turley |
|---|---|
| Added | 0xF3 packet is send instead of 0x1A for clients >= 7 or UO:SA clients - Tomi |
| Added | polcfg MaxTileID 0x3FFF / 0x7FFF (default 0x3FFF) since client 7.0.0.0 item graphic can be definied up to 0x7FFF - Tomi |
| Added | "SA" for expansion type. This includes sending 0x187DF with packet 0xB9. - Tomi |
| Added | support of new map TerMur - Tomi |
| Note | uoconvert param: realm=termur mapid=5 width=1280 height=4096 uoconvert.cfg new stairs since SA: 0x1de0 0x1de1 0x1de2 0x1de3 0x1de4 0x1de5 0x1de6 0x1de7 0x1de8 0x1de9 0x1dea 0x1deb |
| Added | Gargoyle support (race = uo:RACE_GARGOYLE) |
| Note | graphics are: UOBJ_GARGOYLE_MALE 0x029A UOBJ_GARGOYLE_FEMALE 0x029B UOBJ_GARGOYLE_MALE_GHOST 0x02B6 UOBJ_GARGOYLE_FEMALE_GHOST 0x02B7 |
| Added | support of UO:KR/SA char create packet 0x8D |
| Added | new gargoyle hair & beard 0x4258-0x425F & 0x42AD-0x42B0 |
| Added | UO:KR/SA face support |
| Added | ssopt.SupportFaces 0/1/2 (default 0) set it to 1 to support basic faces set it to 2 to support roleplay faces (sets 0x2000 flag in 0xB9 packet) |
| Note | Faces are normal items (like hair/beard) with layer 15, objtype 0x3B44-0x3B57 roleplay faces 0x3B4E-0x3B57 |
| 11-30-2009 | Turley |
|---|---|
| Added | polsys::MD5Encrypt(str) returns MD5 hash string. |
| Fixed | RecalcVitals function for vital changes doesnt check if maximum value changed |
| 11-26-2009 | Turley |
|---|---|
| Added | Syshook CanDie(mobile) Called when the mobile is about to die, return 0 to stop death. |
| 11-24-2009 | Turley |
|---|---|
| Fixed | missing realm check for ListenPoints |
| 11-23-2009 | Turley |
|---|---|
| Added | uotool param staticdefrag [realm=britannia] to defrag/remove duplicate statics (like fiddler does) |
| 11-20-2009 | Turley |
|---|---|
| Changed | RecalcVitals( character, calc_attribute := RECALC_INTRINSIC_MOD, calc_vital := RECALC_VITALS ) const RECALC_INTRINSIC_MOD := 1; const RECALC_NO_INTRINSIC_MOD := 0; const RECALC_VITALS := 1; const RECALC_NO_VITALS := 0; possible values for calc_attribute: RECALC_INTRINSIC_MOD - calls for every attribute the GetIntrinsicModFunction (old behaviour) RECALC_NO_INTRINSIC_MOD - skips the GetIntrinsicModFunction calls attribute name string - only calls the GetIntrinsicModFunction for given attribute possible values for calc_vital: RECALC_VITALS - calls for every vital the RegenRateFunction & MaximumFunction (old behaviour) RECALC_NO_VITALS - skips the RegenRateFunction & MaximumFunction calls vital name string - only calls the RegenRateFunction & MaximumFunction for given vital - based on Tomi |
| 11-19-2009 | Turley |
|---|---|
| Changed | chr.setlightlevel() now supports endless duration (-1) return is the new gameclock value - Tomi |
| Added | [paralyzed] & [deafened] @ singleclick packet - Tomi |
| Added | ServSpecOpt CoreSendsSeason 1/0 (default 1) Determines if the core should send season packet on char creation/logon/reconnect and realm change based on the season entry in realm.cfg. - Tomi |
| Removed | "You cannot insert that item into the container." sysmsg after container CanInsert script returns 0 - Tomi |
| Changed | uo::UpdateMobile(who, flags:=UPDATEMOBILE_UPDATE) const UPDATEMOBILE_RECREATE := 1; const UPDATEMOBILE_UPDATE := 0; if flags is UPDATEMOBILE_UPDATE old behaviour it sends update Mobile packet 0x77, if set to UPDATEMOBILE_RECREATE it sends recreate packet 0x78 - Tomi |
| Added | ServSpecOpt CoreHandledTags (default 0xffff) bitfield to determine which tags are displayed on singleclick, current used bits are: 0x1 [title_guild] 0x2 [frozen] 0x4 [paralyzed] 0x8 [squelched] 0x10 [deafened] |
| 11-17-2009 | Turley |
|---|---|
| Fixed | possible hang in party system remove object packet send when container is on a character several movement code bugs |
| 11-16-2009 | Turley |
|---|---|
| Added | NPCs receive EnteredArea event on char resurrect |
| 11-11-2009 | Turley |
|---|---|
| Changed | intern container MaxItems too highest possible value (packet size) its now 3200 |
| Changed | container "can add"-functions to only check weight recursive |
| 10-22-2009 | Turley |
|---|---|
| Added | Syshook Ouch(mobile,lastx,lasty,lastz) Called if mobile falls atleast 22 down (fixed Clientside value) |
| Added | uo::CanWalk(movemode, x1, y1, z1, x2_or_dir, y2 := CANWALK_DIR, realm := _DEFAULT_REALM) movemode is mobile.movemode string if y2 is CANWALK_DIR x2 is considered as direction (0-7) if x2 and y2 is given it calculates the needed direction returns new z value or error |
| 10-17-2009 | Turley |
|---|---|
| Added | PrivUpdater for "invul","seeghosts","seehidden" and "seeinvisitems" updates/sends/removes objects in visual range on enable/disable - Tomi |
| Changed | .startlog/.stoplog checks now if priv "plogany" is enabled instead of only given - Tomi |
| Fixed | priv "all" now works as expected if enabled every other priv is also enabled |
| 10-14-2009 | MuadDib |
|---|---|
| Changed | Methods Char.Squelch() and Char.Deaf() return the gameclock value they are in effect until. |
| 10-14-2009 | Turley |
|---|---|
| Added | char privilege "canbeheardasghost" With this privilege everybody can hear you even as a ghost (no 'oO' replacement) - Tomi |
| Added | pol.cfg TimestampEveryLine 1/0 (default 0) if set every line in pol.log gets timestamp |
| Added | char.deaf(duration) - duration in seconds. -1=forever, 0=off |
| Added | char.deafened r/o |
POL099 Beta #1
| 10-12-2009 | Turley |
|---|---|
| Changed | Method/Syshook definitions now supports :pkg: format - Tomi |
| Added | ServSpecOpt SpeechRange default 12 ServSpecOpt WhisperRange default 2 ServSpecOpt YellRange default 25 - Tomi |
| 10-10-2009 | Turley |
|---|---|
| Added | new Spellbook methods book.removespell(id) removes given spellid returns 1/0 book.addspell(id) adds given spellid returns 1/0 |
| 10-09-2009 | Turley |
|---|---|
| Added | new Spellbook methods book.spells() returns Array of SpellIDs book.hasspell(id) checks if SpellID is inside the spellbook returns 1/0 |
| 10-07-2009 | Turley |
|---|---|
| Fixed | DestroyItem call inside CanInsert scripts |
| 10-03-2009 | MuadDib |
|---|---|
| Added | SysHook::CanDecay(item). Return 0, core decay will ignore item and continue on the cycler. If it returns 1, core decay will handle the item as normal. - Patch submitted by Tomi |
| Fixed | Useage of plural forms for more than 1 word in the itemdesc desc entry. - Patch by Tomi |
| 09-22-2009 | Turley |
|---|---|
| Added | Combatcfg:SendDamagePacket 1/0 default 0 if set sends packet 0xB (0xBF sub 0x22 for clients<4.0.7a) to attacker(ScriptController) and defender on ApplyDamage and ApplyRawDamage |
| Added | new param to ApplyDamage & ApplyDamage they are now: ApplyDamage( mobile, damage, userepsys := DAMAGE_USE_REPSYS ); ApplyRawDamage( character, hits, userepsys := DAMAGE_USE_REPSYS ); const DAMAGE_USE_REPSYS := 1; const DAMAGE_NO_REPSYS := 0; If userepsys is set to DAMAGE_NO_REPSYS repsys system isnt called (on_attack & on_damage) |
| 09-22-2009 | MuadDib |
|---|---|
| Changed | NPC/Char ar/ar_mod internal handling rewrote. |
| Fixed | NPC Elemental Resist/Damage storage issues. |
| Fixed | Lightlevel resetting in client during Login. |
| 09-20-2009 | MuadDib |
|---|---|
| Changed | Spell casting no longer unhides. Be sure to update your scripts to unhide. |
| Changed | SpeakPowerWords() will now check if mob is hidden. If so, it uses Private Say Above. |
| 09-18-2009 | MuadDib |
|---|---|
| Added | Multi Walk On Script support. Works for player and npc. Just add Walkon itemdesc entry to the house. |
| Note | This is in early stages. While it is working, not all cases may register and deregister where a mob gets put onto or removed from a house. If you find cases that do, report to bugtracker. |
| Removed | Storing scrolls inside spellbooks. Destroyed after insert is complete. |
| Changed | Pre-AOS Clients still get the same packet they always did when opening a spellbook, built entirely off the bitflag system for newer spellbooks. So no more keeping scrolls inside of books. :D |
| Note | As spellbooks are loaded for the first time with newer cores and as added to books, scrolls are marked SaveOnExit 0. Newly inserted scrolls from then on, are destroyed during insertion after spell contents are updated on the book. |
| 09-16-2009 | Turley |
|---|---|
| Removed | char.isUOKR |
| Added | char.ClientType r/o bitfield |
| Note | current Flags are: CLIENTTYPE_4000 = 0x1, // 4.0.0a (new spellbookcontent packet 0xbf:0x1b) CLIENTTYPE_4070 = 0x2, // 4.0.7a (new damage packet 0x0b instead of 0xbf:0x22) CLIENTTYPE_5000 = 0x4, // 5.0.0a (compressed gumps) CLIENTTYPE_5020 = 0x8, // 5.0.2a (Buff/Debuff 0xdf) CLIENTTYPE_6017 = 0x10, // 6.0.1.7 (Grid locs) CLIENTTYPE_60142 = 0x20, // 6.0.14.2 (feature enable 0xb9 size change) CLIENTTYPE_UOKR = 0x40, CLIENTTYPE_7000 = 0x80, // 7.0.0.0 (Gargoyle race) CLIENTTYPE_UOSA = 0x100 |
| Note | Pol will be now compiled with flag /LARGEADDRESSAWARE (win only flag) pol should now be able to consume more memory |
| 09-14-2009 | MuadDib |
|---|---|
| Removed | All import abilities built in to core for UOX data files. O_O |
| Note | The file "import.txt" will be loaded each time POL loads, when found in the world data directory. This file's format is the same as, for example, the ITEMS.TXT file POL saves. You can use this for example, to store all your doors, decorations, etc, to ensure they are reloaded after a wipe, or loaded every time POL starts. These items are added to the real world, and saved to items.txt. However, if on load the same objtype is found at the same x y z as the item in IMPORT.TXT, it destroys that item, and loads the import one. |
| 09-10-2009 | Turley |
|---|---|
| Added | CompressedGump support packet 0xdd |
| Added | flag param to SendDialogGump() SENDDIALOGMENU_FORCE_OLD/0 default 0 |
| Note | SendDialogGump sends compressed gump if (client.isUOKR || (!SENDDIALOGMENU_FORCE_OLD && clientversion >=5.0.0a)) else old uncompressed |
| Note | Patch submitted by Grin |
| 09-09-2009 | Turley |
|---|---|
| Added | ServSpecOpt CarryingCapacityMod (double default 1.0) as * modifier for mobile max_weight |
| Note | Formula is (40 + strength * 7 / 2) * ssopt.CarryingCapacityMod |
| Note | Since ML max weight is send for statusgump |
| Note | Patch submitted by Tomi |
| 09-05-2009 | MuadDib |
|---|---|
| Added | POL Linux builds will now create a PID file when loading. Patch submitted by Crazyman |
| 09-05-2009 | Turley |
|---|---|
| Added | struct .? and .- as shortcut for .exists() and .erase() |
| 09-03-2009 | MuadDib |
|---|---|
| Changed | CoreHitSounds, ScriptedAttackChecks, ResetSwingOnTurn, SendSwingPacket all moved from SSOPT to Combat CFG. |
| 08-19-2009 | Turley |
|---|---|
| Added | r/o member character.uo_expansion_client client sends this flag at packet 0x5D charselect and 0x00 createchar |
| Note | values are: FLAG_T2A = 0x00, FLAG_RENAISSANCE = 0x01, FLAG_THIRD_DAWN = 0x02, FLAG_LBR = 0x04, FLAG_AOS = 0x08, FLAG_SE = 0x10, FLAG_SA = 0x20, FLAG_UO3D = 0x40, // ? FLAG_RESERVED = 0x80, FLAG_3DCLIENT = 0x100 // 3d Client |
| 08-14-2009 | Turley |
|---|---|
| Changed | Stopped spam of unknown packet for 0xBF.5 & 0xBF.C |
| 08-09-2009 | MuadDib |
|---|---|
| Fixed | Better handling of sending poison updated to UO:KR Clients. |
| Changed | UpdateCharacterWeight() now sends correct packets instead of calling on RefreshAR() to notify client of new weight. Reduces overhead. |
| 08-07-2009 | MuadDib |
|---|---|
| Fixed | New system in core for handling layers on items and corpses. On mobile death, only items equipped will be given the Layer prop in the corpse. |
| Changed | New system for corpses also is affected by insert/remove of items to the corpse by script and drop into by player. Dropping new items into a corpse will cause it to set the layer accordingly long as nothing else is already using that layer on the corpse. |
| Changed | Very small optimization to equip item code for handling the setting of layer. |
| 08-06-2009 | MuadDib |
|---|---|
| Changed | PasswordOnlyHash removed from core. Now only ClearText and Hashed Passwords will be used. Default is now PasswordHash instead of ClearText. |
| Note | Using ClearText is not recommended as it leaves all your account's passwords wide open if the accounts.txt file is comprimised. You have been warned. |
| Removed | Account.PasswordHash - This was for the PasswordOnlyHash. |
| Added | Item.getgottenby Member. Returns CharRef of Player holding item, Error if not being held. |
| 08-06-2009 | Turley |
|---|---|
| Added | new Methods Character.setAggressorTo(chr) Character.setLawfullydamagedTo(chr) sets aggressor/lawfullydamaged for repsys.cfg:AggressorFlagTimeout seconds for given chr Character.clearAggressorTo(chr) Character.clearLawfullydamagedTo(chr) clears aggressor/lawfullydamaged entry for given chr |
| 08-04-2009 | MuadDib |
|---|---|
| Changed | RecalcVitals() and other internal parts of core that share recalc_vital_stuff() will now check to see if each vital has changed, before resending it to client. Reduces overhead. |
| 08-03-2009 | MuadDib |
|---|---|
| Removed | uopacket.cfg::is6017 has been removed. |
| Added | uopacket.cfg::Version (1 or 2) Default 1 uopacket.cfg::Client (client version string) Default 1.25.25.0 Read packethooks.txt for details. |
| 07-31-2009 | Turley |
|---|---|
| Added | ServSpecOpts::ResetSwingOnTurn=true/false default false Should SwingTimer be reset with projectile weapon on facing change |
| Added | ServSpecOpts::SendSwingPacket=true/false default true Should packet 0x2F be send on swing. Client sends automatically move packet to face the opponent |
| 07-25-2009 | MuadDib |
|---|---|
| Fixed | Bug blocking equipping when intrinsic weapon was marked as two handed. |
| 07-17-2009 | Turley |
|---|---|
| Added | "ShadowRealms" polsys::AddRealm(realm_name,base_realm); returns 1 or error ("BaseRealm not found.","BaseRealm is a ShadowRealm.","Realmname already defined.") Creates a new Realm based on an other realm, uses same map and regions polsys::DeleteRealm(realm); returns 1 or error ("Realm not found.","Realm is not a ShadowRealm.","Mobiles in Realm.","Items in Realm.") Deletes a ShadowRealm, only if the realm is "clean" |
| Note | ShadowRealms get saved/loaded in pol.txt |
| Note | if ServerSpecOpt is set AddRealm/startup creates a Decaythread |
| Changed | On realm change client gets RemovePacket for all objects inrange |
| 07-16-2009 | MuadDib |
|---|---|
| Added | Removal of Grid Index to items when Container::remove is called within the core. |
| Added | ItemDesc::Container::MaxSlots = 1-255, default ServSpecOpts::MaxSlots |
| Added | ServSpecOpts::UseContainerSlots=true/false, default false. |
| Added | UseContainerSlots check to can add bulk code to ensure not going over max slot capacity of 255 and a container's max slot capacity. |
| Changed | DropItem packets now redone for Slot support. Better handling internally, and core will move an item to next available slot if one sent is not available. Before code is used, it checks if UseContainerSlots is true. |
| Note | UseContainerSlots is not yet fully implemented. Will cause core to ignore all grid setting for core moved items. The purpose of this, is since Legacy 2D clients ignore this setting anyway, you can use this to ignore Max Slots and allow core to move items into a container regardless of MaxSlots settings (which is kinda like a secondary Max Items). With this enabled, it will enfore MaxSlots when core and player moves items to containers. If Max Items is not reached, it will check MaxSlots. If MaxSlots is not reached, allows moving the item into container. This is being added to allow to turn grid support on and off based on the client versions (and types) that you will be supporting on your shard. |
| 07-04-2009 | Turley |
|---|---|
| Added | new Object Class BinaryFile File::OpenBinaryFile( filename, mode := OPENMODE_IN, endian := LITTLE_ENDIAN ); like the other file functions it checks file access rights (fileaccess.cfg) (Read and/or Write) mode constants: const OPENMODE_IN := 0x01; // (input) Allow input operations on the stream const OPENMODE_OUT := 0x02; // (output) Allow output operations on the stream const OPENMODE_ATE := 0x04; // (at end) Set the stream's position indicator to the end of the stream on opening const OPENMODE_APP := 0x08; // (append) Set the stream's position indicator to the end of the stream before each output operation const OPENMODE_TRUNC := 0x10; // (truncate) Any current content is discarded, assuming a length of zero on opening endian constants: const LITTLE_ENDIAN := 0x00; const BIG_ENDIAN := 0x01; returns BinaryFile Object or error |
| Note | implemented BinaryFile comparisons are true/false (!) checks if filestream is open == checks if filename is the same |
| Added | BinaryFile methods: .close() closes the underlying stream returns 1 .size() returns the filesize or error .seek(int offset, int seekdir) sets position returns 1/0 or error seekdir constants: const SEEKDIR_BEG := 0x00; // beginning of sequence const SEEKDIR_CUR := 0x01; // current position within sequence const SEEKDIR_END := 0x02; // end of sequence .tell() gets current position returns int .peek() Reads and returns the next byte without extracting it (-1 if eof is reached) .flush() writes all unwritten chars from buffer to file .getInt32() gets unsigned 32-bit (4 byte) 1 or error .getInt16() gets unsigned 16-bit (2 byte) 1 or error .getInt8() gets unsigned 8-bit (1 byte) 1 or error .getSInt32() gets signed 32-bit (4 byte) 1 or error .getSInt16() gets signed 16-bit (2 byte) 1 or error .getSInt8() gets signed 8-bit (1 byte) 1 or error .getString(length) gets a string (1-byte characters) string or error .setInt32() sets unsigned 32-bit (4 byte) 1 or error .setInt16() sets unsigned 16-bit (2 byte) 1 or error .setInt8() sets unsigned 8-bit (1 byte) 1 or error .setSInt32() sets signed 32-bit (4 byte) 1 or error .setSInt16() sets signed 16-bit (2 byte) 1 or error .setSInt8() sets signed 8-bit (1 byte) 1 or error .setString(string string, int nullterminate) sets a string set nullterminate to 1 to append a 0 terminator 1 or error |
| 07-01-2009 | Turley |
|---|---|
| Changed | UoConvert now also saves the color of static tiles |
| Added | ListStatics* return struct member "hue" |
| Note | Rebuild of all realms is required |
| 06-29-2009 | MuadDib |
|---|---|
| Added | Additional check in internal grid checks on containers, to speed up handling for full containers. |
| Added | ServSpecOpt.cfg::MaxContainerSlots=unsigned integer. This will allow setting the internal overall allowed item count for containers. This is introduced for future KR support. KR client is only 125, but we are making this here so custom clients later can support more slots. If you have containers with max item count over 125 and use ONLY 2D, and not KR, set this to your highest amount used! |
| 06-27-2009 | Turley |
|---|---|
| Fixed | Item creation with ItemDescriptor can now override .Desc |
| 06-25-2009 | Turley |
|---|---|
| Added | new r/o Members (Array{Struct{"serial","ref","seconds"}}) Mobile.aggressorto Mobile.lawfullydamaged as interface for core repsyssystem |
| 06-20-2009 | Turley |
|---|---|
| Added | new r/w Members (Double) default 1.0 Mobile.movecost_walk_mod Mobile.movecost_run_mod Mobile.movecost_walk_mounted_mod Mobile.movecost_run_mounted_mod used as multiplier see movecost.cfg doc for exact calculation |
| 06-17-2009 | Turley |
|---|---|
| Added | Method Array.randomentry() shortcut for var entry:=array[RandomInt(array.size())+1]; |
| Added | uo::GetRegionLightLevelAtLocation(x,y,realm) returns the current region lightlevel |
| 05-02-2009 | Turley |
|---|---|
| Added | new TargetCoordinates return member "multi" with multiref if coords are inside a multi |
| 04-17-2009 | Turley |
|---|---|
| Changed | SpeechMul SysHook has now an additional parameter with the complete message as string |
| Added | party hooks: OnLeaveParty(who,fromwho) OnAddToParty(who) OnPartyCreate(party) OnDecline(who) OnLootPermChange(who) |
| Note | OnLeaveParty fromwho==who if who removes himself |
| Added | party General options: RemoveMemberOnLogoff 1/0 (default 0) RejoinPartyOnLogon 1/0 (default 0) |
| Note | RejoinPartyOnLogon is only used if RemoveMemberOnLogoff is true, if partyleader logoffs the next member becomes the leader |
POL098.2
| 08-21-2009 | Turley |
|---|---|
| Fixed | Regions where limited to 128 due to intern (char)id, changed to ushort |
| 07-31-2009 | MuadDib |
|---|---|
| Fixed | Cleanup crash in shutdown involving characters and combat. Now all clients and characters are disconnected by the core before any cleanup is intiated. This will begin the cleanup for client and character alike. |
| 07-20-2009 | MuadDib |
|---|---|
| Fixed | Item::Facing updates were no longer updating surrounding clients. |
| Fixed | Bug with stackables where graphic and crops may be different, still allowing to combine stack (of same objtype) |
| 07-15-2009 | Turley |
|---|---|
| Added | Support for client 6.0.14.2 and latest UOKR (this change breaks every older UOKR) packet 0xB9 has now a length of 5 |
| 06-28-2009 | MuadDib |
|---|---|
| Fixed | Graphic/Layer bug when changing graphic and item is equipped. Now core will block this, returning a Error Struct to the script when attempting to change the graphic of an item with layer set. |
| 06-27-2009 | MuadDib |
|---|---|
| Fixed | Layer bug with updating/sending equipped items |
POL098.1
| 06-20-2009 | MuadDib |
|---|---|
| Fixed | Reset now occurs for tile_layer internal property when graphic is changed on item class. |
| Fixed | SetOpponent() for npcs will now once again correctly set the warmode. |
| 05-20-2009 | Turley |
|---|---|
| Fixed | TypeOf() return of Error |
| 05-14-2009 | Turley |
|---|---|
| Fixed | some Memoryleaks |
| 04-29-2009 | Turley |
|---|---|
| Fixed | Exception on mobile.kill() if death/chrdeath.ecl does not exist |
| 04-28-2009 | MuadDib |
|---|---|
| Fixed | Removal of items from containers not sending destroy object to nearby clients when object removed. This affects containers when was owned by a character. |
| 04-21-2009 | MuadDib |
|---|---|
| Fixed | Crash at shutdown during character cleanup involving players that was in combat. |
| 04-20-2009 | Turley |
|---|---|
| Added | Comparison check == for Boat,Multi,GuildRef |
| 04-19-2009 | MuadDib |
|---|---|
| Fixed | Endian format for SendPartyMsg(). |
POL098
| 04-06-2009 | MuadDib |
|---|---|
| Changed | When adding ally/enemy guilds, removing ally/enemy guilds, adding/removing members, core now updates online members and those around them correctly. |
| Added | If LogLevel in pol.cfg is higher than 1, new report added to console. If an account has AOS Expansion and uses a Spellbook, console now reports this if UOFeatureEnable does not contain 0x20 bitflag for new spellbook system in client. This is due to client issues with books using old methods when still recieving the AOS flag for an account. |
| 04-05-2009 | MuadDib |
|---|---|
| Changed | Keys/Seeds for packets 0x8C sent by LoginServer. 6.0.1.7 to 6.0.4.0, I don't recommend using at all. 0xFEFEFEFC = UOKR Client 0XFEFEFEFD = 6050+ 2D Client 0xFEFEFEFE = Normal 2D client (pre-6.0.5.0 client) |
| Note | Change to keys is for passing these details from Loginserver to Gameserver during loginprocess. Clients disconnect from LoginServer and Connect to Gameserver. This is the easiest method for identifying the client type connecting to your game server since versions are handled to decide this on the loginserver connection. |
| 04-04-2009 | Nando |
|---|---|
| Fixed | Removing an offline member from party was causing POL to crash. |
| 04-04-2009 | MuadDib |
|---|---|
| Fixed | Issue with resistances and damages from npcdesc.cfg. |
| Note | NPC's eScript changing/quipping with Resistances/Damages will be rewritten in 099. We are putting this into 099 due to a Class Rewrite to NPCs that will resolve this issue and allow better expansions of the NPC class in the core. |
POL098 RC2
| 04-02-2009 | MuadDb |
|---|---|
| Fixed | Crash in cleanup of character objects during Shutdown and deletion. |
| Fixed | Crash involving sending warmode information during disconnect/shutdown. |
| 04-01-2009 | Nando |
|---|---|
| Fixed | When creating a new char, attributes' caps weren't being set to the default value and were just set to a random value. |
| 03-30-2009 | Nando |
|---|---|
| Fixed | Sometimes when casting a spell, a race-condition would make POL end with a passert( !start_attached || (script_ex == NULL) ) error in chrituse.cpp. |
| Fixed | Bug in Packet::GetString(offset, len) where it would return a string of 'len' ascii chars, regardless of having a null-byte in there. Will now limit to len or the first null-byte found, whichever comes first. |
| 03-30-2009 | MuadDib |
|---|---|
| Fixed | Equipment.quality will now convert plain integers to Double/Float for it when using item.quality:=2; instead of item.quality:=2.0; |
| 03-28-2009 | Turley |
|---|---|
| Fixed | Resend party list if remove hooks dont allow it |
| 03-27-2009 | Turley |
|---|---|
| Fixed | Crash in party speechhandler |
| 03-27-2009 | MuadDib |
|---|---|
| Fixed | Crash in Basic::Trim(). Now checks explicitly for String as param 1. Errors out if not. |
| Fixed | Event LeftArea and EnteredArea both being able to be triggered when 1 is actually disabled. |
| 03-25-2009 | MuadDib |
|---|---|
| Changed | StrReplace() and SubStrReplace() will now accept Dict/Struct/Array/Error as param 1 and converts them to string format (like when using print() or syslog()) before comparing/converting. |
| 03-24-2009 | MuadDib |
|---|---|
| Fixed | Crash with StrReplace() allowing to go past end of a string. |
| Changed | StrReplace() will now allow the replace_with string to be empty, to remove the to_replace param from the string completely. |
| Fixed | Crash in onRemove system for removing objects on npc/offline mobiles. |
POL098 RC1
| 03-22-2009 | Nando |
|---|---|
| Added | New servspectopt::SendStatLocks (default false) to send the stat locks message. Beware that this message will only be sent to clients which have major version > 3 (to avoid breaking older ones). |
| Changed | Canceling of trade window will no longer trigger refreshing of AR/Resistances/Damages. It will only send the status bar packet to the client for weight updates. |
| Changed | Updates so refreshing of AR/Resistances/Damages is not called when dropping items unless to equip them etc as should be. |
| 03-22-2009 | MuadDib |
|---|---|
| Fixed | Bug with items that use the Resource entry in ItemDesc.Cfg causing crashes on shutdown. |
| 03-20-2009 | MuadDib |
|---|---|
| Added | Storage system will now ignore all root containers with SaveOnExit set to 0. |
| 03-19-2009 | Nando |
|---|---|
| Added | UO::PlayMusic( chr, music_id := 0 ), plays the music with music_id on client. You can find the music id's this uses at your UO FOLDER/Music/Digital/Config.txt |
| 03-19-2009 | Turley |
|---|---|
| Added | on Chatbutton pressing "scripts/misc/chatbutton.ecl" is called |
| Note | only simple implementation no Chatsystem! |
| 03-18-2009 | MuadDib |
|---|---|
| Added | Basic::Compare(str1, str2, pos1_start:=0, pos1_end:=0, pos2_start:=0, pos2_end:=0); Can be used in 3 overloaded ways. Returns 1 on compare success. Compare(string1, string2) Compare(string1, string2, string1_index, string1_length) Compare(string1, string2, string1_index, string1_length, string2_index, string2_length) Index is a starting position to begin the compare in the string, and length is the length to compare from the index. When using the 3rd method, you can compare substrings in both strings instead of just the substring of string1 to entire string2. |
| Fixed | Bug with Player Color and their magic underwear in the Race Changer packet handling. |
| 03-18-2009 | Nando |
|---|---|
| Added | New ssopt option: CoreSendsCaps 0/1 (default 0), makes POL send attribute cap information in the Send Skills (0x3A) packet. |
| 03-17-2009 | Nando |
|---|---|
| Added | New ssopt option: DefaultAttributeCap (default 1000), defines which value POL should use as cap for attributes. |
| Added | New attributes.cfg option: DefaultCap (default DefaultAttributeCap), to set the default for each attribute. |
| Added | GetAttributeCap(who, attr), SetAttributeCap(who, attr, capvalue) and GetAttributeDefaultCap(attr). The names should explain it all. |
| Note | Caps are defined in tenths (100.0 -> 1000, 55.2 -> 552), same as base values. |
| 03-17-2009 | MuadDib |
|---|---|
| Added | Concealed Updater now also run when changing command levels. |
| Added | Basic::Trim(string, type, set). Trims whitespaces from strings String = String to trim from. Type = TRIM_LEFT, TRIM_RIGHT, TRIM_BOTH. Directions to trim the whitespace from. Default is BOTH. Set = Character set to trim as whitespace. Default is " ". |
| Added | Basic::StrReplace(string, to_replace, replace_with). Replace all instances of to_replace in the string with replace_with. |
| Added | Basic::SubStrReplace(string, replace_with, start, length:=0). Replace portion of string using replace_with, beginning at start for length. If length passed is 0 or lower, it replaces from start to end of string. Error Returns: "Index must not be negative", "Index out of range", "Length out of range", "Length must not be negative" |
| 03-12-2009 | Turley |
|---|---|
| Added | repsys.cfg General section "PartyHelpFullCountsAsCriminal 1/0" default 0 if 0 OnHelp does not set mobile to criminal if helped char is criminal/murderer when they are in the same party |
| 03-11-2009 | Turley |
|---|---|
| Added | new systemhook script 'OnCast' function OnCast(who, spellid) is called if who casts a spell (including macros) before all checks Return: 0 if you wish POL to perform the checks and casting, 1 if you want to handle it fully scriptside |
| Note | The two partystatusgump buttons send spellid 11(green) and 29(red) with clientside reserved next target answer |
| Added | on Paperdoll Guildbutton pressing "scripts/misc/guildbutton.ecl" is called |
| Added | on Paperdoll Questbutton pressing "scripts/misc/questbutton.ecl" is called |
| Added | on Paperdoll Virtuebutton (pentagram doubleclick) pressing "scripts/misc/virtuebutton.ecl" is called |
| Removed | "Client tried to drop item to X,Y,Z but server is putting it at Z=" logmsg |
| 03-09-2009 | MuadDib |
|---|---|
| Changed | Console will no longer spam about invalid speech color. Instead it adjusts the color back to the default 1001 color and goes on. |
| 03-08-2009 | Turley |
|---|---|
| Added | Partysystem new savefile parties.txt new em Module party.em new cfg file config/party.cfg new Object Class Party savefile parties: saves Leader,Members and Cprops new Char members: who.party r/o returns PartyRef or Error who.candidate_of_party r/o returns PartyRef or Error who.partycanloot 1/0 r/o PartyRef members: party.members r/o returns Array of OfflineCharRefs party.candidates r/o returns Array of OfflineCharRefs party.leader r/o returns OfflineCharRef PartyRef methods: party.setleader(CharRef) sets new Leader returns 1/Error party.addmember(CharRef) adds new Member returns 1/Error party.addcandidate(CharRef) adds new Candidate returns 1/Error party.removemember(CharRef) removes Member returns 1/Error party.removecandidate(CharRef) removes Candidate returns 1/Error party.setprop/getprop/eraseprop/propnames for cprops Party.em: CreateParty( leader, firstmember ); Creates a Party returns 1 or Error DisbandParty( partyref ); Disbands a Party returns 1 or Error SendPartyMsg( party, character, uctext ); Sends PartyMsg with Sender=character returns 1/Error SendPrivatePartyMsg( party, character, tocharacter, uctext ); Sends PrivateMsg with Sender=character returns 1/Error party.cfg: General { //How many chars are allowed in a Party (normal clients only have 10 slots) [MaxPartyMembers int (default 10)] //Newer Clients (>=3.0.6e) does not automatically change "/# " //to private msg (they use "/t #") //set to true any public msg will be checked for "# " (0-9 0=slot 10) [TreatNoAsPrivate (1/0) (default 0)] //How long is an invite valid befor automatic decline //set to 0 disables the timeout [DeclineTimeout int seconds (default 10)] //Prefix for a private Msg (e.g. P:) [PrivateMsgPrefix string (default "")] } HookList { // CanAddToParty(leader,member) return check true/false // called when a leader invites someone CanAddToParty // CanRemoveMember(leader,member) return check true/false // called when leader wants to remove member CanRemoveMember // CanLeaveParty (member) return check true/false // called when member wants to leafe the party CanLeaveParty // OnPublicChat(member,uctext) return check none // called when a member sends a PartyMsg e.g. for logging OnPublicChat // OnPrivateChat(member,tomember,uctext) return check none // called when a member sends a PrivateMsg e.g. for logging OnPrivateChat // OnDisband(partyref) return check none // called when a Party is about to be disbanded OnDisband // ChangePublicChat(member,uctext) return new uctext/true/false // called when a member sends a PartyMsg return value is the new uctextarray, // or true for no change, or false to block the msg ChangePublicChat // ChangePrivateChat(member,tomember,uctext) return new uctext/true/false // called when a member sends a PrivateMsg return value is the new uctextarray, // or true for no change, or false to block the msg ChangePrivateChat } |
| Note | Candidates are not saved A party with (candidates+members)<=1 gets disbanded |
| Note | All msgs send are cliloc's used cliloc numbers are: 1005437, 1005439, 1005440, 1005441, 1005442, 1005444, 1005445, 1005446, 1005447, 1005448, 1005449, 1005450, 1005451, 1005452, 1005453, 1005455, 1008087, 1008089, 1008090, 1008091, 1008092, 1008094, 1008095, 3000211, 3000222, 3000223 |
| 03-08-2009 | MuadDib |
|---|---|
| Fixed | Spacing for all titles and name for mobs in Tooltips and Paperdoll. Also added the mob.title_guild in the Tooltips string for names of mobiles. |
| 03-08-2009 | Nando |
|---|---|
| Added | New privilege "moveanydist", will allow moving items regardless of distance (by now, the only limit to this priv is the client.) |
| 03-07-2009 | MuadDib |
|---|---|
| Changed | Setting of title_prefix, title_suffix, title_race, title_guild will no trigger an obj cache to be sent to tooltip enabled clients for updates of tooltips client side. This does not affect paperdolls. Paperdolls not being updated until Double Clicking again is an issue client-side. |
| Added | AOS Extended Statbar members such as followers, followers_max, tithing, and luck will now cuase the Update packet to be sent to AOS enabled accounts when changed. |
| Changed | Handling of packet 0x07 (Pick Up Item Request). On success, core now checks for if the item was equipped on yourself, and refreshes ar and sends stats. If was in a container not on your character, only refreshes stats. If item was on the ground, only stats. If on a mobile other than yourself, only stats. If item was inside your own worn items, it does nothing (since not worn, and no additional weight to send to client). The big Difference here, was client use to ALWAYS refresh the ar of character and statmsg. This will eliminate at the least, over 50 loops per pickup when it's not needed, and packets not being sent, when not needed. |
| 03-06-2009 | MuadDib |
|---|---|
| Added | Elemental Damage properties added for items and mobiles. These follow the same
rules as all the AOS Resistances. Same details for itemdesc, GetItemDescriptor(),
etc. Mobile.damage_fire, damage_cold, damage_energy, damage_poison, damage_physical R/O Mobile.damage_fire_mod, etc. R/W Item.damage_fire, etc. R/O Item.damage_fire_mod, etc R/W Itemdesc.cfg: FireDamage, ColdDamage, EnergyDamage, PoisonDamage, PhysicalDamage ItemDesc entries accept Dice Strings just like resistances. NPCDesc.Cfg: FireDamage, etc just like ItemDesc.cfg |
| 03-05-2009 | Nando |
|---|---|
| Changed | Core will no longer spam "out-of-sequence gump command" when closing. |
| Changed | CloseGump(who, pid, response := 0) will now accept any object to be returned, and will send '0' as the buttonid in close gump packet. |
| Added | Statlock change (Extended Stats, 0xBF sub 0x1A) will be handled if CoreHandledLocks is enabled. It will now send statlock (Extended Stats, 0xBF sub 0x19) on every status update. |
| 03-04-2009 | Nando |
|---|---|
| Added | UO::CloseGump(who, pid, response := 0), closes gump by sending 0xBF's CLOSE_GUMP, and returns 'response' for the gump script. 'response' is a LONG. 'pid' is from the script that issued the SendGumpDialog() command. |
| 03-03-2009 | MuadDib |
|---|---|
| Changed | Item and Character members for AOS Resistances now report the total of resist and resist_mod. |
| 03-02-2009 | MuadDib |
|---|---|
| Fixed | eScript's Internal "move" command causing items to get misplaced in wrong realms on move failed MoveItem* Commands in eScript. |
| 03-02-2009 | Nando |
|---|---|
| Fixed | When running out of memory, the creation of new threads is not possible. Core will now check if the thread was properly created to (probably) solve the symptom of zombie threads. The problem of not having enought memory to create thread is not solved, though. There will still be logs of this error. |
| 03-01-2009 | MuadDib |
|---|---|
| Fixed | Issue with Mount Objtype 0xF021 and EquipItem() ignoring setting it's Layer. |
| Added | Complete packethook support with Clients 6.0.1.7 and higher. This is handled via the earlier added Is6017 uopacket.cfg entry. This will allow you to specify a packethook to be triggered ONLY if the client involved is 6.0.1.7 and higher. It does not have to be a different packet size for this to work, only the client. |
| Added | "KR" for expansion type. This includes sending the 0x86DB with packet 0xB9. |
| 02-28-2009 | MuadDib |
|---|---|
| Changed | UO::DestroyItem(). Now sends a Destroy Item packet to the script controller for the item destroyed. This is in addition to sending in range of the item. Reason for this, is for Storage Containers across realms. |
| Added | New flag for uopacket.cfg of "Is6017 0/1". This is show the defined packet entry is explicity for a 6.0.1.7 and higher packet type. Will let you define packethooks for the same packet, that is different based on client version. |
| Added | Character.followers = int. This is for storage for the Followers byte in statmsg packet. |
| Added | ML Expansion statmsg packet support. If Expansion for account is ML or higher, and client version is 5.0 or higher (or is KR), sends ML Info Flag and data. |
| Added | Special Verbose messages (with POL.CFG::Verbose=1) for 6.0.5.0+ crypt seed packets and the UOKR 0xFF Seed Packet. |
| 02-27-2009 | MuadDib |
|---|---|
| Fixed | Clothing on corpses. COMPLETELY! This age old bug is now 100% fixed. If it was equipped at time of death, it will be on the corpse until the on remove script check for the corpse is triggered for taking the item out (on remove, not can) |
| Added | Base 6.0.1.7 and up Incoming Packet Handling ability to core. |
| Changed | Packets 0x3C updated for supporting clients 6.0.1.7. and newer. |
| Changed | Grid index support (KR and 6.0.1.7) for Drop item Packet and sending. Grid Index is still not set on Container Add by scripts and core yet (since this is only truly needed for KR support for slotted bags). |
| Changed | Updated Secure Trade Drop Item packet to support 6.0.1.7 and newer clients. |
| Changed | Updated sending of packet 0x25 to support 6.0.1.7 and newer clients. |
| 02-26-2009 | Nando |
|---|---|
| Fixed | Bug where a player / npc moving in a diagonal direction 'd' wasn't blocked by items on direction 'd+1' and 'd-1'. (For example, moving in direction NE while having items blocking on N and E was allowed by core, while disallowed by client) |
| 02-26-2009 | Turley |
|---|---|
| Added | uo::CheckLosBetween( x1, y1, z1, x2, y2, z2, realm := _DEFAULT_REALM ) Same like uo::CheckLosAt and uo::CheckLineOfSight |
| 02-25-2009 | Nando |
|---|---|
| Added | New attributes.em functions: SetAttributeLock(who, attrname, lockstate) and GetAttributeLock(who, attrname). With new constants: ATTRIBUTE_LOCK_UP, ATTRIBUTE_LOCK_DOWN, ATTRIBUTE_LOCK_LOCKED. This works for any attribute. |
| 02-25-2009 | MuadDib |
|---|---|
| Added | Support for UOKR Poisoned Status bar updates. Core will now update UOKR clients correctly when poisoned set to true or false for a character. |
| Changed | Packets 0x3C updated for sending UOKR Grid Index. |
| Added | Base UOKR Incoming Packet Handling ability to core. Will Begin adding UOKR specific packets such as Drop Item and so on, very soon. |
| 02-24-2009 | MuadDib |
|---|---|
| Changed | SendPacket() now returns an error if packet string passed is not valid size (Divisible by 2). |
| Added | SendPacket() buffer size now allows max packet size. No more need to worry bout length. |
| Fixed | Issue where equipped spellbooks would not open to the correct bookmarked page when opened. |
| Added | Support of 0x25 Packet (Send item in container) with Client version >= 6.0.1.7. |
| Added | Support for Grid Index with Trade Container Packet sending. |
| 02-22-2009 | MuadDib |
|---|---|
| Changed | Updating of worn items will be handled by sending Delete Item packet to those in range, then sending the worn item packets. This is to address an issue with client not updating worn items on other players when graphics.color.etc are changed. |
| Removed | Saving of base AOS Resistances to pcs.txt. This is not truly needed, as core will handle updating these live based on the armor etc. resist mods only thing needing saved now at this point. Just like AR. Same with Items. |
| 02-22-2009 | Nando |
|---|---|
| Added | New servspecopt.cfg option: CoreHandledLocks, default to false. If enabled, core will handle the change of skill locks and stat locks from the client (setting the attribute locks). |
| Added | Every Attribute now have a lock state. Later, this lock state will be read/changed via eScripts methods. |
| 02-21-2009 | MuadDib |
|---|---|
| Added | Ability to use Dice strings for AOS Resistances in itemdesc.cfg entries. |
| Fixed | Bug allowing two players to open trade window, walk away, and continue trading. If players get more than 4 tiles away, it will now cancel the trade upon walking to 5th tile away. |
| Added | ServSpecOpt::AllowMovingTrade=0/1(default 0). 0 = Disable moving more than 4 tiles with an open trade window. If you move more than 4 tiles from who trading with, cancels trade. |
| Removed | UOClient::Listener::Statcap |
| Added | Character.statcap = Replaces the Listener::Statcap. Default 225 r/w Character.skillcap = This is for storage, of overall skillcap. Default 700 r/w Character.followers_max = Max followers for statmsg packet. Default 0 r/w Character.luck = Luck for statmsg packet. Default 0 r/w Character.tithing = Tithing for statmsg packet. Default 0 r/w |
| Added | Min/Max Damage added as per OSI Standards to Statmsg packet. This is done by the min and max of the dice roll for a weapon before any mods etc. |
| Fixed | Now cannot request stats for chars not visible to you, concealed from you, and over 20 tiles away. |
| 02-20-2009 | MuadDib |
|---|---|
| Added | Priv "plogany". Used with new startlog and stoplog commands to activate target cursor. |
| Changed | Built-in textcommand .startlog and .stoplog for packet logging. If character has the plogany priv they get a target cursor to select who to set packet logging for. |
| 02-18-2009 | MuadDib |
|---|---|
| Fixed | Fixed Physical Resist not showing correctly with AOS Resistances in Statbar in place of AR. |
POL098 Beta #4
| 02-18-2009 | Turley |
|---|---|
| Fixed | ..Boat Fix Drunken Coder syndrome? |
| 02-17-2009 | MuadDib |
|---|---|
| Fixed | Instances where core uses UO::ClearGottenItem() type code caused ghosted item on client cursor. Will require more feedback from users after publish for remaining instances where this still occurs (outside of ClearGottenItem()). |
POL098 Beta #3
| 02-16-2009 | Turley |
|---|---|
| Fixed | Hold again part of boat multi |
| 02-07-2009 | Turley |
|---|---|
| Removed | SystemFindObjectBySerial() flag SYSFIND_SEARCH_STORAGE_AREAS (was obsolete since years) |
| 02-05-2009 | MuadDib |
|---|---|
| Added | UOClient::Listener::AOSResistances 0/1. This flag aids in deciding which version of Armor to send in the StatMsg packets. With this enabled, a client who uses an account with AOS Expansion enabled will see their Physical Resist instead of AR member. |
| 02-03-2009 | MuadDib |
|---|---|
| Added | Character.resist_fire_mod/resist_cold_mod/resist_energy_mod/resist_poison_mod/resist_physical_mod as R/W. |
| Added | Item.resist_fire_mod/resist_cold_mod/resist_energy_mod/resist_poison_mod/resist_physical_mod as R/W. |
| Changed | GetItemDescriptor() Handles new AOS Resistance Entries. |
| Added | POL Debug Port has access to Mobile/Item resist members. |
| 02-02-2009 | MuadDib |
|---|---|
| Added | Anytime AR will get refreshed (armor damaged, equip/unequip, etc), Resistances for Character will also get updated based on the items worn. |
| Noted | UO::EquipItem() and UO::EquipItemFromTemplate() trigger the same Equip Code in core as dropping it on your paperdoll. So should be up to date with new resistance code in equipping also. |
| Noted | AOS Physical Resist is NOT the same as AR. Keep that in mind, when writing syshooks for combat, equip scripts, spells, etc. Eventually Core Combat will differentiate between these based on Expansion (on which to use for a client or npc). But as of right now, they will always use AR for combat, etc. |
| 02-01-2009 | MuadDib |
|---|---|
| Added | Character.resist_fire/resist_cold/resist_energy/resist_poison/resist_physical members as R/O. All these are for is storage. No core implementation for resists is present. These ARE sent with the Full Stat Msg packet also, based on Expansion. These are also stored to pcs.txt. |
| Added | Item.resist_fire/resist_cold/resist_energy/resist_poison/resist_physical members as R/O. This was added at item level, to cover armor, weapons, clothing, containers, etc for broad spectrum use on any item class that could be equipped. Such as Quivers and Totems in AOS. |
| Added | NPC.resist_fire/resist_cold/resist_energy/resist_poison/resist_physical members as R/O. |
| Added | NPCTemplate::FireResist/ColdResist/EnergyResist/PoisonResist/PhysicalResist. These work just like NPCTemplate::AR. You CAN use diceroll strings for these just like AR, or a set number for it's amount. |
| Noted | These are only written to file if the amount is != 0. |
| Added | Itemdesc FireResist/ColdResist/EnergyResist/PoisonResist/PhysicalResist. |
| 01-29-2009 | MuadDib |
|---|---|
| Added | NPC.saveonexit 0/1. Same as for Items. When set to 0 (1 default), the NPC and all items contained within it's wornitems container are IGNORED during save. |
| Fixed | Parry will now only refresh the AR if a shield is equipped, as was intended. |
| Removed | Some ... Drunken Coder syndromes. :) |
| 01-28-2009 | MuadDib |
|---|---|
| Changed | Rewrote ObjCache Building. Now constructs the packet for uokr/aos once when sending to a group (send to in range). Previous method built this packet per client requiring it. Should improve handling in populated areas. |
| Fixed | Client bug where AOS Expansion accounts could not see normal magery books without UOFeatureEnable 0x20 bit set. Although this IS a client bug, found a way to fix this VERY common bug server-side. As a feature of this fix, you can now have the AOS features that do NOT require 0x20 (tooltips etc), AND the magery books work without packet hooks. |
| 01-28-2009 | Turley |
|---|---|
| Changed | Optional parameter flags:=FACE_NORMAL/FACE_FORCE added to TurnToward(), TurnAwayFrom(), TurnTowardLocation(), TurnAwayFromLocation() |
| Fixed | servspecopt option HiddenTurnsCount check readded in facing change |
| Fixed | Privilege "freemove" can now also be used for NPCs |
| 01-27-2009 | MuadDib |
|---|---|
| Changed | uoclient.cfg::General::Statcap is deprecated now. Please change to now use uoclient.cfg::Listener::Statcap. This is for the new upcoming Listener Seperate settings. This new step in POL will allow custom settings for clients based on the Listener (uoclient.cfg) they are connecting through. Upcoming changes (but not yet done) will include such things as UOFeatureEnable, TotalStatsAtCreation, ItemColorMask, and so on. This is to make it so you can configure different ports for different client configurations and expansions. One use of this, is to allow both 2.0.0 clients on your shard, AOS Clients with Tooltips, ML Clients without tooltips, and so on. The possibilities will be good, and really expand the support you can give with your scripts. |
| Fixed | Magery Books will now be viewable for AOS enabled accounts on servers that do NOT have the UOFeatureEnable 0x20 bitflag to enable AOS style books. This was implemented to fix a CLIENT BUG. But, since so many people do not seem to realize you MUST have 0x20 on for AOS style book handling on AOS activated accounts, we must do this. Boo to you :( |
| 01-27-2009 | Turley |
|---|---|
| Changed | math::Min/Max now accepts Array as first parameter, if given returns the biggest/lowest
Integer/Double entry (second parameter is ignored). Errors: "Array empty"&"No Integer/Double elements" Second parameter has now default value of 0 |
| 01-25-2009 | MuadDib |
|---|---|
| Changed | Rewrote entire core handling of config/bannedips.cfg This should address a small memory leak caused by the cfg system (leak still exists I just changed how it is done with this file). It also will increase POL speed for login/account verification. Remember, the larger your bannedips.cfg, the longer it takes for the loginserver to verify the client IP is not banned. |
| Added | ReloadConfiguration() will cause the bannedips.cfg to get reloaded. YAY. |
| Added | Item.saveonexit member. Does what it says. All items default to 1. If you set this to 0 the item and (if container, it's contents) will NOT be saved to datafile. |
| 01-23 | Nando |
|---|---|
| Changed | polcore().bytes_sent and polcore().bytes_received are now Doubles. This will fix some problems with negative values after some time... (internally they are now 64 bit integers). |
| Note | Lots of small leaks fixed, and more to come. Too much to list here, but you will feel the difference. |
| 01-16 | Turley |
|---|---|
| Fixed | Filled PolCore().iostats.received with sense |
| 01-16 | Nando |
|---|---|
| Fixed | UOConvert was always reading map0.mul when uomapid is 1. It will now try to read map1.mul, and if not found read map0.mul. (The same for staidx1 and statics1) |
POL098 Beta #2
| 01-07 | MuadDib |
|---|---|
| Added | Due to Ecompile always breaking for single file and right click compile useage when no absolute path is given in the ecompile.cfg, added redundant code to verify drive letter path in Windows environments. (aka, if you use "scripts" for include directory instead of "c:\pol\scripts"). This should help in most cases. (Win32 Cores only right now) |
| Noted | This works by checking if the core simply looked for "ecompile.cfg" or if it used the -C <path to config> and handled accordingly. If you pass -C <path> it uses that to append to the beginning of the dir structure in the config. Otherwise it appens the structure based on the location of ecompile.exe being executed (since it's looking there for the cfg). |
| Noted | In case people never realized. If you set the Evironment Variable called ECOMPILE_CFG_PATH to point directly to the path where ecompile.cfg is kept, Ecompile.exe will use this to locate your config file (Read core-changes people :D ) |
| Added | ECompile.exe Flag "-E<path to ecompile cfg>". Correct, no space between them just like the -Ppath Option. This is for Windows machines. It sets/changes the ECOMPILE_CFG_PATH Environment Variable via the commandline so no need to add/edit it via the System Properties of the machine. Remember, you must be logged in with Admin rights to change Environment Variables and this won't show in the System Properties until Reboot. But it IS accessible WITHOUT rebooting. |
| 01-03 | MuadDib |
|---|---|
| Added | Ability to send two commands to the POL Service via SCM (Service Control Manager). Command 1200 is a Beep (just for Nando), and 1201 will initial POL Shutdown just like via Script or clicking on Stop on the POL System Tray Icon. More to come later. |
| Fixed | Drunken coder syndrome in the AOS Tooltip handling and oldschool Tooltip code too. |
| Removed | Logging/Reporting of empty Attack Request Packets. Useless information that is unreliable. |
| Removed | References to unused portions of POL.cfg (things no longer supported that was still being checked for). |
| 01-02 | Turley |
|---|---|
| Changed | Scriptname & PC info in .setprop log entry "wtf, setprop w/ an error" |
| 12-26 | MuadDib |
|---|---|
| Added | Ecompile.exe flag -xt defined in /? output. |
| Added | Ecompile.exe flag -Au added. This is same as -A but to only compile Updated Src. |
| Added | Ecompile.exe flag -s to Display Summary if -q is not set. |
| Added | Ecompile.exe flag -D to create .dep files (Dependency information). |
| 12-20 | Turley |
|---|---|
| Added | new char member .clientver_detail returns struct of ints {major;minor;rev;patch} new char method .compareversion(string) returns 1 if clientversion is >= then given version string else 0 or error "Not enough parameters"/"Invalid parameter type"/"No client attached" |
| Added | new ssopt "ForceNewObjCachePackets" default false |
| Added | support for new ObjectCacheInfos introduced in 5.0.0 old behavior: Server sends 0xBF Sub 0x10 per object ->Client response also with 0xBF Sub 0x10 per item new behavior: Server sends 0xDC per object -> Client response with 0xD6 (there can be more then one serial up to ~16) intern check is if ((ssopt.ForceNewObjCachePackets) || (isUOKR) || (clientversion.major>=5)) since the client sends his clientversion not instantly the first few ObjCacheInfos are sent the old way (thats why the new ssopt is added) |
| Noted | since client 6.0.5.0 the clientversion is instantly known (new seed packet) |
| Added | support of new seed packet (>=6.0.5.0) |
| Noted | right now no new packet is implementend (some packetsizes have changed) |
| 12-19 | Turley |
|---|---|
| Changed | Extended PerformAction() it is now: PerformAction(character,action,framecount:=5,repeatcount:=1, backward:=ACTION_DIR_FORWARD, repeatflag:=ACTION_NOREPEAT, delay:=1); |
| 12-18 | MuadDib |
|---|---|
| Changed | Aux Client now sends "Connection closed" to a client that attempts to connect from an invalid IP according to IPMATCH settings before closing the socket. |
| 12-18 | Turley |
|---|---|
| Added | Setting for servspecopt.cfg 'PrivacyPaperdoll' Default is disabled. if enabled, Paperdoll gives only char name for others (See Luth 09-28) |
| 12-17 | MuadDib |
|---|---|
| Fixed | Item.layer gets reset to 0 when unequipped. |
| Fixed | When loading Realms, POL will shutdown if it cannot find any realms and say so. |
| Added | Item.tile_layer returns the Layer setting in the Tiles.cfg/Tiledata. This was added to always give the layer it uses, while leaving the internal handling both of Core and Scripts that utilize the fact of "if layer is set, it's equipped". This is ALWAYS set from the tile info at server load. So changing your tiledata, re-creating tiles.cfg will auto update your items. |
| Note | Item.layer gets internally reset on server load if it is equipped, via tiles.cfg entry as well. |
| 12-16 | MuadDib |
|---|---|
| Added | AuxSvc Configs now accept an IPMATCH entry identical to /config/servers.cfg. This is only an additional security feature, and not required to be in the .CFG :) The illegal ip will be treated by immediately closing the connection. |
| 12-14 | Nando |
|---|---|
| Fixed | Characters/Starting Location packet wasn't sending the correct characters number. This was causing problems when enabling the 6th & 7th slot (or limiting to 1 slot). Characters number will now be set to Max(CharacterSlot, 5). The number of CharacterSlots shown will depend on the acct expansion. (If it's more than AOS, it'll send > 6, else 5). |
| Added | Flags in the Characters/Starting Location packet and the Enable Features (0xB9) are now being set according to the CharacterSlots option in pol.cfg. It only works now with 1, 5, 6 and 7 slots, as this is a client limitation. You can hook the 0xB9 packet to change this in the future. |
| 12-10 | Nando |
|---|---|
| Removed | POL's Windows-systray-icon beep when right-clicking is now gone. |
| Changed | Region's internal tile zone is now 4x4 (was 32x32). |
| 12-05 | Luth |
|---|---|
| Fixed | A bug in Run_Script caused when a Parent script ended before the child script. |
| 10-29 | Luth |
|---|---|
| Changed | PrintTextAbove*() now takes one more optional parameter, journal_print, with acceptible values: JOURNAL_[UC_]PRINT_NAME: In the journal, it prints the item's description / npc's name, colon, the message (POL standard) JOURNAL_[UC_]PRINT_YOU_SEE: In the journal, it prints "You see: " followed by the message (UO standard) This does not affect the text that is printed above the item, ONLY what is shown in the Journal. |
| Fixed | OnRemoveScript and OnInsertScript now called with all appropriate parameters program onremovescript(character, container, item, item_amount, movetype) program oninsertscript(character, container, movetype, inserttype, adding_item, existing_stack, amount_to_add) |
| 10-28 | Luth |
|---|---|
| Changed | Set_Script_Option() now returns the previous value that was set for that option |
| 09-28 | Luth |
|---|---|
| Added | npc::Face( direction ); |
| Added | mobile.SetFacing( direction, flags := FACE_NORMAL ); |
| Noted | mobile.facing := [0-7]; is the same as calling: mobile.SetFacing( [0-7], FACE_NORMAL ); |
| Added | MOVEOBJECT_IGNOREMOVALBE flag to move an object regardless of its .movable property |
| Fixed | Paperdolls now give all information for self, and less information for others |
POL098 Beta #1
| 09-23 | Turley |
|---|---|
| Added | uo::PlaySoundEffectXYZ( x, y, z, effect, realm := _DEFAULT_REALM ); |
| 09-17 | Turley |
|---|---|
| Added | uo::CreateNPCFromTemplate param override_properties can now contain .CProps Dictionary (key=cpropname value=cpropvalue) |
| 09-08 | Turley |
|---|---|
| Added | uo::UpdateMobile(mob) Sends to mobiles in visual range UpdatePlayer packet of mob, for example to inform of notority changes |
| Added | Packet 0xC Functions: uo::PlayMovingEffectEx( source, target, effect, speed, duration := 0, hue := 0, render := 0, fixeddirection := 0, explode := 0, effect3d := 0, effect3dexplode := 0, effect3dsound := 0 ); uo::PlayMovingEffectXYZEx( srcx, srcy, srcz, dstx, dsty, dstz, realm := _DEFAULT_REALM, effect, speed, duration := 0, hue := 0, render := 0, fixeddirection := 0, explode := 0, effect3d := 0, effect3dexplode := 0, effect3dsound := 0 ); uo::PlayObjectCenteredEffectEx( center, effect, speed, duration := 0, hue := 0, render := 0, layer := 0, effect3d := 0 ); uo::PlayStationaryEffectEx( x, y, z, realm := _DEFAULT_REALM, effect, speed, duration := 0, hue := 0, render := 0, layer := 0, effect3d := 0 ); layer,effect3d,effect3dexplode,effect3dsound are only interpreted by the 3D client (current known) render values are: 0 no change 1 It becomes dark 2 It becomes bright 3 Bright color is emphasized and dark color is converted transparently 4 The translucency (transparency is high) 5 The translucency (it is close to primary color) 6 Negative positive reversal 7 The background which is transparent negative positive reversal layer values are: 0 Head 1 RightHand 2 LeftHand 3 Waist 4 LeftFoot 5 RightFoot 7 CenterFeet effect3dexplode and effect3dsound are only interpreted if explode is set effect3d and effect3dexplode values can be found in client/particles dir Examples: CastAnimation only seen by 3D clients: PlayObjectCenteredEffectEx( chr, 0, 10, 5, 0, 0, 1, 9041 ); //firesparkle on right hand PerformAction(chr,0xCB); // moves with char Fireball with explosion and sound: PlayMovingEffectEx( chr,tar,0x36d4,7,0,0,0,0,1,9502,4019,0x160); |
| Changed | StatRequest 0x34 checks if target is visible to char (e.g. Injection exploit) |
| 08-29 | Turley |
|---|---|
| Added | uo::GetGlobalPropertyNames() |
| Changed | uo::FindSubstance( container, objtype, amount, makeinuse := 0 ); to FindSubstance( container, objtype, amount, makeinuse := 0, flags := 0 ); flags are: FINDSUBSTANCE_IGNORE_LOCKED : Find matches in locked containers FINDSUBSTANCE_ROOT_ONLY : Do not find matches in sub-containers FINDSUBSTANCE_FIND_ALL : Find all matches ignoring given amount |
| Added | new Char methods: .attack_once([opp]) attacks once without modifing the swingtimer if no opp is given attacks current attackable opponent, else attacks given opponent (and but checks if opponent is attackable .setswingtimer(time) if opponent is set sets swingtimer to given ms time .kill([killer]) kills character ignoring invul, if killer is set repsys:OnDamage is called |
| Added | new Char members: .hitchance_mod +-int in thousandth additive modificator of the hitchance from the attacker .evasionchance_mod +-int in thousandth subtractive modificator of the hitchance from the defender |
| Added | new privileges: "firewhilemoving" : swingtimer will not be reset if char is moving with projectile weapon "attackhidden" : char can attack hidden opponents "hiddenattack" : char can attack while hidden |
| Added | new systemhook script 'HitMiss' function HitMiss(attacker, defender) is called if hitchance check fails no overriding of corefunctions or resultcheck |