package game type ActionType string const ( ActionIdle ActionType = "" ActionGathering ActionType = "gathering" ActionCombating ActionType = "combating" ActionMoving ActionType = "moving" ActionUsing ActionType = "using" ActionTalking ActionType = "talking" ActionBurning ActionType = "burning" ActionStoking ActionType = "stoking" ActionPickingUp ActionType = "picking_up" ActionDropping ActionType = "dropping" ActionSearching ActionType = "searching" ActionResting ActionType = "resting" ActionWalking ActionType = "walking" ActionProducing ActionType = "producing" ActionFletching ActionType = "fletching" ActionEating ActionType = "eating" ActionCleaning ActionType = "cleaning" ActionIdentifying ActionType = "identifying" ActionStealing ActionType = "stealing" ActionPlanting ActionType = "planting" ActionHarvesting ActionType = "harvesting_crop" ActionRaking ActionType = "raking" ActionWatering ActionType = "watering" ActionCuring ActionType = "curing" ActionTraversing ActionType = "traversing" ActionHacking ActionType = "hacking" ActionHiding ActionType = "hiding" ) type ActionState struct { Type ActionType TargetName string ToolName string Direction string Verb string } func (a *ActionState) Description() string { if a == nil || a.Type == ActionIdle { return "" } switch a.Type { case ActionGathering: desc := a.Verb + " a " + a.TargetName if a.ToolName != "" { desc += " with a " + a.ToolName } return desc case ActionCombating: return "fighting a " + a.TargetName case ActionMoving: return "heading " + a.Direction case ActionUsing: return "using a " + a.TargetName case ActionTalking: return "talking to " + a.TargetName case ActionBurning: return "trying to start a fire" case ActionStoking: return "tending to a fire" case ActionPickingUp: return "picking up " + a.TargetName case ActionDropping: return "dropping " + a.TargetName case ActionSearching: return "digging through a " + a.TargetName case ActionResting: return "resting" case ActionWalking: return "walking somewhere with a purpose!" case ActionProducing: return a.Verb + " some " + a.TargetName case ActionFletching: return "fletching " + a.TargetName case ActionEating: return "eating " + a.TargetName case ActionCleaning: return "cleaning herbs" case ActionIdentifying: return "identifying scrap at " + a.TargetName case ActionStealing: return "stealing from " + a.TargetName case ActionPlanting: return "planting " + a.TargetName case ActionHarvesting: return "harvesting " + a.TargetName case ActionRaking: return "raking a " + a.TargetName case ActionWatering: return "watering a " + a.TargetName case ActionCuring: return "curing a " + a.TargetName case ActionTraversing: return a.Verb + " across " + a.TargetName case ActionHacking: return "jacked into a " + a.TargetName case ActionHiding: return "positioning behind a " + a.TargetName } return "" }