Home Player Profile & Innate Abilities

Player Profile & Innate Abilities


1. Summary

Two character identity systems:

System Purpose
Player profile Persistent appearance & description — gender, height/weight (bounded), colors, free-text look
Innate abilities Permanent granted powers (e.g. fireball from hand) — unlimited known, limited active per combat cycle

Innate abilities use the same combat ability schema as spells (12, 15) — costs, cooldowns, range, splash — but are owned forever once granted. Players choose which known abilities are active vs knowledge only.


2. Locked decisions

# Decision
1 Players maintain a detailed profile for physical look within server-enforced limits
2 Innate abilities are permanent character grants — not lost on death (07 skills survive)
3 No cap on how many innate abilities known over a lifetime
4 Only N active innate abilities per cycle — player chooses loadout; rest is knowledge
5 Use costs: mana, stamina, health, stat mins (STR, etc.) per ability template
6 Per-ability cooldowns — same model as spells (12)
7 Grant sources: quests, loot grant-items, admin/god command
8 Innate abilities participate in slot bindings, rotation, macros like spells

3. Character profile

3.1 Purpose

  • Roleplay and recognition in AOI (inspect, TUI, future graphical mesh)
  • Not combat stats — cosmetic + narrative
  • Moderation hooks for free text (length, filter)

3.2 Profile schema

character_profile:
  display_name: ...              # separate from account id
  gender: enum | custom_text     # ruleset enum list + optional freeform (filtered)
  height_m: 1.45 .. 2.20         # server clamp
  weight_kg: 40 .. 200           # server clamp (or build preset)
  hair_color: string | enum
  eye_color: string | enum
  skin_tone: string | enum
  distinguishing_marks: text     # scars, tattoos — length cap
  physical_description: text     # free prose — length cap (e.g. 2k chars)
  portrait_ref: optional         # future asset id / URL policy

3.3 Limits & validation

Field Rule
Height / weight Clamped to ruleset; may affect scale class for AOI/cartography (06) slightly — not hitbox exploit
Colors Enum palette or validated hex/name list
Text fields Max length; profanity filter; report pipeline
Changes Free anytime — moderation only; no shrine fee or cooldown

3.4 Replication

  • AOI: brief inspect packet — name, height band, colors, short description snippet
  • Full profile: on inspect <player> or agent query
  • Workers/NPCs use template profiles, not this system

3.5 TUI

flatland profile show
flatland profile set --hair auburn --eyes green --height 1.78
flatland profile describe "Tall scarred ranger with..."
flatland inspect player_name

4. Innate abilities — concepts

4.1 vs other progression

Kind Lost on death? Cap Example
Trained skill (11) No Tier 10 evocation 7
Learned spell (scroll/book) No Spell book slots Fireball recipe cast
Innate ability No Unlimited known Permanent fireball-from-hand
Equipment Corpse risk Inventory Wand of fire

Innate = character trait, not inventory — survives death, cannot be traded (default).

4.2 Known vs active

innate_abilities_known: [fireball_hand, frost_touch, blink_step, ...]  # unlimited growth

innate_abilities_active: [fireball_hand, blink_step]                 # max N
State Meaning
Known Unlocked forever; visible in ability journal; not usable until activated
Active In current loadout — hotbar, rotation, slot bindings, auto-fire
max_active_innate = base_active
                  + floor(WIS / active_innate_wis_div)
                  + floor(INT / active_innate_int_div)
                  + skill_bonus(innate_mastery)
                  + gear_modifiers

Typical: 2 at level 1 (base_active_innate: 2), up to 6–10 at high progression. Separate from max_target_slots (12).

4.3 Ability template

Innate abilities reuse 12 ability schema (cast_time, range, blast_radius, cooldown, skill_scaling, …):

innate_ability_template:
  id: fireball_hand
  display_name: "Hand of Flame"
  kind: innate
  scaling_skill: evocation
  costs:
    mana: 25
    stamina: 10
    health: 0              # optional HP cost for dark powers
  min_stats:
    INT: 50
  cooldown_sec: 4.0
  # ... same effect block as spell fireball
  grant_tags: [fire, offensive]
  tradable: false

HP costs allowed — powerful ability drains health on cast (15).


5. Granting innate abilities

5.1 Sources

Source Flow
Quest Quest completion → GrantInnate(ability_id) central event
Loot item grant_innate_scroll / relic — use item → grant; item consumed
Admin / god flatland-admin grant-innate <char> <ability_id> — audited
Achievement Optional future — milestone unlock
Shrine / ritual Optional — quest-like world fixture

5.2 Grant item example

item_template:
  id: ember_heart_relic
  kind: consumable
  on_use: grant_innate
  grants_innate: fireball_hand
  consumed: true
  can_soul_bind: false

Duplicate grant: if character already knows innate, relic is not consumed — player may trade/sell the relic to another player. No duplicate power on same character.

5.3 Persistence

Stored on character record (control plane):

struct CharacterInnateState {
    known: Vec<InnateAbilityId>,
    active: Vec<InnateAbilityId>,   // len <= max_active_innate
    cooldowns: Map<InnateAbilityId, Tick>,
}

Survives death (07); not on corpse.


6. Combat integration

6.1 Intents

Intent Payload
SetInnateActive ability_id, active: bool
ReorderInnateActive ordered list
UseInnate ability_id, target_slot?
SetSlotBinding may reference innate: fireball_hand

Same validation as spells: range, LoS, costs, cooldown, GCD optional per template.

6.2 Loadout cycle

Player configures active innates (known list unlimited):

combat_loadout:
  innate_active: [fireball_hand, blink_step, heal_touch]

Swap active set: allowed mid-combat — requires 3 s channel (interruptible) and triggers GCD; cannot swap while casting.

Wisdom: many known, few active — choose before and during fights.

6.3 Costs & limits at runtime

Before UseInnate:

  1. Ability ∈ active set
  2. Cooldown clear
  3. mana, stamina, health ≥ costs
  4. min_stats satisfied
  5. GCD if applicable
  6. Target/range/LoS (12)

Failure → intent rejected; no cooldown spent (or partial — per template).


7. Social & balance

Concern Mitigation
Admin abuse Audit log; ability whitelist per env
Power creep Strong innates have high costs/CD; rare grants
PvP Friendly fire on (12); innates follow same rules
Economy Grant relics tradeable until used; duplicates tradeable if already known

7.1 Party innates

Default: innates are personal only — no copying your fireball to allies.

Exception: rare templates tagged party_buff — e.g. aura, group ward — affect nearby party; not offensive copy effects.


8. NPC display

Profile fields drive inspect text only at launch. Graphical client later maps height → skeleton scale, colors → materials.


9. Phasing

Phase Scope
3 Profile schema + TUI set/inspect
4 Innate templates; quest grant; UseInnate
5 Active loadout limits; rotation/slot binding
6 Grant loot items; admin command
7 Innate mastery skill; synergy tags

10. Open decisions

Resolved (2026-07-06):

# Decision
P1 Profile edits free anytime (moderation only)
P2 Duplicate relic tradeable if innate already known
P3 Party buff innates only — no sharing personal attacks
P4 Swap active innates mid-combat — 3 s channel + GCD
P5 max_active_innate: 2 at level 1

11. Cross-references

Topic Doc
Ability geometry & CD 12
Pool costs 15
Attributes 11
Grant consumables 09
Death persistence 07

Innate abilities are character-bound modifiers to the combat intent set, not a separate combat engine.