using System; using System.Collections.Generic; namespace IdleSpectator; /// Maps every live task shape to an action concept; no creature voice logic. public static class ActivityVerbMap { public static string Resolve(string key) { if (string.IsNullOrEmpty(key)) return ""; string k = key.ToLowerInvariant(); if (k.Contains("laugh")) return "laugh"; if (k.Contains("sing") || k.Contains("just_sang")) return "sing"; if ((k.Contains("play") && !k.Contains("display")) || k.Contains("fun_move") || k.Contains("frolic") || k.StartsWith("child_")) return "play"; if (k.Contains("hunt") || k == "behattackactorhuntingtarget") return "hunt"; if (k.Contains("fight") || k.Contains("attack") || k.Contains("tantrum")) return "fight"; if (k.Contains("social") || k.Contains("talk") || k.Contains("trysocialize") || k.Contains("crying") || k.Contains("just_cried") || k.Contains("swore") || k.Contains("madness")) return "social"; if (k.Contains("lover") || k.Contains("breed") || k.Contains("reproduction") || k.Contains("desire")) return "lover"; if (k.Contains("farm") || k.Contains("plant") || k.Contains("fertiliz") || k.Contains("harvest") || k.Contains("hoe")) return "farm"; if (k == "work" || k.Contains("mine") || k.Contains("woodcut") || k.Contains("chop") || k.Contains("gather") || k.Contains("forag") || k.Contains("build") || k.Contains("construct") || k.Contains("collect_") || k.Contains("cleaning") || k.Contains("make_items") || k.Contains("make_skeleton") || k.Contains("manure") || k.Contains("burn_tumor") || k == "axe" || k == "hammer" || k == "basket" || k == "bucket" || k == "flag" || k == "book" || k == "coffee_cup") return "work"; if (k.Contains("pollinat") || k.Contains("bee_") || k == "behpollinate") return "pollinate"; if (k.Contains("trade") || k.Contains("barter") || k.Contains("tax") || k.Contains("boat_trading")) return "trade"; if (k.Contains("fish")) return "fish"; if (k.Contains("unload") || k.Contains("throw_resource") || k.Contains("carrying")) return "haul"; if (k.Contains("heal") || k.Contains("cure")) return "heal"; if (k.Contains("fire") || k.Contains("fireman") || k.Contains("blaze")) return "fire"; if (k.Contains("sleep") || k.Contains("wakeup") || k.Contains("burrow")) return "sleep"; if (k.Contains("eat") || k.Contains("food") || k.Contains("meal") || k.StartsWith("diet_")) return "eat"; if (k.Contains("run_away") || k.Contains("flee") || k.Contains("retreat") || k.Contains("danger_check") || k.Contains("banish") || k.Contains("kill_unruly")) return "flee"; if (k.Contains("job") || k.Contains("employ") || k.Contains("find_house") || k.Contains("claim") || k.Contains("king_") || k.Contains("leader_") || k.Contains("citizen") || k.Contains("join_city") || k.Contains("check_city") || k.Contains("check_plot") || k.Contains("family_check") || k.Contains("embark") || k.Contains("boat_return") || k.Contains("force_into_a_boat") || k.Contains("boat_transport") || k.Contains("boat_check") || k.Contains("investigate")) return "settle"; if (k.Contains("warrior") || k.Contains("army") || k.Contains("formation") || k.Contains("invincible")) return "warrior"; if (k.Contains("wait") || k == "reflection" || k.Contains("hold_still") || k.Contains("make_decision") || k.Contains("think") || k.Contains("stuck")) return "wait"; if (k.Contains("idle") || k.Contains("random_move") || k.Contains("walking") || k.EndsWith("_move") || k.Contains("wander") || k == "move" || k.Contains("dragon_") || k.Contains("godfinger") || k.Contains("follow_") || k.StartsWith("ant_") || k.StartsWith("ufo_") || k.StartsWith("worm_") || k.Contains("slide") || k.Contains("land") || k.Contains("fly")) return "move"; if (k.Contains("read")) return "read"; if (k.Contains("loot") || k.Contains("family_group")) return "gather_life"; return ""; } public static bool HasActionCore(string key) { return !string.IsNullOrEmpty(Resolve(key)) || !string.IsNullOrEmpty(ActivityProse.PatternActionPhrase(key, false)) || !string.IsNullOrEmpty(key); } public static List EnumerateLiveTaskIds() { return ActivityAssetCatalog.EnumerateLiveTaskIds(); } }