Authors are not forced to use the clang-format setting, but should
atleast be inspired by the style.
The only thing which is now not allowed are tabs for ident/alignment!
The buff status is held in a new buffs_ property of Character. It is
modified via Character.addBuff(), Character.delBuff(),
Character.clearBuffs() functions. (Maybe also a readBuffs() function
could be useful in future?). Packets are automatically sent when on
a "when needed" basis.
will move array 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
Changed: string.format()
Now actually faster than string concatenation in eScript
Fixes a bug where {:d} formating could cause an arbitrary number shown instead of a real value
tag errors are slightly more intuitive and compact.
Note: Patches submitted by andenixa
This method overrides the default Delay setting in attributes.cfg if used ( for example if on failing a skill you want no delay just set it to 0 )
This can also be used to disable skills for example during an event or pvp
Added: item.name_suffix for adding crafter marks or such
item.desc returns the formatted name and suffix added to it without formatting if it exists
item.name does not include this suffix, so that can be used to get the item name without formatting and without suffix
str.length() : returns like len(str) the length of the string
str.upper() : returns like upper(str) the uppercase version and also modifies the str
str.lower() : returns like lower(str) the lowercase version and also modifies the str
str.find(Search,[Start]) : 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
str.join(array) : returns a string which is the concatenation of the array elements, seperated by str
Changed: item.SplitStackInto( container, amount ) to item.SplitStackInto( container, amount, add_to_existing_stack := 0 )
Note: The optional add_to_existing_stack parameter defines if the items moved to the container will look for an existing stack and add to it or just add as a new item ( old behaviour )
If add_to_existing_stack == 1 and there is no stack in the container, it will return Error "There is no existing stack", so its up to scripts to check this.
Added: item.HasExistingStack( container ) to allow scripts to check if there is an existing stack in a container or not, returns the ItemRef of the stack if it exists.
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
Added item.SplitStackInto(container, amt) - Returns a reference to the new item stack or errors. Have spot for item.SplitStackAt(x, y, z, real, amt) next.
multi.house_parts
multi.house_editing
who.house_editing
multi.addhousepart(graphic,xoff,yoff,z)
multi.erasehousepart(graphic,xoff,yoff,z)
components get added to workingdesign during edit
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