Welcome to PenUltima Online. Click to login or register.
Last Modified: 12/26/2015
Class Hierarchy

            UObject             Account         PolCore()      DataFileElement
               |
               |                Client          Script         Datastore
     +---------+--------+
     |                  |       Guild           Packet         Datafile
   Character           Item
     |                  |       Party           AuxConnection  BinaryFile
    NPC                 |
                        |                                      Package
     +------------------+--------------+-----------+
     |                  |              |           |           Struct
 Equipment           Lockable         Map        Multi
     |                  |                          |           Array
 +---+----+        +----+--------+            +----+----+
 |        |        |             |            |         |      Dictionary
Armor  Weapon     Door        Container      Boat     House
                                 |                             String
                            +----+----+
                            |         |                        Error
                         Spellbook   Corpse
                                                               StorageAreas

                                                               StorageArea
Account
Explanation
Object describing a player's game account
Members
Name Type Desc Access
banned Boolean true if banned r/o
defaultcmdlevel Integer the number for the accounts default command level r/o
enabled Boolean true if enabled r/o
name String the name of the account r/o
uo_expansion String used uo-expansion r/o
usernamepasswordhash String MD5 username+password hash string r/o
Methods
Prototype Returns Desc
addcharacter(index) nothing/error If Index is 0 (.AddCharacter(0)), it will find the next available slot on the account. (Otherwise pass 1-5) Will create a naked, uncolored, male character named 'new character' at 1, 1, 1 on Britannia. No scripts are ran for this method of character creation. Edit this new character via the script creating it.
ban() true bans the account
checkpassword(string pass) boolean/error returns true if 'pass' is the account's password
delete() true/error Delete this empty account.
deletecharacter(integer slot) true/error Deletes character in slot 'slot'. returns error if not character in that slot (1..5)
disable() true disables the account
enable() true enables the account
eraseprop(string propname) true EraseObjProperty for account objects.
getcharacter(integer slot) true/OfflineCharacterRef gets an OfflineCharacterRef for the character in slot 'slot'. returns error if not character in that slot (1..5)
getprop(string propname) true/error GetObjProperty for account objects.
move_char(string destacctname, integer slot) true/error Move character from this account to destination account. You can use it to flip chars on same account too.
propnames() Array returns an array of cprop names on this account
set_uo_expansion(string expansion) true/error This determines what flag is sent with packet 0xB9 during login (Nothing -> 0x0000 / T2A -> 0x0001 / LBR -> 0x0002 / AOS -> 0x801b / SE -> 0x805b / ML -> 0x80db / KR -> 0x86DB / SA -> 0x187DF). It's possible to hook 0xB9 but don't forget to set_uo_expansion anyway because core uses this for internal flags (e.g. AoS Tooltips). The servspecopt.cfg UOFeatureEnable is used with packet 0xA9 and is currently global to all clients. Recognized values: SA, KR, ML, SE, AOS, LBR, T2A (default).
setdefaultcmdlevel(integer number) true/error Set the account's default command level.
setname(string newname, string newpass) true/error sets the account name to newname, newpass optional
setpassword(string newpass) true/error sets the account password to newpass
setprop(string propname, propval) true SetObjProperty for account objects.
split(string newacctname, integer slot) true/error Create a new account and move character to it.
unban() true unbans the account
Armor
Parent
Equipment
Explanation
Equipable items that protect against damage in combat
Members
Name Type Desc Access
ar Integer Modified armor factor r/o
ar_base Integer Base armor factor (as in itemdesc.cfg) r/o
ar_mod Integer Armor factor modifier r/w
onhitscript String Script name that runs when armor is hit r/w
Array
Explanation
Data structure for linear storage, dynamically resizes to fit more elements. Declare with var a := array; Pre-intialize with var a := array { 53, 76, 32 };
Methods
Prototype Returns Desc
+ array array concatinates 2 arrays
append(object) true/error inserts object in the end of the array
cycle([int count]) true/error will move array [count] steps backwards or forwards in-place as it were a conveyor belt. {1, 2, 3}.cycle() Will make it: {3, 1, 2}. Accepts a negative value as a shift to move different direction
erase(int index) true/false erases the element at index
exists(index) error/int Returns 1 if index is in array.
insert(int index, object) void/error inserts a new object into the array at index
randomentry() value/error returns random array entry
reverse() true reverses the elements of the array
shrink(index) true/error erases index to end of array
size() int number of elements in the array
sort() true sorts the elements of the array
AuxConnection
Explanation
An object passed to an Aux Service Script that allows the script to transmit and recieve packed data over a TCP/IP port. use wait_for_event() in the service script to recieve data.
Members
Name Type Desc Access
ip String Originating IP on the AuxConnection Pipe r/o
Methods
Prototype Returns Desc
transmit(object o) error/0 Transmits the packable object 'o' over the Aux connection.
BinaryFile
Explanation
Object representing a binaryfile.
Methods
Prototype Returns Desc
Close() integer Closes the underlying stream.
Flush() integer Writes all unwritten chars from buffer to file.
GetInt16() integer/error Gets unsigned 16-bit (2 byte) value.
GetInt32() integer/error Gets unsigned 32-bit (4 byte) value.
GetInt8() integer/error Gets unsigned 8-bit (1 byte) value.
GetSInt16() integer/error Gets signed 16-bit (2 byte) value.
GetSInt32() integer/error Gets signed 32-bit (4 byte) value.
GetSInt8() integer/error Gets signed 8-bit (1 byte) value.
GetString(int length) string/error Gets a string (1-byte characters) for length characters.
Peek() integer/error Reads and returns the next byte without extracting it (-1 if eof is reached).
Seek(int offset, int seekdir) integer/error Seeks to position. See file.em constants for seekdir
SetInt16() 1/error Sets unsigned 16-bit (2 byte) value.
SetInt32() 1/error Sets unsigned 32-bit (4 byte) value.
SetInt8() 1/error Sets unsigned 8-bit (1 byte) value.
SetSInt16() 1/error Sets signed 16-bit (2 byte) value.
SetSInt32() 1/error Sets signed 32-bit (4 byte) value.
SetSInt8() 1/error Sets signed 8-bit (1 byte) value.
SetString(string string, int nullterminate) 1/error Sets a string. Set nullterminate to 1 if you want to automatically append a 0 terminator.
Size() integer/error Returns filesize in bytes.
Tell() integer/error Returns current position.
Boat
Parent
Multi
Explanation
A Multi object that moves in water.
Members
Name Type Desc Access
components Array array of ItemRefs of all the components on the boat r/o
has_offline_mobiles Boolean true if players are logged out on the deck r/o
hold Item ItemRef to the hold container item r/o
hull Array array of ItemRefs of all the hull components on the boat, or empty array if none r/o
items Array Array of Item References on the deck of the boat r/o
mobiles Array Array of Character References on the deck r/o
multiid Integer id for this kind of multi r/o
portplank Item ItemRef to the left-side plank item r/o
rope Array array of ItemRefs of all the rope components on the boat, or empty array if none r/o
rudder Array array of ItemRefs of all the rudder components on the boat, or empty array if none r/o
sails Array array of ItemRefs of all the sails components on the boat, or empty array if none r/o
starboardplank Item ItemRef to the right-side plank item r/o
storage Array array of ItemRefs of all the storage components on the boat, or empty array if none r/o
tiller Array array of ItemRefs of all the tiller components on the boat, or empty array if none r/o
tillerman Item ItemRef to the tillerman item r/o
waponslot Array array of ItemRefs of all the weaponslot components on the boat, or empty array if none r/o
wheel Array array of ItemRefs of all the wheel components on the boat, or empty array if none r/o
Methods
Prototype Returns Desc
move_offline_mobiles(int x, int y, int z[, string realm]) true/false moves offline mobiles on boat to x,y,z. If realm is not set, Boat-realm is used.
Character
Parent
UObject
Children
NPC
Explanation
A mobile object that exists in the world (NPC or player character)
Members
Name Type Desc Access
acct Integer Account Reference (if not NPC) (deprecated, will be removed in next release, use Client instead) r/o
acctname Account Account name string (if not NPC) r/o
active_skill Boolean 1 if character has an active attached skill script r/o
aggressorto Array list of mobiles this character is flagged as aggressor on repsys r/o
ar Integer Total armor factor. If it's an NPC without armor equipped, it will return its intrinsic armor value taken from NpcDesc AR entry. r/o
ar_mod Integer Armor factor modifier r/w
attached Script Script reference for attached script r/o
backpack Item Reference to character's pack (if any) r/o
candidate_of_party Party party object reference r/o
carrying_capacity Integer Current carrying capacity. Defined as (40 + 3.5*chr.strength + chr.carrying_capacity_mod)*ssopt.carrying_capacity_mod. Note that characters can go above their carrying capacity, but will run out of stamina much faster. r/o
carrying_capacity_mod Integer Carrying capacity modifier. Is taken into account prior to global ssopt modifier. r/w
casting_spell Bool 1 if character has an active attached spell script r/o
client Client returns ClientRef object or error r/o
clientinfo Struct UO Client information struct (check out core-changes.txt for an example) (deprecated, will be removed in next release, use Client instead) r/o
clienttype Integer clientversion type bitfield (deprecated, will be removed in next release, use Client instead) r/o
clientver_detail Struct UO Client version string as Struct of Ints {major;minor;rev;patch} (deprecated, will be removed in next release, use Client instead) r/o
clientversion String UO Client version string r/o
cmdlevel Integer command level of character r/w
cmdlevelstr String string name of command level r/o
concealed Integer concealed below this value cannot see r/w
connected Boolean To determine if the character is actively connected to the game. Is set to 1 before logon/reconnect scripts are run and 0 right before logofftest is run. Will return 1 on NPC. r/o
createdat Integer PolClock when character was created r/o
criminal Integer 1 = player is temporally criminal (gray) or murderer (red) (see also temporally_criminal) r/o
cursor Boolean True if the client has an active target cursor r/o
damage_cold Integer Total AOS+ damage factor. r/o
damage_cold_mod Integer AOS+ damage modifier r/w
damage_energy Integer Total AOS+ damage factor. r/o
damage_energy_mod Integer AOS+ damage modifier r/w
damage_fire Integer Total AOS+ damage factor. r/o
damage_fire_mod Integer AOS+ damage modifier r/w
damage_physical Integer Total AOS+ damage factor. r/o
damage_physical_mod Integer AOS+ damage modifier r/w
damage_poison Integer Total AOS+ damage factor. r/o
damage_poison_mod Integer AOS+ damage modifier r/w
dead Integer 1 = player is dead r/o
deafened Integer 1 = player cannot hear r/o
delay_mod Integer Weapon Delay modifier, milliseconds r/w
evasionchance_mod Integer Subtractive modificator of the hitchance from the defender (+- int in thousandth) r/w
followers Integer This is for storage for the Followers byte in statmsg packet, default 0 r/w
followers_max Integer Max followers for statmsg packet, default 0 r/w
frozen Boolean 1 = player is frozen (by a GM) r/w
gender Integer 0=male 1=female r/w
gold Integer Amount of gold in character's pack r/o
guild Guild guild object reference r/o
guildid Integer guild ID number r/o
gump Boolean True if the client has any active gumps from SendGump r/o
hidden Boolean 1 = normal players cannot see r/w
hitchance_mod Integer Additive modificator of the hitchance from the attacker (+- int in thousandth) r/w
house_editing Boolean 1 if character is currently editing an house r/o
ip String IP Address string (deprecated, will be removed in next release, use Client instead) r/o
last_textcolor Struct last text color used by the character. Values are between 2 and 1001. Returns 0 if not yet spoken. (will not be saved inside of the datafile) r/o
lastcoord Struct position before the last walk packet as struct{lastx,lasty,lastz} r/o
lawfullydamaged Array list of mobiles this character is flagged as lawfully damaged on repsys r/o
luck Integer Luck for statmsg packet, default 0 r/w
mountedsteps Integer number of steps taken while character was mounted r/w
movecost_run_mod Double multiplier for stamina consum on movement r/w
movecost_run_mounted_mod Double multiplier for stamina consum on movement r/w
movecost_walk_mod Double multiplier for stamina consum on movement r/w
movecost_walk_mounted_mod Double multiplier for stamina consum on movement r/w
movemode String movemode string {default 'L'} like from NPCDesc.cfg r/o
murderer Boolean 1 = player flagged murderer (red) r/w
opponent MobileRef Mobile reference if a combat opponent is selected. r/o
paralyzed Boolean 1 = player is paralyzed r/w
party Party party object reference r/o
partycanloot Boolean True if client has set the loot rights r/o
poisoned Boolean 1 = player is poisoned, just makes the health bar green or not r/w
prompt Boolean True if the client has any active String or Unicode prompt windows r/o
race Integer Set/get the ML/SA race (new constants in UO.EM: RACE_HUMAN, RACE_ELF,RACE_GARGOYLE). You have to set visual graphic by yourself if you change value (Human male/female = 0x190/0x191 / Elf male/female = 0x25d/0x25e / Gargoyle male/female = 0x029a/0x029b). You can choose Race at Char creation if your UOExpansion and UOFeature settings fit. r/w
reportables Array (reputation system) Array of Structs: { serial, killer, gameclock }, serial = killer's serial, killer = 'offline mobile reference' to the killer, gameclock = game time when the death occurred r/o
resist_cold Integer Total AOS+ armor factor. If it's an NPC without armor equipped, it will return its intrinsic armor value taken from NpcDesc AR entry. r/o
resist_cold_mod Integer AOS+ Armor factor modifier (Player) r/w
resist_energy Integer Total AOS+ armor factor. If it's an NPC without armor equipped, it will return its intrinsic armor value taken from NpcDesc AR entry. r/o
resist_energy_mod Integer AOS+ Armor factor modifier (Player) r/w
resist_fire Integer Total AOS+ armor factor. If it's an NPC without armor equipped, it will return its intrinsic armor value taken from NpcDesc AR entry. r/o
resist_fire_mod Integer AOS+ Armor factor modifier (Player) r/w
resist_physical Integer Total AOS+ armor factor. If it's an NPC without armor equipped, it will return its intrinsic armor value taken from NpcDesc AR entry. r/o
resist_physical_mod Integer AOS+ Armor factor modifier (Player) r/w
resist_poison Integer Total AOS+ armor factor. If it's an NPC without armor equipped, it will return its intrinsic armor value taken from NpcDesc AR entry. r/o
resist_poison_mod Integer AOS+ Armor factor modifier (Player) r/w
shield Armor Returns the ItemRef of the sheild, if any, is worn. r/o
skillcap Integer This is for storage of overall skillcap, default 700 r/w
squelched Integer 1 = player cannot speak r/o
statcap Integer AOS+ Statcap entry in statusbar, default 255 r/w
stealthsteps Integer number of walk steps left until player is revealed r/w
temporally_criminal Integer 1 = player is temporally criminal (gray) (see also criminal) r/o
tithing Integer Tithing for statmsg packet, default 0 r/w
title_guild String String guild title i.e. [ROX, super d00d] Racalac r/w
title_prefix String String placed before name i.e. Lord Racalac r/w
title_race String String race title after suffix in paperdoll r/w
title_suffix String String placed after name i.e. Racalac the Brave r/w
tradewindow Container Reference to the trade container if the char has an active trade, error if no active trade r/o
trading_with Character Reference to character they are trading with (if any) r/o
truecolor Integer original color r/w
trueobjtype Integer original objtype r/w
uclang String Reports the Unicode Language string client sends during logon. r/o
uo_expansion_client Integer client send expansion info flag (deprecated, will be removed in next release, use Client instead) r/o
warmode Integer 1 if in warmode r/o
weapon Item Reference to character's weapon (if any) r/o
Methods
Prototype Returns Desc
addBuff(int icon_id, int duration, int cliloc_name, int cliloc_descr, array arguments) true/error Adds a buff to Character's buff bar. Duration is in seconds: countdown is done by the client, but the icon is never automatically removed. Arguments is an Unicode string (array of int); separated by a single tab character. Example: who.addBuff(1029, 30, 1075814, 1075815, CAscZ("1234 5678"));
attack_once([MobileRef opp]) true/error Attacks once without modifing the swingtimer. If no opp is given attacks current attackable opponent, else attacks given opponent (but checks if still attackable)
clearAggressorTo(MobileRef chr) true/error clears aggressor entry for given chr
clearBuffs() true/error Removes all buffs from Character's buff bar.
clearLawfullydamagedTo(MobileRef chr) true/error clears lawfullydamaged entry for given chr
cleargottenitem() true/error Returns 'dragged' item to original location.
compareversion(string Version) true/false true if Client Version >= given Versionstring
deaf(int duration) int/error character cannot hear for 'duration' seconds. -1 means forever. 0 clears the deaf
delBuff(int icon_id) true/error Removes a buff from Character's buff bar.
disable(string setting) true disables the 'granted' privilege to the character
enable(string setting) true/error enables the 'granted' privilege to the character
enabled(string setting) true/false true if the privilege is enabled
getcorpse() Corpse Returns an item reference to the most recent corpse made.
getgottenitem() error/ItemRef returns an ItemRef to the item held on the player's cursor, if any.
kill([MobileRef killer]) true Kills character ignoring invul, if killer is set repsys:OnDamage is called
privileges() dictionary Dictionary where keys are privilege name, value is 0/1 boolean.
removereportable(int serial, int gameclock) true/error removes the killer with 'serial' from the reportables list that was added at 'gameclock'
setAggressorTo(MobileRef chr) true/error sets aggressor for repsys.cfg:AggressorFlagTimeout seconds for given chr
setLawfullydamagedTo(MobileRef chr) true/error sets lawfullydamaged for repsys.cfg:AggressorFlagTimeout seconds for given chr
setcmdlevel(string cmdlevel) true/error grants the command level to the char as defined in cmds.cfg
setcriminal(int level) true/error sets the character criminal. level multiplies the CriminalFlagInterval as defined in repsys.cfg. level=0 clears criminal timer.
setfacing(string/int direction, flags := FACE_NORMAL) true/error Sets Facing to given direction. If FACE_FORCE is set frozen/paralysed is not checked
setlightlevel(int level, int duration) true sets the light level of the character to 'level' for 'duration' seconds
setmurderer(bool) true/error flags the character as a murderer (red)
setparalyzed(bool) true/error sets the character paralyzed, controller of calling script is flagged as in repsystem
setpoisoned(bool) true/error sets the character poisoned, controller of calling script is flagged as in repsystem
setseason(int season_id,int playsound ) int/error Used to send the Season packet 0xBC to a single character, doesnt resend the lightlevel or weather.
setswingtimer(int time) true/error If opponent is set sets swingtimer to given ms time.
setwarmode(boolean) integer/error Sets the internal warmode flag and sends the update to the player. Returns the new warmode value.
spendgold(int amount) true/error if enough gold, removes it from the player's pack
squelch(int duration) int/error character cannot talk for 'duration' seconds. -1 means forever. 0 clears the squelch
Client
Explanation
Object representing a connected client. The ClientRef is important when having packethooks which are active before characters are selected, when you only have access to the Client and not the Character. Because the ClientRef contains most information that was in the Character before, it becomes redundant to have those methods and properties in the Character and they will be removed in a future release.
Members
Name Type Desc Access
acctname Account Account name string (if not NPC) r/o
clientinfo Struct UO Client information struct (check out core-changes.txt for an example) r/o
clienttype Integer clientversion type bitfield r/o
clientver_detail Struct UO Client version string as Struct of Ints {major;minor;rev;patch} r/o
clientversion String UO Client version string r/o
ip String IP Address string r/o
last_activity_at Integer POL clock when last activity has been made r/o
last_packet_at Integer POL clock when last packet has been received r/o
uo_expansion_client Integer client send expansion info flag r/o
Methods
Prototype Returns Desc
compareversion(string Version) true/false true if Client Version >= given Versionstring
Container
Parent
Lockable
Children
Corpse
Spellbook
Explanation
Items that can be locked, and have other items inside them
Members
Name Type Desc Access
max_items_mod Integer from -32768 to 32767, modifier for max items allowed in the container r/w
max_slots_mod Integer from -32768 to 32767, modifier for max slots allowed in the container r/w
max_weight_mod Integer from -32768 to 32767, modifier for max weight allowed in the container r/w
Corpse
Parent
Container
Explanation
Objects that are created when character objects are killed
Members
Name Type Desc Access
corpsetype Integer ObjType of the Character killed r/o
ownerserial Integer Serial of the Mobile that died r/o
DataFileElement
Explanation
A data element inside a datastore file
Methods
Prototype Returns Desc
EraseProp(string propname) true/error Erases the property named 'propname'
GetProp(string propname) script object/error Returns an unpacked script object (i.e. int,string,array,etc)
PropNames() array Returns an array of property name strings
SetProp(string propname, object propvalue) true/error Sets a packable object to a property
Datafile
Explanation
Object representing a data file in a data store
Methods
Prototype Returns Desc
CreateElement(key) error/DataFileElemRef key is int or string, depending on datafile flags
DeleteElement(key) error/true see key notes above
FindElement(key) error/DataFileElemRef see key notes above
Keys() array array of ints or strings, depending on datafile flags
Datastore
Explanation
Functions for manipulating a datastore. Not an actual object, but funcs found in datafile.em, presented here for completeness.
Methods
Prototype Returns Desc
CreateDataFile(string name, int flags) DataFileRef/error Creates a datafile
ListDataFiles() Array Lists known datafiles
OpenDataFile(string name) DataFileRef/error Opens a datafile
UnloadDataFile(string name) true/error Unloads a datafile
Dictionary
Explanation
Data structure for key->value pairs (i.e."associative array"). Keys may be intgers, strings, reals, mobrefs, or itemrefs. Declare with var d := dictionary. Pre-intialize with var d := dictionary { "abx" -> 72, "xyz" -> 32 };
Methods
Prototype Returns Desc
[key] value gets value at key, or uninit if key doesn't exist
erase(key) true/error erases a pair from the dict
exists(key) error/int if exists, returns count of matching key
insert(key, value) error/int inserts a pair into the dict, returns new size
keys() array returns an array of the keys
size() int number of pairs in dictionary
Door
Parent
Lockable
Explanation
A door item that automatically closes.
Members
Name Type Desc Access
isopen Boolean true if the door is open r/o
Methods
Prototype Returns Desc
close() true closes the door
open() true opens the door
toggle() true toggles the door to the other state
Equipment
Parent
Item
Children
Weapon
Armor
Explanation
Class containing concrete subclasses which are equipable and have hit points
Members
Name Type Desc Access
intrinsic Boolean Intrinsic Equipment? r/o
Error
Explanation
An object representing a script error. Comparing this object against the keyword 'error' allows the scripter to know if the result of a core function was an error. It always evaluates as false in boolean contexts. Declare with var e := error; Pre-intialize with var e := error { errortext := "error message" };
Members
Name Type Desc Access
errortext String Informational Error string r/w
Guild
Explanation
Object representing a player guild association
Members
Name Type Desc Access
allyguilds Array Array of GuildRefs who are allied guilds r/o
enemyguilds Array Array of GuildRefs who are enemy guilds r/o
guildid Integer Guild ID number r/o
members Array Array of Character Refs who are guild members r/o
Methods
Prototype Returns Desc
addallyguild(GuildRef) true/error adds an ally guild
addenemyguild(GuildRef) true/error adds an enemy guild
addmember(CharacterRef) true/error adds a character to the guild
eraseprop(string propname) true/error Erases the property named 'propname'.
getprop(string propname) script object/error Returns an unpacked script object (i.e. int,string,array,etc)
isallyguild(GuildRef) true/error true if the guild is an ally
isenemyguild(GuildRef) true/error true if the guild is an enemy
ismember(Character) error/true true if the character is a member of the guild
propnames() Array Returns an array of property name strings.
removeallyguild(GuildRef) true/error removes an ally guild
removeenemyguild(GuildRef) true/error removes an enemy guild
removemember(CharacterRef) true/error removes a character member
setprop(string propname, object propval) true/error Sets a packable object to a property.
House
Parent
Multi
Explanation
A Multi object where players hoard items.
Members
Name Type Desc Access
components Array Array of House components, i.e. sign, doors r/o
custom Boolean 1 = custom house r/o
house_editing Boolean 1 if the house is currently being edited r/o
house_parts Integer 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 r/o
items Array Array of Item References in the house r/o
mobiles Array Array of Character References in the house r/o
multiid Integer id for this kind of multi r/o
Methods
Prototype Returns Desc
acceptcommit(Character chr, bool commit) true/error If commit is 0 then drops the not committed custom house changes or accept them instead
add_component(ItemRef) true/error Add item to House components
addhousepart(int graphic, int xoffset, int yoffset, int z) true/error Adds a part to the custom house design.
cancelediting(Character chr, bool drop_changes) true/error Stops editing mode. If drop_changes is true, drops all non committed changes
erase_component(ItemRef) true/error Erase item from House components
erasehousepart(int graphic, int xoffset, int yoffset, int z) true/error Removes a part from the custom house design.
setcustom(bool custom) true/error Sets the house as custom. Setting to 1 is needed before SendHousingTool() works.
Item
Parent
UObject
Children
Equipment
Lockable
Map
Multi
Explanation
Represents a physical item in the world.
Members
Name Type Desc Access
amount Integer stack size r/o
buyprice Integer Amount of gold an NPC buys this item for. 0=not for sale, -1=itemdesc default. r/w
container Item item contained in r/o
damage_cold Integer Total AOS+ damage factor. r/o
damage_cold_mod Integer AOS+ damage modifier r/w
damage_energy Integer Total AOS+ damage factor. r/o
damage_energy_mod Integer AOS+ damage modifier r/w
damage_fire Integer Total AOS+ damage factor. r/o
damage_fire_mod Integer AOS+ damage modifier r/w
damage_physical Integer Total AOS+ damage factor. r/o
damage_physical_mod Integer AOS+ damage modifier r/w
damage_poison Integer Total AOS+ damage factor. r/o
damage_poison_mod Integer AOS+ damage modifier r/w
decayat Integer game clock value after which this item might decay. 0=do not decay r/w
desc String single click description string (formatted name and suffix added to it without formatting if it exists) r/o
doubleclickrange Integer Max distance for using this item r/o
equipscript String script run when item equipped on a character r/w
getgottenby Character Returns CharRef of Player holding item, Error if not being held r/o
house House Returns a reference to the House this item is component of, if any r/o
hp Integer Hit points of item r/w
insured Boolean like newbie, but it gets reset to 0 whenever it saves an item from dropping r/w
invisible Boolean true if the item is invisible r/w
item_count Integer number of items in container including the container itself (1 if this item is not a container or an empty container) r/o
layer Integer equipment layer r/o
maxhp Integer Maximum Hit Points of item r/o
maxhp_mod Integer Maximum Hit Point modification r/w
movable Boolean true if player may move the item r/w
name_suffix String For adding crafter marks or such, will be appended to desc r/o
newbie Boolean true if the item remains with the ghost when player dies r/w
process Script Control script reference, error on none r/o
quality Double 1.0=Average and default r/w
resist_cold Integer Total AOS+ armor factor. r/o
resist_cold_mod Integer AOS+ Armor factor modifier r/w
resist_energy Integer Total AOS+ armor factor. r/o
resist_energy_mod Integer AOS+ Armor factor modifier r/w
resist_fire Integer Total AOS+ armor factor. r/o
resist_fire_mod Integer AOS+ Armor factor modifier r/w
resist_physical Integer Total AOS+ armor factor. r/o
resist_physical_mod Integer AOS+ Armor factor modifier r/w
resist_poison Integer Total AOS+ armor factor. r/o
resist_poison_mod Integer AOS+ Armor factor modifier r/w
saveonexit Boolean default 1, if you set this to 0 the item and (if container, it's contents) will NOT be saved to datafile r/w
sellprice Integer Amount of gold an NPC sells this item for. 0=not for sale, -1=itemdesc default. r/w
stackable Integer return is based on POL Decided stackability of item. r/o
tile_layer Integer returns the Layer setting in the Tiles.cfg/Tiledata r/o
unequipscript String script run when item unequipped r/w
usescript String double-click action script. set to empty string for itemdesc.cfg default script. r/w
Methods
Prototype Returns Desc
hasExistingStack(container) Item Checks if there is an existing stack in a container or not, returns the ItemRef of the stack if it exists
splitStackAt(x, y, z, realm, amount) Item Will split the item into 2 stacks. Returns a reference to the new stack made from item. Places new stack at the coordinates
splitStackInto(container, amount) Item Will split the item into 2 stacks. Returns a reference to the new stack made from item. Places new stack into the container
Lockable
Parent
Item
Children
Door
Container
Explanation
Class containing concrete subclasses which can 'lock'
Members
Name Type Desc Access
locked Boolean true if the item is locked r/w
Map
Parent
Item
Explanation
A Map item that shows a a map image in a gump when double clicked.
Members
Name Type Desc Access
editable Boolean If true, pins on the map can be moved r/w
facetid Integer This has actually nothing to do with realms, the value is the same as in FacetXX.mul file r/w
gumpheight Integer height in pixels of map gump r/w
gumpwidth Integer width in pixels of map gump r/w
xeast Integer east gump edge (world coord) r/w
xwest Integer west gump edge (world coord) r/w
ynorth Integer north gump edge (world coord) r/w
ysouth Integer south gump edge (world coord) r/w
Methods
Prototype Returns Desc
appendpin(int x, int y) true/error append pin{x,y} to end of course
erasepin(int index) true/error erase pin at index
getpins() array returns array of structs{x,y} of pins for the map
insertpin(int index, int x, int y) true/error insert pin{x,y} before index
Multi
Parent
Item
Children
House
Boat
Explanation
Special items that display as many pieces of a large structure, as defined in multi.cfg
Members
Name Type Desc Access
footprint Struct returns a struct with 'xmin', 'xmax', 'ymin', 'ymax' of the world coordinates the multi occupies. r/o
NPC
Parent
Character
Explanation
A Non-Player Character mobile object
Members
Name Type Desc Access
alignment Integer NPC template alignment. r/o
eventmask Integer bitwise-ORd list of sysevents that have been enabled, error if no control script running r/o
master Character controlling player character, false if none r/o
npctemplate String NPC template name in npcdesc.cfg r/o
process Script Control script reference, error on none r/o
run_speed Integer NPC walk delay (maximum 250) r/w
saveonexit Boolean default 1, if you set this to 0 the npc and all items contained within it's wornitems container will NOT be saved to datafile r/w
script String control script name r/w
speech_color Integer NPC speech text color r/w
speech_font Integer NPC speech text font r/w
use_adjustments Boolean Use movement adjustments to avoid single-tile obsticals r/w
Methods
Prototype Returns Desc
setmaster(CharacterRef master) true/false Sets the master character for the NPC, if not passed, clears master.
Package
Explanation
Object representing a package in the system
Members
Name Type Desc Access
name String Package name r/o
npcdesc Boolean Does the Package hold an own npcdesc.cfg? r/o
supports_http Boolean Does the Package supports www? r/o
version String Package version r/o
Packet
Explanation
Object representing a binary packet. Print(Packet) returns string of Packet contents.
Methods
Prototype Returns Desc
GetInt16(int offset) integer/error Gets 16-bit (2 byte) value at offset (0-based). Automatically converts to Big-Endian.
GetInt16Flipped(int offset) integer/error Gets 16-bit (2 byte) value at offset (0-based). Automatically converts to Low-Endian.
GetInt32(int offset) integer/error Gets 32-bit (4 byte) value at offset (0-based). Automatically converts to Big-Endian.
GetInt32Flipped(int offset) integer/error Gets 32-bit (4 byte) value at offset (0-based). Automatically converts to Low-Endian.
GetInt8(int offset) integer/error Gets 8-bit (1 byte) value at offset (0-based).
GetSize() integer Returns size of packet data in bytes.
GetString(int offset, int length) string/error Gets a string (1-byte characters) at offset (0-based) for length characters.
GetUnicodeString(int offset, int length) array/error Gets a 'unicode string' (2-byte characters) at offset (0-based) for length characters (NOT BYTES).
GetUnicodeStringFlipped(int offset, int length) array/error Gets a 'unicode string' (2-byte characters) at offset (0-based) for length characters (NOT BYTES). With Flipped Byte Order (for specific packet support)
SendAreaPacket(int x, int y, int range, string realm) integer/error Sends this packet to all the players in range of x,y. Returns integer number of clients this packet was successfully sent to.
SendPacket(Character) true/error Sends this packet to character.
SetInt16(int offset, int value) true/error Sets an 16-bit (2-byte) value at offset (0-based). If offset is greater than current size, the packet is resized to fit the new data and the encoded size is updated for variable length packets. Resizing is not allowed for fixed-length packets. Automatically converts to Big-Endian.
SetInt16Flipped(int offset, int value) true/error Sets an 16-bit (2-byte) value at offset (0-based). If offset is greater than current size, the packet is resized to fit the new data and the encoded size is updated for variable length packets. Resizing is not allowed for fixed-length packets. Automatically converts to Low-Endian.
SetInt32(int offset, int value) true/error Sets an 32-bit (4-byte) value at offset (0-based). If offset is greater than current size, the packet is resized to fit the new data and the encoded size is updated for variable length packets. Resizing is not allowed for fixed-length packets. Automatically converts to Big-Endian. NOTE: currently there's a compiler problem setting 0xFFFFFFFF, it gets converted to 0x7FFFFFFF. Use multiple SetInt16 or SetInt8 calls for now.
SetInt32Flipped(int offset, int value) true/error Sets an 32-bit (4-byte) value at offset (0-based). If offset is greater than current size, the packet is resized to fit the new data and the encoded size is updated for variable length packets. Resizing is not allowed for fixed-length packets. Automatically converts to Low-Endian. NOTE: currently there's a compiler problem setting 0xFFFFFFFF, it gets converted to 0x7FFFFFFF. Use multiple SetInt16 or SetInt8 calls for now.
SetInt8(int offset, int value) true/error Sets an 8-bit (1-byte) value at offset (0-based). If offset is greater than current size, the packet is resized to fit the new data and the encoded size is updated for variable length packets. Resizing is not allowed for fixed-length packets.
SetSize(int newsize) integer/error Sets the new size of the packet, possibly destroying data if packet size was decreased. Updates the encoded size for variable length packets, not allowed for fixed-length packets. Returns the old size of the packet.
SetString(int offset, string string, int nullterminate) true/error Sets a string value at offset (0-based). If offset plus length of string is greater than current size, the packet is resized to fit the new data and the encoded size is updated for variable length packets. Resizing is not allowed for fixed-length packets. Set nullterminate to 1 if you want to automatically append a 0 terminator.
SetUnicodeString(int offset, array unicode character, int nullterminate) true/error Sets a unicode string at offset (0-based). If offset plus length of string (2*number of members in the array) is greater than current size, the packet is resized to fit the new data and the encoded size is updated for variable length packets. Resizing is not allowed for fixed-length packets. Set nullterminate to 1 if you want to automatically append a double 0 terminator. Unicode strings in eScript are arrays of 2-byte values. See unicode.em for useful functions. CAscZ in basic.em is useful for character sets that use the ascii/ansi standard.
SetUnicodeStringFlipped(int offset, array unicode character, int nullterminate) true/error Sets a unicode string at offset (0-based). If offset plus length of string (2*number of members in the array) is greater than current size, the packet is resized to fit the new data and the encoded size is updated for variable length packets. Resizing is not allowed for fixed-length packets. Set nullterminate to 1 if you want to automatically append a double 0 terminator. Unicode strings in eScript are arrays of 2-byte values. See unicode.em for useful functions. CAscZ in basic.em is useful for character sets that use the ascii/ansi standard. With Flipped Byte Order (for specific packet support)
Party
Explanation
Object representing a player party association
Members
Name Type Desc Access
candidates Array Array of Offline Character Refs who are party candidates r/o
leader OfflineCharRef Offline Character Ref of leader r/o
members Array Array of Offline Character Refs who are party members r/o
Methods
Prototype Returns Desc
addcandidate(CharacterRef) error/true adds a character to the party as candidate
addmember(CharacterRef) error/true adds a character to the party
eraseprop(string propname) true/error Erases the property named 'propname'.
getprop(string propname) script object/error Returns an unpacked script object (i.e. int,string,array,etc)
propnames() Array Returns an array of property name strings.
removecandidate(CharacterRef) true/error removes a character candidate
removemember(CharacterRef) true/error removes a character member
setleader(CharacterRef) error/true sets new leader
setprop(string propname, object propval) true/error Sets a packable object to a property.
Polcore
Explanation
Object containing server data
Members
Name Type Desc Access
all_scripts Array Array of all cached script objects r/o
bytes_received Double Number of bytes received from clients r/o
bytes_sent Double Number of bytes sent to clients r/o
combat_operations_per_min Integer Combat operations per minute r/o
compiledate String Compile Date r/o
compiletime String Compile Time r/o
error_creations_per_min Integer Script errors per minute r/o
events_per_min Integer Events per minute r/o
instr_per_min Integer Script instructions per minute r/o
iostats Integer struct of arrays of structs - iostats["sent"array->256 elements of struct["count","bytes"],"received"array->256 elements of struct["count","bytes"]] r/o
itemcount Integer Total Item Count r/o
memory_usage Integer current process usage in KB r/o
mobilecount Integer Total Mobile Count r/o
packages Array Array of enabled package names r/o
pkt_status Array returns and array of info structures about packets currently in the queue r/o
priority_divide Integer Priority Divide r/o
queued_iostats Array structure same as iostats, but for queued I/O stats r/o
running_scripts Array Array of running script objects r/o
script_profiles Array Array of structs: struct have members name, instr, invocations, instr_per_invoc, instr_percent r/o
scripts_late_per_min Integer Scripts late per minute r/o
scripts_ontime_per_min Integer Scripts on time per minute r/o
skill_checks_per_min Integer Skill checks per minute r/o
sysload Integer System Load r/o
sysload_severity Integer System Load Severity r/o
systime Integer UNIX time() r/o
tasks_late_per_min Integer Tasks late per minute r/o
tasks_late_ticks_per_min Integer Tasks late ticks per minute r/o
tasks_ontime_per_min Integer Tasks ontime per minute r/o
uptime Integer Uptime in seconds r/o
version Integer Version, i.e. 95 r/o
verstr String Version String r/o
Methods
Prototype Returns Desc
clear_script_profile_counters() true/false Clears the script profile counters
log_profile(bool clear) true/false Writes the script profile to the log, optionally clearing it after.
set_priority_divide(int divide) true/false Sets the priority divide to 'divide'
Script
Explanation
Object representing a script in the system
Members
Name Type Desc Access
attached_to Object Mobile or Item where Script is attached to. If it's attached to a Character, it will return the Character. If it's an AI-Script it will return the NPC. If it's a ControlScript it will return the Item. Checks are made in the order above. r/o
call_depth Integer Call depth r/o
consec_cycles Integer Consecutive Cycles r/o
controller MobileRef Mobile which is responsible for damage etc. r/o
globals Dictionary Dictionary of global variable name=>value pairs r/o
instr_cycles Integer Instruction Cycles r/o
name String Script name r/o
num_globals Integer Number of global variables r/o
pc Integer Program Counter r/o
pid Integer Process ID r/o
sleep_cycles Integer Sleep Cycles r/o
state String Script state r/o
var_size Integer Estimated size of global variables and current local variables r/o
Methods
Prototype Returns Desc
clear_event_queue() true clears the event queue of the script
kill() true Kills this script
loadsymbols() Boolean Loads the .dbg file
sendevent(obj event) error/true sends a event to this script (usually a struct)
Spellbook
Parent
Container
Explanation
Object representing a Spellbook.
Methods
Prototype Returns Desc
AddSpell(int spellid) 1/0/error Adds given spellid.
HasSpell(int spellid) 1/0/error Checks if given spellid is inside the spellbook.
RemoveSpell(int spellid) 1/0/error Removes given spellid.
Spells() array Returns array of SpellIDs
StorageArea
Explanation
Object representing a storage area. It is iterable: iterates over Item objects (root items in storage area).
Members
Name Type Desc Access
count Integer Number of root items in this storage area r/o
StorageAreas
Explanation
Object representing a list of all storage areas. It is iterable: iterates over StorageArea objects. It supports the [] operator: its behavior is similar to FindStorageArea()
Members
Name Type Desc Access
count Integer Number of storage areas r/o
String
Explanation
An ordered collection of ascii (1-byte) characters. Declare and pre-initialize with var s := "my string"
Methods
Prototype Returns Desc
+ string string concatenates the strings, returns the new string.
[start,length] string 'Substring': returns a new string from the character range between start and length, inclusive. Returns error if index out of range. Ex: var str := "yomama"; str[2,3] would return "oma".
[substr] string/uninit seaches the string for 'substr'. If found, returns the first character of the substring, else uninitialized object.
[substr] := replace_str string finds the first occurance of 'substr' and replaces substr with 'replace_str'. returns the new string.
find(search,[start]) int returns like Find(string, search, start) the index of the first occurance of 'search' after 'start' within str, but unlike the basic.em function the Start parameter is optional if not given it searches the whole string
format(args) string formats a string using the data from args. Accepts the following format: {:x} for hex representation {:o} for octal {:b} for binary Add a # to get notation prefix, e.g.: "{:x}".format(10) -> "a" "{:#x}".format(10) -> "0xa" Parameters can be simple: "You have {} gold coins".format(120) -> "You have 120 gold coins" and are unpacked implicitly by their order: "{} hits {} for {} of damage".format("John", "Bob", 120) -> "John hits Bob for 120 of damage" However you can specify parameters explicitly (first argument is at 1): "You hit {2} for {1} damage".format(120, "John Doe") -> "You hit John Doe for 120 damage" Format allows accessing object members: "Spell {1.spell_name} requires reagents: {1.reagents}".format(struct{spell_name:="Fire Wrath", "Ba, Bm, Ga"}) -> "Spell Fire Wrath requires reagents: Ba, Bm, Ga" Implicit members also work: "{name} you hit level {level}".format(struct{name:="Jane Doe", level:=4}) -> "Jane Doe you hit level 4" Character or item members are accessed the same way: "{1.name}, your shield {2.desc} has {2.hp} hp".format(who, who.shield) -> "Admin, your shield Buckler of Death has 150 hp"
join(array) string returns a string which is the concatenation of the array elements, seperated by str
length() int returns number of characters in the string
lower() string returns like lower(str) the lowercase version and also modifies the str
upper() string returns like upper(str) the uppercase version and also modifies the str
Struct
Explanation
Data structure with explicitly named members (keys). Keys may be only be strings. Declare with var s := struct; Pre-intialize with: var s := struct { a := 1, b := 2 };
Methods
Prototype Returns Desc
.+member n/a struct.+member adds a member
.-member n/a struct.-member removes a member
.?member int struct.?member returns count of matching member
.member value gets value of member
[member] value gets value of member ONLY when member is a string! no using integers here like an array.
erase(key) error/int removes given key
exists(key) error/int if exists, returns count of matching key
insert(int index, object) int/error inserts a new object into the struct for key. Returns size.
keys() array returns an array of the keys
size() int number of keys in the struct
UObject
Children
Character
Item
Explanation
The base UO Object class
Members
Name Type Desc Access
color Integer color value (0 to 0xFFF) r/w
dirty Boolean This is set when anything on the object changes, and cleared on world save r/o
facing Integer facing or the object (meaningful for mobiles and light-emitting items) range 0-127 r/w
graphic Integer art id number r/w
height Integer height of the graphic as defined in tiledata.mul r/o
multi Multi MultiRef for the Multi the object is on r/o
name String name string (for items use .desc for single-click text, this does not include suffix or formatting) r/w
objtype Integer object type as defined in itemdesc.cfg r/o
realm String case-sensitive name of the realm r/o
serial Integer unique object identifier r/o
specific_name Boolean Set if a specific name is set, otherwise like itemdesc name false. r/o
weight Integer weight of the graphic as defined in tiledata.mul r/o
x Integer x coordinate r/o
y Integer y coordinate r/o
z Integer z coordinate r/o
Methods
Prototype Returns Desc
eraseprop(string propname) true/error Erases the property named 'propname'.
get_member(string membername) object, value of member or error Gets the value of the built-in member 'membername'. var objname := obj.get_member("name") is the same as var objname := obj.name
getprop(string propname) script object/error Returns an unpacked script object (i.e. int,string,array,etc)
isa(POLCLASS_*) boolean True if the derived class is the same as the passed class type (see uo.em for all constants)
propnames() Array Returns an array of property name strings.
propnames() Array Returns an array of property name strings.
set_member(string membername, obj value) object, new value of member or error Sets the built-in member 'membername' to 'value'. obj.set_member("name","u suck") is the same as obj.name := "u suck"
setprop(string propname, object propval) true/error Sets a packable object to a property.
Weapon
Parent
Equipment
Explanation
Equipable items that deal damage in combat
Members
Name Type Desc Access
attribute String Attribute name this weapon uses as a skill r/o
dmg_mod Integer Damage Modifier r/w
hitscript String Script name that runs when weapon makes a hit r/w
speed_mod Integer from -32768 to 32767, an optional way to delay if you want to use the default speed math and just add to that r/w