Table of Contents

Old 3D renders of RuneScape Classic (click images for larger versions):

Documents from "Andrew's Amazing Homepage", circa 1999 (source):

The Obligatory: All About ME! Page

My name is Andrew Gower, I am 20 years old, and I am currently studying computer science at Cambridge, I've been writing computer programs for about 13 years. I'm currently programming in java, and in the holidays I write java applets for Games-Domain. I also do the occasional review for the online magazine Console-Domain.

I sing in the folk-choir at Fisher-House every week, and I also like chess, board games, RPGS, computer-games (especially the multiplayer ones) and reading (science-fiction). For sport I play squash or table-tennis. I've also enojyed karate, and sailing, but I haven't had time to do either of these recently.

Curriculum Vitae of Andrew Gower

Education

1990 - 1997 The Becket School
Ruddington Lane, Wilford, Nottingham
1997 - present University of Cambridge
Fitzwilliam College, Huntingdon Road, Cambridge, CB3 ODG

Qualifications

Date		Level	 Examination Title		Result	Board
Summer 1997 A Level Physics A London
Summer 1997 A Level Mathematics A London
Summer 1997 A Level Further Mathematics A London
Summer 1997 A Level Chemistry B London
Summer 1997 A Level General Studies B Northern
Summer 1995 GCSE Physics A* Midland
Summer 1995 GCSE Chemistry A* Midland
Summer 1995 GCSE Mathematics A* Midland
Summer 1995 GCSE Biology A Midland
Summer 1995 GCSE Technology/Graphic Design A Midland
Summer 1995 GCSE Geography A Midland
Summer 1995 GCSE Religious Studies A Northern
Summer 1995 GCSE French B Midland
Summer 1995 GCSE English Literature B Southern
Summer 1995 GCSE English Language B Southern

I am currently reading for a BA Hons in Computer-Science.
So far I've got a 2:1 in the first year, and a 1st in the second year.

Past Experience

Summer 1999.
Spent 3 months on a summer-holiday job working for GamesDomain, (The worlds most popular internet games site!). Whilst there I designed & programmed multiplayer Java-games for their website, as well as performing other programming tasks for them.

1997-1999:
Started working as a freelance JAVA programmer paid to program and maintain Java Games/Applets for web-sites. This is challenge as programs have to be made both small, and instantly accessible. I ported my entire 3d engine and editor to Java, and wrote a complete Java audio and graphics library, which at last count provided over 350 powerful functions!.

1990-1997:
Spent my spare time programming computer-games. During this time I learnt multiple programming languages including Basic, 68000 Assembler, C, 80x86 Assembler. As well as program design, coding and testing I designed all my own graphics, sound effects, music, levels etc... and my software has been very highly acclaimed. After my game 'Destruction Imminent' For the Atari ST was commercially published by Goodman's International, I moved onto PC programming. Since then my programming achievments include writing an entire 3D engine and object modelling program in a combination of C, and optimised assembler.

Summer 1995:
Work Experience (1 week) at Nottingham CTC: During my work experience I worked as a technician in the audio/visual department. I learnt basic skills such as filming, video-editing, and soundtrack recording.

Hobbies and Interests:

My interests include karate, sailing, computer programming, playing the keyboard, reading (science fiction), board games and kite flying.

Matt's extremely accurate second opinion (Andrew's friend Matthew Norris, 1999)

I'm Matt and I'm writing a second opinion for Andrew - On Andrew - About Andrew.

Andrew missed a physical description section, so here's a brief description: Andrew is about eight feet tall, with blue hair and green skin. He has burning red eyes and speaks in a deep, vaguely sepulcharal voice. He claims to be a demon from the seventh plane of hell. This may or may not be true.

Andrew is very good at programming. His past successes include Racer, U.F.O, Blobby and Windows 95 (Did you really think Microsoft could write it? Good, I didn't either). If you wish to purchase any of his games e-mail your credit card number to mrmh2@cam.ac.uk and I will ensure you get the games for a very reasonable price. Unfortunately windows 95 is out of stock, but windows 98 will be available soon. Click here to download beta version

Andrew has a wonderful personality and is kind and generous. He has lots of money (although not so much anymore) and has been shortlisted for the Nobel Peace prize for the past seven years. He is paying me a large amount of money to write this. He has a dog called Fido, and his middle name is Christopher.

Not all of the above pieces of information are true.

If you clicked on the Win98 beta link you were given this "error":

404 Not Found
The requested URL was not found on this server:

win98.zip

This is because it isn't here. I can't just go round giving away beta copies of windows 98. (I don't have it for starters). It was a joke you see. Not a very funny one, but you seem to have fallen for it :-) Please return to the referring page, note the hypertext link that led you here and try to be less gullible in the future. All incidents of my own guillibilty (polyester monkeys and fake arms to name a couple.) have of course long since been forgotten.

Devious Mud (February 1999)

DeviousMUD

By Andrew Gower

The Graphical Multiuser Dungeon!
Due to go online - Eventually!

Latest Updates

This project has now been in development on and off for about 7 months! It's turning out to be a mammoth task, although I'm still confident of finishing it. I have now resumed work on it once more, and am currently busy redesigning all the internal file formats used to make the game much more extendible and easier to edit. This is taking a long time, but should be worth the effort. When I've finished this it will be very easy for anyone to add new monsters, new objects, new blocks, new maps, new skills, new quests, new spells etc...

What Is DeviousMUD?

DeviousMUD is my multiplayer RPG game. Its java based design means I have been able to get rid of the usual text-based action and replace it with colourful graphics. The game is played using a simple point and click interface. Just click where you want your man to walk, or select from one of the different actions along the bottom of the screen. You will be able to explore the world, fight monsters for experience, collect treasure, better weapons, interact with other charactors, learn new skills etc... Also to keep things interesting there will be a variety of quests you can do, which will your charactor upon completion. Quests are performed using a graphical-adventure style interface so should be easy to get into.


Devious Mud (October 1999) (source)

DeviousMUD
By Andrew Gower

The Graphical Multiuser Dungeon!


Stuff

Well I've put the beta version of devious-mud online, and a few people have tried it out. However I'm having another break from writing it to give me more time to do the other java games I'm working on. It's not really anywhere near finished yet, so I've removed the address from this page. Try again in a few months time! :-)

Latest Updates

# 28th March, Fixed some more bugs. I've not got as much done as I would have liked but I'm putting it online anyway...
# 25th March, Finished designing a wood/forest to the left of the starting zone
# 22th March, Finish identikit system. You can now choose your player's appearance! System can also be used for human NPCs
# 19th March, Started updating player 'Identikit' system.
# 18th March, Wrote auto bug reporting system for client
# 18th March, Spent ages debugging game - Fixed 11 (fairly minor) bugs!
# 17th March, Finished quest compiler! Although it doesn't support many commands yet.
# 16th March, Started writing quest compiler. This is amazing, it runs everything from magic, to professions, to quests!
# 16th March, Improved player-2-player conversation system.
# 15th March, Important background scenary can now be named, and manipulated by the player!
# 15th March, Finished player-2-npc conversation system.
# 14th March, Continue work on conversation system
# 13th March, Started work on a player-2-npc multiple choice style conversation system.
# 12th March, Fixed some nasty duplicate login bugs, and various other bugs...

To Do

# Level/skill advancment.
# Player variables, so extra information about what the player has done can be saved
# projectiles system
# player-2-player trading
# Fix it so certain NPCs can cross zone boundaries.
# A really big map with lots of quests!
# Health regeneration
# Add lots and lots more features to quest system

Known bugs

Lots of things still don't quite work properly. All these things still need fixing. If you find anything which isn't working quite right which isn't on this list please let me know!

# Still rather hard to get up and down some stairs!
# Items of armour which should totally obscure the piece underneath don't yet...
# Charactors don't face each other when talking
# No feedback given when player trys illegal action, it's just ignored.
# Npcs walk too close to walls. (particularly beetles)
# Can currently talk to npcs which are running away from attacks
# When player dies other players occasionally see strange effect
# Players fighting each other can get stuck in a loop!
# When fighting you can sometimes force an npc to walk straight through a wall!
# Some respawn/reset times need adjusting. Not a bug, currently set low for test purposes.

Rough Map Of The World!

Here is a map of the world as it will hopefully eventually be.

<NOTE: Andrew later re-discovered this image and posted the following about it:>

"Wow, I just found this on my harddisk. Runescape has only been online 8 months, but I thought you might like to see how runescape looked over 3-years ago. (I've been writing this game a long long time!) The program has been completely re-written several times since this page was originally made, and changed it's name to runescape at some point. As you can see 3-years ago it wasn't looking so great, but my persistance on the project finally paid off! The world-map is quite interesting, as you can see things have moved from their originally planned locations somewhat, but many locations still have the same names. Also the central part of the map is an aproximate mirror image of the current map!

Runescape Newsletters

Issue #1 - Jan 21, 2001 (source)

Welcome to the first ever RuneScape newsletter.

Firsly a big thank-you to everyone who's been playing, and has helped make
RuneScape a great success. We only launched just over 2 weeks ago, and we
already have over 28000 signed up players, and the game has been played for a
total time of over 4.5 years!

Help keep RuneScape free


Renting a server to run RuneScape is expensive! I really want to avoid charging
people to play, so please please help me keep it free by visiting the website
below and signing up for a few *free* offers. Thanks!

Want to win Free Cash every day? Try the newest Freebie site on the Internet
today, FreebieClub.com. Of course it's loaded with free loot: great vacations,
magazines and samples galore!
http://www.freebieclub.com/FC_MyFreebies.asp?redir=quick&a=26134

What's new in Runescape


The RuneScape team has been working very hard over the past 2 weeks to improve
the game and bring you new features. Major new features are:

New desert city Al-kharid with:

-Scimitar shop: Buy and sell curvy swords
-Furnace: Conveniant for smelting ore from the desert
-Silk trader: Buy silk here and sell it in varrock for a profit. The amount you
make depends on how many other people are silk trading.
-General store: Another place to buy and sell your items
-Platemail Legs shop: A full range of leg armour to spend your money on
-Kebab shop: Eating kebabs has a random effect. They're normally good, but
rumour has it that a few of them are a bit dodgy. They'll never kill you though

New Quest in Draynor Manor

Draynor Manor has been opened and there's spooky things inside! There's a
vampire asleep in the cellar, and Professor Oddenstein who lives in the attic
has accidently turned someone into a chicken! To make things worse gremlins have
hidden the parts of his machine, so he can't turn the chicken back. Can you find
the missing pieces to complete this quest?

Plus over the past 2 weeks we've also

-Improved the map page to show the locations of useful shops
-Added a 'who's playing' page so you can see if your friends are on
-Made Lumbridge safe to give a place to hide from player killers
-Improved the shops to reduce queueing
-Reduced the network requirements so the game works over more connections
-Fixed lots of little problems/bugs with the game to make it more reliable

What's planned


We are of course working on many more improvements to add to the game to make it
even better. We have nearly finished work on the bank which will hopefully be
added to Varrock city tommorow. The bank is a safe place to store your money,
such that even if you die it can't be lost. After that the magic system is due
for a big overhaul with lots of new spells being added, plus we'll be adding
some entirely new professions such as crafting and fishing to add even more
variety to the game. The next planned quest is 'The vampire slayer quest' in
which you must work out how to slay the evil vampire currently sleeping in
Draynor Manor.

Runescape hiscores


Below are the top scores as they were at 3pm GMT on Sunday-21st. Only the top 25
players are shown, but I'm planning on adding a new page to the website soon
which will allow you to search for the ranking of any player and see how you
compare with everyone else.

The hiscores are currently in 4 categories. If there are more categories which
you think should be included let me know and I'll consider putting them in the
next newsletter.


Top 25 players - score is total of all skills
1: lightning - 506
2: Gugge - 436
3: Rab - 428
4: Sir - 415
5: ZAPTONE_Z - 352
5: hurkules - 352
7: Devil_Hunter - 329
8: merlin - 324
9: Rodrigo - 321
9: Hellbringer - 321
11: RattSabre - 320
12: The_Unknown - 319
13: stud690 - 317
14: Flex_10 - 312
15: Morfnak - 311
16: Day_Dream - 306
17: Lord_Soth - 305
18: TheReturnOfX - 302
19: Ashley - 301
20: Auxilus - 300
21: Sunjon - 288
22: terminator - 287
23: kancer - 283
23: Axebane_Hawk - 283
25: KingKong - 280



Top 25 fighters - score is total combat skill
1: lightning - 200
2: Gugge - 182
3: Rab - 178
4: Robin_Hood2 - 172
5: stud690 - 164
6: Sir - 163
7: Day_Dream - 160
8: terminator - 159
9: Ashley - 155
10: Morfnak - 149
11: merlin - 148
12: The_Unknown - 146
13: Flex_10 - 141
14: Lord_Soth - 138
15: hurkules - 136
16: ZAPTONE_Z - 134
17: LoneWolf_LD - 133
18: RattSabre - 131
18: TheReturnOfX - 131
18: constant - 131
21: SilencerLD - 130
22: Auxilus - 129
22: caramon - 129
24: Sir_Beachy - 128
24: Axebane_Hawk - 128



Top 25 player killers - score is number of kills
1: DaRk_RoCk - 100
2: SilencerLD - 95
3: Robin_Hood2 - 83
3: Mortis - 83
5: EndBringer - 80
6: Phadera - 69
7: bomboy2328 - 68
8: donk - 67
9: Windstick - 65
10: Yemen - 64
11: Yokomon - 61
11: RCCBrasil - 61
13: lancelot24 - 60
14: Samhill - 58
14: Samikaze - 58
14: DecIll - 58
17: koma - 55
18: robsimons - 53
18: Rankka - 53
20: ace2you - 52
20: adam2000 - 52
22: plumaglob - 51
22: Wolf - 51
24: God - 50
24: crazy_joe75 - 50



Top 25 smiths - score is mining + smithing
1: lightning - 88
2: dmonik - 87
3: The_Unknown - 84
4: KPOBb - 81
5: Lord_Soth - 80
6: Rodrigo - 74
6: TheReturnOfX - 74
6: Silverion - 74
9: hurkules - 73
9: Garbages - 73
9: Deckchair - 73
12: Sir - 70
12: Auxilus - 70
14: Bubba_bobba - 68
14: Lordrlz - 68
16: Flurble - 67
16: Flex_10 - 67
16: stud690 - 67
16: Tiney - 67
20: Gugge - 66
20: natslayer - 66
20: Vit - 66
20: Sgt_Savage - 66
20: STarlude - 66
25: Arcon - 65


Thanks for reading this newsletter, have fun playing the game!
Andrew Gower (RuneScape creator)

-----------------------------------------------------------------
You are receiving this newsletter because you asked to receive it when
you created your RuneScape character. We do not send unsolicited email.

To be removed from our mailing list just send a blank email message to:

Issue #2 - Feb 7, 2001 (source)

Welcome to the second RuneScape newsletter. Lots has happened since the last
newsletter, and we've had a lot of good suggestions for the future. Read on to
find out what's planned

What's new in Runescspe

Most of you are probably aware that the player killing in RuneScape has been
changed to make the game fairer. Now when you die, if you haven't attacked any
other players within the last 20 minutes, then you get to keep your best 3
items.

The bank we promised in the last newsletter has been added to the city, and is a
safe place to store your money. Following a large amount of attacks just outside
the bank, the city has paid to put multiple armed guards around the bank area to
protect people who have just withdrawn money. The number of guards was further
increased last Monday.

The magic system has also been modified, such that the magic spells no longer
depend on your ranged combat skill. So you no longer need to be a high level
ranger to use them effectively. The spells were made stronger, but they were
still too weak, so they were made TWICE as effective against monsters last
Monday!

New Quest: Vampire Slayer - The vampire sleeping in the coffin under Draynor
Manor has been terrorising the inhabitants of the small village to the south and
must be stopped! If you think you are up to the task of slaying a vampire, go
and talk to the people in the village to find out how you can destroy this evil
monster!

The most recent addition is a new area in the sewer. This contains 2 new monster
types, deadly-red-spiders, and the exceedingly strong 'moss-giant'. If you can
survive then the red spider eggs can be used to make a 4-dose strength potion!

What's planned

We've received a lot of good suggestions, a lot of which we are planning to add
to the game. In particular the following changes are planned next:

-Modify the trade window to display the names of items to prevent unfair
trading.
-A lot more spells are still due to be added to the magic system.
-Proper support for clans, with a full system to allow people to join and create
clans.
-A 'duel' feature. Challenge your rivals to a duel, with the risks and rewards
set as you like.
-More skills such as fishing, and fletching.
-A friends list to indicate which of your friends are online, and allow easy
communication.
-And of course more quests, more monsters, and more areas of map.

Runescape hiscores

Below are the top scores as they were at 12pm GMT on Wednesday-7th. Only the top
25 players are shown, but I'm working on a new page for the website which will
allow you to search for the ranking of any player and see how you compare with
everyone else.


Top 25 players - score is total of all skills
1: lightning - 682
2: Sunjon - 593
3: Ashley - 583
4: Sir - 570
5: Gugge - 564
6: ZAPTONE_Z - 537
7: DarkPrince - 531
8: stud690 - 530
9: Lord_Soth - 519
10: TheReturnOfX - 517
11: Rab - 515
12: Flat - 508
13: Silus - 508
14: MysticsMagic - 506
15: Rodrigo - 501
16: Morfnak - 501
17: hurkules - 485
18: Devil_Hunter - 485
19: kancer - 481
20: Flex_10 - 478
21: RattSabre - 469
22: constant - 468
23: Robin_Hood2 - 449
24: terminator - 446
25: Prophecy3 - 438


Top 25 fighters - score is total combat skill
1: lightning - 230
2: Robin_Hood2 - 217
3: Gugge - 214
4: Ashley - 213
5: stud690 - 210
6: sandytrain - 195
7: Rab - 194
8: Morfnak - 194
9: ZAPTONE_Z - 193
10: Genocide1 - 192
11: Day_Dream - 190
12: constant - 190
13: Sunjon - 190
14: Sir - 188
15: Nightmare888 - 188
16: Rodrigo - 187
17: terminator - 186
18: hurkules - 185
19: Flex_10 - 184
20: Silus - 182
21: Prophecy3 - 181
22: joe1002 - 180
23: Lord_Soth - 180
24: x_execute_x - 179
25: Ice_Sabre - 178


Top 25 player killers - score is number of kills
1: Wolf - 132
2: Hells_Archer - 117
3: Phadera - 117
4: Lord_Sam - 113
5: DemonWarrior - 105
6: EndBringer - 104
7: Drew_Royal - 103
8: Black_Waltz3 - 101
9: DaRk_RoCk - 100
10: urgonnadie5 - 100
11: Lord_Stan - 99
12: SilencerLD - 95
13: robsimons - 94
14: shawn6 - 89
15: Mortis - 88
16: Ghost - 85
17: snorch - 85
18: matt_smith1 - 84
19: john246 - 84
20: Robin_Hood2 - 83
21: LovinHacking - 82
22: adam2000 - 82
23: God - 81
24: ace2you - 80
25: RCCBrasil - 80


Top 25 smiths - score is mining + smithing
1: dmonik - 110
2: STarlude - 98
3: natslayer - 97
4: Lord_Soth - 97
5: Viikate - 97
6: lightning - 96
7: The_Unknown - 92
8: beef - 91
9: hurkules - 90
10: Deckchair - 90
11: Kpac - 90
12: Snowdog - 89
13: S_H_A_R_K - 89
14: Rodrigo - 88
15: JB - 88
16: DOC_IRON_9 - 87
17: Vit - 86
18: BlueRose13x - 86
19: MysticsMagic - 85
20: AvalonX - 85
21: TheReturnOfX - 84
22: Dizier - 84
23: RoaDDoGG - 83
24: Sir_Beachy - 83
25: KaGi - 83


Thanks for reading this newsletter, have fun playing the game!

Andrew Gower (RuneScape creator)
and Paul Gower (Map and Quest designer)

-----------------------------------------------------------------
You are receiving this newsletter because you asked to receive it when
you created your RuneScape character. We do not send unsolicited email.

To be removed from our mailing list just send a blank email message to:

Runescript Guide (circa 2001)

<NOTE: Runescript is used by the Runescape server for quests, skills, etc.>

Runescape script syntax

Script syntax

Scripts are a series of blocks of the format

=Trigger,subject,[object]
*command;
*command;
etc...

Available script triggers

The first line of each block determines when it is executed
The following triggers are available

  • takeobj, dropobj, useobj, wearobj, removeobj, spellobj
  • talknpc, attacknpc, usenpc, killnpc, escapenpc, attackbynpc, spellnpc
  • oploc1, oploc2, useloc, spellloc
  • opinv, useinv, spellinv
  • opbound1, opbound2, usebound, spellbound
  • attackplayer, useplayer, spellplayer
  • spellself, spellground, label

    Subject and object

    The subject is used in conjunction with the trigger to determine when the script is run.
    e.g. 'takeobj, axe' - would be triggered if the player took the axe.

    The 'skill', and 'use' commands use both a subject and object
    e.g. 'useobj,cow,bucket' - would trigger if you use the bucket with the cow.
    e.g. 'skillnpc,orc,shockbolt' - would trigger when casting shockbolt on an orc.

    The skills command can have just an object, but no subject
    e.g. 'skillnpc,_,shockbolt' - would trigger when casting shockbolt on any npc.

    Condition code

    The * at the start of each command line is a condition code.
    The scripts use a single status flag which it set by lines starting 'if'.
    The condition code then remains the same until changed by another if command
    If the flag is true, then lines starting with a * or + will be executed
    If the flag is false, then lines starting with a * or - will be executed


    Runescape script command summary

    Notes:
    One server cycle is 0.6 seconds, so 100 cycles = 1 minute
    Probabilities range from 0=impossible to 256=certain

    Misc commands

    thinkbubble();Should only be called if the player has just triggered a 'use' script. Displays a thinkbubble above the players head which contains the object they are currently using. For instance this is used to display the axe above your head when you chop a tree down.
    ifmale();Test the player's gender, useful for getting gender specific language correct in the scripts.
    nodefault();Stops the game executing the default action when this script is complete. For example can be used to stop an object from being taken, or a spell being cast.
    openshop(shop);Displays the specified shop dialog, and allows the player to buy and sell items. Doing so frees the npc, so no npc specific commands can be used after this point.
    displaybalance();Displays the players current bank balance

    Control flow based

    Delay(delay);Delays both the script and the player for the specified number of server cycles
    Pause(mindelay, maxdelay);Pauses the script for a random amount of time inbetween the specified minimum and maximum. The player is free to do other stuff meanwhile, useful for making trees regrow etc.. Be very careful when using delay or pause, as the player may have logged out meanwhile. Normally this doesn't matter, but don't rely on things after it to do anything permament which affects the player (such as setting a player variable) as it may be lost.
    modpause(mindelay, maxdelay);Similar to the pause command, except the total delay is modified by the number of players in the game. If more than 60 people are playing, the delay is calculated as: delay=(delay*60)/player-count;
    ifrandom(probability);Randomly sets the condition flag to true or false. A probability of 0=impossible, and 256=certain
    jump(labelname);Jumps to the script block with the trigger 'Label,labelname' The other script will not return to this one
    fork(labelname);Starts the script block with trigger 'Label,labelname' running at the same time as this one! Be careful with this command :-) If the target block has no pause, wait, say, or npcsay commands then will behave like a gosub command. (due to non-preemptive multitasking)
    end();Terminates processing of the current script block

    Chat based

    mes(string);Displays the specified message at the bottom of the player screen
    say(string);Makes the players character say the specified string, all nearby people will also see this. The command will then automatically delay the script depending on the length of the string.
    multi2(string, label, string, label);Displays a multiple choice menu with 2 items, depending which the players chooses the relevant block of script will be called. Note: The player may decide not to choose either item in which case the script terminates
    multi3(string, label, string, label, string, label);Displays a multiple choice menu with 3 items
    multi4(string, label, string, label, string, label, string, label);Displays a multiple choice menu with 4 items

    Movement based

    changelevel(int level);Moves the player to the specified level, without changing the x and y position. Level-codes: 0=ground floor, 1=1st floor, 2=2nd floor, 3=basement
    changelevelup();Moves the player up one level if possible.
    changeleveldown();Moves the player down one level if possible.

    Stat based

    ifstatrandom(stat, base-probability, top-probability);Like the random command but stat modified, if the stat is 0 the base-probability is used, if the stat is 100 the top-probability is used. If the stat is inbetween then the 2 values are interpolated.
    advancestat(stat, base, exp);Permanently increases the specified stat, and sets the new levels as the current normal. The equation used is: stat+=base+exp*stat;
    addstat(stat, constant, percent);Temporarily adds constant+(current*percent)/100 to the 2nd players specified stat. Where current is the current level of the stat
    substat(stat, constant, percent);Like addstat, except it subtracts.
    healstat(stat, constant, percent);Like addstat, but won't take the players stat above the normal level
    ifstatup(stat);Sets the condition to true if the players stat is currently above the normal level, false otherwise
    ifstatdown(stat);Sets the condition to true if the players stat is currently below the normal level, false otherwise
    ifstatabove(stat,value);Sets the condition to true if the players stat is above (but not equal to) the specified value, false otherwise
    ifstatatleast(stat, variable, value);Sets the condition to true if the players stat is more than or equal to getvar(variable)+value, false otherwise
    giveqp(value);Gives the player the specified number of quest points
    ifqp(value);Sets the condition to true if the players quest points are more than or equal to the specified value, false otherwise

    Variable based

    ifvar(variable, value);Sets the condition flag to true if the variable is equal to the specified value. Sets false otherwise
    ifvarmore(variable, value);Sets the condition flag to true if the variable is greater than (but not equal to) the specifed value. Sets false otherwise
    ifvarless(variable, value);Sets the condition flag to true if the variable is less than (but not equal to) the specifed value. Sets false otherwise
    setvar(variable, value);Sets the variable to the specified value. A variable can only hold the value 0-127. Always try to zero variables when they are no longer needed to save memory.
    addvar(variable, value);Adds the specified amount to the variables value. A variable can only hold the value 0-127.
    subvar(variable, value);Subtracts the specified amount to the variables value. A variable can only hold the value 0-127.
    randomvar(value);Sets the variable 'random' to a random integer between 0 and value-1
    addbigvar(variable, value);Add the specified value to the variable. A big-variable can hold values between 0-268435455
    subbigvar(variable, value);Subtracts the specified value from the variable. A big-variable can hold values between 0-268435455
    ifbigvarmore(variable, value);Same as ifvarmore except for big-variables

    Coordinate based

    These commands all require a map coordinate to operate. The coordinate used can be set using the setcoord command below. If the setcoord command is not used the system will attempt to use the coordinate of the item the player is currently interacting with.
    setcoord(coordinate);Sets the active coordinate to the specified absolute position. The coordinate can only be worked out with the aid of the runescape map editor.
    playercoord();Sets the active coordinate to the players current position.
    addobject(object, count, time);Adds the specified object at the active coordinate. If the object is stackable - count indicates how many to place in the stack. Time indicates how long in server cycles before the object despawns.
    addnpc(npc);Spawns the specified npc at the active coordinate.
    addloc(location);Adds the specified location at the active coordinate.
    ifblocked();Sets the condition flag to true if the square indicated by the activate coordinate is currently blocked, sets false otherwise
    teleport();Teleports the player to the active coordinate.
    showeffect(type);Displays a special effect animation of the specified type at the active coordinate.

    Inventory based

    give(object, count);Gives the specified number of the specified object to players inventory
    remove(object, count);Removes the specified number of the specified object from players inventory (or as many as possible)
    ifworn(object);Sets condition flag to true if player is wearing specified object
    ifheld(object, count);Sets condition flag to true if player is holding specified object
    The commands below may only be used when player is interacting with an object in their inventory
    sellinv(percentage);Removes the active inventory object from the players inventory, and replaces it with the specified percentage of it's value in gold coins
    delinv();Deletes the active inventory object from the players inventory

    Object based

    These commands may only be used when a player is interacting with an object on the ground
    ifobjectvisible();Sets the condition code to true if a line of sight can be traced between the player and the object, false otherwise
    takeobject();Removes the object from the ground and places it in the players inventory
    delobject();Removes the object from the world

    Location based

    These commands may only be used when a player is interacting with a location
    changeloc(location);Changes the location to the new specified location type
    upstairs();Moves the player up a level, and adjusts their position horizontally to account for the stairs
    downstairs();Moves the player down a level, and adjusts their position horizontally to account for the statis
    delloc();Removes the location from the world

    Boundary based

    These commands may only be used when a player is interacting with a boundary
    changebound(boundary);Changes the boundary to the new specified boundary type
    boundaryteleport();Walks the player through the boundary to the opposite side. Useful for locked doors, and secret pasages.

    Npc based

    ifnearnpc(npc);Attempt to find a nearby npc of the type specified. Sets the condition flag to true if sucessful. If succesful the player is marked as interacting with the npc so the other npc commands can also be used.
    ifnearvisnpc(npc);Simliar to ifnearnpc, except the npc must be within 8 squares, and there must be a line of sight between the player and npc for the command to succeed.
    The commands below may only be used when player is interacting with an npc
    npcsay(string);Makes the npc say the specified string, all nearby people will also see this. The command will then automatically delay the script depending on the length of the string.
    npcbusy();Sets the npc to busy, and stops it walking around. Not normally necessary as the system attempts to trigger this automatically.
    npcunbusy();Sets the npc to unbusy, and allows it to walk around again. Not normally necessary as the system attempt to trigger this automatically.
    shootnpc(projectile);Fires a projectile at the npc
    npcattack();Causes the npcs to pursue and attack the player
    ifnpcvisible();Sets the condition code to true if a line of sight can be traced between the player and npc
    addnpcstat(stat,constant,percent);Temporarily adds constant+(current*percent)/100 to the npcs specified stat
    subnpcstat(stat,constant,percent);Like addnpc stat, except it subtracts
    healnpcstat(stat,constant,percent);Like addnpc stat, but won't take npcs stat above the normal level
    ifnpcstatup(stat);Sets the condition to true if the npcs specified stat is currently above the normal level, false otherwise
    ifnpcstatdown(stat);Sets the condition to true if the npcs specified stat is currently below the normal level, false otherwise
    delnpc();Removes the npc from the world
    changenpc(npc);Changes the npc into a the new npc type specified!
    npcretreat(time);Causes the npc to run away from the player for the specified number of server cycles

    Other player based

    These commands may only be used when a player is interacting with another player.
    addplaystat(stat, constant, percent);Temporarily adds constant+(current*percent)/100 to the 2nd players specified stat. Where current is the current level of the stat
    subplaystat(stat, constant, percent);Like addplaystat, except it subtracts.
    healplaystat(stat, constant, percent);Like addplaystat, but won't take the players stat above the normal level
    ifplaystatup(stat);Sets the condition to true if the 2nd players stat is currently above the normal level, false otherwise
    ifplaystatdown(stat)Sets the condition to true if the 2nd players stat is currently below the normal level, false otherwise
    omes(string);Displays a message on the 2nd players screen
    ifplayervisible();Sets the condition code to true if a line of sight can be traced between the 2 players, false otherwise
    shootplayer(projectile);Fires a projectile at the 2nd player