worldbox-observer-mod/IdleSpectator/ActivityActionLexicon.cs

370 lines
28 KiB
C#

using System;
namespace IdleSpectator;
/// <summary>Phrase fragments keyed by the already-resolved voice. No ActorAsset lookup.</summary>
public static class ActivityActionLexicon
{
public static string[] GetBag(ProseVoice voice, string verb, bool hasTarget)
{
voice ??= ProseVoice.Unknown();
string v = string.IsNullOrEmpty(verb) ? "move" : verb;
if (voice.AssetKind == ActivityAssetKind.Vehicle)
{
return VehicleBag(v);
}
if (voice.Modifier != ActivityModifier.None)
{
string[] modifier = ModifierBag(voice, v, hasTarget);
if (modifier != null) return modifier;
}
string[] profile = ProfileBag(voice.ProfileTag, v, hasTarget);
if (profile != null) return profile;
string[] body = BodyBag(voice.BaseBodyTag, v, hasTarget);
return body ?? GenericBag(v, hasTarget);
}
private static string[] ModifierBag(ProseVoice voice, string verb, bool hasTarget)
{
switch (voice.Modifier)
{
case ActivityModifier.Undead:
return UndeadBag(voice.BaseBodyTag, verb, hasTarget);
case ActivityModifier.Elemental:
return verb switch
{
"move" => new[] { "surges onward in a living blaze{place_at}", "flows ahead with elemental force{place_at}" },
"wait" => new[] { "holds in a wavering elemental pause{place_at}", "burns steadily while waiting{place_at}" },
"play" => new[] { "flares through a wild game{place_at}", "dances in playful elemental arcs{place_at}" },
"eat" => new[] { "feeds the inner flame{place_at}", "draws in fuel with bright appetite{place_at}" },
"sleep" => new[] { "dims into a banked rest{place_at}", "settles into a low elemental glow{place_at}" },
"hunt" => Targeted(hasTarget, "surges after {target}{place_at}", "hunts {target} in a trail of heat{place_at}", "searches for prey in flickering sweeps{place_at}", "hunts with elemental focus{place_at}"),
"fight" => Targeted(hasTarget, "crashes into {target} with elemental force{place_at}", "flares against {target}{place_at}", "fights in a storm of living heat{place_at}", "clashes with elemental fury{place_at}"),
"laugh" => new[] { "crackles with bright laughter{place_at}", "flares in a laughing burst{place_at}" },
_ => GenericBag(verb, hasTarget)
};
case ActivityModifier.Mush:
return verb switch
{
"move" => new[] { "shuffles onward in soft fungal steps{place_at}", "spreads along with mycelial patience{place_at}" },
"wait" => new[] { "rests in spore-soft quiet{place_at}", "waits while faint spores drift{place_at}" },
"play" => new[] { "puffs through an odd little game{place_at}", "spores about in playful motion{place_at}" },
"eat" => new[] { "feeds through the damp earth{place_at}", "draws a slow meal from decay{place_at}" },
"sleep" => new[] { "settles into a damp fungal rest{place_at}", "folds into mycelial quiet{place_at}" },
_ => GenericBag(verb, hasTarget)
};
case ActivityModifier.Tumor:
return verb switch
{
"move" => new[] { "pulses onward in malignant motion{place_at}", "lurches ahead with invasive purpose{place_at}" },
"wait" => new[] { "throbs in unsettling stillness{place_at}", "holds a malignant pause{place_at}" },
"play" => new[] { "writhes through a grotesque game{place_at}", "pulses with uncanny playfulness{place_at}" },
"eat" => new[] { "feeds with consuming hunger{place_at}", "absorbs a meal into the growing mass{place_at}" },
"fight" => Targeted(hasTarget, "lashes into {target} with malignant force{place_at}", "surges against {target}{place_at}", "fights with invasive fury{place_at}", "clashes in a malignant rush{place_at}"),
_ => GenericBag(verb, hasTarget)
};
case ActivityModifier.Alien:
return verb switch
{
"move" => new[] { "glides onward with unfamiliar ease{place_at}", "tracks ahead in precise alien motion{place_at}" },
"wait" => new[] { "observes in unreadable stillness{place_at}", "holds an unfamiliar watch{place_at}" },
"play" => new[] { "probes the moment in curious play{place_at}", "experiments with a strange little game{place_at}" },
"hunt" => Targeted(hasTarget, "tracks {target} with alien focus{place_at}", "closes on {target} in eerie silence{place_at}", "scans for prey{place_at}", "hunts by unfamiliar instinct{place_at}"),
"fight" => Targeted(hasTarget, "strikes at {target} with alien precision{place_at}", "clashes with {target} in strange motion{place_at}", "fights with unreadable purpose{place_at}", "attacks in a precise rush{place_at}"),
_ => GenericBag(verb, hasTarget)
};
case ActivityModifier.Construct:
return verb switch
{
"move" => new[] { "advances in measured constructed steps{place_at}", "shifts onward with deliberate precision{place_at}" },
"wait" => new[] { "idles in rigid watchfulness{place_at}", "holds a perfectly measured pause{place_at}" },
"play" => new[] { "tests a playful sequence of motions{place_at}", "turns precise movement into a game{place_at}" },
"eat" => new[] { "takes in fuel with mechanical care{place_at}", "replenishes what keeps it moving{place_at}" },
"sleep" => new[] { "powers down into quiet rest{place_at}", "settles into a dormant stillness{place_at}" },
_ => GenericBag(verb, hasTarget)
};
default:
return null;
}
}
private static string[] UndeadBag(ActivityBodyTag body, string verb, bool hasTarget)
{
if (verb == "move")
{
return body switch
{
ActivityBodyTag.Canine => new[] { "pads onward with lifeless purpose{place_at}", "sniffs and shambles through the living world{place_at}" },
ActivityBodyTag.Feline => new[] { "slinks onward in deathly quiet{place_at}", "pads ahead with hollow patience{place_at}" },
ActivityBodyTag.Insect => new[] { "skitters onward in deathly little steps{place_at}", "crawls ahead with hollow purpose{place_at}" },
ActivityBodyTag.Plant => new[] { "creeps onward in withered motion{place_at}", "drags dead growth through the living world{place_at}" },
ActivityBodyTag.Dragon => new[] { "lumbers onward with ancient deathly weight{place_at}", "advances like ruin given motion{place_at}" },
ActivityBodyTag.Bird => new[] { "flutters onward on lifeless wings{place_at}", "hops ahead in ragged deathly motion{place_at}" },
_ => new[] { "shambles onward through the living world{place_at}", "drifts along in restless undeath{place_at}" }
};
}
return verb switch
{
"wait" => new[] { "waits in hollow stillness{place_at}", "holds a restless undeath pause{place_at}" },
"play" => new[] { "lurches through a strange game{place_at}", "toys with the moment in hollow cheer{place_at}" },
"eat" => new[] { "feeds with deathless hunger{place_at}", "tears into a meal with hollow appetite{place_at}" },
"sleep" => new[] { "slumps into a hollow rest{place_at}", "goes still in restless undeath{place_at}" },
"hunt" => Targeted(hasTarget, "shambles after {target}{place_at}", "hunts {target} with hollow hunger{place_at}", "hunts with deathless hunger{place_at}", "searches for prey without rest{place_at}"),
"fight" => Targeted(hasTarget, "presses against {target} without fear{place_at}", "clashes with {target} in deathly fury{place_at}", "fights with hollow force{place_at}", "presses on without giving ground{place_at}"),
"laugh" => new[] { "groans in a broken laugh{place_at}", "makes a hollow sound of laughter{place_at}" },
"social" => Targeted(hasTarget, "lingers near {target} in uneasy silence{place_at}", "shares a hollow moment with {target}{place_at}", "seeks company in deathly quiet{place_at}", "lingers among the living{place_at}"),
_ => GenericBag(verb, hasTarget)
};
}
private static string[] ProfileBag(string profile, string verb, bool hasTarget)
{
if (string.IsNullOrEmpty(profile)) return null;
if (profile == "dragon")
{
return verb switch
{
"move" => new[] { "advances with ancient patience{place_at}", "moves as if the world should make way{place_at}" },
"sleep" => new[] { "coils into a guarded sleep{place_at}", "rests with one eye on the world{place_at}" },
"eat" => new[] { "feeds with terrifying appetite{place_at}", "takes a meal with ancient hunger{place_at}" },
"laugh" => new[] { "rumbles with deep laughter{place_at}", "laughs in a dangerous rolling growl{place_at}" },
"hunt" => Targeted(hasTarget, "descends on {target}{place_at}", "hunts {target} with ancient focus{place_at}", "circles in search of prey{place_at}", "hunts with ancient appetite{place_at}"),
_ => null
};
}
if (profile == "fairy")
{
return verb switch
{
"move" => new[] { "flits onward in bright little arcs{place_at}", "drifts ahead on glittering wings{place_at}" },
"play" => new[] { "dances through a sparkling game{place_at}", "flutters about with mischievous delight{place_at}" },
"laugh" => new[] { "chimes with tiny laughter{place_at}", "laughs in a bright little trill{place_at}" },
_ => null
};
}
if (profile == "lemon_snail")
{
return verb switch
{
"move" => new[] { "glides onward with patient citrus calm{place_at}", "eases ahead in a slow leafy trail{place_at}" },
"play" => new[] { "loops through a patient little game{place_at}", "sways into slow, cheerful play{place_at}" },
"eat" => new[] { "feeds with quiet citrus appetite{place_at}", "takes a slow, careful meal{place_at}" },
_ => null
};
}
if (profile == "cat")
{
return verb switch
{
"move" => new[] { "pads softly through the living world{place_at}", "slinks along with private purpose{place_at}" },
"play" => new[] { "bats and twists through a private game{place_at}", "springs into sudden playful leaps{place_at}" },
_ => null
};
}
if (profile == "buffalo")
{
return verb switch
{
"move" => new[] { "trudges onward with grounded strength{place_at}", "ambles ahead in heavy steady steps{place_at}" },
"play" => new[] { "frolics with heavy earnest energy{place_at}", "stomps through a clumsy game{place_at}" },
_ => null
};
}
if (profile == "crabzilla")
{
return verb switch
{
"move" => new[] { "strides sideways with colossal purpose{place_at}", "scuttles onward like a moving fortress{place_at}" },
"fight" => Targeted(hasTarget, "brings a colossal claw against {target}{place_at}", "crashes into {target} like a living siege{place_at}", "fights with city-shaking force{place_at}", "clashes like a living fortress{place_at}"),
_ => null
};
}
return null;
}
private static string[] BodyBag(ActivityBodyTag body, string verb, bool hasTarget)
{
if (verb == "move")
{
return body switch
{
ActivityBodyTag.Humanoid => new[] { "walks onward with quiet purpose{place_at}", "wanders ahead at an easy pace{place_at}" },
ActivityBodyTag.Canine => new[] { "trots along without hurry{place_at}", "roams ahead with curious paws{place_at}" },
ActivityBodyTag.Feline => new[] { "pads softly through the living world{place_at}", "slinks along at an easy pace{place_at}" },
ActivityBodyTag.Bird => new[] { "flutters onward through the air{place_at}", "hops and wings along nearby{place_at}" },
ActivityBodyTag.Insect => new[] { "scuttles along without hurry{place_at}", "skitters across the ground{place_at}" },
ActivityBodyTag.Arachnid => new[] { "skitters onward on many legs{place_at}", "creeps ahead with careful steps{place_at}" },
ActivityBodyTag.Amphibian => new[] { "hops onward through the living world{place_at}", "bounces along in damp springy steps{place_at}" },
ActivityBodyTag.Aquatic => new[] { "glides through the water{place_at}", "swims onward with fluid ease{place_at}" },
ActivityBodyTag.Reptile => new[] { "slides along without hurry{place_at}", "creeps forward with cool patience{place_at}" },
ActivityBodyTag.Livestock => new[] { "ambles along without hurry{place_at}", "wanders with heavy steady steps{place_at}" },
ActivityBodyTag.Plant => new[] { "creeps along with patient plant motion{place_at}", "eases forward in slow leafy steps{place_at}" },
ActivityBodyTag.Fungi => new[] { "drifts along in soft fungal steps{place_at}", "spreads onward with patient motion{place_at}" },
ActivityBodyTag.Protist => new[] { "oozes onward without hurry{place_at}", "pulses along through the living world{place_at}" },
ActivityBodyTag.Machina => new[] { "advances in measured machine steps{place_at}", "tracks onward with precise motion{place_at}" },
ActivityBodyTag.Mythic => new[] { "drifts along with mythic calm{place_at}", "moves with otherworldly purpose{place_at}" },
ActivityBodyTag.Gregalia => new[] { "gregs onward through the living world{place_at}", "wanders in restless greg motion{place_at}" },
ActivityBodyTag.Primate => new[] { "lopes onward with nimble curiosity{place_at}", "moves ahead in quick clever steps{place_at}" },
ActivityBodyTag.Rodent => new[] { "scurries onward without hurry{place_at}", "pads ahead in quick little steps{place_at}" },
ActivityBodyTag.Ursid => new[] { "lumbers onward with steady weight{place_at}", "pads ahead in heavy unhurried steps{place_at}" },
ActivityBodyTag.Seal => new[] { "slides onward with sleek ease{place_at}", "glides ahead through the wet paths{place_at}" },
ActivityBodyTag.Procyonid => new[] { "pads onward with busy curiosity{place_at}", "scampers ahead with clever purpose{place_at}" },
ActivityBodyTag.Hyaenid => new[] { "lopes onward with rough confidence{place_at}", "trots ahead in rangy strides{place_at}" },
ActivityBodyTag.Armadillo => new[] { "trundles onward close to the ground{place_at}", "scurries ahead in armored little steps{place_at}" },
ActivityBodyTag.Crawler => new[] { "writhes onward through the living world{place_at}", "crawls ahead without hurry{place_at}" },
ActivityBodyTag.Cold => new[] { "moves onward in a breath of cold{place_at}", "drifts ahead with wintry calm{place_at}" },
ActivityBodyTag.Crystal => new[] { "glides onward with crystalline precision{place_at}", "moves ahead in bright rigid steps{place_at}" },
ActivityBodyTag.Crab => new[] { "scuttles sideways through the living world{place_at}", "sidesteps onward with armored purpose{place_at}" },
_ => GenericBag(verb, hasTarget)
};
}
if (verb == "play")
{
return body switch
{
ActivityBodyTag.Canine => new[] { "tumbles about in lively play{place_at}", "bounds and wrestles through play{place_at}" },
ActivityBodyTag.Feline => new[] { "bats and twists through a private game{place_at}", "plays with sudden leaps{place_at}" },
ActivityBodyTag.Bird => new[] { "flutters through playful arcs{place_at}", "hops and wings about in play{place_at}" },
ActivityBodyTag.Insect => new[] { "scuttles about in tiny play{place_at}", "darts through a quick little game{place_at}" },
ActivityBodyTag.Arachnid => new[] { "skitters through a restless game{place_at}", "toys with the moment on many legs{place_at}" },
ActivityBodyTag.Amphibian => new[] { "hops about in damp play{place_at}", "bounces through a lively game{place_at}" },
ActivityBodyTag.Aquatic => new[] { "splashes through play in the water{place_at}", "weaves playful arcs through the wet{place_at}" },
ActivityBodyTag.Reptile => new[] { "slides through a low game{place_at}", "plays with slow coiled energy{place_at}" },
ActivityBodyTag.Livestock => new[] { "stomps about in clumsy play{place_at}", "frolics with heavy earnest energy{place_at}" },
ActivityBodyTag.Plant => new[] { "sways through a slow game{place_at}", "turns the moment into leafy play{place_at}" },
ActivityBodyTag.Primate => new[] { "clambers through a clever game{place_at}", "plays with nimble mischief{place_at}" },
ActivityBodyTag.Rodent => new[] { "scampers through a tiny game{place_at}", "darts about in quick play{place_at}" },
ActivityBodyTag.Ursid => new[] { "rolls through a heavy game{place_at}", "plays with lumbering cheer{place_at}" },
ActivityBodyTag.Crawler => new[] { "loops through a low little game{place_at}", "writhes about in restless play{place_at}" },
_ => new[] { "makes a game of the moment{place_at}", "plays with easy living energy{place_at}" }
};
}
if (verb == "wait")
{
return body switch
{
ActivityBodyTag.Insect => new[] { "holds still in a tiny pause{place_at}", "waits with antennae alert{place_at}" },
ActivityBodyTag.Amphibian => new[] { "crouches in a damp pause{place_at}", "waits in springy stillness{place_at}" },
ActivityBodyTag.Feline => new[] { "settles into a watchful crouch{place_at}", "waits with quiet patience{place_at}" },
ActivityBodyTag.Canine => new[] { "waits with alert ears{place_at}", "holds a restless pause{place_at}" },
ActivityBodyTag.Aquatic => new[] { "hovers in the water and waits{place_at}", "holds still in the wet quiet{place_at}" },
ActivityBodyTag.Bird => new[] { "perches and waits{place_at}", "holds a light watchful pause{place_at}" },
ActivityBodyTag.Plant => new[] { "holds a rooted pause{place_at}", "waits in leafy quiet{place_at}" },
ActivityBodyTag.Machina => new[] { "idles in a watchful hold{place_at}", "waits through a measured pause{place_at}" },
_ => new[] { "waits in watchful quiet{place_at}", "holds still through a living pause{place_at}" }
};
}
if (verb == "hunt")
{
return body switch
{
ActivityBodyTag.Canine => Targeted(hasTarget, "hunts {target} with keen nose{place_at}", "closes on {target} through the living world{place_at}", "hunts with keen nose{place_at}", "stalks prey through the living world{place_at}"),
ActivityBodyTag.Feline => Targeted(hasTarget, "hunts {target} with silent focus{place_at}", "stalks {target} with patient care{place_at}", "hunts with silent focus{place_at}", "stalks prey with quiet patience{place_at}"),
ActivityBodyTag.Bird => Targeted(hasTarget, "hunts {target} from above{place_at}", "circles after {target}{place_at}", "hunts from above{place_at}", "circles after prey{place_at}"),
ActivityBodyTag.Insect => Targeted(hasTarget, "scuttles after {target}{place_at}", "hunts {target} with tiny focus{place_at}", "hunts with tiny predatory focus{place_at}", "scuttles after prey{place_at}"),
ActivityBodyTag.Reptile => Targeted(hasTarget, "slides after {target}{place_at}", "hunts {target} with cold patience{place_at}", "hunts with cold patience{place_at}", "stalks prey in a low slide{place_at}"),
_ => Targeted(hasTarget, "hunts {target} through the living world{place_at}", "closes on {target} with careful focus{place_at}", "hunts through the living world{place_at}", "stalks prey with careful steps{place_at}")
};
}
return verb switch
{
"fight" => Targeted(hasTarget, "fights {target} in a fierce clash{place_at}", "trades blows with {target}{place_at}", "fights with fierce resolve{place_at}", "clashes without giving ground{place_at}"),
"eat" => body switch
{
ActivityBodyTag.Canine => new[] { "eats with eager appetite{place_at}", "tears into a meal{place_at}" },
ActivityBodyTag.Feline => new[] { "eats with neat focus{place_at}", "takes a careful meal{place_at}" },
ActivityBodyTag.Insect => new[] { "feeds with tiny industry{place_at}", "eats in quick little bites{place_at}" },
ActivityBodyTag.Plant => new[] { "drinks in a slow meal{place_at}", "feeds with quiet plant appetite{place_at}" },
ActivityBodyTag.Livestock => new[] { "grazes with steady appetite{place_at}", "settles in to feed{place_at}" },
_ => new[] { "settles in to take a proper meal{place_at}", "eats with focused appetite{place_at}" }
},
"sleep" => body switch
{
ActivityBodyTag.Canine => new[] { "curls into sleep{place_at}", "settles into deep rest{place_at}" },
ActivityBodyTag.Feline => new[] { "curls into a neat sleep{place_at}", "settles into quiet rest{place_at}" },
ActivityBodyTag.Bird => new[] { "tucks into sleep{place_at}", "roosts into rest{place_at}" },
ActivityBodyTag.Aquatic => new[] { "drifts into rest in the water{place_at}", "settles into wet quiet{place_at}" },
ActivityBodyTag.Plant => new[] { "settles into leafy rest{place_at}", "goes still in plant quiet{place_at}" },
_ => new[] { "settles into deep sleep{place_at}", "rests after the day's demands{place_at}" }
},
"social" => Targeted(hasTarget, "shares a living moment with {target}{place_at}", "talks and lingers with {target}{place_at}", "seeks company nearby{place_at}", "socializes among whoever is near{place_at}"),
"laugh" => new[] { "laughs aloud and lets the mood carry{place_at}", "breaks into open laughter{place_at}" },
"sing" => body == ActivityBodyTag.Bird
? new[] { "sings out on light wings{place_at}", "fills the air with bright song{place_at}" }
: new[] { "sings out for whoever will hear{place_at}", "lifts a living song{place_at}" },
_ => GenericBag(verb, hasTarget)
};
}
private static string[] VehicleBag(string verb)
{
return verb switch
{
"move" => new[] { "cuts steadily across the water{place_at}", "sails onward with the current{place_at}" },
"wait" => new[] { "rides quietly at rest on the water{place_at}", "holds position on the gentle swell{place_at}" },
"fish" => new[] { "works the water for fish{place_at}", "casts for a catch from the deck{place_at}" },
"trade" => new[] { "carries trade across the water{place_at}", "makes a measured trading run{place_at}" },
"haul" => new[] { "takes cargo aboard{place_at}", "settles the load for passage{place_at}" },
_ => new[] { "works steadily upon the water{place_at}", "continues its voyage with quiet purpose{place_at}" }
};
}
private static string[] GenericBag(string verb, bool hasTarget)
{
return verb switch
{
"farm" => new[] { "tends the fields with patient care{place_at}{job_as}", "works the soil through the living day{place_at}{job_as}" },
"haul" => new[] { "unloads {carrying} after a long haul{place_at}{job_as}", "delivers {carrying} into storage{place_at}" },
"pollinate" => new[] { "works the blossom with careful industry{place_at}", "pollinates the flower in a living rhythm{place_at}" },
"fish" => new[] { "works the water for fish{place_at}{job_as}", "fishes with patient focus{place_at}" },
"heal" => Targeted(hasTarget, "tends carefully to {target}{place_at}", "works to heal {target}{place_at}", "tends wounds with careful hands{place_at}", "works patiently to recover{place_at}"),
"fire" => new[] { "fights the blaze with urgent care{place_at}", "battles fire before it spreads{place_at}" },
"flee" => new[] { "flees from danger in a living rush{place_at}", "retreats before danger closes in{place_at}" },
"work" => new[] { "works with focused craft{place_at}{job_as}", "labors through the task at hand{place_at}{job_as}" },
"trade" => new[] { "trades and bargains{place_at}{job_as}", "haggles through a careful deal{place_at}" },
"settle" => new[] { "settles civic business{place_at}{job_as}", "attends to belonging and place{place_at}" },
"warrior" => Targeted(hasTarget, "holds formation against {target}{place_at}", "drills for war near {target}{place_at}", "holds warrior discipline{place_at}", "keeps formation ready{place_at}"),
"read" => new[] { "reads with quiet attention{place_at}", "studies the page{place_at}{job_as}" },
"lover" => Targeted(hasTarget, "draws close to {target}{place_at}", "shares a tender moment with {target}{place_at}", "follows the pull of kinship{place_at}", "seeks a living bond{place_at}"),
"gather_life" => new[] { "gathers with kin{place_at}", "moves among the group{place_at}" },
"move" => new[] { "wanders without hurry through the living world{place_at}", "roams nearby with quiet purpose{place_at}" },
"wait" => new[] { "waits in watchful quiet{place_at}", "holds still through a living pause{place_at}" },
"play" => new[] { "plays with restless living energy{place_at}", "turns the moment into a game{place_at}" },
"eat" => new[] { "settles in to take a proper meal{place_at}", "eats with focused appetite{place_at}" },
"sleep" => new[] { "settles into deep sleep{place_at}", "rests after the day's demands{place_at}" },
"hunt" => Targeted(hasTarget, "hunts {target} through the living world{place_at}", "closes on {target} with careful focus{place_at}", "hunts through the living world{place_at}", "stalks prey with careful steps{place_at}"),
"fight" => Targeted(hasTarget, "fights {target} in a fierce clash{place_at}", "trades blows with {target}{place_at}", "fights with fierce resolve{place_at}", "clashes without giving ground{place_at}"),
"social" => Targeted(hasTarget, "shares a living moment with {target}{place_at}", "talks and lingers with {target}{place_at}", "seeks company nearby{place_at}", "socializes among whoever is near{place_at}"),
_ => hasTarget
? new[] { "sets about " + verb.Replace('_', ' ') + " with {target}{place_at}", "turns to " + verb.Replace('_', ' ') + " near {target}{place_at}" }
: new[] { "sets about " + verb.Replace('_', ' ') + " through the living moment{place_at}", "turns to " + verb.Replace('_', ' ') + " with quiet purpose{place_at}" }
};
}
private static string[] Targeted(
bool hasTarget,
string withTargetA,
string withTargetB,
string noTargetA,
string noTargetB)
{
return hasTarget
? new[] { withTargetA, withTargetB }
: new[] { noTargetA, noTargetB };
}
}