Building: Simulation Programs
Simulations are our implementation of instanced content. Unlike some instancing
systems, these are explicitly instanced in character, being a virtual reality
simulation akin to holodecks in Star Trek. Multiple players may enter the same
simulation, but there can also be different copies of the same simulation running.
Simulations are used for both training missions, to avoid possible contention, and also as a reason to keep area in the game that otherwise would feel out of character.
How to create a new program
First you must create a container object to contain all the rooms, objects and mobiles that make up your program. The easiest thing to do is create a new zone, but the best thing to do is create a new object inside holo_zone so that we dont have too many zones. If you create it as an object inside holo_zone then every time you create a new room, you must change that rooms's 'start' property to be the ID of your container, and ideally chstr the room's ID to be holo_programname_n e.g. holo_myprogram_1. Maybe one day WebMake will be useful in making programs.For example: relay_zone holds the Academy program, and holo_combat1 (which is inside holo_zone) holds Combat 1.
Mandatory things to set on the container object
- name - should be coloured in ^M, e.g ^MCombat 1^n
- The IsHoloProgram flag
- The 'entry_room' property - Should be set to the ID of whichever room in your program you want players to appear in when the program starts
- desc.external - You must set a useful description on the container object that gives a brief description of the program. This desc gets added to the end of the crystal description when people examine it
Optional things to set on the container object
- cost - the price you must pay to buy this program from a shop
- Flags to restrict who can use a program, e.g. PofficersOnly, OfficersOnly etc.
- rank.min - Anyone with privs lower than rank.min will not be able to run this program. Use a rank shortcut (eg wofficer, cpofficer) not a numeric rank.
- rank.max - I'm not certain why you would want this, and it currently has no effect. If you really need it, ask the admin.
- various lua traps - lua.buy, lua.wont_sellto, see the lua libs page and stat holo_combat3
- The DontHideHoloEq flag if you don't want the simulator to take the player's possessions and cash
- sim.force_remort - set to 1 if players cannot be permitted to play unless remorted
If you haven't set DontHideHoloEq you can specify an eq array containing items which should be simulated in the player's inventory when they start the simulation. This is much like the auto array on mobiles, and you may use the same eq.*.worn and eq.*.wield attributes to make stuff automatically worn or wielded.