Gamedesign FAQ

Digging complexity for terrain elements:

info:0:1 – tree
info:0:2 – rubbles, sandwall, web
info:0:3 – magma, icewall
info:0:4 – quartz
info:0:5 – granite
info:0:6 – door
info:0:7 – high mountain


d - 0  Black        w - 1  White        s - 2  Slate
o - 3  Orange       r - 4  Red          g - 5  Green
b - 6  Blue         u - 7  Umber        D - 8  Light Dark
W - 9  Light Slate  P - 10 Light Purple y - 11 Yellow
R - 12 Light Red    G - 13 Light Green  B - 14 Light Blue
U - 15 Light Umber  p - 16 Purple       v - 17 Violet
t - 18 Teal         m - 19 Mud          Y - 20 Light Yellow
i - 21 Magenta-Pink T - 22 Light Teal   V - 23 Light Violet
I - 24 Light Pink   M - 25 Mustard      z - 26 Blue Slate
Z - 27 Deep Light Blue

How new negative stats works?

The result must compel to the minimum value for each one. This means:

  • for MANA, STEALTH, SEARCH, INFRA, TUNNEL, SPEED, LIGHT, DAM_RED, no minimum required unless the underlying stat has to be positive
  • for BLOWS, num_blows must be >= 1 (one bpr)
  • for SHOTS, num_shots must be >= 10 (one spr)
  • for MIGHT, ammo_mult must be >= 1 (multiplier of x1)
  • for MOVES, num_moves must be >= 1 (energy = base energy)

Concerning MOVES, this means a value of -1 on object or race/class will have no effect, but you will need to find something that has +2 MOVES to counterbalance it if you want to benefit from faster movement speed. At least until the V team finds a way to expand energy differently.

Order of effects for objects?

Object effects are handled bottom to top so image is the first one in fact, eg

alloc:40:25 to 100

First thing which will be active – you will be paralyzed.

Why there is a players file in sever folder?
It’s new feature: game will create a “players” file that will store player names and ids instead of storing them in the “server” savefile, so deleting the server savefile for terrain updates will now be completely safe.

Target dummy doesn’t reappear after ‘server’ wipe (townies numbers changed from -1 to 100)
Town needs to fill the 100 first.

How to generate rod of polymorph with admin char?

To generate an item, you need to pass the exact kind name: “dagger”, “lantern”, “experience”, “polymorph”, … so putting “potion of experience” or “rod of polymorph” won’t work. Problem is: if you use “polymorph” for kind name, the code will pick the FIRST kind with that name, which mean “wand” and never “rod” (same for “strength” for example — you will get a potion and not a ring). To fix this, it’s possible to put a symbol at the beginning of the name so the parser knows what item to generate: !strength for a potion, =strength for a ring. But there’s still a problem remaining: wands and rods use the same symbol “-“. To fix that last problem, the parser uses “*” to recognize rods.

So the answer is: to generate a rod of polymorph from the “&42k” menu, you need to specify “*polymorph”.

From forum oook: You need to set “dice:2”. Currently, setting “dice:1” will trigger the effect and immediately decrease the turn count, setting it to zero and ending the effect without having it last a turn.
So.. is it fixed atm? Eg effect:TIMED_INC:OPP_CONF
will work for next turn?

Yes, it’s fixed in pwmang. Decrease timeout occurs just before command processing so each command triggering an effect lasts 1 real turn.

Admin’s Mass Banishment effect doesn’t dissapear

All commands in the “summoning” menu are “toggle” commands and work permanently. To stop summoning/mass banishing, you need to press “summoning off” in the menu.

Is there DEC_BY effect?

Not yet:

I’ve got error 

020720 100233 Cannot place object at row 7, column 49!
020720 100233 Savefile is corrupted or too old -- couldn't load block objects

It’s a problem with object. As temp solution you could edit load.c and remove “return -1;” at line 1348 (near to message “Cannot place object at row %d, column %d!”), so the server will just discard the object without stopping.

How to change gold drop? (gold drop table)

obj-make.c → tic u16b level_golds[]

I’ve noticed that pdcurses.dll didn’t compiled via setup.bat , but it’s included to PWMA binaries

pdcurses is not compiled it’s provided as dll

How pits works?

Pits and nests use “fake” granite walls that look like granite walls but are in fact permanent so mobs/players can’t dig them to cheeze the pit/nest.

Should I put it like:

0 🙂

What is cavern? What does CAVERN flag do exactly?

Level looks like a cavern, it’s base V level — there are no rooms, just cavernous corridors. Flag adds more chance to spawn cavern lvl.

What means dice there?
and there it’s 20:

Dice is +todam (used in effect_calculate_value)

What the difference between:
EFFECT(BOW_BRAND, false, "dam", 0, EFINFO_NONE, "makes your missiles explode")
EFFECT(BOW_BRAND_SHOT, false, "dam", 0, EFINFO_NONE, "brands your missiles")

Bow_brand is flat damage or property (like piercing), bow_brand_shot is a real brand (fire, cold, poison…)

how works this one:
spell:Piercing Shots:30:11:50:50:0
desc:Turns your missiles into deadly piercing shots.
spell:Explosive Shots:32:12:54:55:0
desc:Turns your missiles into explosive shots.
Is it enhance projectiles (equipment) or applied ‘on fly’ at particular shot?

it’s like any other brand, enhances missiles

Will DAM_RED flag work as negative? eg will value:1:DAM_RED[-10] for a race make it get 10% more damage from monsters?

in fact yeah it will work heh. DAM_RED is flat though, -10 means 10 more damage not 10%

Does ‘void’ terrain do something? is it simply deco terrain?

‘void’ is just black terrain… emptiness

Will it be ok to do not use FLOOR flag for floors? Is it important to use it?

You can not drop items on non-floors

Is it possible to assign ego item to admin_stuff.txt? eg: equip:light:Lantern of Brightness:1

Nope, must be regular item

Where pit floor terrain (prevents teleport) used?

It is used in pits obviously (you get a “OUUUUUUUH” sound when you enter). All pits are no_teleport because it’s stupid to have mobs in pits that will all teleport around when you enter so the floor prevents teleportation.

How race attack flags (eg ‘dragons’) will stuck with ‘monk’ flags?

When char has race attack + class attack (eg dragon monk) the race attack has 2/3 chance to get picked and the class attack 1/3 chance

How ‘chance’ works at attack?

Chance for attack is simply chance of failure, which applied for EACH attack-stroke. So 30% means you have 70% of doing the attack and 30% chance of game rerolling to do another attack. eg, 70% chance of doing circular attack for hydra means it must have 3 whatever attacks + 7 attacks that are 50:0:CIRCLE

What does mean alloc probability 0? some artifacts got zero: name:of Undeath ... alloc:0:5 to 100 while some got positive value..

Alloc on artifact is not used since it’s recalculated anyway, so the ones with positive are simply the ones from V where I didn’t remove the value

Will this class spell spell:Detonate:30:20:70:60:0 effect:DETONATE works if I’ll assign it to the monster? eg to create monster Kamikaze yeek; something like blow:CRUSH:DETONATE:3d3

No, it only works on summons

Is it possible to assign to monsters HP not like hit-points:2 ; but hit-points:1d2 ?


I’ve noticed that if player logged off in the dungeon (tested in newbie one) – level become static. I’m checking it again and again – and it’s the same lvl. For how long it will remain static?

depends on cfg parameter LEVEL_UNSTATIC_CHANCE, it’s random based on depth and value in cfg file

I’ve got an error in logs:  Unable to (re-)stock store 10. Please report this bug. in a custom bookshop. But it seems in order.

It seems you have too much “always” lines which exceeds the capacity of the store (24) – as books (eg nature book) actually show 3 items, not one. You could change max capacity of store in constants.txt

Also if you got such error:

150420 133235 Server savefile does not exist. also could mean error in shop, eg. for example you don’t have ‘normal’ items while have ‘turnover’.

What does ‘FPS = 75’ in config means?

75 FPS = number of frames per second = number of times the game checks for input per second. The default value in the code is… ONE. This means if you forget to put a mangband.cfg file in your directory, ALL players will move ONCE per second. FPS = 75 is the MAngband default (check every 13ms). If you lower to FPS = 60, you’ll make the game slower (check every 16ms).


FRIGHTENED just flees; it’ not ai_annoy just pure afraid.
SMART will use spells intelligently, like use heal when wounded; it’s not ai_learn server option which just will remove bad spells, for example, fire bolt if you’r immune to fire.

How to make trap or spell to decrease amount of players HP from an absolute value?

PLAYER_HP. It’s used in shape.txt for vampire form, eg

expr:B:PLAYER_HP:- 5

How to change default client options?

Add desirable options to pref.prf file

Why ‘msg_self’ doesn’t work for objects which I’ve added?

msg_self is attached to an effect, not to the object. If the object has no effect, use effect:END_INFO as a dummy effect. For example:

alloc:30:30 to 100

This dummy potion just displays a message without doing anything else.

Generate random artifact in admin menu doesn’t work. Only message: There is nothing on the floor

To generate a random artifact, you need a normal object on the floor and the option will turn the object into a randart.

What is RAND_25 or RAND_50 flags?

Chance of a monster to stagger (random movement). 

DROP_60 and DROP_90?

Specify probabilities of a single drop.

DROP_1 and DROP_2?

Specify an absolute count for the number of drops.

Hydra has cold vulnerability. Can it be covered with resistance?

Normal cold vulnerability: resistance makes you neutral, you need double resist to be resistant and immunity to get immune.

Vulnerability could be assigned to any element? or only to basic ones?

Need to check. Don’t think it works, since you have hurt_light flag for example and not res_light[-1]

Why dragon race to -10 bonus, while in spoiler it’s written -20?

Polymorphed players only get half bonus/malus from race. And half anything (ent penalty -2 to speed becomes -1 if polymorphed). 

Please note that when you start at char creation, the polymorph is not in effect.

Which is minimum stat possible?

Stat min is 3 whatever you assign to race. Internally it’s lower but the used stat is min to 3.

How does shapes works for monsters?

This knowledge is still uncertain.. Need more info

  • Shapechange is only one way, you can’t put shapechange on a shape it will not work.
  • Shapechange is one time — mob stays like that until death.
  • If monster A will shapechange to monster B; monster B can not shapeshift to monster C (B become as just a placeholder).
  • so if A -> B … B can not have flag for shapechange into C. You will need 2 monsters B1 and B2 (for new one to transform – allocation and shapechange spell)
  • if monsters don’t have shapes, the game uses type of monster from the “summon” spells, eg druid has s_animal so he can shapechange into any animal
  • when a monster changes right now – they just change their race, but keep their current HP, status effects, and inventory, but takes new parameters from race: spellcasting and other abilities, hearing, smell, AC. Please note that speed is a special case because, while average speed is defined in the race, speed for an individual monster is allocated at birth, and may be a couple of points above or below average (details: struct monster_race → struct monster in monster.h.)

It’s written that monsters immune to certain elements (eg IM_FIRE), but I don’t see RES_ flag there. Why?

Even if monster IMMUNE – you still can damage it. It will get ~10% of damage.

Will it work in stores:


Nope, no duplicates.

What is max-min normal slots in shops?

You can’t have less slots for turnover, then normal items. eg:

We have 14 normal items and 12 always:
slots:13:14 will do (as you need at least one slot for  drops – even at no_selling server people could ‘sell’ items to stores to ID them).

I wanna add a new monster, a new hydra

base:hydra and base:dragon should not be touched, you would break the races

How does rule and rule-flags works in dungeon.txt?

Let’s examine this example:


It means that it’s 50% to spawn ORC flag monsters and “koO” symbol monsters; 30% to spawn TROLL flag monsters; 20% for anything else

How to change password if player forgot it?

Simply create an account with a password, open the “account” file, it’s simply a text file with the account name + the encrypted password. So if you replace the player’s password by the one you generated, he will have a new password.

How to prohibit certain monster (eg death golem) to appear in pit?

Pits have flag restrictions for this.

What is the number after curse, eg curse:hallucination:100 ?

It’s the chance to remove curse.

How to solve problem with player who block entrances to buildings?

Here’s how ‘bumping/switching places’ code works: each time a player moves, the direction he faces is saved into a “last direction” variable; if the last direction of a player is equal to the opposite of the last direction of another player, they “switch places”; otherwise, they “bump” into each other. It’s the same in MAngband. There is a problem possible if players move you around by switching places while you’re AFK or switch places while you’re in a shop (imagine a fire immune player switching place with someone not fire immune in Carn Dum and putting the other player upon a lava tile!).

Whats about new lightning system in PWMA?

  • torch: used in corridors for torchlight grids ONLY (‘view_yellow_light’ options is turned off by default in Tangaria)
  • los: used in rooms when in los
  • lit: used anywhere else
  • dark: not used

Terrain flags:

NONE – empty flag
LOS – line of sight (not in-game yet)
PROJECT – allow projectiles to pass through the feature
PASSABLE – allow to creature/player pass through the feature
INTERESTING – when we use look – it’s a grids which will be shown without p
PERMANENT – permanent wall; can’t be destroyed // && ROCK ?
EASY – easily passed through (not in-game yet)
TRAP  – feature can hold a trap
NO_SCENT – doesn’t carry player scent
NO_FLOW – doesn’t carry monster flow information (True if the cave square doesn’t allow monster flow information.) ???
OBJECT – can hold objects

TORCH – can be lit by light sources (becomes bright when torch-lit)
/*HIDDEN, “Can be found by searching”)*/
GOLD – is a mineral wall with treasure (magma/quartz) // && INTERESTING to become treasure
CLOSABLE – can be closed
FLOOR – clear floor
WALL – solid wall (not rubble)
ROCK – diggable; gives messages: You dig in the rubble / You have removed the rubble
GRANITE – normal granite rock wall. Essential for dungeon creation! Without it dungeon will reset all walls features and will use default walls.
DOOR_ANY – any door
DOOR_CLOSED – closed door
SHOP – shop entrance
/*DOOR_JAMMED, “Is a jammed door”)*/
/* DOOR_LOCKED – locked door*/
MAGMA – is a magma wall
QUARTZ – is a quartz wall
STAIR – stair
UPSTAIR – up staircase
DOWNSTAIR – down staircase
SMOOTH – should have smooth boundaries (for dungeon generation)
BRIGHT – internally lit (like a lantern)
FIERY is fire-based; V terrain for lava stream in dungeon // && islava

/* PWMAngband */
FLOOR_SAFE – safe floor
FLOOR_OTHER – other floor
BORING – to make terrain elements do not be visible in the dark // square_isnormal()
PIT – pit // should be FLOOR
BORDER – is a border
ARENA – ispermarena()
DOOR_HOME – ishomedoor()
TREE – istree()
WITHERED – withered tree iswitheredtree() // && TREE
DIRT – isdirt()
GRASS – isgrass()
CROP – iscrop
WATER – iswater
LAVA – pwmang terrain (lava pool), in wilderness  // islava
MOUNTAIN – ismountain
FOUNTAIN – isfountain
DRIED – is dried out // isdryfountain
NOTICEABLE – is noticed when pathfinding // must be something from V that is unused in pwmang
PREFIXED – addes in prefix in look targeting // isprefixed
PLOT – part of a plot; don’t build on other buildings or farms // square_isplot
METAMAP – only displayed on the metamap
SAND – sand wall // ismineral_other
ICE – ice wall // ismineral_other
WEB – isweb
DARK – dark wall // ismineral_other
NETHER – nether mist // isnether
VENDOR – prefix for “the entrance to the ” // is_vendor

square_isstrongtree = TF_TREE && !TF_WITHERED

rubble = !TF_WALL && TF_ROCK

Dungeon Master Commands

Level Commands

Static your current level
Makes the current level permanent, as if there were players on it.

Unstatic your current level
Resets the current level, as if there were no more players on it.

Enter manual design (new level)
Wipes the current level and makes it suitable for editing.

Enter manual design (same level)
Makes the current level suitable for editing without starting anew.

Exit manual design (create town)
Saves the modifications on the current level and checks if it’s suitable for a town.

Exit manual design (create level)
Saves the modifications on the current level and checks if it’s suitable for a normal level.

Building Commands

Set Feature
Defines the feature for building commands.

Place Feature
Places the feature at the current location.

Draw Line
Draws a line of the feature from the current location.

Fill Rectangle
Fills a rectangle of the feature from the current location.

Build Mode On
Starts placing the feature while moving around.

Build Mode Off
Stops placing the feature while moving around.

Summoning Commands

Summons a monster from a specific depth.

Summons a monster from a specific race.

Mass Banishment
Banishes all monsters while moving around.

Summoning mode off
Stops banishing all monsters while moving around.

Generation Commands

Generates a vault at the current location.

Generates an item at the current location.

Random artifact
Generates a random artifact at the current location.

Random artifact (reroll)
Rerolls a random artifact at the current location.

True artifact
Generates a true artifact at the current location.

Player Commands

Changes the Dungeon Master’s permissions.

By Name
Changes another player’s permissions.

Visual Commands

Display PROJ_XXX types
Displays bolts, beams and balls for each projection effect.

Manage XBM orders

Selects the previous order.

Selects the next order.

Cancel order
Cancels the selected order.

Debug Commands

Perform an effect (EFFECT_XXX)
Performs an effect given by name and parameters.

Create a trap
Creates a trap at the current location.

Advance time
Advances time by 1 to 12 hours.

How to connect server console

Using PuTTY:
“- create a session with parameters: host name = localhost, port = 18346
(or whatever value you have set for TCP_PORT in mangband.cfg), connection type = Telnet”
– if this works, a window will open with the text “Connected”
– enter the console password (value set for CONSOLE_PASSWORD in mangband.cfg)
– if the password is correct, you will see the text “Authenticated”
– press “help” to see a list of commands
– press “Enter” after each command to go back to the left of the window (it’s not automatic)

There are few commands right now. The most used are “who” to list the players currently online, “whois” to get a detail of a player, “kick” to kick a player out of the game, “wrath” to kill cheaters and “shutdown” to shut the server down. The complete list of commands is in control.c.



Leave a Reply

Your email address will not be published. Required fields are marked *