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:
- Ability ∈ active set
- Cooldown clear
mana,stamina,health≥ costsmin_statssatisfied- GCD if applicable
- 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.