diff options
Diffstat (limited to 'internal/behavior/types.go')
| -rw-r--r-- | internal/behavior/types.go | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/internal/behavior/types.go b/internal/behavior/types.go new file mode 100644 index 0000000..3c6e290 --- /dev/null +++ b/internal/behavior/types.go @@ -0,0 +1,188 @@ +package behavior + +import "strings" + +func WordPrefixMatch(input, name string) bool { + inputWords := strings.Fields(strings.ToLower(input)) + if len(inputWords) == 0 { + return false + } + nameWords := strings.Fields(strings.ToLower(name)) + for _, iw := range inputWords { + found := false + for _, nw := range nameWords { + if strings.HasPrefix(nw, iw) || strings.HasPrefix(iw, nw) { + found = true + break + } + } + if !found { + return false + } + } + return true +} + +type ActionType string + +const ( + TypeGather ActionType = "gather" + TypeSteal ActionType = "steal" + TypeTalk ActionType = "talk" + TypeUse ActionType = "use" + TypeBurn ActionType = "burn" + TypeStoke ActionType = "stoke" + TypeSearch ActionType = "search" + TypeIdentify ActionType = "identify" + TypePlant ActionType = "plant" + TypeHarvest ActionType = "harvest" + TypeRake ActionType = "rake" + TypeWater ActionType = "water" + TypeCure ActionType = "cure" + TypeObstacle ActionType = "obstacle" + TypeFletch ActionType = "fletch" + TypeClean ActionType = "clean" + TypeCook ActionType = "cook" + TypeSmelt ActionType = "smelt" + TypeSmith ActionType = "smith" + TypeCraft ActionType = "craft" + TypeCombine ActionType = "combine" + TypeMix ActionType = "mix" + TypeConstruct ActionType = "construct" +) + +type Action struct { + Type ActionType + TargetID string + TargetName string + WaitLeft int + Data any +} + +func (a *Action) Advance() bool { + if a.WaitLeft > 0 { + a.WaitLeft-- + return false + } + return true +} + +type GatherData struct { + ObjDefID string + InstanceKey string + InstanceIdx int + EffectiveWait float64 + DepleteTimer bool + Step int + Verb string + ToolName string +} + +type ProductionData struct { + ItemID string + Phase int + Wait float64 + StartMsg string + EndMsg string + Remaining int + NextStepIndex int + StepsAccumulatedTicks float64 +} + +type StealData struct { + TargetType string + StealTable string + StealLevel int + StealXP int + StealSpeed float64 + TargetName string + MobInstanceID string + ObjDefID string + GuardMob string + GuardWatching bool +} + +type TalkData struct { + Node string + Cfg *TalkConfig + EstateDirectory bool + StealGuard bool +} + +type UseData struct { + Cfg *UseConfig + Step int +} + +type BurnData struct { + ItemID string + ToolSpeed float64 + Level int + XP int + BurnTicks float64 + Phase int +} + +type IdentifyData struct { + JunkID string + XPPer int +} + +type ObstacleData struct { + CourseID string + Phase int + ObstacleIndex int + TotalObstacles int + NextRoom int + StartRoom int + ObstacleXP int + CompletionXP int + FailChance float64 + FailDamageMin int + FailDamageMax int + Messages []any + TicksPerPhase float64 + RequiredLevel int +} + +type FarmData struct { + Prefix string + SeedID string + XP float64 + Product string + MinYield float64 + MaxYield float64 +} + +type SearchData struct { + ItemID string + SlotIdx int + Started bool +} + +type FletchData struct { + ItemID string + Phase int + Wait float64 + Remaining int +} + +type CleanData struct { + Phase int + Filter string +} + +type DropEntry struct { + ItemID string `yaml:"item_id"` + Table string `yaml:"table"` + Weight int `yaml:"weight"` + Quantity int `yaml:"quantity"` + Depletes bool `yaml:"depletes"` + Message string `yaml:"message"` + Level int `yaml:"level"` + XP int `yaml:"xp"` +} + +type DropTableDef struct { + Drops []DropEntry `yaml:"drops"` +} |
