Colors (SDL vs classic):
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
There is a file in PWMA repo\lib\customize\sound.cfg which is not up-to-date
sound.cfg is not used it’s a leftover file, sounds are loaded from sound.prf
I’ve added new monsters and now players who use polymorphed forms (eg Dragon, Hydra etc) have wrong appearence what to do?
It’s better to add new monsters in the end of the monster.txt list. But if you already did it, there is a breakpoint/edit k_idx trick:
- Login with the character which form needs to be restored (eg Hydra race player)
- In your IDE put the breakpoint upon process_player, right after comment “Process player commands from the command queue…“:
static void process_player(struct player *p)
- now inspect “p” → look for
k_idx(to find it easier – sort by name)
Also there is another trick: use wand of polymorph on such player to poly it to bat and back. It will require for both players to be hostile to each other.
When I’ve closed the server console window – I had a crush in debug mode
Never stop server with “cross”, it’s unreliable. With Windows you need to always stop server with
Is it possible to use zero min value for items, eg:
nope if you want 0-2 you need to do
I saw in patch notes “Disable banishment in dwarven halls“. Where is it?
It’s the ironman towns, you will onyl see them when you set your server as ironman
Are this new layouts will appear sometimes on random or we need to assign them for dungeons?
It’s dungeon profile so chance is set by cutoff: 1/200 chance for each of them
There are new dungeon layouts…
- hard centre = a cavern level with a GV in the middle
- lair = left part of map is regular level, right part is a cavern with a specific type of monster (like in pits), up/down in left part
- gauntlet is a tricky one — 2 cavern parts with an unmapped/unlit/notele labyrinth in the middle, left part has all up stairs and is ALSO notele, right part has all down stairs
How true artifacts allocation works?
The following in alloc_init_objects():
- if an artifact has an allocation value (allocation probability on line “alloc: allocation probability : min depth : max depth” in artifact.txt), this value is used
- if an artifact doesn’t have an allocation value (allocation probability = 0 in artifact.txt), it is calculated proportionnally to the artifact’s value
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)
Moves != speed. It just affects the energy needed to move. Energy is 1/1+moves if positive and is 1-2*moves/1-moves if negative
Order of effects for objects?
Object effects are handled bottom to top, eg
name:Enlightenment graphics:!:d type:potion level:25 weight:4 cost:0 alloc:40:25 to 100 pile:25:2 effect:LIGHT_LEVEL:NONE:1 effect:RESTORE_EXP effect:TIMED_INC_NO_RES:PARALYZED dice:2d1
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?
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)
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:
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")and
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:
desc:Turns your missiles into deadly piercing shots.
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
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
effect:DETONATE works if I’ll assign it to the monster? eg to create monster Kamikaze yeek; something like
No, it only works on summons
Is it possible to assign to monsters HP not like
hit-points:2 ; but
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.
..it 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 vs SMART flags:
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
effect:DAMAGE dice:$B expr:B:PLAYER_HP:- 5
How to change default client options?
Add desirable options to
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:
name:Blabla graphics:!:d type:potion level:30 weight:4 cost:8000 alloc:30:30 to 100 pile:10:2 effect:END_INFO msg_self:Blablabla...
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
druidhas 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
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
Some monster flags:
CHAR_CLEAR – monster looks like the floor (for example a lurker or a trapper will be a ‘.’ on floor)
ATTR_CLEAR – monster looks like the background (for example a clear hound on red backgroung will look red and on green background will look green)
ATTR_MULTI – multi-hued monster
ATTR_FLICKER – shimmering monster
STUPID – rarely wake up
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
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
NOPIT – flag to prevent monster to appear in pit (for Death Golems, Bloody Falcons etc).
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
Dungeon Master 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.
Defines the feature for building commands.
Places the feature at the current location.
Draws a line of the feature from the current location.
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.
Summons a monster from a specific depth.
Summons a monster from a specific race.
Banishes all monsters while moving around.
Summoning mode off
Stops banishing all monsters while moving around.
Generates a vault at the current location.
Generates an item at the current location.
Generates a random artifact at the current location.
Random artifact (reroll)
Rerolls a random artifact at the current location.
Generates a true artifact at the current location.
Changes the Dungeon Master’s permissions.
Changes another player’s permissions.
Display PROJ_XXX types
Displays bolts, beams and balls for each projection effect.
Manage XBM orders
Selects the previous order.
Selects the next order.
Cancels the selected order.
Perform an effect (EFFECT_XXX)
Performs an effect given by name and parameters.
Create a trap
Creates a trap at the current location.
Advances time by 1 to 12 hours.
How to connect server console
“- 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.