feat(client): Luck (deterministic gen/drift/descriptor) + GameState store
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
31
client/scripts/state/game_state.gd
Normal file
31
client/scripts/state/game_state.gd
Normal file
@@ -0,0 +1,31 @@
|
||||
class_name GameState
|
||||
extends RefCounted
|
||||
## Luck-centric game state (spec decision 5). The SOLE home of numeric Luck,
|
||||
## stats, world-NPC dispositions, and inventory — none of which enter the canon
|
||||
## log (charter §7/§2). The log reads only luck_descriptor() from here.
|
||||
|
||||
var luck: int = 0
|
||||
var luck_base: int = 0
|
||||
var stats: Dictionary = {} # {str, dex, con, fth, mag}
|
||||
var npc_dispositions: Dictionary = {} # world-npc id -> int (−100..100)
|
||||
var inventory: Dictionary = {} # item_id -> qty
|
||||
|
||||
|
||||
func set_luck(v: int) -> void:
|
||||
luck = clampi(v, Luck.MIN, Luck.MAX)
|
||||
|
||||
|
||||
func drift_luck(delta: int) -> void:
|
||||
luck = Luck.drift(luck, luck_base, delta)
|
||||
|
||||
|
||||
func luck_descriptor() -> String:
|
||||
return Luck.descriptor(luck)
|
||||
|
||||
|
||||
func set_npc_disposition(id: String, v: int) -> void:
|
||||
npc_dispositions[id] = clampi(v, -100, 100)
|
||||
|
||||
|
||||
func add_item(item_id: String, qty: int) -> void:
|
||||
inventory[item_id] = int(inventory.get(item_id, 0)) + qty
|
||||
Reference in New Issue
Block a user