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
Difference between PARALYZED and OCCUPIED?
When you paralyzed you don’t do safe throws and other stuff, so occupied less harsh. Your char is occupied with something, but still can move and react on events, while during paralysation it stay still as statue and roll eyes around 😉
When I compile under Linux, I’ve got an error in sound.prf: Parse error in /tmp/Tangaria/etc/pwmangband/customize/sound.prf line 66 column 1: bient_wind_1 ambient_wind_2 ambient_wind_3: undefined directive
This is due limit which can be increased at sound-core.c#L23
m$M in some classes spells?
Depends on spell, eg in “Meteor Swarm” it’s number of meteors:
expr:M:PLAYER_LEVEL:/ 20 + 2
How to generate ego item, eg Lantern of True Sight?
e true sight
How to generate non-identified item?
Try to put DM on non-droppable terrain (eg building wall) so the item is not assessed because it falls under the DM
When I close server with
Ctrl+c, my IDE (eg C++ Builder) gives error:
Exception Code: C0000005
It might happen if you modified something wrongly. Eg you added new spell in class.txt, but didn’t increment spell’s number in particular spellbook.
Is there way to generate cursed item?
Use curse scroll.
# Depth where labyrinths start to be generated unlit/unknown/with hard walls
Hard walls – it’s permawalls vs regular walls in labyrinths. All walls will become perma at such level?
It’s 100% soft at 35 then slowly becoming chance of perma.
Character got wrong appearance after reincarnation
Check race/class order in
xtra-tan.prf and don’t forget to update this file on server
How to debug
Unknown packet type?
Try to add debug breakpoint to:
I want change color of msg
message.prf file in lib/customize
I polymorph’ed to certain form, but can’t use it spells
Atm form spells only work for shapechanger class. But.. now you can use special attacks. Eg if form got:
it will be chosen at random when attacking, damage isn’t added when playing with weapon, you just inherit the effect, so just 50% poison effect in this case. Damage only counts for forms without weapons aka dragon/hydra.
How to demolish player’s house (if you are DM)
Sell the house. If it does not owned by anyone – exit the location and it will be dissapear.
Also building commands -> fill rectangle.. and tunnel to delete blocks manually.
What is NO_PIT monster flag?
Flag to exclude mobs from pits.
What is ‘challenging’ option in cfg?
It used to allow streamers (for example water rivers) to cross pits with probability depending on depth (less chance the deeper).
How FEATHER helps vs traps?
Check trap.exe, save flag
Why monster.txt fruit bat got 120 speed, but in-game this form gives +5 MOVES?
When a form has +speed, you get half the speed as +move from level 1 to level 25 then you get half the speed as +speed
Remeber that ego and artifacts inherit flags from base.
Eg you give base Mage Staff +1 mana, than Cobalt Focus (which also got 1) – won’t have 2 mana total.
Effect to light up whole level:
effect:LIGHT_LEVEL:NONE:x will now do:
- 0: sense objects
- 1: detect objects
- any other value: don’t show objects
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?
Not yet: https://github.com/angband/angband/issues/4366
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?
1) create new account with a password
2) open the
account file and copy new password hash
3) paste hash to needed account in
account file and also in character save file
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, isfiery
/* PWMAngband */
LAVA – pwmang terrain (lava pool), in wilderness // islava
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
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.
About console from MAng git manual:
MAngband server provides an admin console interface, which uses plain telnet connections.
To use it, you must first edit the
mangband.cfg file and tune the following options:
CONSOLE_PASSWORD = "your secret password"
You MUST change this value!
The second config value you should take care of is
CONSOLE_LOCAL_ONLY = true
If set to
true, the console will NOT be accessible from the outside world. This is the recommended default.
When the server starts, it will bind to
TCP_PORT+1, so if you’re running your server on port 18346, the console interface will be available on port 18347.
It supports both telnet (\r\n terminated strings) and netcat (\n terminated strings) connections.
telnet localhost 18347 Connected
The very first thing you must send it is your CONSOLE_PASSWORD as specified in the config file. It will then reply with “Authenticated”, meaning you’re good to go.
From then on, you can issue console commands like
For the full list of commands use
help. To get more information about a specific command, run help with its name, e.g.
shutdown [MINUTES]– shutdown the server. If MINUTES is provided, the server will wait for a bit, giving players a chance to properly disconnect and/or recall to town.
who– returns a list of active players.
whois Player– returns interesting information about specified Player.
Dungeon allocation test
MAngband server can perform an “allocation test”, to provide statistics on item/monster/vault rarities. Note, that this feature is currently very crude.
Never run this on production or live servers!
- Compile the server in the DEBUG mode.
- Redirect stdout to file (
mangband.exe > log.txt) as you run the server.
- Connect via admin console.
- Execute the “dngtest” command.
The server will then generate each dungeon level N times, and report everything to the ‘#cheat’ channel, and ALSO to the game log, which we already write to a log file.
Now you have a file,
log.txt, with many entries like those:
121219 005559 +o An Amulet of Wisdom (+2) 121219 005559 +v Mini-vault 121219 005559 +m Giant centipede
You will have to post-process this file, to collect meaningful stats.
+o stands for object,
+a for artifact,
+m for monster, and
+v for vault. A simple script could strip this and calculate the number of occurrences for each item, and a percent out of total items.
Note, that “dngtest” takes 2 optional arguments, number of iterations, and dungeon level. “dngtest 2” will generate every dungeon level 2 times. “dngtest 2 4” will generate only dungeon level 4 (200 ft), 2 times.
How to convert/resize raster fonts properly?
Convert with a program Sib Font Editor (another algorithm) and found a function Fony program (http://hukka.ncn.fi/?fony) Edit > Resize > Double size. Converted Sib Font Editor Options > Modify Font pref. > (v) Variable pitch , 21×31, Zero level: 21
FontForge export to png, or svg (vector image) convert svg to png https://mapsvg.com/blog/svg-to-png-converter proxy or vpn https://www.freeconvert.com/svg-to-png with ⚙️ Advanced Options (optional) Resize Output Image width, height