diff options
Diffstat (limited to 'internal/behavior/behavior.go')
| -rw-r--r-- | internal/behavior/behavior.go | 94 |
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"` +} |
