package action 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 Action struct { Type string TargetID string TargetName string Step int WaitLeft int Data map[string]any } func (a *Action) Advance() bool { if a.WaitLeft > 0 { a.WaitLeft-- return false } return true } 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 { ID string `yaml:"id"` Drops []DropEntry `yaml:"drops"` }