User Tools

Site Tools


arch:crossfire_archetype_handbook

Table of Contents

Crossfire Archetype & Treasure System: Developer Handbook

This handbook covers how the archetype and treasure systems work in Crossfire, using the arch repository (crossfire-crossfire-arch) and server source (crossfire-crossfire-server) as reference.

1. Asset Overview

All game assets live in the arch git repository. At startup, the server loads them directly from disk, or from packed consolidated files generated by crossfire-server -pack-assets.

File extension Packs into Asset type
*.arc crossfire.arc Archetype definitions
*.trs crossfire.trs Treasure list definitions
*.face crossfire.face Face and animation definitions
*.png (named correctly) crossfire.tar Images displayed by the client
image_info image_info Faceset definitions
*.artifact / artifact artifact Artifact variations
*.formulae / formulae formulae Crafting recipes
*.quests crossfire.quests Quest definitions

The arch directory is organised by category (monster/, weapon/, armour/, door/, floor/, player/, etc.). A single category folder typically contains matching .arc, .face, and .png files for each object it defines.

2. PNG Image Files

2.1 Naming convention

Every image file follows a strict naming pattern:

<objectname>.<faceset>.<frame>.png
Part Meaning Example
objectname Base name shared with the .face and .arc pixie
faceset Image set identifier (base = default, clsc = classic) base
frame Three-digit frame code (see below) 111

Frame codes use three hexadecimal digits:

XYZ
│││
││└─ frame index within the facing (1-based)
│└── facing direction (1=default/south, 3=north, 5=west, 7=east)
└─── always 1 for normal objects; used by multi-tile heads/parts

Examples:

  • pixie.base.111.png — pixie, base set, facing south, frame 1
  • sphinx.base.x71.png — sphinx, base set, facing east, frame 1 (x prefix means extended tile)
  • viking.base.131.png — viking, base set, facing north, frame 1

2.2 Facesets

Currently two shipped facesets, defined in arch/image_info:

Extension Long name Notes
base standard Default 32×32 image set; every image must exist here
clsc classic Alternate art; falls back to base if image is missing

When a clsc image is absent the client silently uses the base equivalent. You can create a clsc variant by adding a file with the same name but .clsc. instead of .base..

3. Face Files (.face)

A .face file defines the client-visible face names and any animations that belong to the same object group. The server reads these to know which images to send to clients.

3.1 Simple face entry

face wooddoor_2.111
magicmap brown
end
Field Meaning
face <name> Declares a face identifier. The name must match a PNG file (minus faceset and .png).
magicmap <colour> Colour used on the magic-map overview.
end Closes the face block.

3.2 Animation block

Animations are also stored in .face files. An animation names a sequence of face identifiers that cycle at runtime.

animation pixie
pixie.111
pixie.112
pixie.111
pixie.112
pixie.111
blank.111
blank.111
mina
face pixie.111
magicmap orange
end
face pixie.112
magicmap orange
end
Keyword Meaning
animation <name> Starts an animation block named <name>.
facings <n> Optional. n = 1 (default), 2, or 4. Tells the engine how many directional variants follow. With facings 4 the list contains four groups of frames (south, north, west, east).
frame lines One face name per line, in display order.
mina Ends the animation frame list (reverse of anim).

Example with directional facings (4 directions × 2 frames = 8 lines):

animation northman_player
facings 4
viking.111
viking.112
viking.131
viking.132
viking.151
viking.152
viking.171
viking.172
mina

The animation name used in an .arc file must exactly match the name declared here.

4. Archetype Files (.arc)

An archetype is the blueprint for an in-game object. Every mob, item, floor tile, door, spell, and skill has an archetype. Archetypes are loaded once at server startup and never changed at runtime (except for temporary archetypes created for customised map objects — see §4.7).

4.1 Basic structure

Object <archetype_name>
<field> <value>
...
end

The Object keyword opens the definition; end closes it. The archetype name is the internal identifier referenced everywhere else (treasure lists, map files, randomitems, other_arch, etc.).

Minimal example (a wooden club):

Object club
nrof 1
last_sp 9
type 15
face club.111
material 16
dam 6
weapontype 8
weight 9000
value 10
attacktype 1
name_pl clubs
client_type 121
body_arm -1
skill one handed weapons
end

4.2 Common fields

Identity

Field Type Meaning
Object <name> string Internal archetype ID (no spaces).
name <text> string Singular in-game display name.
name_pl <text> string Plural display name.
title <text> string Appended to name when identified (e.g. of fire).
race <text> string Race tag (used by treasure matching, god powers, etc.).
slaying <text> string For keys: door slaying string. For scripts: Python path.

Visuals

Field Type Meaning
face <name> face-ref Static face displayed when not animated (e.g. pixie.111).
animation <name> anim-ref Name of animation sequence to use (from .face file).
anim_speed <n> int Server-side animation speed (ticks per frame).
client_anim_random 1 flag Client picks animation frames at random instead of in order.
client_anim_sync 1 flag All instances of this object animate in sync on client.
invisible 1 flag Object has no visible presence (used for event connectors, etc.).

Physical stats

Field Type Meaning
type <n> int Object type ID (see §4.4).
subtype <n> int Subtype within a type (e.g. sign subtypes).
client_type <n> int Type hint sent to client for display purposes.
weight <n> int Weight in grams.
value <n> int Base shop value in silver coins.
nrof <n> int Default stack size.
material <bitmask> int Material bitmask (see §4.5).
materialname <text> string Specific named material (overrides the bitmask label).
no_pick 1 flag Object cannot be picked up.
identified 1 flag Object starts already identified.

Combat stats

Field Type Meaning
level <n> int Object level (affects drops, difficulty, spell effects).
hp <n> int Current hit points.
maxhp <n> int Maximum hit points.
sp <n> int Current spell points.
maxsp <n> int Maximum spell points.
exp <n> int Experience awarded to killer when this object is destroyed.
ac <n> int Armour class (lower = harder to hit).
wc <n> int Weapon class (lower = better to-hit).
dam <n> int Base damage per hit.
speed <f> float Movement/attack speed. Negative = once per |n| ticks.
attacktype <bitmask> int Attack types used (see §4.6).
resist_<type> <n> int Resistance percentage (−100 to 100) against each attack type.

Ability stats (living objects)

Field Type Meaning
Str / Dex / Con / Int / Wis / Pow / Cha <n> int Base attribute scores.
run_away <n> int Flee when HP falls below this percentage.
sleep 1 flag Monster starts asleep.
unaggressive 1 flag Will not attack players unless attacked first.
monster 1 flag Object is a living monster.
alive 1 flag Object is alive (can be healed, poisoned, etc.).
can_cast_spell 1 flag Monster may cast spells.
can_use_range 1 flag Monster may use ranged weapons.
see_invisible 1 flag Can detect invisible players.

Movement

Field Value Meaning
move_type walk Moves on ground.
move_type fly_low Flies at low altitude.
move_type fly_high Flies at high altitude.
move_type swim Swims in water.
move_block <type> Blocks objects of the given move type(s). all blocks everything.
blocksview 1 Prevents line of sight through this tile.
stand_still 1 NPC never moves from its starting position.
attack_movement <n> int Monster AI movement pattern bitmask.

Equipment / inventory slots

Body slot fields specify what equipment locations this item occupies (positive = slots used, negative = slots provided for items to use):

Field Slots Typical use
body_arm ±1/2 Shields (−1), two-handed weapons (−2)
body_hand ±2 Gloves
body_head ±1 Helmets
body_torso ±1 Body armour
body_waist ±1 Girdles/belts
body_shoulder ±1 Cloaks
body_finger ±2 Rings
body_neck ±1 Amulets
body_foot ±2 Boots
body_wrist ±2 Bracers
body_range ±1 Bows, wands, rods
body_skill ±1 Skill objects

Weapon fields

Field Meaning
weapontype <bitmask> Category of weapon (1=sword, 8=club, etc.)
skill <name> Skill required to use this weapon/item.
last_sp <n> Attack speed modifier.
startequip 1 Item was given to player at character creation and is not dropped.

Treasure and linking

Field Meaning
randomitems <list> Treasure list name that spawns items into this object's inventory when initialised.
other_arch <name> Archetype to transform into or spawn (context-dependent: locked doors, generators, spells, etc.).
connected <n> Connects this object to a trigger group by ID number.
on_use_yield <arch> Archetype to replace this object with when it is consumed (e.g. empty bottle after potion).
artifact <name> Forces the object to be a specific named artifact.

Message / dialog

msg
@match *
I don't know any riddles right now.... GO AWAY!!!!
endmsg

The msg / endmsg block stores the object's readable text or NPC dialog script. For NPC dialog, lines beginning with @match set triggers; see the dialog system documentation for full syntax.

4.3 Embedded inventory (sub-objects)

Objects can contain other objects defined inline. This is used for potions that embed a spell, items that carry event connectors, or containers pre-filled with items.

Object potion_heroism
name potion of heroism
type 5
face potionhero.111
weight 1000
value 500
on_use_yield potion_empty
arch spell_heroism
end
end

The inner arch … end block embeds a copy of the spell_heroism archetype inside the potion. Any fields between arch and end override defaults from the referenced archetype.

Event connectors are a common case — they attach plugin/Python scripts:

Object messageboard
name message board
type 98
arch messageboard_apply_event
end
arch messageboard_say_event
end
end

Object messageboard_apply_event
title Python
slaying /python/IPO/board.py
type 116
subtype 1
invisible 1
end

4.4 Multi-tile objects

Objects that span more than one map tile are defined as a chain of parts linked by More. The first Object is the head (origin tile); each subsequent part carries a relative x/y offset.

Object large_vdoor1
name large door
type 23
face large_vdoor.111
no_pick 1
end
More
Object large_vdoor2
name large door
type 23
face large_vdoor.111
no_pick 1
y 1
end
More
Object large_vdoor3
name large door
type 23
face large_vdoor.111
no_pick 1
y 2
end

All parts share the same name and behaviour but each occupies its own tile. The More keyword (capital M) separates parts; no end appears after More.

4.5 Compound animations (anim_suffix)

Objects can define an anim_suffix that the engine appends to their animation name during specific actions (attacking, spellcasting, skill use, item application). If an animation called <base>_<suffix> exists in the .face files, it plays for one cycle.

Object my_sword
...
anim_suffix sword
end

When a player wields my_sword and attacks, the engine looks for an animation named <player_anim>_sword and plays it if found.

4.6 Object type IDs

The type field is a numeric constant defined in the server header include/object.h. Frequently used values:

type Constant Description
1 PLAYER Player character
3 ROD Rod
5 POTION Potion
6 FOOD Food
8 BOOK Book / scroll case
14 BOW Bow
15 WEAPON Melee weapon
16 ARMOUR Body armour
20 LOCKED_DOOR Locked door
23 DOOR Regular door
24 KEY Key
33 SHIELD Shield
34 HELMET Helmet
36 MONEY Money
39 AMULET Amulet
43 SKILL Skill object
60 GEM Gem
66 EXIT Map exit / portal
68 SHOP_FLOOR Shop floor tile
70 RING Ring
71 FLOOR Floor tile
80 MONSTER Monster
85 SPELLBOOK Spell book
87 CLOAK Cloak
98 SIGN Sign / talking sign
99 BOOTS Boots
100 GLOVES Gloves
101 SPELL Spell
109 WAND Wand
111 SCROLL Scroll
113 GIRDLE Girdle / belt
114 FORCE Force (invisible effect)
116 EVENT_CONNECTOR Plugin event hook
122 CONTAINER Container
154 RUNE Rune trap
155 TRAP Trap
158 DISEASE Disease
160 BUILDER Map builder
161 MATERIAL Builder material

4.7 Material bitmask values

The material field is a bitmask — add values together for composite materials.

Value Constant Material
1 M_PAPER Paper
2 M_IRON Iron
4 M_GLASS Glass
8 M_LEATHER Leather
16 M_WOOD Wood
32 M_ORGANIC General organic
64 M_STONE Stone
128 M_CLOTH Cloth
256 M_ADAMANT Adamant
512 M_LIQUID Liquid
1024 M_SOFT_METAL Soft metal (copper, tin, etc.)
2048 M_BONE Bone
4096 M_ICE Ice
8192 M_SPECIAL Special (hides material name in display)

Example: material 16 = wood. material 18 = iron + wood (2 + 16).

4.8 Attack type bitmasks

The attacktype field is a bitmask of AT_xxx constants. resist_xxx fields name the same attack types in lowercase:

Value Field name Description
1 physical Basic physical attack
2 magic Arcane magic
4 fire Fire (can ignite objects)
8 electricity Electricity
16 cold Cold (can freeze)
32 confusion Scrambles movement/attack directions
64 acid Corrodes random equipment
128 drain Steals experience
256 weaponmagic Direct magic damage
512 ghosthit Bypasses physical armour
1024 poison Damage-over-time
2048 slow Reduces movement speed
4096 paralyze Stops movement entirely
8192 turn_undead Fear effect vs. undead only
16384 fear Causes fleeing
32768 cancellation Strips magic from items
65536 deplete Drains a stat point
131072 death Chance of instant kill
262144 chaos Random attack type each hit
524288 counterspell Cancels active spells
1048576 godpower Adds the attacker's god's type
2097152 holyword Damages by race alignment
4194304 blind Causes blindness
16777216 life_stealing Transfers victim HP to attacker
33554432 disease Disease vector

4.9 Temporary archetypes

When the map loader encounters a monster whose properties differ from the base archetype (i.e. it has custom attributes added in the map file), the server automatically creates a temporary archetype to record those initial values. This ensures that fix_object() calls (triggered by equipping/unequipping items, being cursed, etc.) can restore the correct baseline rather than the generic defaults.

Temporary archetypes are reference-counted and freed automatically when no living object refers to them. Map developers do not create these directly.

5. Treasure List Files (.trs)

Treasure lists define what items are generated inside an object when the server initialises it. They are separate from .arc files so that the same list can be reused across many archetypes.

5.1 Linking an archetype to a treasure list

In the .arc file, the randomitems field names the treasure list to use:

Object door_0
name door
randomitems door
type 23
...
end

When the server spawns this door, it runs the door treasure list and inserts the generated items into the door's inventory.

5.2 Treasure file format reference

List types

Keyword Behaviour
treasure <name> A list where every entry is rolled independently. Each item has a chance % probability of appearing.
treasureone <name> A list where only one item is chosen. Items are weighted by their chance relative to the total of all chance values in the list.

Item entry fields

Field Meaning
arch <name> Generate an object from this archetype.
list <name> Reference and execute another treasure list.
artifact <name> Force the generated item to be a specific named artifact (magic is ignored when this is set).
chance <n> In a treasure list: probability in percent (0–100). In a treasureone list: relative weight vs. other entries. Defaults to 100.
nrof <n> Maximum stack size. If omitted, uses the archetype default.
magic <n> For arch: caps the magic enhancement level the item can receive. For list: minimum difficulty required before this list is even considered.
list_magic_value <n> If non-zero, generate the list at exactly this difficulty instead of the current map difficulty.
list_magic_adjustment <n> Add this value (may be negative) to the current difficulty when generating the referenced list.
change_name <text> Override the generated item's name.
change_title <text> Override the generated item's title.
change_slaying <text> Override the generated item's slaying string.

Branching keywords

Keyword Meaning
yes Opens a sub-list that is generated only if the previous item was successfully generated.
no Opens a sub-list that is generated only if the previous item was not generated.
more Adds the next entry to the same list at the same level.
end Closes the current yes, no, or top-level list block.

Generation rules

  1. The server tracks a magic (difficulty) level when instantiating a list. An arch entry is only eligible if its magic value is less than or equal to the current difficulty.
  2. A maximum of 100 attempts are made to generate an eligible item before the generation is considered failed.
  3. The flag GT_ONLY_GOOD (used internally) suppresses cursed and damned items.
  4. Comments start with # and are ignored.
  5. Lines may be indented freely; leading whitespace is ignored.

6. treasures.trs — Annotated Walkthrough

The file arch/treasures.trs (2 252 lines) is the master treasure definition file. All other .trs files in category subdirectories define lists for specific objects; treasures.trs holds the shared, reusable building-block lists that most content references.

Below is a structured summary of the major lists in the file.

6.1 Skill injection lists

treasure skill_use_magic_item
    arch skill_use_magic_item
end

treasure all_spell_skills
    arch skill_use_magic_item
more
    arch skill_evocation
more
    arch skill_praying
... (etc.)
end

These treasure lists (not treasureone) guarantee that every item in the list is generated, giving a monster or player character a guaranteed set of skill objects. skill_use_magic_item and all_spell_skills are referenced by monster treasure lists so pet monsters award XP to the right skill.

6.2 Random knowledge (scroll) list

treasureone random_knowledge
    arch scroll_alchemy
        chance 10
more
    arch scroll_bargaining
        chance 5
...
end

A treasureone list. Exactly one skill scroll is chosen, with rarer skills (e.g. scroll_evocation at chance 5) less likely than common ones (scroll_missile_weap at chance 15).

6.3 Weapon and armour selection

treasureone random_weapon
    list missile_weapons
        chance 5
more
    list melee_weapons
        chance 10
end

treasureone random_armour
    list random_gauntlet
        chance 10
more
    list random_helmet
        chance 40
...
end

These lists compose smaller sub-lists. random_weapon delegates to either missile_weapons or melee_weapons; random_armour delegates to specific slot sub-lists such as random_helmet and random_mail.

6.4 Mushroom foraging pattern

treasure random_mushroom
    arch mushroom_1
        chance 50
    no
        arch mushroom_2
            chance 50
        no
            arch mushroom_3
                chance 50
            no
                arch mandrake_root
                    chance 10
            end
        end
    end
end

This illustrates the no branching chain. The generator tries mushroom_1 (50%); if that fails it tries mushroom_2 (50%); if that fails it tries mushroom_3 (50%); if all fail it tries mandrake_root (10%). The deepest nesting acts as a rare fallback.

6.5 Coin and wealth lists

treasureone random_coin
    arch goldcoin
        chance 5
        nrof 5
more
    arch goldcoin
        chance 5
        nrof 10
...
    arch platinacoin
        chance 5
        nrof 6
end

The same archetype (goldcoin, silvercoin, platinacoin) appears multiple times with different nrof values. In a treasureone list this is how you produce a distribution of stack sizes — each entry is a separate weighted option.

random_wealth is structurally identical but adds gems to the coin mix. starting_wealth is a simpler three-entry list used for new characters.

6.6 Artifact injection with magic difficulty

treasureone special_uncommon
    list NONE
        chance 5
more
    arch bracers_ac
        magic 4
        chance 10
more
    list rare_artifacts
        magic 14
        chance 5
...
end

list NONE is a special no-op entry that lets the list intentionally produce nothing for that roll. The magic field on list rare_artifacts means this branch is only considered when the current difficulty is ≥ 14 — so truly rare items cannot appear in low-level areas.

artifact field usage example from later in the file:

    arch potion_generic
        artifact minor healing
        chance 3

This forces the generated potion_generic to become the minor healing artifact rather than a random potion.

6.7 yes/no branching: bow + arrows

treasure poor_old
    arch bow
        chance 5
    yes
        arch arrow
            nrof 6
    end
    ...
end

If the bow is generated (5% chance), the yes block fires and guarantees arrows are also generated (nrof 6 = up to 6 arrows). No chance on the arrows means 100% — the arrows are certain once the bow appears.

The no branch cascades through increasingly-likely weapon fallbacks:

    arch b_ssword_2
        magic 1
        chance 5
    no
        arch b_ssword_1
            chance 10
        no
            arch b_dagger
                chance 15
            no
                arch stoneaxe
                    chance 20
                no
                    arch club
                        chance 25
                end
            end
        end
    end

If b_ssword_2 is not generated (95% of the time), try b_ssword_1; if that fails, try b_dagger; and so on down to club as the final fallback. Note that b_ssword_2 also requires magic 1 — it cannot generate at difficulty 0.

6.8 Standard monster treasure sets

The lists poor, standard, rich (and their _old variants) are the primary lists assigned via randomitems to humanoid monsters:

List Purpose
poor Minimal loot: basic weapon, a little silver.
standard Average loot: weapon + shield + helmet + small amount of coins + chance of magic item.
rich Good loot: quality weapon + armour + gold + rods/wands/rings + spell books.
humanoidpockets_low Random small items a humanoid might carry (mushrooms, coins, books, potions).
humanoidpockets_medium Better pockets: more books, wealth, healing potions, knowledge scrolls.
humanoid_parts Body parts (flesh items) dropped by humanoid monsters.

These are assembled with more and sometimes delegate to humanoidpockets_low/medium:

treasure standard
    arch skill_use_magic_item
more
    list standard_old
more
    arch torch_unlit
        nrof 3
        chance 1
more
    list humanoid_parts
        chance 20
end

6.9 Named character class lists

Towards the end of treasures.trs are lists for specific NPC/monster types used by the randomitems field on character archetypes:

treasure elf
    list fighter_skills
more
    list mage_skills
more
    arch bow
        magic 2
more
    arch skill_bowyer
more
    arch cloak
more
    arch arrow
        nrof 50
more
    list humanoid_parts
        chance 20
more
    list humanoidpockets_low
end

These composed lists give NPC classes coherent equipment sets without duplication. fighter_skills, mage_skills, and basic_skills are defined in player/player_skills.trs and referenced here by name, showing that treasure lists can cross-reference lists defined in other .trs files — all files are merged into crossfire.trs at build/pack time.

6.10 Restoration potions (treasureone with artifacts)

treasureone restoration_potions
    arch minor_potion_restoration
        chance 15
more
    arch medium_potion_restoration
        chance 10
more
    arch major_potion_restoration
        chance 5
more
    arch potion_restoration
        chance 5
end

A simple treasureone weighted by rarity: minor (15) → medium (10) → major (5) → full (5). The total weight is 35; a major_potion_restoration has a 5/35 ≈ 14% chance once this list is chosen.

7. Common Patterns and Tips

  • Naming conventions — The archetype name in Object <name> must be unique across all .arc files. It becomes the identifier everywhere: randomitems, other_arch, map files, treasure lists.
  • Face references — The face name in face <name> strips the faceset and extension. face pixie.111 expects pixie.base.111.png (and optionally pixie.clsc.111.png).
  • Adding a new object — Create a .arc file (plus matching .face and .png) in the appropriate category folder. No registration step is needed; the server finds all files recursively.
  • Treasure list scopetreasures.trs is global. Category-local .trs files (e.g. door/locking_key.trs) are for lists used only by objects in that folder, but any list name is accessible globally once packed.
  • NONE listlist NONE is a built-in no-op. Using it in a treasureone list adds a weighted “generate nothing” outcome, useful for controlling drop frequency without changing all the other weights.
  • Difficulty gating — Use magic <n> on a list entry to create level-appropriate loot tables. Combine with list_magic_adjustment to scale difficulty up or down relative to the current area.
  • Event connectors — Attach Python scripts to objects by embedding type 116 (EVENT_CONNECTOR) sub-objects. The subtype selects the event (1=apply, 6=say, etc.) and slaying is the script path relative to the server's Python directory.

8. Case Study: Dissecting ''treasureone random_armour''

This section walks through an entire treasureone chain end-to-end — from the top-level list down through every sub-list — using random_armour as the example. It is intended to make the relationship between chance, treasureone, list, and magic concrete.

8.1 The block in full

treasureone random_armour
    list random_gauntlet
        chance 10
more
    list random_helmet
        chance 40
more
    list random_mail
        chance 52
more
    list random_shield
        chance 36
more
    list random_boots
        chance 10
more
    arch cloak
        chance 10
end

8.2 How ''chance'' works in a ''treasureone'' list

In a treasure list, chance is a plain percentage (0–100). In a treasureone list the meaning is different: chance is a relative weight, not a percentage.

The engine sums every chance value in the list to get a total, then assigns each entry a share proportional to its weight.

Total weight = 10 + 40 + 52 + 36 + 10 + 10 = **158**

The real probability of any entry = chance ÷ 158.

Concrete example: Imagine 158 numbered tickets in a hat. 52 of them say “random_mail”, 40 say “random_helmet”, and so on. One ticket is drawn. The entry whose ticket is drawn wins, and its items are generated. Everything else produces nothing.

Entry chance Probability
list random_gauntlet 10 10/158 = 6.3 %
list random_helmet 40 40/158 = 25.3 %
list random_mail 52 52/158 = 32.9 %
list random_shield 36 36/158 = 22.8 %
list random_boots 10 10/158 = 6.3 %
arch cloak 10 10/158 = 6.3 %

Body armour (random_mail) is the most likely single outcome. Gauntlets, boots, and cloaks share the lowest probability.

8.3 Line-by-line explanation

treasureone random_armour

Declares the list named random_armour. The treasureone keyword means one and only one outcome is produced per instantiation.


    list random_gauntlet
        chance 10

References the sub-list random_gauntlet (defined in armour/gauntlets/random_gauntlet.trs). 10 tickets out of 158 (~6.3 %). If this entry wins, control is handed to random_gauntlet, which rolls its own internal treasureone to pick a specific pair of gloves or gauntlets.


more

Continues the list. Every entry except the last must be followed by more. Without it, the parser would treat the next line as a new top-level definition.


    list random_helmet
        chance 40

References random_helmet (armour/helmet/random_helmet.trs). 40 tickets (~25.3 %). Helmets are the second-most-likely slot.


    list random_mail
        chance 52

References random_mail (armour/mail/random_mail.trs). 52 tickets (~32.9 %) — the highest weight in the list. Body armour is the most common result from random_armour.


    list random_shield
        chance 36

References random_shield (armour/shield/random_shield.trs). 36 tickets (~22.8 %).


    list random_boots
        chance 10

References random_boots (armour/boots/random_boots.trs). 10 tickets (~6.3 %).


    arch cloak
        chance 10
end

Generates a cloak archetype directly — no sub-list involved. 10 tickets (~6.3 %). end closes the entire random_armour definition.

8.4 Sub-lists expanded

When one of the list entries wins, that sub-list runs its own treasureone roll. Each sub-list has its own set of weights, and many entries carry a magic requirement that gates them behind a minimum difficulty level. An entry whose magic value exceeds the current difficulty is skipped; the engine retries up to 100 times before giving up.

random_gauntlet (total weight: 22)

Item magic req chance Probability
gloves_cloth none 5 22.7 %
gloves ≥ 1 5 22.7 %
gloves_b ≥ 3 1 4.5 %
gloves_w ≥ 3 1 4.5 %
b_gauntlets ≥ 2 5 22.7 %
gauntlets ≥ 4 5 22.7 %

gloves_cloth is the only entry with no magic requirement, making it the sole result possible at difficulty 0. gauntlets and gloves_b/w are locked behind higher thresholds.

random_helmet (total weight: 40)

All entries share chance 5, so each has an equal 12.5 % share of this sub-list. Magic difficulty is the only differentiator.

Item magic req Probability
b_full_helmet ≥ 4 12.5 %
b_helmet ≥ 4 12.5 %
b_horned_helmet ≥ 4 12.5 %
coif ≥ 4 12.5 %
full_helmet ≥ 2 12.5 %
horned_helmet ≥ 1 12.5 %
helmet ≥ 2 12.5 %
bighorned_helmet ≥ 1 12.5 %

At difficulty 1 only horned_helmet and bighorned_helmet are eligible. At difficulty 4 all eight are in the pool.

random_mail (total weight: 53)

Item magic req chance Probability
b_plate_mail ≥ 4 5 9.4 %
b_scale_mail ≥ 4 5 9.4 %
robe ≥ 4 5 9.4 %
leather_armour ≥ 4 5 9.4 %
scale_mail ≥ 4 5 9.4 %
ring_mail2 ≥ 3 5 9.4 %
chain_mail ≥ 3 5 9.4 %
lapron ≥ 1 1 1.9 %
tunic ≥ 3 1 1.9 %
ring_mail ≥ 4 5 9.4 %
ring_mail (duplicate entry) ≥ 4 5 9.4 %
plate_mail ≥ 4 5 9.4 %
list random_dress ≥ 3 1 1.9 %

ring_mail appears twice at equal weight, effectively doubling its combined share to ~18.8 % at difficulty ≥ 4. lapron, tunic, and random_dress have only 1 ticket each, making them rare. random_dress is itself a further treasureone sub-list choosing between dress styles and a tunic.

random_shield (total weight: 36)

Item magic req chance Probability
b_shield ≥ 4 5 13.9 %
b_small_shield ≥ 4 5 13.9 %
spiked_shield ≥ 1 1 2.8 %
shield ≥ 2 5 13.9 %
small_shield ≥ 1 5 13.9 %
high_shield ≥ 2 5 13.9 %
kite_shield ≥ 2 5 13.9 %
round_shield ≥ 1 5 13.9 %

spiked_shield is the rarest at 1 ticket (2.8 %). Three shields (small_shield, round_shield, spiked_shield) are available from difficulty ≥ 1; the remainder require ≥ 2 or ≥ 4.

random_boots (total weight: 10)

Item magic req chance Probability
low_boots ≥ 1 5 50 %
high_boots ≥ 3 3 30 %
high_boots_b ≥ 3 1 10 %
high_boots_w ≥ 3 1 10 %

The most compact sub-list. low_boots wins half the time. The coloured variants (black, white) are each 10 % of this already-rare (~6.3 %) outcome.

8.5 Combined probability of any specific item

The final chance of a specific item is the product of each stage:

P(item) = P(sub-list wins in random_armour) × P(item wins in sub-list)

Example — gauntlets (the best gauntlets, magic ≥ 4):

P(random_gauntlet wins) = 10/158 = 6.33 %
P(gauntlets wins in random_gauntlet, at difficulty ≥ 4) = 5/22 = 22.7 %
P(gauntlets) = 6.33 % × 22.7 % ≈ 1.4 %

Example — plate_mail (magic ≥ 4):

P(random_mail wins) = 52/158 = 32.9 %
P(plate_mail wins in random_mail, at difficulty ≥ 4) = 5/53 = 9.4 %
P(plate_mail) = 32.9 % × 9.4 % ≈ 3.1 %

Despite random_mail being by far the most likely slot, the many entries inside it dilute any individual item's final probability considerably.

9. ''treasureone'' Probability Tables — Full Reference (treasures.trs)

This section provides a probability table for every treasureone list defined in arch/treasures.trs. Each table lists entries in file order. The Probability column is chance ÷ total_weight × 100, rounded to one decimal place. magic req is the minimum difficulty level at which an entry is eligible; entries with no magic requirement can appear at any difficulty. nrof is the maximum stack size generated. arch entries generate an object directly; list entries delegate to another named treasure list. list NONE is a built-in no-op that intentionally generates nothing.

random_armour is covered in full in §8.


9.1 random_knowledge

Used by shops, libraries, and monster drops to give one random skill scroll. Scrolls for harder skills (evocation, oratory, pyromancy, sorcery, summoning) have lower weight; two skills with the broadest use (missile weapons, praying) share the highest weight of 15.

Total weight: 247

Entry magic req chance Probability
arch scroll_alchemy 10 4.0 %
arch scroll_bargaining 5 2.0 %
arch scroll_bowyer 10 4.0 %
arch scroll_climbing 10 4.0 %
arch scroll_disarm_traps 10 4.0 %
arch scroll_evocation 5 2.0 %
arch scroll_find_traps 10 4.0 %
arch scroll_hiding 9 3.6 %
arch stylus 10 4.0 %
arch scroll_jewelry 10 4.0 %
arch scroll_jumping 10 4.0 %
arch scroll_karate 8 3.2 %
arch scroll_literacy 8 3.2 %
arch scroll_missile_weap 15 6.1 %
arch scroll_one_handed_weapons 10 4.0 %
arch scroll_oratory 5 2.0 %
arch scroll_praying 15 6.1 %
arch scroll_punching 5 2.0 %
arch scroll_pyromancy 5 2.0 %
arch scroll_sense_curse 5 2.0 %
arch scroll_sense_mag 5 2.0 %
arch scroll_singing 5 2.0 %
arch scroll_smithing 5 2.0 %
arch scroll_sorcery 5 2.0 %
arch scroll_stealing 9 3.6 %
arch scroll_summoning 5 2.0 %
arch scroll_thaumaturgy 9 3.6 %
arch scroll_throwing 1 0.4 %
arch scroll_two_handed_weapons 10 4.0 %
arch scroll_use_magic_item 8 3.2 %
arch scroll_woodsman 10 4.0 %

9.2 needle_diseases

Used by needle traps to inject a random disease into a player. Most diseases share equal weight (20). Athletes foot and tooth decay are notably rarer at 5 each.

Total weight: 150

Entry chance Probability
arch warts 20 13.3 %
arch atheletes_foot 5 3.3 %
arch tooth_decay 5 3.3 %
arch tapeworms 20 13.3 %
arch egg_disease 20 13.3 %
arch diarrhea 20 13.3 %
arch incontinence 20 13.3 %
arch scurvy 20 13.3 %
arch flaming_fart 20 13.3 %

9.3 random_weapon

A high-level picker that selects a weapon category. Melee weapons are twice as likely as missile weapons.

Total weight: 15

Entry chance Probability
list missile_weapons 5 33.3 %
list melee_weapons 10 66.7 %

9.4 random_armour

See §8 for the full line-by-line breakdown and sub-list expansion.

Total weight: 158

Entry chance Probability
list random_gauntlet 10 6.3 %
list random_helmet 40 25.3 %
list random_mail 52 32.9 %
list random_shield 36 22.8 %
list random_boots 10 6.3 %
arch cloak 10 6.3 %

9.5 random_special

Used by special shops and high-value loot containers. Wands are the single most likely result. scroll_new appears three times with different nrof values, creating a distribution of scroll quantities. special_uncommon is gated at three magic thresholds (5, 8, 10) so premium items only appear in higher-level areas.

Total weight: 108

Entry magic req nrof chance Probability
arch scroll_new 3 5 4.6 %
arch scroll_new 2 5 4.6 %
arch scroll_new 1 10 9.3 %
arch amulet 10 9.3 %
arch wand 15 13.9 %
arch staff 5 4.6 %
arch holy_symbol 3 2.8 %
arch ring 5 4.6 %
list random_books 5 4.6 %
arch emerald 8 5 4.6 %
arch sapphire 5 5 4.6 %
arch gem 1 5 4.6 %
arch ruby 3 5 4.6 %
arch pearl 16 5 4.6 %
list special_uncommon ≥ 10 5 4.6 %
list special_uncommon ≥ 8 5 4.6 %
list special_uncommon ≥ 5 5 4.6 %
arch potion_heroism 5 4.6 %

9.6 random_coin

Generates one coin stack. All 14 entries share equal weight (5), making each outcome equally likely. The same archetype is repeated with different nrof values to distribute stack sizes across coin types.

Total weight: 70 (14 entries × 5)

Entry nrof Probability
arch goldcoin 5 7.1 %
arch goldcoin 10 7.1 %
arch goldcoin 15 7.1 %
arch goldcoin 20 7.1 %
arch goldcoin 25 7.1 %
arch silvercoin 25 7.1 %
arch silvercoin 50 7.1 %
arch silvercoin 75 7.1 %
arch silvercoin 100 7.1 %
arch silvercoin 150 7.1 %
arch platinacoin 2 7.1 %
arch platinacoin 4 7.1 %
arch platinacoin 6 7.1 %
arch platinacoin 10 7.1 %

9.7 random_wealth

An expanded version of random_coin that also includes gem drops. All 24 entries share equal weight (5). Gold and silver cover larger stacks than in random_coin. Platinacoin starts at nrof 1.

Total weight: 120 (24 entries × 5)

All entries have equal probability of 4.2 % each.

Entry nrof
arch goldcoin 5, 10, 15, 20, 25 (×5 entries)
arch silvercoin 25, 50, 75, 100, 150 (×5 entries)
arch platinacoin 1, 2, 4, 6 (×4 entries)
arch gem 1, 1 (×2 entries)
arch pearl 2, 4 (×2 entries)
arch ruby 1, 2 (×2 entries)
arch sapphire 1, 3 (×2 entries)
arch emerald 2, 5 (×2 entries)

9.8 random_gem

Generates one gem type and quantity. Common gems (gem, pearl, ruby, sapphire, emerald, amethyst) each have two entries at chance 5, spreading their quantity range. Topaz and bloodstone are rarer at chance 3.

Total weight: 72

Entry nrof chance Probability
arch gem 1 5 6.9 %
arch gem 2 5 6.9 %
arch pearl 4 5 6.9 %
arch pearl 6 5 6.9 %
arch ruby 2 5 6.9 %
arch ruby 4 5 6.9 %
arch sapphire 2 5 6.9 %
arch sapphire 4 5 6.9 %
arch emerald 10 5 6.9 %
arch emerald 4 5 6.9 %
arch amethyst 2 5 6.9 %
arch amethyst 4 5 6.9 %
arch topaz 5 3 4.2 %
arch topaz 2 3 4.2 %
arch bloodstone 2 3 4.2 %
arch bloodstone 7 3 4.2 %

9.9 starting_wealth

Used to assign starting money to a new character. All three coin types are equally likely, giving each a one-in-three chance.

Total weight: 15

Entry nrof chance Probability
arch goldcoin 120 5 33.3 %
arch silvercoin 1000 5 33.3 %
arch platinacoin 40 5 33.3 %

9.10 random_plant

Generates foliage and botanicals. flowers_permanent is the most likely result. random_mushroom requires difficulty ≥ 15 and is only eligible in very high-level areas.

Total weight: 76

Entry magic req nrof chance Probability
arch rose_pink 5 8 10.5 %
arch rose_yellow 5 12 15.8 %
arch rose_white 4 10 13.2 %
arch rose_red 3 8 10.5 %
arch flowers_permanent 5 15 19.7 %
arch clover 2 5 6.6 %
arch mint 5 6.6 %
arch mandrake_root 3 3.9 %
list random_mushroom ≥ 15 10 13.2 %

9.11 random_alchemy

Alchemy supply stock list. A plain cauldron dominates at chance 18. A magic-enhanced cauldron (magic ≥ 5) has only a 3.1 % share. Mineral reagents, base metals, and plants round out the list. fix_mercury (transmuted mercury) is the rarest single item at chance 1.

Total weight: 97

Entry magic req nrof chance Probability
arch cauldron 18 18.6 %
arch cauldron ≥ 5 3 3.1 %
list random_books 10 10.3 %
arch scroll_alchemy 2 2.1 %
arch min_oil 5 12 12.4 %
list shop_gems ≥ 5 3 3.1 %
arch phil_sulphur 3 4 4.1 %
arch phil_salt 4 5 5.2 %
arch phil_phosphorus 2 3 3.1 %
arch phil_oil 3 5 5.2 %
arch water 3 3 3.1 %
list random_plant ≥ 5 10 10.3 %
arch mercury 8 8.2 %
arch lead 8 8.2 %
arch true_lead 2 2.1 %
arch fix_mercury 1 1.0 %

9.12 random_potion

A layered potion list. The seven stat potions each get a modest weight of 3. shop_potions is referenced three times at escalating magic thresholds (2, 6, 8), and random_potion references itself recursively at thresholds 10, 12, and 14 to create tiered escalation. special_uncommon is included five times at decreasing magic thresholds so that truly unusual items only emerge at high difficulty.

Total weight: 91

Entry magic req chance Probability
arch potionstr 3 3.3 %
arch potionint 3 3.3 %
arch potioncha 3 3.3 %
arch potionwis 3 3.3 %
arch potioncon 3 3.3 %
arch potiondex 3 3.3 %
arch potionpow 3 3.3 %
list shop_potions ≥ 2 5 5.5 %
list shop_potions ≥ 6 5 5.5 %
list shop_potions ≥ 8 5 5.5 %
list random_potion ≥ 10 10 11.0 %
list random_potion ≥ 12 5 5.5 %
list random_potion ≥ 12 5 5.5 %
list random_potion ≥ 14 5 5.5 %
list special_uncommon ≥ 14 5 5.5 %
list special_uncommon ≥ 13 5 5.5 %
list special_uncommon ≥ 12 5 5.5 %
list special_uncommon ≥ 10 5 5.5 %
list special_uncommon ≥ 7 5 5.5 %
list uncommon_items ≥ 3 5 5.5 %

9.13 special_uncommon

A gateway list for mid-tier rare items. Referenced heavily by random_potion and random_magical. bracers_ac and lockpicks lead with 10 tickets each. mithril_chainmail and ring_spell are the rarest non-NONE outcomes at 1 ticket each. list NONE (1.0 % base) intentionally produces nothing. uncommon_items is referenced four times at escalating magic thresholds.

Total weight: 97

Entry magic req chance Probability
list NONE 5 5.2 %
arch bracers_ac ≥ 4 10 10.3 %
arch mithril_chainmail ≥ 4 1 1.0 %
arch lockpicks 10 10.3 %
list rare_artifacts ≥ 14 5 5.2 %
list uncommon_artifacts ≥ 13 5 5.2 %
list uncommon_artifacts ≥ 7 5 5.2 %
arch potion_fire 5 5.2 %
arch potion_cold 5 5.2 %
arch potion_heal 5 5.2 %
arch potion_magic 5 5.2 %
list restoration_potions 10 10.3 %
list uncommon_items ≥ 2 5 5.2 %
list uncommon_items ≥ 4 5 5.2 %
list uncommon_items ≥ 6 5 5.2 %
list uncommon_items ≥ 8 5 5.2 %
arch ring_nodrain 5 5.2 %
arch ring_spell 1 1.0 %

9.14 containers

Used wherever a random bag-type item is needed. Sacks and bags are the most common. Quivers for throwing (quiver_throwing) and scroll cases are the rarest.

Total weight: 110

Entry chance Probability
arch sack 25 22.7 %
arch bag 25 22.7 %
arch pouch 20 18.2 %
arch key_ring 20 18.2 %
arch quiver 10 9.1 %
arch quiver_throwing 5 4.5 %
arch scrollcase 5 4.5 %

9.15 missile_weapons

Ammunition (arrows, bolts) dominates at chance 35 each. Bows and crossbows each get 10. Rare bow variants (hunter's, long, composite) have only 1 ticket each. All weapon entries require magic ≥ 3; quivers have no magic requirement.

Total weight: 103

Entry magic req nrof chance Probability
arch bow ≥ 3 10 9.7 %
arch arrow ≥ 3 10 35 34.0 %
arch crossbow ≥ 3 10 9.7 %
arch bolt ≥ 3 8 35 34.0 %
arch huntersbow ≥ 3 1 1.0 %
arch longbow ≥ 3 1 1.0 %
arch compositebow ≥ 3 1 1.0 %
arch quiver 10 9.7 %

9.16 throw_weapons

Spears are the most common thrown weapon (31.8 %) followed by daggers (27.3 %). Throwing stars, tridents, and the quiver are the rarest. All thrown weapon stacks require magic ≥ 2 (tridents ≥ 3).

Total weight: 110

Entry magic req nrof chance Probability
arch t_dagger ≥ 2 8 30 27.3 %
arch spear ≥ 2 4 35 31.8 %
arch axe_2 ≥ 2 5 15 13.6 %
arch hammer_2 ≥ 2 4 15 13.6 %
arch t_star1 ≥ 2 12 5 4.5 %
arch trident ≥ 3 3 5 4.5 %
arch quiver_throwing 5 4.5 %

9.17 melee_weapons

A large list covering most one- and two-handed melee weapons. All 39 standard weapons share chance 5 (magic ≥ 4 unless noted). Three weapons requiring only magic ≥ 3 (club, stonehammer, stoneaxe) are available at slightly lower difficulty. The list delegates to uncommon_weapons (10 tickets) and rare_weapons (1 ticket) for exotic choices.

Total weight: 209

Standard entries (chance 5 each, magic ≥ 4 unless marked):

Entry magic req Probability
arch b_dagger ≥ 4 2.4 %
arch b_bsword_1 ≥ 4 2.4 %
arch b_bsword_2 ≥ 4 2.4 %
arch b_lsword ≥ 4 2.4 %
arch b_scimitar ≥ 4 2.4 %
arch b_ssword_1 ≥ 4 2.4 %
arch b_ssword_2 ≥ 4 2.4 %
arch b_sword_1 ≥ 4 2.4 %
arch b_axe1 ≥ 4 2.4 %
arch dagger ≥ 4 2.4 %
arch punch_dagger ≥ 4 2.4 %
arch shortsword_2 ≥ 4 2.4 %
arch t_dagger ≥ 4 2.4 %
arch shortsword ≥ 4 2.4 %
arch light_sword ≥ 4 2.4 %
arch falchion ≥ 4 2.4 %
arch sabre ≥ 4 2.4 %
arch scimitar ≥ 4 2.4 %
arch spear ≥ 4 2.4 %
arch lspear ≥ 4 2.4 %
arch sword ≥ 4 2.4 %
arch sword_2 ≥ 4 2.4 %
arch sword_3 ≥ 4 2.4 %
arch sword_4 ≥ 4 2.4 %
arch broadsword ≥ 4 2.4 %
arch broadsword_2 ≥ 4 2.4 %
arch club ≥ 3 2.4 %
arch mace ≥ 4 2.4 %
arch mace_2 ≥ 4 2.4 %
arch hammer ≥ 4 2.4 %
arch hammer_2 ≥ 4 2.4 %
arch stonehammer ≥ 3 2.4 %
arch axe ≥ 4 2.4 %
arch axe_2 ≥ 4 2.4 %
arch axe_3 ≥ 4 2.4 %
arch axe_4 ≥ 4 2.4 %
arch stoneaxe ≥ 3 2.4 %
arch morningstar ≥ 4 2.4 %
arch large_morningstar ≥ 4 2.4 %

Non-standard entries:

Entry magic req chance Probability
arch poleaxe ≥ 4 2 1.0 %
arch magnifier ≥ 4 1 0.5 %
list uncommon_weapons 10 4.8 %
list rare_weapons 1 0.5 %

9.18 rare_weapons

Exotic and high-value weapons rarely found. brdaxe1 (broad axe) has the highest share. dhaxe2 requires magic ≥ 6, making it one of the most difficulty-gated weapons in the game. Sai, kama, and other eastern weapons each have 1 ticket.

Total weight: 18

Entry magic req chance Probability
arch brdaxe1 ≥ 4 5 27.8 %
arch sflail1 ≥ 4 2 11.1 %
arch dhaxe1 ≥ 4 2 11.1 %
arch shaxe1 ≥ 4 2 11.1 %
arch dhaxe2 ≥ 6 1 5.6 %
arch sai1 ≥ 4 1 5.6 %
arch sai2 ≥ 4 1 5.6 %
arch kama1 ≥ 4 1 5.6 %
arch kama2 ≥ 4 1 5.6 %
arch vlongsword ≥ 4 2 11.1 %

9.19 uncommon_weapons

Cultural and unusual weapons. Katana requires magic ≥ 4; nunchaku, taifu, and trident require ≥ 3; shovel and stake need only ≥ 2. Scythe and sickle have lower weight (2) than the rest.

Total weight: 42

Entry magic req chance Probability
arch katana_1 ≥ 4 5 11.9 %
arch nunchacu_1 ≥ 3 5 11.9 %
arch nunchacu_2 ≥ 3 5 11.9 %
arch taifu_1 ≥ 3 5 11.9 %
arch shovel_1 ≥ 2 5 11.9 %
arch stake ≥ 2 5 11.9 %
arch scythe1 ≥ 4 2 4.8 %
arch sickle1 ≥ 4 2 4.8 %
arch t_star1 ≥ 4 3 7.1 %
arch trident ≥ 3 5 11.9 %

9.20 uncommon_artifacts

Named artifact weapons, armour, and accessories. Most entries share chance 5. The three dragon mail variants (dragon_mail, green_dragon_mail, blue_dragon_mail) are slightly rarer at chance 3. The amulet entry uses the artifact keyword to force generation of the lifesaving artifact specifically.

Total weight: 99

Entry chance Probability
arch potion_shielding 5 5.1 %
arch mjoellnir 5 5.1 %
arch bonecrusher 5 5.1 %
arch firebrand 5 5.1 %
arch frostbrand 5 5.1 %
arch deathbringer 5 5.1 %
arch dragonslayer 5 5.1 %
arch skullcleaver 5 5.1 %
arch demonbane 5 5.1 %
arch sting 5 5.1 %
arch levitationboots 5 5.1 %
arch reflector 5 5.1 %
arch holy_shield 5 5.1 %
arch girdle_dam 5 5.1 %
arch dragon_mail 3 3.0 %
arch green_dragon_mail 3 3.0 %
arch blue_dragon_mail 3 3.0 %
arch dragon_shield 5 5.1 %
arch helmet_of_xrays 5 5.1 %
arch amulet (artifact: lifesaving) 5 5.1 %
arch elvenboots 5 5.1 %

9.21 random_magical

A broad magic-item loot list. restoration_potions leads at 24.5 % and scroll_new (stack of 9) follows at 21.0 %, making these the two most common outcomes. ring_spell is nearly impossible at 0.7 %.

Total weight: 143

Entry magic req nrof chance Probability
arch amulet 10 7.0 %
arch ring 10 7.0 %
list random_books 10 7.0 %
arch wand 10 7.0 %
arch staff 5 3.5 %
arch rod_light 2 1.4 %
arch scroll_new 9 30 21.0 %
list restoration_potions 35 24.5 %
arch gem 1 5 3.5 %
arch pearl 8 5 3.5 %
arch ruby 2 5 3.5 %
arch sapphire 3 5 3.5 %
arch emerald 4 5 3.5 %
arch ring_spell 1 0.7 %
list special_uncommon ≥ 9 5 3.5 %

9.22 rare_artifacts

Legendary named items. list NONE occupies 20 % of the weight, meaning one in five rolls produces nothing. Each of the 16 actual artifacts has an equal 5 % weight, giving a 5/100 = 5.0 % chance per item when the list wins. All artifacts in this list have no magic restriction — they are gated purely by whatever magic requirement the calling entry imposed.

Total weight: 100

Entry chance Probability
list NONE 20 20.0 %
arch elven_bow 5 5.0 %
arch helmet_of_brilliance 5 5.0 %
arch holy_avenger 5 5.0 %
arch darkblade 5 5.0 %
arch excalibur 5 5.0 %
arch stormbringer 5 5.0 %
arch mournblade 5 5.0 %
arch defender 5 5.0 %
arch speedboots 5 5.0 %
arch girdle_str 5 5.0 %
arch girdle_con 5 5.0 %
arch girdle_strcon 5 5.0 %
arch gauntlets_str 5 5.0 %
arch gauntlets_dex 5 5.0 %
arch bracers_dex 5 5.0 %
arch gram 5 5.0 %

9.23 random_scroll

A scroll-focused list weighted so that single scrolls are far more common than multi-scroll stacks. The five scroll_new entries at increasing nrof with decreasing weight create a graduated rarity curve. The eleven weapon- and armour-improvement scrolls each have only 1 ticket — they are very rare individually, though their combined weight (11) is significant relative to the total.

Total weight: 186

Entry nrof chance Probability
arch scroll_new 5 10 5.4 %
arch scroll_new 4 20 10.8 %
arch scroll_new 3 30 16.1 %
arch scroll_new 2 40 21.5 %
arch scroll_new 1 60 32.3 %
arch prepare_weapon 1 0.5 %
arch improve_cha 1 0.5 %
arch improve_con 1 0.5 %
arch improve_damage 1 0.5 %
arch improve_dex 1 0.5 %
arch improve_enchantment 1 0.5 %
arch improve_int 1 0.5 %
arch improve_pow 1 0.5 %
arch improve_str 1 0.5 %
arch improve_weight 1 0.5 %
arch improve_wis 1 0.5 %
list random_knowledge 7 3.8 %
arch ench_armour 3 1.6 %
list random_read 5 2.7 %

9.24 random_wands

Used by shops and monster drops to pick a magic device. Wands dominate overwhelmingly at 72.0 %. Staves are a distant second. rod_heavy and ring_spell are extremely unlikely at under 1 % each.

Total weight: 132

Entry chance Probability
arch wand 95 72.0 %
arch staff 30 22.7 %
arch rod_light 5 3.8 %
arch rod_heavy 1 0.8 %
arch ring_spell 1 0.8 %

9.25 random_books

Used by shops and high-value drops. Cleric spell books are the most common (23.5 %). All arcane school books (evocation, pyromancy, sorcery, summoning) share equal weight at 17.6 % each. random_read (non-spell readable items) is the rarest at 5.9 %.

Total weight: 85

Entry chance Probability
arch cleric_book 20 23.5 %
arch evoker_book 15 17.6 %
arch pyro_book 15 17.6 %
arch sorcerer_book 15 17.6 %
arch summoner_book 15 17.6 %
list random_read 5 5.9 %

9.26 random_read

Picks a generic readable item. Clamped books and scrolls share the highest weight (28.3 % each). Quartos are the rarest.

Total weight: 230

Entry chance Probability
arch tome 45 19.6 %
arch book_clasp 65 28.3 %
arch scroll 65 28.3 %
arch scroll_2 35 15.2 %
arch quarto 20 8.7 %

9.27 random_stone

Generates stone and raw geological material. Field stone is the most common (31.3 %). Gold nuggets (largenugget) are rare; small nuggets and mountain stone are equal at 18.8 % each.

Total weight: 80

Entry nrof chance Probability
arch mountain_stone 3 15 18.8 %
arch river_stone 6 20 25.0 %
arch field_stone 6 25 31.3 %
arch largenugget 3 5 6.3 %
arch smallnugget 5 15 18.8 %

9.28 random_inorganic

A top-level category picker for raw materials. Stones (38.8 %) and minerals (34.0 %) are the dominant categories. Plain rock (rock2) fills the gap. Ore is very rare at 2.9 %.

Total weight: 103

Entry chance Probability
list random_minerals 35 34.0 %
list random_stone 40 38.8 %
arch rock2 25 24.3 %
list random_ore 3 2.9 %

9.29 random_minerals

Selects a mineral reagent for alchemy or crafting. Salt is the most abundant (21.4 %). Gold nuggets (largenugget) are the rarest at 2.9 %.

Total weight: 70

Entry nrof chance Probability
arch largenugget 3 2 2.9 %
arch smallnugget 5 5 7.1 %
arch gypsum 3 10 14.3 %
arch pyrite 3 10 14.3 %
arch cinnabar 2 8 11.4 %
arch salt 5 15 21.4 %
arch phosphorus 4 10 14.3 %
arch sulphur 4 10 14.3 %

9.30 random_spells

A compact list used to populate spell-carrying containers. A scroll_new (stack of 3) is the most likely result. Wands, staves, and spell books share the remaining weight.

Total weight: 35

Entry nrof chance Probability
arch scroll_new 3 15 42.9 %
arch wand 10 28.6 %
arch staff 5 14.3 %
list random_books 5 14.3 %

9.31 random_talisman

Picks a talisman or ring. Plain rings are most likely at 50 %, amulets at 37.5 %. The talisman sub-list and special_uncommon each hold only 6.3 %.

Total weight: 80

Entry chance Probability
arch ring 40 50.0 %
arch amulet 30 37.5 %
list talisman 5 6.3 %
list special_uncommon 5 6.3 %

9.32 random_artifact

A simple two-entry picker that delegates entirely to sub-lists. Uncommon artifacts are twice as likely as rare ones.

Total weight: 15

Entry chance Probability
list uncommon_artifacts 10 66.7 %
list rare_artifacts 5 33.3 %

9.33 random_ore

Mining loot list. Rubble dominates at 24.8 %. Precious metals follow an inverse-rarity gradient from zinc (14.9 %) down to platinum (0.5 %). Stone and mineral sub-lists provide variety at 2.5 % and 2.0 % respectively.

Total weight: 202

Entry chance Probability
arch rubble 50 24.8 %
arch rock2 10 5.0 %
arch zincore 30 14.9 %
arch copperore 30 14.9 %
arch leadore 25 12.4 %
arch tinore 20 9.9 %
arch ironore 15 7.4 %
arch silverore 9 4.5 %
arch goldore 3 1.5 %
arch platore 1 0.5 %
list random_stone 5 2.5 %
list random_minerals 4 2.0 %

9.34 uncommon_items

Miscellaneous unusual items. list NONE holds the largest single share (37.1 %), meaning over one-third of rolls produce nothing — a deliberate mechanism to keep these items infrequent. Horns and rods are the most likely actual items. ring_spell is the rarest live outcome at 1.6 %.

Total weight: 62

Entry magic req chance Probability
arch horn 10 16.1 %
arch horn2 10 16.1 %
arch crown ≥ 3 3 4.8 %
arch rod_light 10 16.1 %
arch rod_heavy 5 8.1 %
arch ring_spell 1 1.6 %
list NONE 23 37.1 %

9.35 restoration_potions

The terminal potion list for restorative effects. Minor potions are most common (42.9 %). Full potion_restoration and major potions share the lowest weight at 14.3 % each.

Total weight: 35

Entry chance Probability
arch minor_potion_restoration 15 42.9 %
arch medium_potion_restoration 10 28.6 %
arch major_potion_restoration 5 14.3 %
arch potion_restoration 5 14.3 %

Generated from crossfire-crossfire-arch and crossfire-crossfire-server source.

arch/crossfire_archetype_handbook.txt · Last modified: by leaf

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki