140 lines
8.1 KiB
C#
140 lines
8.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace IdleSpectator;
|
|
|
|
/// <summary>Maps every live task shape to an action concept; no creature voice logic.</summary>
|
|
public static class ActivityVerbMap
|
|
{
|
|
private static readonly string[] BehaviorBeatKeys =
|
|
{
|
|
"BehUnloadResources",
|
|
"BehThrowResources",
|
|
"BehSocializeTalk",
|
|
"BehTryToSocialize",
|
|
"BehPlantCrops",
|
|
"BehCityActorFertilizeCrop",
|
|
"BehBuildTarget",
|
|
"BehPoopOutside",
|
|
"BehPoopInside",
|
|
"BehBoatFishing",
|
|
"BehBoatCollectFish",
|
|
"BehClaimZoneForCityActorBorder"
|
|
};
|
|
|
|
public static string Resolve(string key)
|
|
{
|
|
if (string.IsNullOrEmpty(key)) return "";
|
|
string k = key.ToLowerInvariant();
|
|
if (ActivitySpeciesVoice.IsAuthoredVerb(k)) return k;
|
|
if (k.Contains("laugh")) return "laugh";
|
|
if (k.Contains("sing") || k.Contains("just_sang")) return "sing";
|
|
if (k == "start_fire") return "ignite";
|
|
if (k == "put_out_fire" || k.Contains("extinguish") || k.Contains("fireman")) return "extinguish";
|
|
if (k.Contains("family_group")) return "group";
|
|
if (k.Contains("soul_harvested")) return "harvest_life";
|
|
if (k.Contains("loot")) return "loot";
|
|
if (k.Contains("crying") || k.Contains("just_cried")) return "cry";
|
|
if (k.Contains("swore") || k.Contains("swear")) return "swear";
|
|
if (k.Contains("madness")) return "confused";
|
|
if (k == "follow_desire_target" || k == "task_unit_weird_desire") return "strange_urge";
|
|
if (k == "task_unit_follow_family" || k == "child_follow_parent") return "group";
|
|
if (k == "possessed_following") return "possessed";
|
|
if (k == "poop_inside" || k == "poop_outside" || k == "try_to_poop"
|
|
|| k == "behpoopinside" || k == "behpoopoutside") return "relieve";
|
|
if (k == "status_confused" || k == "task_unit_confused") return "confused";
|
|
if (k == "replenish_energy" || k == "task_unit_replenish_energy") return "recharge";
|
|
if (k == "strange_urge_finish" || k == "task_strange_urge_finish") return "strange_urge";
|
|
if (k == "try_to_steal_money" || k == "try_to_take_city_item") return "steal";
|
|
if (k == "possessed") return "possessed";
|
|
if (k == "try_affect_dreams") return "dream";
|
|
if (k == "behthrowresources") return "haul";
|
|
if (k.StartsWith("diet_")) return "eat";
|
|
if (k == "city_walking_to_danger_zone" || k == "farmer_random_move"
|
|
|| k == "random_move_towards_civ_building") return "move";
|
|
if (k == "warrior_army_captain_idle_walking_city"
|
|
|| k == "warrior_army_leader_move_random") return "warrior";
|
|
if (k == "boat_transport_check_taxi") return "settle";
|
|
if (k == "punch_a_building") return "fight";
|
|
if (k == "run_to_water_when_on_fire") return "flee";
|
|
if (k == "try_to_launch_fireworks") return "play";
|
|
if (k == "type_bonfire") return "work";
|
|
if (k == "random_house_building") return "settle";
|
|
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")) return "social";
|
|
if (k.Contains("lover") || k.Contains("breed") || k.Contains("reproduction")
|
|
|| k.Contains("reproduc") || 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")
|
|
|| k.Contains("store_resource") || k.Contains("boat_load_units")) return "haul";
|
|
if (k.Contains("heal") || k.Contains("cure")) return "heal";
|
|
if (k.Contains("fire") || 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 == "task_unit_run_to_water") return "flee";
|
|
if (k.Contains("job") || k.Contains("employ") || k.Contains("find_house")
|
|
|| k.Contains("claim") || k.StartsWith("king_") || k.StartsWith("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")
|
|
|| k == "check_join_empty_nearby_city" || k.Contains("progress_plot")
|
|
|| k == "task_unit_plot" || k.Contains("return_to_dock")
|
|
|| k == "try_new_plot" || k == "try_to_return_to_home_city"
|
|
|| k == "try_to_start_new_civilization" || k == "type_house" || k == "type_well")
|
|
return "settle";
|
|
if (k.Contains("warrior") || k.Contains("army") || k.Contains("formation")
|
|
|| k.Contains("invincible") || k == "type_barracks"
|
|
|| k == "type_training_dummies") return "warrior";
|
|
if (k.Contains("wait") || k == "reflection" || k.Contains("hold_still")
|
|
|| k.Contains("make_decision") || k.Contains("think") || k.Contains("stuck")
|
|
|| k == "nothing" || k == "sit_inside_boat" || k.StartsWith("stay_in_")
|
|
|| k == "task_unit_nothing") 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")
|
|
|| k.StartsWith("move_") || k == "random_swim" || k.Contains("teleport")
|
|
|| k == "task_unit_walk" || k == "possessed_following") return "move";
|
|
if (k.Contains("read")) return "read";
|
|
if (k == "pickaxe" || k.StartsWith("print_") || k == "punch_a_tree"
|
|
|| k.Contains("repair_equipment") || k == "ruins"
|
|
|| k == "type_fruits" || k == "type_poop" || k == "type_tree"
|
|
|| k == "type_vegetation" || k == "type_bonfire") return "work";
|
|
if (k == "type_flower" || k == "type_hive") return "pollinate";
|
|
if (k == "type_crops") return "farm";
|
|
return "";
|
|
}
|
|
|
|
public static bool HasActionCore(string key)
|
|
{
|
|
return !string.IsNullOrEmpty(Resolve(key));
|
|
}
|
|
|
|
public static List<string> EnumerateLiveTaskIds()
|
|
{
|
|
return ActivityAssetCatalog.EnumerateLiveTaskIds();
|
|
}
|
|
|
|
public static string[] EnumerateBehaviorBeatKeys()
|
|
{
|
|
return (string[])BehaviorBeatKeys.Clone();
|
|
}
|
|
}
|