Repository navigation
Local Testing
TL;DR: On a local server you play an immortal with Fenia rights.
load,vnum,stat,goto,forceandadvancecover most checks. To change profession, race, hometown or level of a character, assign the field witheval.api()prints what a Fenia object can do.gquest startruns a global quest with nobody online. Use when: you built a local server and want to try a change: spawn a mob or item, become another class, test a quest, watch a trigger fire. Source of truth:dreamland_code/plug-ins/comm/wizard.cpp(load,vnum,stat,advance,goto),dreamland_code/plug-ins/comm/set.cpp,dreamland_code/plug-ins/feniaroot/ceval.cpp,dreamland_code/plug-ins/feniaroot/ccodesource.cpp,dreamland_code/plug-ins/gquest/command/cgquest.cpp,dreamland_code/plug-ins/gquest/core/globalquestinfo.cpp,dreamland_code/plug-ins/admin/cprofile.cpp,dreamland_world/commands/,dreamland_world/gquests/Verified: 2026-11-02 against dreamland_code a7c4fd10, dreamland_world a35c62ce, dreamland_fenia_public c28874b
Log in as Kadm or Cadmus first, see Local-Setup. Both carry the coder attribute, so every command below is allowed. A normal immortal needs level 110 for eval or a Fenia security attribute, and the coder attribute for cs load.
A fresh server has none of the public Fenia helpers (.tmp.chance and the like) until you load them with cs load, see Local-Setup.
Immortal commands accept English names. The in-game help has the full text: help <command>. wizhelp lists the immortal commands with a one-line hint each.
Spawn a mob or an item by vnum:
load mob 3001
load obj 3000
load obj 3000 50
load obj takes an optional level, up to your trust. An item you can pick up lands in your inventory, anything else on the floor. A mob appears in your room.
Find a vnum by name. The search phrase is the whole rest of the line, quotes optional:
vnum obj beer
vnum mob baker
vnum type gem
vnum type <item_type> lists every object of that item type. mwhere, owhere and rwhere find where something is right now, or which rooms have a word in the name.
Print the full data of a thing. The same command is behind the stat menu in the web client:
stat obj <name>
stat mob <name>
stat char <name>
stat room
stat room 3001
stat with no type tries an item first, then a character, then a room.
goto 3001
goto <mob or object name>
at 3001 look
transfer <name> 3001
purge <name>
purge
restore <name>
peace
goto takes a vnum or the name of a mob or object. at runs one command somewhere else and brings you back. purge with no argument destroys every NPC and object in the room. peace stops all fighting in the room.
Assign the field with eval. A bare name on the left writes to the character that runs eval:
eval profession=.Profession("warlock")
eval race=.Race("satyr")
eval hometown=.Hometown("solace")
eval level=99
To change someone else, find them first. get_char_world inside eval resolves against you, so it takes a player or mob name:
eval get_char_world("gosha").profession=.Profession("ninja")
eval get_char_world("gosha").race=.Race("human")
eval get_char_world("gosha").hometown=.Hometown("midgaard_neutral")
Valid names are the file names, without .xml, in these folders of dreamland_world:
| Field | Folder | Note |
|---|---|---|
| profession | professions |
mobile is not a player class |
| hometown | hometowns |
|
| race | races |
player races have type DefaultPCRace in the root node |
Kadm ships with the profession universal, which has no file in professions (unverified what the engine does with it). Give Kadm a real profession before you test skills. The eval command takes one expression. For several statements see Fenia-Scripts.
set skill Kadm all 100
set skill gosha all 100
advance gosha 100
set char
-
set skill <player> all <rating>learns every skill to that rating. It works on players only. -
advance <player> <level>sets a level from 1 to 110. The target must be in your room. Hit points and other values are recalculated, and not always neatly when you lower a level. -
eval level=99changes only the number and recalculates nothing (from the old guide, unverified). -
setwith no arguments lists its types:char,skillandhelp(which prints that list). There is noset mob,set roomorset obj. Useoeditandmeditfor prototypes, see OLC.
There is no set for a single live mob or object. Override an instance with eval instead, for example eval get_char_world("goblin").max_hit=500. Only fields marked writable in the API can be assigned, see below.
Put the two profile files of the new character into the backup folders and restore them from the game. Suppose the character is gosha, with gosha.player and gosha.xml:
cp gosha.player var/db/oldstyle/backup
cp gosha.xml var/db/backupprofile recover gosha
finger gosha
profile backup <name> does the reverse and saves both profiles into those folders. profile undelete and profile unremort restore from the delete and remort folders. A new character can also be created the normal way through port 9000, which runs the creation dialog from the seeded Fenia database (unverified here, the dialog was not run for this page).
force <name> smile
eval get_char_room("valkyr").interpret("smile")
force all <command> makes every player of lower trust do it (it needs trust 105, and skips mobs). Forcing a single player needs trust 106, forcing a mob has no such limit, and you can only force a target of lower trust than yours. eval ... .interpret(...) runs a command as that character, see the API for interpret_cmd and interpret_raw.
wizhelp
commands
commands list
commands show look
skills
skills spells
skills passive
-
commandsshows the commands by help section,commands listshows all of them with aliases,commands show <name>shows one with its aliases and section. -
skillslists the abilities your character has. Addskills,spells,activeorpassiveto filter. Useskills allfor the whole table.
Every Fenia object can print what it offers. ptc prints a value to the character running eval:
eval ptc(api())
eval ptc(get_char_world("valkyr").api())
eval ptc(.get_mob_index(3000).api())
eval ptc(.get_obj_index(3000).api())
eval ptc("text".api())
eval ptc(.api())
In order: yourself, a mob in the world, a mob prototype, an item prototype, a string, the root object. rtapi() is the same idea for what has been set at run time, for example triggers added by scripts. The generated reference with every field and method is https://dreamland.rocks/feniaapi.html. See Fenia-API.
Never pass a negative vnum to an index lookup, see Troubleshooting.
gquest with no arguments prints the syntax. For immortals the main subcommands are:
gquest list
gquest start <id> [<min_level> <max_level>] [<minutes>] [<scenario>] [<playerCnt>]
gquest stop <id>
gquest time <id> <minutes>
-
<id>comes fromgquest list. The stock ids aregangsters,invasionandrainbow. - Level limits apply only to quests that use them, such as
gangsters. Other quests start with the minutes argument. -
<minutes>defaults to 30. -
<scenario>picks a variant.rainbowhasrainbowandsins.invasionhasbubbles,football,icebergandlocust. -
<playerCnt>pretends that many players are online, so a quest can start in an empty world.
Examples:
gquest start gangsters 5 10 29
gquest start rainbow 30 rainbow 5
gquest start rainbow 30 sins 5
gquest start invasion 30 locust 7
gquest list
gquest stop gangsters
The first starts bandits for levels 5 to 10 for 29 minutes. The next two start the rainbow or the seven sins for 30 minutes as if five players were online. The fourth starts an invasion as if seven were online. A quest of the rainbow type announces itself after one minute. gq works as an abbreviation. The files in dreamland_world/gquests are written by the server, so do not edit them by hand.
Fields you assign on characters and objects, and anything stored under .tmp, are kept in the Fenia database and survive restarts. Debug triggers you attached stay attached. Remove them when you are done. To start over, re-seed the Fenia database, see Troubleshooting. Purge mobs and items you spawned.
Start here
Get running
Contribute
- Contribute
- Contributing Workflow
- Code Style
- Accessibility
- Writing Player Text
- Game Design Principles
Build areas
- Building
- OLC
- OLC Rooms
- OLC Mobiles
- OLC Objects
- OLC Resets
- OLC Line Editor
- OLC Other Editors
- Area Format
- Area Quests
- Mob Forms and Parts
Fenia
- Fenia
- Fenia Language
- Fenia Triggers
- Fenia Gotchas
- Fenia API
- Fenia Scripts
- Fenia Behaviors
- Fenia Skills and Spells
- Fenia Cookbook
- Fenia Grammar
Engine
- Engine Architecture
- Engine Time and Pulses
- Output Format
- Mechanics Combat
- Mechanics World
- Data Configs
- Item Power
Localization
Clients
More