# GogoBee — Spell System > **Companion to:** `gogobee_dnd_design_doc.md`, `gogobee_subclass_system.md` > **Version:** 1.0 --- ## 1. Spell Slots by Class and Level ### Mage Spell Slots | Level | Cantrips | 1st | 2nd | 3rd | 4th | 5th | |---|---|---|---|---|---|---| | 1 | 3 | 2 | — | — | — | — | | 2 | 3 | 3 | — | — | — | — | | 3 | 3 | 4 | 2 | — | — | — | | 4 | 4 | 4 | 3 | — | — | — | | 5 | 4 | 4 | 3 | 2 | — | — | | 7 | 4 | 4 | 3 | 3 | 1 | — | | 9 | 4 | 4 | 3 | 3 | 2 | — | | 11 | 5 | 4 | 3 | 3 | 3 | 1 | | 15 | 5 | 4 | 3 | 3 | 3 | 2 | | 20 | 5 | 4 | 3 | 3 | 3 | 3 | ### Cleric Spell Slots | Level | Cantrips | 1st | 2nd | 3rd | 4th | 5th | |---|---|---|---|---|---|---| | 1 | 3 | 2 | — | — | — | — | | 3 | 3 | 4 | 2 | — | — | — | | 5 | 3 | 4 | 3 | 2 | — | — | | 7 | 4 | 4 | 3 | 3 | 1 | — | | 9 | 4 | 4 | 3 | 3 | 2 | — | | 11 | 4 | 4 | 3 | 3 | 3 | 1 | | 17 | 4 | 4 | 3 | 3 | 3 | 3 | | 20 | 5 | 4 | 3 | 3 | 3 | 3 | ### Ranger Spell Slots | Level | Spells Known | 1st | 2nd | 3rd | |---|---|---|---|---| | 2 | 2 | 2 | — | — | | 5 | 3 | 3 | — | — | | 7 | 4 | 3 | 1 | — | | 9 | 5 | 3 | 2 | — | | 13 | 6 | 3 | 2 | 1 | | 17 | 7 | 3 | 2 | 2 | | 20 | 8 | 3 | 3 | 2 | Rangers are half-casters. Spell slots reset on long rest only. --- ## 2. Concentration Some spells require **Concentration** — they persist until dropped or broken. - Only one Concentration spell may be active at a time. Casting a second ends the first. - Taking damage while Concentrating requires a **CON save (DC = 10 or half damage taken, whichever is higher)**. Failure ends the spell. - Dropping Concentration voluntarily costs no action. - Flagged in spell entries with `[C]`. --- ## 3. Cantrips Cantrips cost no spell slots. Usable unlimited times per day. | Cantrip | Classes | Damage / Effect | Notes | |---|---|---|---| | **Fire Bolt** | Mage | 1d10 fire (scales: 2d10 at Lv5, 3d10 at Lv11) | Ranged spell attack | | **Toll the Dead** | Mage, Cleric | 1d8 necrotic; 1d12 if target missing HP | WIS save for half | | **Chill Touch** | Mage, Cleric | 1d8 necrotic; target can't heal until next turn | Ranged spell attack | | **Poison Spray** | Mage | 1d12 poison | CON save or full damage; melee range | | **Shocking Grasp** | Mage | 1d8 lightning; target loses Reaction | Advantage vs. metal armor | | **Sacred Flame** | Cleric | 1d8 radiant | DEX save; ignores cover | | **Guidance** | Cleric, Ranger | +1d4 to one ability check (self or ally) | [C] | | **Shillelagh** | Ranger, Cleric | Club/staff uses WIS for attack+damage; 1d8 | Bonus action; [C] | | **Thorn Whip** | Ranger | 1d6 piercing; pull target 10 ft | Ranged; melee range | | **Mending** | All casters | Repair one non-magical item | Out of combat only | | **Message** | Mage | Whisper to target up to 120 ft | Utility | | **Minor Illusion** | Mage | Create a sound or image | Utility; Investigation DC 14 to disbelieve | --- ## 4. 1st Level Spells ### Mage — 1st Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Magic Missile** | 1st | 3 darts × 1d4+1 force; auto-hit | +1 dart per slot above 1st | | **Thunderwave** | 1st | 2d8 thunder in 15 ft cube; push 10 ft | CON save half; loud (+8 Threat Clock) | | **Mage Armor** | 1st | AC = 13 + DEX mod (no armor required) | 8 hours; [C] | | **Burning Hands** | 1st | 3d6 fire in 15 ft cone | DEX save half | | **Detect Magic** | 1st | Sense magic within 30 ft | [C]; ritual castable (no slot) | | **Fog Cloud** | 1st | 20 ft radius heavily obscured | [C]; all attacks inside have disadvantage | | **Grease** | 1st | 10 ft square; DEX save or Prone | Difficult terrain while active | | **Shield** | 1st | +5 AC as Reaction until next turn | Reaction spell | | **Sleep** | 1st | Incapacitate creatures totaling 5d8 HP (weakest first) | HP threshold; mindless immune | | **Chromatic Orb** | 1st | 3d8 of chosen damage type | Ranged spell attack | ### Cleric — 1st Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Cure Wounds** | 1st | Heal 1d8 + WIS mod HP | Touch; +1d8 per slot above 1st | | **Bless** | 1st | 3 targets: +1d4 to attack rolls and saves | [C]; 1 min | | **Inflict Wounds** | 1st | 3d10 necrotic | Melee spell attack; +1d10 per slot above 1st | | **Guiding Bolt** | 1st | 4d6 radiant; next attack on target has advantage | Ranged spell attack; +1d6 per slot | | **Shield of Faith** | 1st | +2 AC to one target | [C]; bonus action; 10 min | | **Healing Word** | 1st | 1d4 + WIS mod HP (bonus action) | Range 60 ft; +1d4 per slot above 1st | | **Command** | 1st | One-word command (Flee, Grovel, Halt, etc.) | WIS save negates; 1 turn | | **Protection from Evil and Good** | 1st | Aberrations, fiends, undead have disadvantage vs. target | [C] | ### Ranger — 1st Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Hunter's Mark** | 1st | +1d6 damage to marked target; track as bonus action | [C]; bonus action; 1 hr | | **Ensnaring Strike** | 1st | On hit: STR save or Restrained; 1d6/turn | [C]; bonus action before attack | | **Fog Cloud** | 1st | 20 ft radius heavily obscured | [C] | | **Speak with Animals** | 1st | Communicate with beasts | Ritual; 10 min; useful in Forest/Feywild | | **Absorb Elements** | 1st | Reaction: resistance to incoming elemental damage; +1d6 on next hit | Reaction spell | | **Cure Wounds** | 1st | 1d8 + WIS mod HP | Touch | --- ## 5. 2nd Level Spells ### Mage — 2nd Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Scorching Ray** | 2nd | 3 rays × 2d6 fire; each is a separate attack roll | +1 ray per slot above 2nd | | **Mirror Image** | 2nd | 3 duplicates; attackers roll to hit duplicate (roll d20: 6+ hit duplicate) | No [C]; duplicates absorb hits | | **Misty Step** | 2nd | Bonus action teleport up to 30 ft | Bypasses OA and difficult terrain | | **Hold Person** | 2nd | Paralyzed; auto-crit on melee hits while held | WIS save; [C]; +1 target per slot above 2nd | | **Shatter** | 2nd | 3d8 thunder in 10 ft sphere | CON save half; extra damage to objects/constructs | | **Blur** | 2nd | All attacks vs. you have disadvantage | [C] | | **Web** | 2nd | 20 ft cube; Restrained (STR DC to escape) | [C]; flammable | | **Levitate** | 2nd | Float up to 20 ft; immune to ground-based effects | [C]; CON save to resist if unwilling | | **Knock** | 2nd | Open any mundane lock or magically sealed door | Loud (+5 Threat Clock) | ### Cleric — 2nd Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Spiritual Weapon** | 2nd | Bonus action: spectral weapon attacks for 1d8+WIS each turn | No [C]; 1 min; +1d8 per 2 slots above 2nd | | **Hold Person** | 2nd | Paralyzed; auto-crit melee | WIS save; [C] | | **Lesser Restoration** | 2nd | Remove one condition (Blinded, Deafened, Paralyzed, Poisoned) | Touch | | **Prayer of Healing** | 2nd | Heal up to 6 targets 2d8 + WIS mod HP | 10 min cast; out of combat only | | **Silence** | 2nd | No sound in 20 ft sphere; no verbal spells | [C]; -8 Threat Clock if used strategically | | **Aid** | 2nd | 3 targets: +5 max HP and current HP | 8 hr; +5 HP per slot above 2nd | | **Augury** | 2nd | Omen about action in next 30 min: Weal/Woe/Both/Neither | Ritual; TwinBee delivers cryptic answer | ### Ranger — 2nd Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Pass Without Trace** | 2nd | +10 to Stealth; can't be tracked magically | [C]; -5 Threat Clock per room while active | | **Spike Growth** | 2nd | 20 ft radius; 2d4 per 5 ft moved through | [C]; Difficult terrain | | **Silence** | 2nd | No sound; no verbal spells in area | [C] | | **Beast Sense** | 2nd | See/hear through a beast's senses | [C]; ritual | | **Cordon of Arrows** | 2nd | 4 arrows guard area; fire on intruders (1d6+DEX) | 8 hr | | **Find Traps** | 2nd | Detect presence of traps within 120 ft | Doesn't reveal details; no [C] | --- ## 6. 3rd Level Spells ### Mage — 3rd Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Fireball** | 3rd | 8d6 fire in 20 ft radius | DEX save half; +1d6 per slot; very loud (+12 Threat Clock) | | **Lightning Bolt** | 3rd | 8d6 lightning in 100 ft line | DEX save half; +1d6 per slot; loud (+10 Threat Clock) | | **Counterspell** | 3rd | Reaction: cancel a spell of 3rd level or lower | Higher level: INT check DC 10+spell level | | **Fly** | 3rd | Target gains 60 ft fly speed | [C]; 10 min; bypasses ground traps | | **Hypnotic Pattern** | 3rd | Creatures in 30 ft cube: Incapacitated, speed 0 | WIS save; [C]; breaks on damage | | **Dispel Magic** | 3rd | End one magical effect on target | Auto for ≤3rd level; ability check for higher | | **Slow** | 3rd | Up to 6 targets: halve speed, -2 AC, no reactions, 1 action or bonus | WIS save; [C] | | **Animate Dead** | 3rd | Animate up to 3 corpses as skeletons/zombies | Cleric/Mage; control 24 hr; re-cast to extend | ### Cleric — 3rd Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Spirit Guardians** | 3rd | 15 ft aura: 3d8 radiant/necrotic per turn to enemies | WIS save half; [C]; +1d8 per slot above 3rd | | **Revivify** | 3rd | Restore a creature dead less than 1 minute to 1 HP | Requires 300-coin diamond component | | **Dispel Magic** | 3rd | End one magical effect | — | | **Mass Healing Word** | 3rd | Up to 6 targets: 1d4+WIS mod HP (bonus action) | Range 60 ft | | **Beacon of Hope** | 3rd | Targets have advantage on WIS saves and death saves; max healing | [C]; 1 min | | **Animate Dead** | 3rd | Animate up to 3 undead | 24 hr control | | **Remove Curse** | 3rd | End one curse on target or object | Removes attunement to cursed items | ### Ranger — 3rd Level | Spell | Slots | Effect | Notes | |---|---|---|---| | **Lightning Arrow** | 3rd | Ranged attack: 4d8 lightning on hit; 2d8 to creatures within 10 ft | Bonus action before attack | | **Conjure Barrage** | 3rd | Throw a weapon: 3d8 of weapon type in 60 ft cone | DEX save half | | **Water Walk** | 3rd | Up to 10 targets walk on liquid surfaces | Ritual; 1 hr | | **Plant Growth** | 3rd | 100 ft radius: Difficult terrain; or enhance crops | Ritual (crop version); instant (terrain version) | | **Nondetection** | 3rd | Target undetectable by divination magic | 8 hr; useful in Underdark/Abyss Portal | --- ## 7. 4th Level Spells (Mage / Cleric) | Spell | Class | Effect | Notes | |---|---|---|---| | **Banishment** | Cleric | Send extraplanar creature to home plane temporarily | CHA save; [C]; permanent if held 1 min — critical in Abyss Portal | | **Polymorph** | Mage | Transform target into beast | WIS save if unwilling; [C]; max CR = target's level | | **Ice Storm** | Mage | 2d8 bludgeoning + 4d6 cold in 20 ft cylinder | DEX save half; Difficult terrain afterward | | **Wall of Fire** | Mage | 60 ft wall; 5d8 fire to those passing through | [C]; DEX save half; doubles as zone control | | **Greater Invisibility** | Mage | Target invisible; attacks have advantage; can't be targeted | [C]; 1 min | | **Guardian of Faith** | Cleric | Spectral guardian deals 20 radiant to approaching enemies | 50 total damage then vanishes; no [C] | | **Death Ward** | Cleric | Next time target would drop to 0 HP: drops to 1 instead | 8 hr; one-use | | **Freedom of Movement** | Cleric, Ranger | Target ignores Difficult terrain, paralysis, restraint | 1 hr | --- ## 8. 5th Level Spells (Mage / Cleric) | Spell | Class | Effect | Notes | |---|---|---|---| | **Cone of Cold** | Mage | 8d8 cold in 60 ft cone | CON save half | | **Hold Monster** | Mage | Paralyze any creature type (not just humanoid) | WIS save; [C]; auto-crit melee | | **Wall of Force** | Mage | Invisible impenetrable wall | [C]; nothing passes — including spells | | **Scrying** | Mage, Cleric | Observe target at any distance | WIS save; [C]; useful for pre-boss recon | | **Mass Cure Wounds** | Cleric | Up to 6 targets: 3d8+WIS mod HP | Range 60 ft | | **Flame Strike** | Cleric | 4d6 fire + 4d6 radiant in 10 ft cylinder | DEX save half | | **Divine Word** | Cleric | Targets suffer effects based on current HP | WIS save negates; kills below 20 HP | | **Raise Dead** | Cleric | Restore a creature dead up to 10 days | Requires 500-coin diamond; target -4 to all rolls for 4 days | --- ## 9. Spell Rules — Bot Context ### Casting in Combat - Casting a spell of 1st level or higher uses the **Action** (unless Bonus Action spell or Reaction spell) - Bonus action spells: if you cast a bonus action spell, any other spell cast this turn must be a cantrip - Reaction spells (Shield, Counterspell, Absorb Elements) fire outside your turn and consume your Reaction ### Verbal / Material Components - All spells with Verbal components fail in a **Silence** zone - Spells with Material components require either a **Spell Component Pouch** or **Arcane Focus** (Mage) / **Holy Symbol** (Cleric) - Ranger spells use nature focus — no separate item required - Expensive material components (Revivify, Raise Dead) are tracked as consumed inventory items ### Spell Save DC ``` Spell Save DC = 8 + proficiency bonus + spellcasting modifier Mage: INT modifier Cleric: WIS modifier Ranger: WIS modifier ``` ### Spell Attack Bonus ``` Spell Attack Bonus = proficiency bonus + spellcasting modifier ``` ### Upcasting Spells marked with "per slot above Xth" scale when cast at higher levels. The bot handles upcast selection automatically on `!cast --upcast `. --- ## 10. Go Data Structures ```go type KnownSpell struct { PlayerID string `json:"player_id"` SpellID string `json:"spell_id"` Level int `json:"level"` // spell level (0 = cantrip) Source string `json:"source"` // class, subclass, racial Prepared bool `json:"prepared"` // Cleric must prepare daily; Mage knows fixed list } type SpellSlotState struct { PlayerID string `json:"player_id"` Slots map[int]SlotPair `json:"slots"` // key = spell level } type SlotPair struct { Total int `json:"total"` Used int `json:"used"` } type ActiveConcentration struct { PlayerID string `json:"player_id"` SpellID string `json:"spell_id"` ExpiresAt time.Time `json:"expires_at"` SaveDC int `json:"save_dc"` // for concentration checks on damage } type SpellDefinition struct { ID string `json:"id"` Name string `json:"name"` Level int `json:"level"` School string `json:"school"` Classes []string `json:"classes"` CastingTime string `json:"casting_time"` // action, bonus_action, reaction Range string `json:"range"` Concentration bool `json:"concentration"` Duration string `json:"duration"` SaveStat string `json:"save_stat"` // empty if attack roll AttackRoll bool `json:"attack_roll"` Description string `json:"description"` Upcast string `json:"upcast"` // scaling description Components []string `json:"components"` // V, S, M MaterialCost int `json:"material_cost"` // coins if expensive component } ``` --- ## 11. Implementation Phases ### Phase SP1 — Core Spell Infrastructure - [ ] `SpellDefinition` registry (all spells this doc) - [ ] `KnownSpell` and `SpellSlotState` structs and DB schema - [ ] `!cast ` command with slot consumption - [ ] Cantrip handling (no slot cost) - [ ] Spell save DC and spell attack bonus calculation ### Phase SP2 — Concentration System - [ ] `ActiveConcentration` struct - [ ] Concentration check on damage (CON save) - [ ] Casting second concentration spell ends first - [ ] TwinBee narrates concentration breaks ### Phase SP3 — Advanced Spell Rules - [ ] Upcasting (`!cast fireball --upcast 4`) - [ ] Bonus action spell restriction - [ ] Reaction spells (Shield, Counterspell, Absorb Elements) - [ ] Silence zone interaction - [ ] Material component consumption (expensive components) ### Phase SP4 — Prepared Spells (Cleric) - [ ] Cleric daily preparation (`!prepare `) - [ ] Prepared spell limit = WIS mod + Cleric level - [ ] Rest resets preparation choices --- *End of Spell System.*