UOSAGAS Scripting

UOSagas vs CE vs Outlands

UOSagas Razor implements the Razor Community Edition language, plus the UO Outlands extensions, as a superset. Scripts from either shard generally run here unchanged, but not everything can work, and this page says which parts, rather than letting you discover it mid-fight.

The short version

  • CE scripts: run as-is. Every CE command and expression is registered.
  • Outlands scripts: run as-is, with 4 exceptions listed below. The extended findtype grammar, %s% wildcards, bandaging, lists, timers and cooldowns all work.
  • Server features are not language features. Outlands scripts that talk to Outlands-specific server systems will parse and run here, but the server will not answer the way they expect.

This page is generated from the assistant. The counts and lists below are not maintained by hand. They come from the same source as the reference, so they cannot quietly go stale.

Does not work here

These are registered, so a script using them still parses and runs, but they do nothing useful. Each explains why.

classicuo ⚠ Not supported

Changes a ClassicUO profile setting.

Not supported. The client is compiled ahead-of-time, so it has no reflection with which to reach profile properties. The command still parses and warns instead of breaking your script. We may route it through the assistant interface later.

Reference →
findbuff ⚠ Not supported

True when a buff is active.

Always false right now. The buff and debuff packet handler is not wired up yet, so Razor sees no buffs at all. The expression parses and runs, it simply never matches. A fix is planned.

Reference →
finddebuff ⚠ Not supported

True when a debuff is active.

Always false right now, for the same reason as findbuff: there is no buff or debuff tracking yet.

Reference →
pvp ⚠ Not supported

True while PvP script restrictions apply.

Always false. UOSagas has no structured-PvP restriction system, so nothing is ever restricted. The expression stays registered so scripts that use it still parse and run.

Reference →

Works, with a caveat

These do their job, but behave slightly differently here than on CE or Outlands. Worth knowing before you trust one in a loop.

cooldown

Starts a named cooldown.

The duration is in milliseconds. Older scripts that pass seconds keep working: a value below 100 is read as seconds. The on-screen cooldown bar is not implemented yet, but the timer itself works.

Reference →
interrupt

Cancels the spell you are casting.

The layer argument is accepted but ignored. There is one generic interrupt path.

Reference →
potion

Drinks a potion from your backpack.

If 'Block heal while poisoned' is enabled in Options, a heal potion is refused while you are poisoned. Cure first.

Reference →
targetrelloc

Targets a location relative to you.

The target uses your own Z rather than the height of the tile you are aiming at, because Razor has no access to the map files. This is fine on flat ground. On stairs or multi-level terrain it can miss.

Reference →
bandaging

Seconds until the current bandage finishes.

Tracked from the bandage messages and estimated at about 8 seconds, because our server sends no bandage timer. Reliable enough to gate a heal loop, but do not treat it as a precise stopwatch.

Reference →

Outlands extensions

19 entries exist only in the Outlands fork, not in Razor CE. All of them work here.

NameWhat it does
clearignore Empties the ignore list.
cooldown Starts a named cooldown.
findtypelist Puts every matching item's serial into a list.
getlabel Reads an object's label into a variable.
ignore Adds a serial to the ignore list.
rename Renames a pet or follower.
setskill Sets a skill's lock arrow.
unignore Removes a serial from the ignore list.
warmode Turns war mode on or off.
atlist The entry at a list position.
bandaging Seconds until the current bandage finishes.
cooldown Milliseconds left on a cooldown.
counttype Counts matching items.
find Checks whether a known serial is present.
findlayer Returns the serial of the item on a layer.
gumpexists True when a gump is open.
hue An object's colour.
ingump True when a gump contains this text.
noto A mobile's notoriety.

Beyond those, Outlands widens several CE commands rather than adding new ones. findtype, dclicktype, targettype and lifttype gained a source argument (self, ground or a container serial), plus quantity, range and any as a placeholder. UOSagas accepts all of it, and the old CE forms still work.

UOSagas extensions

A few things work here that neither CE nor Outlands has. A script that uses them runs on UOSagas but not on the other shards, so this list is the exact price of portability in the other direction.

ExtensionWhat it does
Expression interpolation {{...}} in overhead and sysmsg accepts a whole expression, not just a variable name: {{skill 'Alchemy'}}, {{hits}}, {{counttype 3617 backpack}}. On CE and Outlands the same text prints <not found>. Variables still take precedence, so existing scripts are unaffected.

Known gaps

Smaller differences that are on the list but not fixed yet:

GapEffect
dead <mobile> The mobile argument is ignored. It always reports your ghost state, so a script asking whether its target is dead gets the wrong answer.
Layer names onehandedsecondary, quiver and outerbody are not recognised. A quiver normally sits on cloak.
Skill spellings Outlands' discord and taming are not recognised. Use discordance and animaltaming.
PvP restrictions Outlands disables ~25 expressions during structured PvP. UOSagas has no such system, so nothing is restricted.