RingSlinger — Game Mechanics
(Paste contents into the "Game Mechanics" tab. Numbers are v1 targets — to be tuned in playtesting. Ring interactions live in the matrix tab, not here.)
1. Slinger Stats (base)
| Stat | Base | Cap | Source of growth |
|---|---|---|---|
| HP | 100 | 999 | Heartstone (+50 ea, stackable); Bloom blend; level-up |
| Mana | 50 | 500 | Ether-family rings; Mana Pool blend |
| Move speed | 100 | 200 (≈2× base) | Speed ring; Wind ring (+10% ea) |
| XP-gain rate | 1.0× | 3.0× | Luck ring (+25% ea, mult) |
| Pickup radius | 1 tile | 6 tiles | Magnet ring (+1 ea); Beacon glyph (×2) |
| Crit chance | 5% | 75% | Luck ring (+5%); Lucky blends |
| Crit damage | 150% | 400% | Power ring; Glass Cannon combo |
2. Damage Model
final_dmg = base_dmg
× (1 + power_mods)
× (1 + element_resist_neg)
× crit_multiplier
× stance_modifier
× realm_affinity
power_mods— sum of all Power-related modifiers from rings, blends, gems.element_resist_neg— many denizens resist some element by -25% to -75%.crit_multiplier— 1.0 normally; rolls vs. crit_chance.stance_modifier— see §6.realm_affinity— Fire rings hit harder in Lava-realm, weaker in
Tidewater (±15%).
3. Ring Trigger Cadence
Each ring fires on its own internal heartbeat:
| Ring class | Base cadence (sec) | Notes |
|---|---|---|
| Elementals | 1.2 | Some blends shorten this. |
| Esoteric | 2.0 | Heavier effects, longer wind-up. |
| Mechanical (projectile/sword) | 0.9 | Faster — the workhorse. |
| Mechanical (shield/reflect) | passive | Always-on. |
| Stat rings | passive | Buff aura, no trigger. |
Cadence is multiplied by 1 / (1 + speed_mods).
4. Knuckle Layout & Fill Rules
Each hand has 12 wearable knuckles in a uniform 4 × 3 grid (four fingers, three knuckles each), plus 2 thumb slots for glyph rings. Visual (palm facing the player, left hand shown):
╔═══╗ ╔═══╗ ╔═══╗ ╔═══╗
║I-3║ ║M-3║ ║R-3║ ║P-3║ ← row 3 (distal tips)
╠═══╣ ╠═══╣ ╠═══╣ ╠═══╣
╔═══╗ ║I-2║ ║M-2║ ║R-2║ ║P-2║ ← row 2
║T-2║ ╠═══╣ ╠═══╣ ╠═══╣ ╠═══╣
╠═══╣ ║I-1║ ║M-1║ ║R-1║ ║P-1║ ← row 1 (palm-most, fills first)
║T-1║ ╚═══╝ ╚═══╝ ╚═══╝ ╚═══╝
╚═══╝
thumb index middle ring pinky
Settling rule:
- A ring placed on a finger sets on the lowest empty knuckle of that
finger — they settle toward the palm.
- **Row N+1 will not accept a ring on any finger until row N is full
across all four fingers** of that hand.
- Thumbs are independent — they accept glyph rings only, no settling
order with the other fingers (but T1 fills before T2).
Adjacency definitions (no-stance baseline):
- Horizontal: two rings on the same row and adjacent fingers.
- Vertical: two rings on the same finger and adjacent knuckles.
- Diagonal: two rings on adjacent fingers and adjacent rows
(off by exactly 1 in both dimensions).
- The thumbs share a vertical-only adjacency with each other (T1 ↔ T2).
5. Cross-Hand Effects
Hands are independent by default — left-hand rings do not interact with right-hand rings. Exceptions:
- 🔗 Tether (thumb glyph): when worn on both thumbs, thumb glyphs
apply to both hands.
- 🪞 Mirror (thumb glyph): duplicates the other hand's rings for 5s
every 30s.
- 💗 Heart Hands stance: temporarily merges both hands into one
twenty-eight-slot lattice where all original adjacencies still apply AND new cross-hand horizontal edges count.
6. Stances ("Paradigms")
| Stance | H mult | V mult | D mult | Special |
|---|---|---|---|---|
| Splayed (default) | 1.0× | 1.0× | 1.0× | — |
| Balled Fist | 0.5× | 2.0× | 1.0× | Knuckles touch; +25% melee dmg |
| Finger Guns | 0× | 1.0× | 0× | Only index column fires, ×3 rate |
| Slapping Hands | 1.5× | 0.5× | 1.0× | All rings AoE-tagged; -range |
| Heart Hands | 1.0× | 1.0× | 1.5× | Cross-hand adjacencies count |
| Snap | 1.0× | 1.0× | 1.0× | All rings cast simultaneously every 2s |
| Pinkie Promise | 1.0× | 1.0× | 1.0× | Pinky column +100%; others -20% |
| Crossed | 0.5× | 0.5× | 2.0× | Diagonals dominate |
| Open Palm | 1.0× | 1.0× | 1.0× | +50% Shield/Reflect efficacy |
| Cup | 1.5× | 1.5× | 1.0× | Both H & V buffed; pickup radius +50% |
The active stance is per-hand. You can wield Balled Fist + Splayed if desired (left hand vs right). Cycle a stance by tapping the hand thumbnail in the inventory screen.
7. Paradigm Reading (radar)
The Slinger's overall power is summarised as a 6-axis radar in the inventory screen:
- Offense — raw damage output.
- Defense — HP, shield, DR.
- Mobility — movement, dodge, evasion.
- Utility — luck, magnet, time, ether, beacons.
- Spread — AoE / chain / explosion footprint.
- Sustain — lifesteal, regen, rewind.
Every worn ring contributes to one or more axes. The chart updates live as the player rearranges rings, giving immediate feedback.
Used for:
- Build feedback to the player.
- Portal requirements — realm portals demand a minimum total and
sometimes a minimum on a specific axis ("Spirit Vale requires ≥ 5 Utility").
8. Gems, Forging & Leveling
| Gem tier | Drop weight | Levels granted |
|---|---|---|
| ⚪ White | 50% | +1 to a Rank-1 ring (→ R2) |
| 🟡 Yellow | 25% | +1 to a Rank-2 ring (→ R3) |
| 🟢 Green | 12% | +1 to a Rank-3 ring (→ R4) |
| 🔵 Blue | 7% | +1 to a Rank-4 ring (→ R5 cap) |
| 🟣 Purple | 4% | Re-roll one ring to a random new type |
| 🔴 Red | 2% | Gilds a ring — permanent +25% all effects |
Rank multipliers: R1=1.0×, R2=1.5×, R3=2.0×, R4=2.75×, R5=4.0×.
Forge-shrines (found in some realms and hub areas) accept spare rings:
| Inputs | Output |
|---|---|
| 3 × same ring, R1 | 1 × that ring at R2 |
| 5 × random rings, any rank | 1 × white/yellow gem |
| 1 × R3 ring + 1 × elemental ring | 1 × named hybrid (the listed iconic blends) |
| Full 28-ring set + 1 × red gem | a one-of-a-kind forged glyph (thumb-only) |
Stacking the same ring vertically also raises its rank. Two Fires on one finger = R2; three = R3; etc. Caps at R5 regardless of source — extra copies past R5 still contribute to adjacency effects, just not to the ring's own damage scaling.
9. Denizens
- 3 size classes: Minion (1-shot kills), Brute (5–10 hits), Elite
(boss-lite).
- Affinities: each denizen has one primary element; resists its own
by 25% and is weak to its opposite by 25%.
- Pacing: 1-minute waves, mid-stage encounters every 5 min, realm
boss at the end.
- Drops: Minions drop white gems; Brutes drop yellow–green; Elites
drop blue–purple; realm bosses drop a guaranteed new ring + red gem chance.
10. Data Model (for the Xcode port)
The matrix CSVs are the canonical interaction data. Sketch of the iOS model:
enum RingID: String, Codable, CaseIterable {
case fire, water, earth, wind, lightning, ice, light, shadow, plant, metal
case spirit, ether, gravity, time, sound
case projectile, sword, shield, reflect, pierce, chain, explosion, magnet
case speed, power, delay, rewind, luck, random, vampire
}
enum RingCategory { case elemental, esoteric, mechanical, stat }
struct Ring: Identifiable, Codable {
let id: UUID // instance ID
let type: RingID
var rank: Int // 1...5
var gilded: Bool // red-gem trait
}
struct HandPosition: Hashable { // (finger, knuckle)
let finger: Finger // .index/.middle/.ring/.pinky/.thumb
let row: Int // 1-based, 1 = palm-most
}
struct Hand {
var stance: Stance
var slots: [HandPosition: Ring]
}
struct InteractionEngine {
// Loaded from the 3 CSVs at app start
let hMatrix: [RingID: [RingID: BlendDescriptor]]
let vMatrix: [RingID: [RingID: SequenceDescriptor]]
let dMatrix: [RingID: [RingID: BleedDescriptor]]
func evaluate(hand: Hand) -> [ActiveEffect] {
// For each ring, sum: base + H neighbors + V neighbors + D neighbors,
// apply stance multipliers, return effects to render in combat.
}
}
11. Save & Run Structure
- Per-run state (procedurally generated): current realm, stage seed,
denizens defeated, gems collected, run-locked rings, fused hybrids.
- Meta state (persistent): unlocked rings (gallery), stances learned,
lost rings collected, realms cleared, cosmetics owned.
- Auto-save every minute; manual save between realms.
12. Controls (iOS)
- Left thumb: virtual joystick (or tap-to-move in settings).
- Right thumb: stance cycle (long press) / dash (tap, with cooldown).
- Pause: top-right button.
- Inventory: swipe up from bottom OR pause and tap.
- All rings auto-fire — no manual aim. (Future: manual aim mode for
hardcore players.)