aboutsummaryrefslogtreecommitdiff
path: root/internal/behavior/behavior.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-25 15:40:48 -0400
committerhistoria <[not public]>2026-06-25 15:40:48 -0400
commitabd612c15799f604e671e83dc7c410ed2b44185f (patch)
tree0597ca92350de73aac2a7cf26b2f2d6595dac0cc /internal/behavior/behavior.go
parent2725e2927a1595c7b100d942d1f14146252adeb7 (diff)
downloadthehouseoficarus-abd612c15799f604e671e83dc7c410ed2b44185f.tar.gz
slop refactor
Diffstat (limited to 'internal/behavior/behavior.go')
-rw-r--r--internal/behavior/behavior.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/internal/behavior/behavior.go b/internal/behavior/behavior.go
new file mode 100644
index 0000000..57b2a7b
--- /dev/null
+++ b/internal/behavior/behavior.go
@@ -0,0 +1,94 @@
+package behavior
+
+type GatherConfig struct {
+ Skill string `yaml:"skill"`
+ Level int `yaml:"level"`
+ XP int `yaml:"xp"`
+ BaseWait float64 `yaml:"base_wait"`
+ Tools []string `yaml:"tools"`
+ Bait string `yaml:"bait"`
+ Success SuccessFormula `yaml:"success"`
+ GatherMsg string `yaml:"gather_message"`
+ DepletedMessage string `yaml:"depleted_message"`
+ ExhaustedMessage string `yaml:"exhausted_message"`
+ FailMsg string `yaml:"fail_message"`
+ Drops []DropEntry `yaml:"drops"`
+ RespawnTimer float64 `yaml:"respawn_timer"`
+ RespawnBroadcast string `yaml:"respawn_broadcast"`
+ DepleteTimer float64 `yaml:"deplete_timer"`
+ NestChance int `yaml:"nest_chance"`
+}
+
+type SuccessFormula struct {
+ Base float64 `yaml:"base"`
+ PerLevel float64 `yaml:"per_level"`
+ Cap float64 `yaml:"cap"`
+}
+
+type TalkConfig struct {
+ Nodes map[string]TalkNode `yaml:"nodes"`
+}
+
+type TalkNode struct {
+ Message string `yaml:"message"`
+ Options []TalkOption `yaml:"options"`
+ Action *NodeAction `yaml:"action"`
+}
+
+type TalkOption struct {
+ Text string `yaml:"text"`
+ Goto string `yaml:"goto"`
+ End bool `yaml:"end"`
+ Condition *Condition `yaml:"condition"`
+}
+
+type NodeAction struct {
+ SetFlags map[string]any `yaml:"set_flags"`
+ SetPlayerFlags map[string]any `yaml:"set_player_flags"`
+ GiveItem string `yaml:"give_item"`
+ TakeItem string `yaml:"take_item"`
+ Teleport int `yaml:"teleport"`
+ Heal int `yaml:"heal"`
+ Cost int `yaml:"cost"`
+ Shop *ShopConfig `yaml:"shop"`
+ AssignTask bool `yaml:"assign_task"`
+ SkipTask bool `yaml:"skip_task"`
+ ExtendTask bool `yaml:"extend_task"`
+ ReputationCost int `yaml:"reputation_cost"`
+ Sawmill bool `yaml:"sawmill"`
+ ApsNode bool `yaml:"aps_node"`
+}
+
+type ShopConfig struct {
+ Message string `yaml:"message"`
+ Items []ShopItem `yaml:"items"`
+}
+
+type ShopItem struct {
+ ItemID string `yaml:"item_id"`
+ BuyPrice int `yaml:"buy_price"`
+ SellPrice int `yaml:"sell_price"`
+}
+
+type Condition struct {
+ Flag string `yaml:"flag"`
+ Value any `yaml:"value"`
+ Not bool `yaml:"not"`
+ PlayerFlag string `yaml:"player_flag"`
+ HasItem string `yaml:"has_item"`
+ MinCredits int `yaml:"min_credits"`
+ AllOf []Condition `yaml:"all_of"`
+ AnyOf []Condition `yaml:"any_of"`
+}
+
+type UseConfig struct {
+ Message string `yaml:"message"`
+ Wait float64 `yaml:"wait"`
+ Consume map[string]int `yaml:"consume"`
+ Reward DropEntry `yaml:"reward"`
+ FailMsg string `yaml:"fail_message"`
+ Success *SuccessFormula `yaml:"success"`
+ Skill string `yaml:"skill"`
+ Level int `yaml:"level"`
+ XP int `yaml:"xp"`
+}