System Overview

Phase 1

Trait NFT Minting

Mint trait NFTs with deterministic attributes — rarity, stats, skills, and set affiliation, all determined by a single hash. Every piece is unique.

Phase 2

Soulforge & Character

Eight fragments, one soul. Forge locks all eight standard parts and any included optional Bonus in the contract; the input parts are not burned or destroyed. Stats stack, set bonuses ignite, and the original inputs remain redeemable through Unforge.

Phase 3

Token Economy & Progression

Enhance your character with DSG tokens (+1 to +20), gaining stats at every level. Unlock awakening at +15 for the ultimate form.

Phase 4

Combat & Gameplay

Take your character into battle. Combat formulas, on-chain PvP contracts, role counters, turn-based PvE dungeon raids, ELO-ranked PvP arena, and large-scale guild wars — all powered by on-chain attributes.

Phase 1

Trait Attribute System

Traits are the building blocks of every hero in Dungeon Saga. Every attribute is deterministically derived at mint time from txidSeed = SHA-256(txid + indexHex) and traitHash = SHA-256(blockHash + txidSeed) — verifiable, fair, and tamper-proof.

Rarity Tier
5 tiers: Common → Legendary
Determines stat ranges, resistance base, and affix count. Higher rarity = higher ceiling.
Soul Dimension Stats
STR / INT / VIT / FOR / DEX / LCK
Each part carries a primary + secondary stat. Each faction tailors stats to fit its character's role.
Resistance
Phys / Magic / Fire / Ice / Poison / Lightning
Only armor parts (Body, Head Wear, Clothing) carry typed resistance. Non-armor parts do not.
Skill & Set
4 skills/part, 4 sets/faction
Each trait rolls a skill and set affiliation. Set bonuses activate when fused into a character.
Affixes
1~3 + special
Extra combat bonuses drawn from a pool of 11 types. Count scales with rarity.
Part Weight
×0.6 ~ ×1.5
Weapon (×1.5) contributes the most stats. Background/Emblem (×0.6) the least.
Technical
Seed Algorithm
byte[0]~[12] → 13 dimensions
All attributes derive from SHA-256(blockHash + SHA-256(txid + indexHex)). Each attribute uses a separate byte, so no two stats influence each other. Fully verifiable.
On-Chain Format
JSON metadata
Rarity, stats, resistance, skill, set, affixes — all stored in the NFT attributes array, readable by any indexer.
Deployment
Collections
Existing Deployments
Forge preserves every input NFT's collection identity while locking it. Unforge returns those same assets.

How It Plays

Soul Dimension Stats

STR
Strength
Physical attack, armor penetration
INT
Intelligence
Spell damage, magic resistance
VIT
Vitality
Scales battle HP, PvE between-wave healing
FOR
Fortitude
Armor value, CC resistance
DEX
Dexterity
Evasion, attack speed
LCK
Luck
Crit rate, crit damage, drop bonus

Trait Rarity Tiers

Trait Rarity determines attribute strength — how powerful a trait's stats, resistances, and affixes are. It is fixed at mint time by byte[0] of the traitHash. Higher rarity means stronger stats, more affixes, and greater value.

Note: Trait Rarity is different from Design Scarcity, which measures how scarce a particular visual variant is based on production numbers. A Common-rarity trait can have a mythic design, and vice versa.

RarityByte RangeProbMain StatSub StatAffixes
Common0 – 10139.8% 1–81–31
Uncommon102 – 17830.1% 5–152–81–2
Rare179 – 22418.0% 12–256–152
Epic225 – 2479.0% 20–3512–202–3
Legendary248 – 2553.1% 36–5022–353 + special

Affix System

Beyond primary and secondary stats, each trait carries bonus affixes — extra effects that make every piece unique. The number of affixes scales with rarity (1 for Common, up to 3 + special for Legendary). Any affix can appear on any part type.

Affix Range Stat
OFFENSIVE — 4 types
ATK Bonus+1% ~ +4%STR / INT
Crit Rate Bonus+0.1% ~ +0.5%LCK
Crit Damage Bonus+2% ~ +8%LCK
Armor Penetration+0.5% ~ +3%STR
DEFENSIVE — 4 types
HP Bonus+1% ~ +5%VIT
DEF Bonus+1% ~ +4%FOR
Evasion Bonus+0.5% ~ +2%DEX
CC Resistance+1% ~ +5%FOR
UTILITY — 3 types
Attack Speed+1% ~ +4%DEX
Lifesteal+0.5% ~ +3%VIT
Drop Bonus+2% ~ +8%LCK
Count by rarity: Common=1 · Uncommon=1~2 · Rare=2 · Epic=2~3 · Legendary=3+special
Affix calculation details & algorithm
TermDefinition
affixBaseFloor value at given rarity. E.g. ATK "+1%~+4%" base=1, range=4.
rangemax-min+1. byte%range = random offset on base.
affixPool11 types (4+4+3), indexed 0-10.
affixTableBase count per rarity. Uncommon/Epic +0|+1 via byte[13]%2.
affixCount   = affixTable[rarity] + (byte[13] % 2)
affix1_type  = affixPool[ byte[7]  % 11 ]    // type
affix1_value = affixBase  + byte[8]  % range // value
affix2_type  = affixPool[ byte[9]  % 11 ]    // if count >= 2
affix2_value = affixBase  + byte[10] % range
affix3_type  = affixPool[ byte[11] % 11 ]    // if count >= 3
affix3_value = affixBase  + byte[12] % range

Part Stats by Faction

Each cell shows Primary/Secondary for that faction. Weight indicates how much a part amplifies its primary stat — Weapon (×1.5) is the most impactful, Background/Emblem (×0.6) the least. ✓ marks parts that carry typed resistance.

Part Weight Resist? ☀ Light ☠ Dark ⚖
Knight Adv. Wizard Grum Plagued Night. Mithia
Weapon×1.5—STR/VITSTR/DEXINT/DEXSTR/VITSTR/DEXINT/STRINT/VIT
Body×1.2✓VIT/FORVIT/FORVIT/FORVIT/STRVIT/FORVIT/FORVIT/FOR
Clothing×1.2✓FOR/STRFOR/STRFOR/INTFOR/STRFOR/STRFOR/INTFOR/STR
Head Wear×1.0✓FOR/VITFOR/VITFOR/VITFOR/VITFOR/VITFOR/VITFOR/VIT
Hand×1.0—DEX/STRDEX/STRDEX/STRDEX/STRDEX/LCKDEX/STRDEX/STR
Face×0.8—INT/LCKINT/LCKINT/LCKINT/LCKINT/LCKINT/LCKINT/VIT
Background×0.6—LCK/—LCK/—LCK/—LCK/—LCK/—LCK/—LCK/—
Emblem×0.6—LCK/—LCK/—LCK/—LCK/—LCK/—LCK/—LCK/—

Bold = this faction's assignment differs from most other factions on that part. Higher weight = stronger primary stat. ✓ = carries typed resistance (Physical/Magical/Fire/Ice/Poison/Lightning).

★ Bonus Part — The Hidden Jackpot

Only the luckiest will find one. When your mint transaction produces a special TXID pattern, the Soulforge grants you a Bonus part — a rare 9th piece beyond the 8 regular parts. Include it alongside your 8 regular pieces during fusion, and your character gains a unique passive power that nobody else's build can replicate. One Bonus per character. Every mint is a chance.

Knightace
Oath of the Vanguard
Ace of Blades · Cloak
Below 30% HP: heal team 15% HP + taunt all 1 turn
Adventurerc0de
Fortune’s Edge
Code Breaker · Accessories
First attack ignores evasion + 50% DEF penetration
Wizarda5ce
Arcane Singularity
Ascend · Arcane
Spells 15% chance to cast twice
Grumb100d
Undying Rage
Blood Rage · Accessory
Survive lethal hit (1 HP) + ATK ×2 for 1 turn
The Plagueddead
Pandemic Protocol
Death Pact · Mutation
Kill spreads all debuffs to nearby enemies
Nightspawnfade
Void Anchor
Shadow Fade · Tentacle
Teleport to lowest-HP enemy, ignore DEF 1 hit
Mithiae1f
Grace of Eternity
Elven Whisper · Accessories
Battle start: shield allies 30% of max HP

Universal patterns (trigger bonus for ANY faction):

666 Mark of the Beast  •  777 Lucky Seven  •  000 Void Echo  •  d1ce Dice Roll  •  cafe Dungeon Café

Under the Hood

Hex & Bytes Primer

Quick primer: Hex & Bytes

Computers store data in bytes. One byte = 8 bits = a number from 0 to 255.
Bytes are often written in hexadecimal (base-16) using digits 0–9 and letters a–f.
Each hex digit represents 4 bits, so one byte = two hex digits.

Example: f2 in hex = 15×16 + 2 = 242 in decimal.

SHA-256 produces a 256-bit hash = 32 bytes = 64 hex characters.
We use different bytes from this hash to determine different attributes — each byte is independent, ensuring no attribute can influence another.

Attribute Seed Algorithm

traitHash = SHA-256(blockHash + SHA-256(txid + indexHex)) — fully verifiable randomness
Core Attributes
[0] rarity rarityTable[hash[0]] 5 tiers, byte range
[1] mainStat floor((base + hash[1] % range) × weight) scaled by part weight
[2] subStat base(rarity) + hash[2] % range no weight scaling
Resistance— armor parts only
[3] resistType resistTable[hash[3] % 6] Phys / Magic / Fire / Ice / Poison / Lightning
[4] resistVal resBase(rarity) + hash[4] % range Body / Head Wear / Clothing
Skill & Set
[5] skill skillTable[faction][part][hash[5] % 4] 4 candidates/part
[6] setId setTable[faction][hash[6] % 4] 4 sets/faction
Affixes— pool = 11 (4+4+3)
[7] affix1 type affixPool[hash[7] % 11]
[8] affix1 value affixBase + hash[8] % range
[9] affix2 type affixPool[hash[9] % 11] if count ≥ 2
[10] affix2 value affixBase + hash[10] % range
[11] affix3 type affixPool[hash[11] % 11] if count ≥ 3
[12] affix3 value affixBase + hash[12] % range

Worked Example

A mint transaction produces the following traitHash:

txidSeed = SHA-256(txid + indexHex)
traitHash = SHA-256(blockHash + txidSeed)

= f2 a7 1b 03 8e 5c d1 44 b9 77 02 e6 3f 8a c5 91 d0 4e 72 b8 1f a3 56 e9 0d cb 64 f7 28 9e b5 13
Rarity Main Sub Resist Type Resist Val Skill Set Affix 1 Affix 2 Affix 3 Count
Byte [0][1][2][3][4][5][6] [7][8][9][10][11][12][13]
Hex f2 a7 1b 03 8e 5c d1 44 b9 77 02 e6 3f 8a
Dec =242=167=27=3=142=92=209 =68=185=119=2=230=63=138
⚙ Worked Example: How a Trait's Attributes Are Born

Step 1 — Rarity: byte[0] = 0xf2 = 242. Which tier does it fall into?

Rarity Byte Range 242 in range?
Common0 – 101242 > 101 → No
Uncommon102 – 178242 > 178 → No
Rare179 – 224242 > 224 → No
Epic225 – 247225 ≤ 242 ≤ 247 → MATCH!
Legendary248 – 255—

Result: Epic rarity (9.0% chance)

Step 2 — Core Attributes: Assume this is a Knight Head Wear (Primary=FOR, Secondary=VIT). The base and range come from the Rarity table (Epic row).

Byte Raw Attribute Source (from Rarity table) Calculation Result
byte[1]167Main Stat (FOR)Epic main: 20~35, base=20, range=1620 + 167%16 = 20+7FOR 27
byte[2]27Sub Stat (VIT)Epic sub: 12~20, base=12, range=912 + 27%9 = 12+0VIT 12
byte[3]3Resist Type6 types (Phys/Magic/Fire/Ice/Poison/Lightning)3 % 6 = 3Ice
byte[5]92SkillKnight Head Wear: Helm Guard / Skull Fortress / Deflection / Ward of Steel92 % 4 = 0Helm Guard
byte[6]209SetKnight: Iron Vanguard / Knight Commander / Shadow Scout / Holy Guardian209 % 4 = 1Knight Commander

Step 3 — Affix Count: Epic base = 2, byte[13] decides +0 or +1.

Byte Raw Value Calculation Affix Count
byte[13]0x3f = 6363 % 2 = 1 → 2 + 13 affixes

If byte[13] were even (e.g. 62): 62%2=0 → 2+0 = 2 affixes

Step 4 — Generate 3 Affixes: each affix uses 2 bytes (type + value).

Affix Type Byte Type Result Value Byte Value Result
#1byte[7] = 6868%11=2 → Crit DMGbyte[8] = 1852+185%7=2+3 → +5%
#2byte[9] = 119119%11=9 → Lifestealbyte[10] = 20.5+2%6=0.5+2 → +2.5%
#3byte[11] = 230230%11=10 → Drop Bonusbyte[12] = 632+63%7=2+0 → +2%

Every value above is derived from a single SHA-256 hash. Different bytes, zero correlation, fully on-chain verifiable.

On-Chain Deployment

On-Chain Data Format

The attributes array in the NFT CBOR metadata includes rarity, stats, resistance, skill, set, and up to 3 affix slots.

Example: Knight Head Wear (Rare, 2 affixes)

Knight Head Wear #12
RARE
FOR
18
VIT
9
Phys Resist
12
Skill
Deflection
Set
Iron Vanguard
Affix 1
DEF +3%
Affix 2
HP +2%
Affix 3
—
View JSON: Knight Head Wear #12 (Rare)
{
  "name": "Knight Head Wear #12",
  "attributes": [
    // Identity
    {"trait_type": "Faction",          "value": "Knight"},           // 
    {"trait_type": "Part Type",        "value": "Head Wear"},        // 
    {"trait_type": "Design Variant",   "value": 12},                 // 
    {"trait_type": "Trait Hash",       "value": "b0ad76db..."},      // 

    // Rarity & Stats
    {"trait_type": "Rarity",           "value": "Rare"},             // 
    {"trait_type": "FOR",              "value": 18},                // 
    {"trait_type": "VIT",              "value": 9},                 // 

    // Resistance
    {"trait_type": "Resistance",       "value": "Physical"},         // 
    {"trait_type": "Resistance Value", "value": 12},                // 

    // Skill & Set
    {"trait_type": "Skill",            "value": "Deflection"},       // 
    {"trait_type": "Set",              "value": "Iron Vanguard"},    // 

    // Affixes
    {"trait_type": "Affix 1",          "value": "DEF Bonus +3%"},   // 
    {"trait_type": "Affix 2",          "value": "HP Bonus +2%"},    // 
    {"trait_type": "Affix 3",          "value": ""}                 // 
  ]
}

Example: Wizard Weapon (Legendary, no resistance)

Wizard Weapon #7
LEGENDARY
INT
67
DEX
28
Skill
Chain Lightning
Set
Elemental Lord
Affix 1
ATK +4%
Affix 2
Crit Dmg +7%
Affix 3
Armor Pen +2%
View JSON: Wizard Weapon #7 (Legendary)
{
  "name": "Wizard Weapon #7",
  "attributes": [
    // Identity
    {"trait_type": "Faction",          "value": "Wizard"},
    {"trait_type": "Part Type",        "value": "Weapon"},
    {"trait_type": "Design Variant",   "value": 7},
    {"trait_type": "Trait Hash",       "value": "ff001122..."},

    // Rarity & Stats
    {"trait_type": "Rarity",           "value": "Legendary"},
    {"trait_type": "INT",              "value": 67},
    {"trait_type": "DEX",              "value": 28},

    // Skill & Set
    {"trait_type": "Skill",            "value": "Chain Lightning"},
    {"trait_type": "Set",              "value": "Elemental Lord"},

    // Affixes
    {"trait_type": "Affix 1",          "value": "ATK Bonus +4%"},
    {"trait_type": "Affix 2",          "value": "Crit Damage Bonus +7%"},
    {"trait_type": "Affix 3",          "value": "Armor Penetration +2%"}
  ]
}

Collection Lifecycle Context

Asset RoleForge StateUnforge State
Existing original-part collections Eight standard parts and any included optional Bonus are locked without changing their collection assignments. The exact original locked inputs return to the current Hero holder.
Existing Hero collection deployment The forged PFP Hero represents the right to redeem its locked inputs. The Hero is destroyed when Unforge returns those exact inputs.

Original assets stay original. Forge and Unforge use the existing original-part and Hero collection deployments. Unforge returns the exact original inputs; it does not mint replacement, Salvaged, or Reforged parts, so no separate disassembly-output collection branch is required.

Phase 2

Soulforge & Character

From scattered fragments to a living legend. Forge locks all eight standard parts and any included optional Bonus in the contract; the input parts are not burned or destroyed. One Hero is created with every stat sealed on-chain.

Forge
8 parts + optional Bonus → 1 Hero
Contract-lock the same-faction inputs without destroying them. One PFP Hero is forged with combined stats.
4-Layer Stats
Base + Parts + Set + Resonance
Deterministic formula. Every stat is chosen or earned, never hidden.
7 Factions
65 ~ 80 base points
Tank, Assassin, Mage, Healer — each faction has a unique stat distribution and role.
28 Sets
4 per faction× 7
3/5/8 piece thresholds. Full set unlocks a character-defining unique ability.
Resonance
+3% ~ +40% all stats
Same-rarity parts amplify everything. 8 Legendary = +40% + “Ancient” title.
Unforge
Hero → exact original inputs
Destroy the Hero and return its exact locked parts to the current Hero holder.

Fusion Rule

Same faction, one address, all 8 part types — invoke the Soulforge. Forge locks all eight standard parts and any included optional Bonus in the contract; the input parts are not burned or destroyed. The optional Bonus grants its unique passive and remains part of the same locked input set.

8 regular parts:Background Emblem Body Face Head Wear Clothing Hand Weapon
⚙
8 Standard Part NFTs
Same faction
8 different part types
+ optional Bonus
→
★
Soulforge
Original inputs contract-locked
Stats stacked & weighted
Set & resonance calculated
→
⚔
1 PFP Hero NFT
6 final stats on-chain
Skills & set bonuses active
+ Optional Bonus passive
⚙ Fusion & Stats

Attribute Formula

Final stats = deterministic sum of four player-driven layers:

Character Stats = Faction Base + Σ(8 Trait Stats) + Set Bonus + Rarity Resonance
1. Faction Base

Innate stats by faction. e.g. Knight = STR 20, INT 5, VIT 22, FOR 18, DEX 8, LCK 7 (80 pts). The foundation before any parts.

2. Σ(8 Trait Stats)

Sum of all 8 parts’ primary (weighted) + secondary stats. Stack directly onto faction base.

3. Set Bonus

3/5/8 matching set pieces activate escalating bonuses. Multiple sets can be active (e.g. 5 pcs A + 3 pcs B).

4. Rarity Resonance

Same-rarity parts amplify all stats. 5 Rare = +14%. 8 Legendary = +40% + “Ancient” title + legendary glow.

Worked Example — Knight with mixed Rare parts

1
Faction Base
STR 20 INT 5 VIT 22 FOR 18 DEX 8 LCK 7
2
Σ 8 Parts (Rare rarity)
PartPrimarySecondary
WeaponSTR 27VIT 12
BodyVIT 18FOR 15
ClothingFOR 20STR 10
Head WearFOR 14VIT 9
HandDEX 18STR 8
FaceINT 12LCK 7
BackgroundLCK 10—
EmblemLCK 9—
ΣSTR 45  INT 12  VIT 39  FOR 49  DEX 18  LCK 26
3
Set Bonus(3 pcs Iron Vanguard)
FOR = (18 + 49) × 15% = +10  ← only FOR affected
4
Rarity Resonance(5× Rare = +14%)
(Base + Parts + Set) × 1.14 per stat:
STR = (20+45+0) × 1.14 = 74    INT = (5+12+0) × 1.14 = 19    VIT = (22+39+0) × 1.14 = 69
FOR = (18+49+10) × 1.14 = 87    DEX = (8+18+0) × 1.14 = 29    LCK = (7+26+0) × 1.14 = 37

Final Character NFT Stats:

Knight Character — Forged
5× RARE RESONANCE +14%
STR
74
INT
19
VIT
69
FOR
87
DEX
29
LCK
37
Set
Iron Vanguard (3)
Resonance
5× Rare (+14%)

These 6 values are permanently sealed on-chain. They become the foundation for all combat calculations in Phase 4.

Faction Base Stats

Each faction starts with an innate stat baseline (65–80 points) before any parts are fused. Bold values = faction specialty.

☀ Light ☠ Dark ⚖ Neutral
Stat Knight Adventurer Wizard Grum The Plagued Nightspawn Mithia
Warrior Swordsman Warlock Champion Assassin Dark Mage Healer
STR201552615155
INT5530353015
VIT22101020101115
FOR1875157510
DEX82515525510
LCK71251112410
Total 80747080747065
⚒ Equipment & Synergy

Set System

4 sets per faction, 28 total. Collect matching pieces to unlock escalating power — a full 8-piece set grants a unique ability that defines your playstyle.

✎
Mint
Each trait auto-assigned
to 1 of 4 faction sets
traitHash[6] % 4
→
★
Collect
Mint or trade to gather
same-set trait pieces
25% chance per set
→
✓
Fuse & Activate
3/5/8 pcs thresholds
Multiple sets stackable
8 pcs = unique ability

Mix & match: 5 pcs Set A + 3 pcs Set B = both bonuses active. Full 8-piece requires all traits from one set.

☀ LIGHT FACTION SETS

Knight — Warrior

Set Name3 Pcs5 PcsFull Set (8)
Iron VanguardFOR +15%Heal 2% HP on hit takenTaunt Aura: enemy ATK −20%
Knight CommanderSTR +15%Block rate +25%Counter-attack after block
Vanguard ScoutDEX +15%Move speed +20%Always act first
Holy GuardianVIT +20%Absorb 15% ally damageSurvive lethal hit once

Adventurer — Swordsman

Set Name3 Pcs5 PcsFull Set (8)
Wind WalkerDEX +15%Evasion +20%Double strike: 50% chance to attack twice
Crimson BladeSTR +15%Armor penetration +30%Execute: instant kill target below 15% HP
Lucky StarLCK +20%Crit damage +40%Lucky Dodge: 25% evade lethal hit + counter
Survivor's WillVIT +15%HP regen 3%/turnSecond Wind: revive once at 30% HP

Wizard — Warlock · Leader

Set Name3 Pcs5 PcsFull Set (8)
Arcane ScholarINT +15%Spell AOE radius +50%Chain Lightning: hit jumps to 3 nearby enemies
Elemental LordDEX +15%Cooldown −25%Time Warp: extra turn every 3 rounds
Astral WalkerVIT +15%Magic shield: absorb 20% damageArcane Barrier: team magic resist +30%
Chrono MageLCK +20%Spell crit rate +15%Wild Magic: random 200%~400% damage on crit

☠ DARK FACTION SETS

Grum — Champion

Set Name3 Pcs5 PcsFull Set (8)
Blood BerserkerSTR +20%ATK +5% per 10% HP lostBloodlust: lifesteal 25% of damage dealt
Iron CrusherFOR +15%Reflect 15% melee damageUnstoppable: immune to CC for 3s after taking hit
War ChiefLCK +20%Crit rate +10%, crit damage +25%Predator: crit ignores 50% DEF
Primal BeastVIT +20%Regen 5% HP when below 30%Last Stand: unkillable for 2 turns at 1 HP

The Plagued — Assassin

Set Name3 Pcs5 PcsFull Set (8)
Plague LordDEX +15%Poison on hit: 3% HP/turn for 3 turnsPandemic: poison spreads to adjacent enemies
Blight ReaperSTR +15%Backstab: +50% damage to CC’d targetsAssassinate: 100% crit on first hit each fight
Blight KingLCK +20%Evasion +15%, counter on dodgeDance of Death: 3-hit combo on evade (60% ATK each)
Plague PriestFOR +15%Lifesteal +15%Soul Harvest: killing blow heals 50% max HP

Nightspawn — Dark Mage · Leader

Set Name3 Pcs5 PcsFull Set (8)
Shadow WeaverINT +15%Dark spells ignore 20% magic resistVoid Eruption: AOE 250% INT + 3s silence
Phantom InvokerSTR +15%Melee spells: spell damage + 50% STR bonusDark Harvest: each kill grants +10% ATK (stacks)
Night HarbingerVIT +15%Drain: heal 20% of spell damage dealtSoul Link: share HP pool with 1 ally
Void SovereignFOR +15%Dark Shield: reduce next hit by 40%Doomsday: after death, AOE 200% INT to all enemies

⚖ NEUTRAL SETS

Mithia — Healer

Set Name3 Pcs5 PcsFull Set (8)
Light WeaverINT +15%Heal power +25%Miracle: full heal all allies (once per battle)
Spirit HealerVIT +20%Ally damage taken −10%Sanctuary: team immune to damage for 1 turn
Moon GuardianFOR +15%Purify: remove 1 debuff/turnMass Purge: cleanse all debuffs from team
Nature's GraceLCK +20%Team crit rate +5%Fortune’s Favor: team LCK +30% + bonus loot

Rarity Resonance

Same-rarity parts resonate, amplifying all stats. Common does not resonate. Only the highest qualifying tier applies.

Same-Rarity Count Uncommon Rare Epic Legendary
3+3%+6%+10%+15%
5+7%+14%+20%+28%
8 +12%
shimmer
+20%
rarity aura
+30%
epic aura
+40%
"Ancient" title + legendary glow
♺ Unforge & Custody

Unforge & Original-Part Return

Unforge destroys the Hero and returns the exact original locked eight standard parts, plus the same Bonus if one was included at Forge, to the current Hero holder. No attributes are rerolled and no replacement parts are minted.

The right to Unforge and redeem those locked parts transfers with Hero ownership. Whoever currently holds the Hero receives the original inputs when Unforge completes.

Destroy the Hero
Unforge closes the current Hero
The Hero NFT is destroyed.
No incomplete Hero remains.
No attributes are rerolled.
Return Exact Inputs
Original-part redemption
The exact locked eight standard parts return.
If a Bonus was locked, that same Bonus returns.
No replacement parts are minted.
Follow Current Ownership
Transferable redemption right
The current Hero holder controls Unforge.
Transferring the Hero transfers the right.
The original forger keeps no separate claim.
Phase 3

Token Economy & Progression

Two on-chain tokens — DSG and HP — drive all character growth and combat. Spend DSG to enhance your character from +1 to +20, gaining power at every level; push past +15 to unlock an awakened ultimate form. Stake HP to enter battle, and winners earn generous rewards. All DSG spent is permanently burned, ensuring total supply only ever decreases.

★
DSG
Growth currency, burned after use. Spend to enhance & awaken.
♥
HP
PvP stake token. More risk, more reward.
⚔
Enhancement
+1 to +20 with escalating risk. Push your limits.
♔
Awakening
At +15, transcend into an ultimate form.

Dual-Token System

G
DSG
CAT20 — Dungeon Saga Gold
The universal currency of growth. A hard-capped CAT20 token with zero inflation — there will only ever be fewer, never more. Conquer dungeons, win ranked battles, and dominate guild wars to earn it; pour it into enhancements, awakenings, and reforges to spend it. Every single DSG consumed is permanently burned on-chain, creating relentless deflationary pressure that rewards long-term holders.
Fixed SupplyDeflationaryEnhancementAwakening
HP
HP
CAT20 — Hit Point Token
The fuel for every battle. Buy HP tokens with DSG, then stake them into your PvP contract before each fight — the more you stake, the more health your character has in combat, and the greater your rewards upon victory. 10% of each battle's total stake is burned forever, continuously reducing total supply.
PvP Staking10% BurnRisk/Reward

How HP Token Works

1
Acquire
Trade DSG for HP on the open market — stock up before you fight
→
2
Stake
Commit 1~20 HP per fight. Bigger stake = stronger hero, steeper fall
→
3
Battle
HP = VIT × staked + FOR × 5 + 100
→
4
Settlement
Victor claims 90% of loser's stake; 10% burned forever
Worked Example — Knight (20 HP) vs Grum (10 HP)
Knight stakes20 HP → Battle HP= 22×20 + 18×5 + 100 = 630
Grum stakes10 HP → Battle HP= 20×10 + 15×5 + 100 = 375
Knight has 68% more HP than Grum, but risks 2× the tokens
Scenario A: Knight Wins
Knight receives: floor(10 × 90%) = 9 HP
Grum loses: 10 HP
Burned: 10 - 9 = 1 HP
Knight net: +9 HP (safe bet)
Scenario B: Grum Wins (Upset!)
Grum receives: floor(20 × 90%) = 18 HP
Knight loses: 20 HP
Burned: 20 - 18 = 2 HP
Grum net: +18 HP (huge upset!)
Strategic Depth

The staking mechanic adds a strategic layer to every match: stake more for higher health and greater victory rewards; stake less for controlled risk and outsized returns when you pull off an upset. The optimal play depends on your character build and opponent analysis — giving every battle a distinct strategic dimension.

Enhancement Levels

Enhance your character from +1 all the way to +20, gaining power at every level. The first five levels succeed at 100% — an easy on-ramp for every player. From +6 onward, a success-rate mechanic is introduced; higher levels bring greater stat leaps but require more DSG investment. +16 and above is the arena for top-tier players — significant rewards matched by significant challenge. +20 is the true pinnacle of glory.

+1 ~ +5
Safe
DSG
100–500
Bonus
+3%/lv
Success
100%
Failure
None
+6 ~ +10
Risky
DSG
800–2K
Bonus
+4%/lv
Success
80%
Failure
Tokens lost
+11 ~ +15
Danger
DSG
3K–8K
Bonus
+5%/lv
Success
50%
Failure
Drop 1 lv
+16 ~ +20
Extreme
DSG
15K–50K
Bonus
+7%/lv
Success
30%
Failure
Drop 2 lv
Total DSG to +20
~200K+
Total bonus at +20
+95%
Success at +20
30%
Failure penalty
-2 lv

Awakening (Requires +15)

At +15, your character can pay a one-time DSG fee to unlock awakening — a new form name, a new visual, and an exclusive ultimate skill. Each of the 7 factions has its own awakening path, reinforcing that faction's core role.

☀ Light
Knight
Knight → Paladin
Divine Aegis — Become invulnerable for 3s while granting all allies +50% armor. The ultimate frontline anchor.
Adventurer
Adventurer → Blade Dancer
Blade Storm — Unleash 6 rapid strikes at 80% DEX each while becoming untouchable (100% evasion). Pure offense meets perfect defense.
Wizard
Wizard → Archmage
Meteor — Call down a cataclysm that strikes every enemy on screen for 300% INT. Nothing survives the sky falling.
☠ Dark
Grum
Grum → Iron Warlord
War Cry — A thunderous roar forces every enemy to attack you while doubling your DEF for 5s. You don't dodge the storm — you are the storm.
The Plagued
The Plagued → Death Shadow
Death Mark — Mark a single target for annihilation: 500% DEX with a guaranteed critical hit. One target. One strike. One kill.
Nightspawn
Nightspawn → Void Archmage
Void Collapse — Tear reality apart with a full-screen 280% INT blast that silences all survivors for 3s. Devastation, then silence.
⚖ Neutral
Mithia
Mithia → Light Bringer
Resurrection — Restore one fallen ally to full HP. Under the HP staking system, saving a character means saving an entire battle's worth of resources.

Token Circulation

A healthy economy breathes: DSG flows in from gameplay, and flows out through permanent burns. Three earning channels ensure active players are always rewarded; three burn sinks ensure supply shrinks relentlessly. The result is a self-balancing loop where playing the game is the only way to mint value, and spending that value is the only way to grow.

▲ Sources (Earn)
PvE — dungeon raids yield steady daily gold→
PvP — ranked season payouts for top warriors→
Guild War — territory victories shared among members→
▼ Sinks (Burn)
←Enhancement — DSG burned on every attempt, success or fail
←Awakening — massive one-time burn to transcend
←Market fees — percentage of every trade burned
Phase 4

Combat & Gameplay

Take your character into battle. This section defines the complete combat system — formulas that turn stats into damage, the on-chain PvP contract protocol, role counters, balance proof, plus three gameplay modes: turn-based PvE dungeon raids, ELO-ranked PvP arena (1v1 & 3v3), and guild-scale warfare.

Combat Formulas

Primary (every attack)
HP      = VIT × stakedHP + FOR × 5 + 100
ATK     = STR × 2 + WeaponBase // phys
         = INT × 2.5 + WeaponBase // mag
DEF     = FOR × 2 + ArmorSum
DMG     = ATK × 100 / (100 + DEF)
SPD     = 100 + DEX × 2
EXTRA   = 20% // SPD gap ≥ 50
CRIT    = LCK × 0.2%
CRIT_DMG = 150% + LCK × 2%
Secondary (conditional)
EVA    = DEX × 0.3% //
PEN    = STR × 0.3% //
MRES   = INT × 0.1% //
CC_RES = FOR × 1%  //
REGEN  = VIT × 0.5 // PvE regen
DROP   = LCK × 1%  // PvE loot bonus
On-Chain PvP

On-Chain PvP Contract System

Dungeon Saga publishes an official PvP Contract Template (sCrypt). Each player deploys their own instance — a personal battle arena that doubles as a permanent combat record. Challenges are issued by staking HP tokens; before accepting, the opponent can verify the challenger's contract bytecode against the official template to ensure it is not a malicious contract. Once both sides commit, the contract deterministically executes all combat logic and distributes rewards. No server, no trust, fully on-chain.

1
Challenge
Player A stakes HP tokens to their own PvP contract, specifying opponent and timeout.
playerA.pvpContract.challenge({
  opponent: playerB.address,
  stakedHP: 20,
  timeout: 144 blocks
})
State → PENDING
2
Verify & Accept
Player B verifies A's contract bytecode against official template, then stakes HP to accept. Once B stakes, A cannot withdraw.
assert(hash(A.bytecode) === template)
playerA.pvpContract.accept({
  stakedHP: 10
})
State → RESOLVED
3
Withdraw
Optional: if Player B doesn't accept before the timeout, Player A can reclaim their staked HP tokens.
playerA.pvpContract.withdraw()
// A reclaims staked HP
State → CANCELLED
Seed Generation
// Master seed
masterSeed = sha256(
  TX2.hashPrevouts + TX1.txid
)

// Per-round
roundSeed[n] = sha256(
  masterSeed + n
)
Round Resolution
critCheck   = seed[0] // CRIT
evaCheck    = seed[1] // EVA
dmgVariance = seed[2] // ±10%
extraCheck  = seed[3] // EXTRA

// Result
contractState = {
  winner, rounds,
  hpLeft, combatLog,
  rewardTx
}

Why is this fair?

1
Two-Step Commitment
Player A commits first (challenge + stake), Player B second (accept + stake). Neither can manipulate the seed — it depends on both transactions' context data, finalized only when each TX is mined.
2
Unpredictable
masterSeed = sha256(TX2.hashPrevouts + TX1.txid). TX2’s hashPrevouts is only finalized when Player B submits. Neither side can predict the combat outcome before both commit.
3
Irrevocable Lock
Once Player B stakes, Player A cannot withdraw. Both sides are locked in. The contract executes deterministically — no rage-quitting, no mid-fight manipulation.
4
Deterministic & Verifiable
Same inputs always produce the same result. The sCrypt contract enforces every calculation on OP_CAT Layer’s BVM. Anyone can replay the combat and independently verify every round.
5
Contract Verification
Before accepting, Player B hashes the challenger’s contract bytecode against Dungeon Saga’s official template. Mismatch? Simply refuse. No one can trick you into a malicious contract.
6
Permanent Battle Record
Each player’s PvP contract stores their complete battle history — opponents, stakes, results, full combat logs, all permanently on-chain. Your contract is your warrior’s chronicle.
Worked Example
Knight
Warrior / Physical
STR=20 INT=5 VIT=22
FOR=18 DEX=8 LCK=7
HP=630 ATK=60 DEF=36
SPD=116 CRIT=1.4%
WINNER — 31 HP left
VS
Grum
Champion / Physical
STR=26 INT=3 VIT=20
FOR=15 DEX=5 LCK=11
HP=575 ATK=72 DEF=30
SPD=110 CRIT=2.2%
DEFEATED — Round 12
Contract Transactions
TX1: Knight.pvpContract.challenge({
  opponent: Grum, stakedHP: 20
})

TX2: Knight.pvpContract.accept({
  characterB: Grum, stakedHP: 10
})
// TX2 triggers combat
Combat Seed
masterSeed = sha256(
  TX2.hashPrevouts +
  TX1.txid
) = 3f7ac891...

roundSeed[n] = sha256(
  masterSeed + n
)
First Strike:Knight (SPD 116 > 110)
Extra Action:No (gap 6 < 50)
Staked HP:20 vs 10
// ══ Round 1
roundSeed[0] = sha256(masterSeed + 0) = 7af1c82ba355...

  Knight attacks Grum:
    EVA: byte[1]=0xf1=241, threshold=3.8 → 241>3.8 → hit
    CRIT: byte[0]=0x7a=122, threshold=3.6 → 122>3.6 → no crit
    DMG = 60 × 76.9% × 1.057 = 49
    Grum HP: 575 → 526

  Grum attacks Knight:
    EVA: byte[4]=0xa3=163, threshold=6.1 → 163>6.1 → hit
    CRIT: byte[3]=0x2b=43, threshold=5.6 → 43>5.6 → no crit
    DMG = 72 × 73.5% × 0.967 = 51
    Knight HP: 630 → 579
Rounds 2 – 12: Full Combat Log (click to expand)
// ══ Round 2
roundSeed[1] = sha256(masterSeed + 1) = b20e55d911c4...

  Knight attacks Grum:
    EVA: byte[1]=0x0e=14 → 14>3.8 → hit
    CRIT: byte[0]=0xb2=178 → 178>3.6 → no crit
    DMG = 60 × 76.9% × 1.012 = 47
    Grum HP: 526 → 479

  Grum attacks Knight:
    EVA: byte[4]=0x11=17, threshold=6.1 → 17>6.1 → hit
    CRIT: byte[3]=0xd9=217 → 217>5.6 → no crit
    DMG = 72 × 73.5% × 0.943 = 50
    Knight HP: 579 → 529

// ══ Round 3
roundSeed[2] = sha256(masterSeed + 2) = 058ca173e2bb...

  Knight attacks Grum:
    EVA: byte[1]=0x8c=140 → 140>3.8 → hit
    CRIT: byte[0]=0x05=5, threshold=3.6 → 5>3.6 → no crit
    DMG = 60 × 76.9% × 0.969 = 45
    Grum HP: 479 → 434

  Grum attacks Knight:
    EVA: byte[4]=0xe2=226 → 226>6.1 → hit
    CRIT: byte[3]=0x73=115 → 115>5.6 → no crit
    DMG = 72 × 73.5% × 1.031 = 55
    Knight HP: 529 → 474

// ══ ... Rounds 4~11
// Each round: ~47 DMG to Grum, ~52 DMG to Knight on average
//

// ══ Round 12 (final)
roundSeed[11] = sha256(masterSeed + 11) = d103f78a...

  Knight attacks Grum:
    CRIT: byte[0]=0xd1=209 → 209>3.6 → no crit
    DMG = 48
    Grum HP: 5 → 0 — DEFEATED!

// ── Result (written to contract state)
contractState = {
  winner: "Knight",
  rounds: 12,
  knightHpLeft: 31,
  grumHpLeft: 0,
  rewardTx: "auto-transfer 9 HP to Knight"
}
// Knight wins: receives floor(10 × 90%) = 9 HP, 1 HP burned
// Knight wins: receives floor(10 × 90%) = 9 HP, 1 HP burned

Stats used directly from the Faction Base Stats table (no fusion bonuses). Every formula step is traceable: STR=20 → ATK=60 → DMG=49. Anyone can replay from the contract state and verify.
Formula Reference
HP (Hit Points)
VIT × stakedHP + FOR × 5 + 100
Total health in battle. stakedHP = 1~20 HP tokens staked. VIT amplifies each token’s worth. FOR × 5 + 100 is the guaranteed floor. HP = 0 means defeat — all staked HP lost.
ATK (Attack)
STR × 2 + WeaponBase // physical
INT × 2.5 + WeaponBase // magical
Damage per hit. Physical factions (Knight, Adventurer, Grum, Plagued) use STR; magical (Wizard, Nightspawn, Mithia) use INT. WeaponBase is the weapon’s inherent damage bonus, separate from the wielder’s stat.
DEF (Defense)
FOR × 2 + ArmorSum
Damage reduction. ArmorSum = total armor from Body + Head Wear + Clothing parts. Higher DEF means less damage taken per hit.
DMG (Damage)
ATK × 100 / (100 + target DEF)
Actual damage after target’s defense. Diminishing returns: DEF 100 = 50% reduced, DEF 200 = 67% reduced. Damage never reaches zero.
SPD (Speed)
100 + DEX × 2
Turn order in all modes. Higher SPD acts first. Extra Action: SPD gap ≥ 50 gives 20% chance to act twice per round. High-risk, high-reward speed stacking.
CRIT / CRIT_DMG
CRIT = LCK × 0.2%
CRIT_DMG = 150% + LCK × 2%
Critical hit chance and multiplier. LCK 10 = 2% crit rate, 170% crit damage (1.7× normal). Crits also trigger PEN (armor penetration).

Secondary Effects (conditional)

EVA
DEX × 0.3%
Dodge physical attacks only. Does not work against magic. DEX 25 = 7.5% evasion.
PEN
STR × 0.3%
On crit only: ignores PEN% of target DEF. STR 26 = 7.8% armor ignored.
MRES
INT × 0.1%
Resist magic debuffs (silence, slow). Does not reduce direct spell damage.
CC_RES
FOR × 1%
Resist crowd control (stun, taunt, freeze). FOR 18 = 18% CC resistance.
REGEN
VIT × 0.5 / wave
HP restored between PvE dungeon waves. Not active in combat. VIT 22 = 11 HP.
DROP
LCK × 1%
PvE loot drop bonus. LCK 12 = 12% more loot. PvE only, no PvP effect.
Knight (Fusion-Enhanced)
STR=74, VIT=69, FOR=87, DEX=29, LCK=37
1915
HP
168
ATK
174
DEF
158
SPD
7.4%
CRIT
224%
CRIT DMG
8.7%
EVA
This fully-fused Knight has 1915 HP (stakedHP=20), deals 168 ATK per hit (including WeaponBase 20), moves at SPD 158, crits 7.4% of the time for 224% damage, and dodges 8.7% of incoming physical attacks.
Balance & Counters

Role Counter System

Cross-role matchups follow a Rock-Paper-Scissors triangle. Same-role mirrors remain 50/50, decided by gear and skill. The counter multiplier is set at 10% — meaningful enough to reward smart team composition, yet surmountable through character growth ensuring every matchup remains winnable.

Tank
Knight / Grum
Counters Assassin— 110%
Weak to Mage— 90%
Assassin
Adventurer / The Plagued
Counters Mage— 110%
Weak to Tank— 90%
Mage
Wizard / Nightspawn
Counters Tank— 110%
Weak to Assassin— 90%
Mithia — Neutral Healer. No counter modifier (100%). Supports any team composition.
Design Intent

The 10% counter gap is a nudge, not a wall. It encourages players to think about team composition and role synergy, while preserving individual agency — a well-built character can still triumph against a counter through superior enhancement, set bonuses, and awakening. Every character remains viable; none is ever a dead end.

Balance Simulation (10,000 runs)

We don't just claim balance — we prove it. 10,000 simulated battles using all 12 Soul Dimension effects, without counter multipliers, confirm that no faction has a built-in advantage. The playing field is level; victory comes from your choices.

Test Light Win Rate Dark Win Rate Assessment
1v1 Knight vs Grum
48.6%
51.4%
Excellent balance
1v1 Wizard vs Nightspawn
49.5%
50.5%
Excellent balance
1v1 Adventurer vs The Plagued
50.6%
49.4%
Excellent balance
3v3 Team Battle
48.5%
51.5%
Excellent balance
PVE Dungeon Clear Rate
99.8%
100%
Balanced
Simulation Note

Simulation uses random targeting. In real gameplay with taunt, AoE, and focus-fire mechanics, the 3v3 gap would narrow. Mithia (Neutral Healer) joining Light makes it 4v3 with 100% Light win rate — Dark faction needs a healer counterpart for symmetric team design.

Gameplay Modes
PvE
Dungeon Raids
  • Turn-based dungeon exploration with on-chain combat resolution — all character stats read directly from NFT attributes
  • Three dungeon tiers: Normal → Elite → Boss, each with escalating difficulty and exclusive loot tables
  • DSG token + rare crafting material drops, scaled by dungeon tier and party performance
  • Background trait grants environment-specific buffs (e.g., cave backgrounds boost DEF in underground dungeons)
  • Higher tiers require strategic party composition: Tank + Healer + DPS synergies
PvP
Arena
  • Deploy your personal on-chain PvP contract — simultaneously your battle arena and permanent combat chronicle
  • 3-step protocol: Challenge (stake HP) → Verify & Accept (counter-stake) → Auto-resolve (deterministic combat)
  • 1v1 duels and 3v3 team battles with ELO-based matchmaking and seasonal rankings
  • DSG token rewards for seasonal rank milestones and arena achievements
  • Zero trust required: all combat logic in sCrypt contracts, every result independently verifiable
GvG
Guild Wars
  • Large-scale guild vs guild warfare: 5v5 structured battles with potential for larger campaigns
  • Same-faction synergy bonuses: field a full faction lineup for enhanced team coordination
  • Strategic depth: Tank / Healer / DPS composition, focus-fire targeting, and ability timing
  • Seasonal guild rankings with exclusive rewards + permanent leaderboard recognition

Roadmap

Phase 1
Trait Attribute System

Before mainnet — Attribute mapping + mint logic + nft-info API + frontend trait cards

Phase 2
Character & Combat Design

After minting — Forge existing original-part inputs into PFP Heroes + attribute engine + set matching + Forge/Unforge UI

Phase 3
Token Economy & Progression

After Forge — CAT20 DSG token + enhancement + awakening while Unforge preserves exact-input return without adding replacement-part or Salvaged/Reforged collection branches

Phase 4a
PvE Dungeon Raids

Combat engine + dungeon generation + loot system + party mechanics

Phase 4b
PvP Arena

PvP contract template + matchmaking + seasonal rankings + leaderboard + spectator mode

Phase 4c
Guild Wars

Large-scale battles + guild progression + territory control

Soulforge Blueprint v1.0 — Dungeon Saga © 2026
All NFT attributes are on-chain, verifiable, and immutable.