// The first bunch of tags do not trigger barks themselves; they are reusable structures // for passing AI-state into the database. +Evidence, for instance, provides additional // detail for barks triggered by +Noticed, +GreenAlert, +Ask; etc. The writers don't // have to support every kind of evidence in every kind of situation; the info is simply // made available so that bark sets can be extended in interesting ways, time permitting. // the datum currently on the mind of a given AI +Evidence|maybe_seen:clearly_seen:heard:felt:damaged:blood:shadow:body:ally:footprint:door:object:light:disturbance // additional detail for some of the Evidence enums +Body|dead:unconscious +Ally|missing:unconscious:dead // for "missing sentry" case +Door|open:destroyed +Object|moved:stolen:destroyed:dropped +Light|off:on // assuming that the "normal" state of the light is the opposite +Footprint|snow:mud:tracks // "tracks" might be snow or mud trailed into a dry area for a certain distance +Disturbance|pigeons:rat:cat:fire // tags for specifying that an AI knows that a stimulus (or the player) is near a certain object // additional info for the +Evidence tag +NearObject|turret:camera:laser:grenade:fire:smoke:gunfire:shell_casings:dead_body:nonhuman_carcass:bot:bot_carcass:crate:window:door:in_crawlshaft:near_crawlshaft:dog:trash_can:lamp:vending_machine:computer:barrel:barricade:desk +Bot|ad_bot:aero_bot_surveillance:aero_bot_combat:aquatic_bot_security:aquatic_bot_repair:cleaner_bot:hunter_seeker_bot:med_bot:military_bot:nanoformer_bot:repair_bot:security_bot:spider_bot_light:spider_bot_heavy:biotox_drone +Turret|assault_gun:flame:rocket:plasma_or_laser // tag specifying that an AI is within talking distance of another NPC. use when want a "group" bark +NearAlly // +SpeakingTo specifies one of these social contexts: // superior = military/security person speaking to a superior // comrade = military/security person speaking to an equal -- or a civilian speaking to a civilian // inferior = military/security person speaking to an NPC of lower rank // civilian = military/security person speaking to a civilian // officer = civilian speaking to a military/security person +SpeakingTo|superior:comrade:inferior:civilian:officer // The following are used in combat barks (and other places) to identify a specific kind // of enemy. +Monster is added detail, an optional parameter included with "+Enemy monster". +Enemy|player:nonplayer:monster // [+Monster] +Monster|greasel:babygreaasel:karkian:babykarkian:gray:dog // reflects how alert guards are to suspicious behavior; the AI already makes use of this; // the writers might find opportunities to use it, too; not sure. +AIContext|public:high_security:heavy_traffic // general info on the environment +Environment|outdoors:indoors +Weather|clear:rain:snow +PlayerHealth|low:medium:high // QUESTION: ax this? need it anywhere other than +CombatWinning? // some tags useful for DX. would need to be passed in *every time* the AI queries for a bark. // would that be a hassle? it would be a real pain to have to be gender-neutral all the time. +PlayerSex|male:female +Mission|1:2:3:4:5:6:7 +Map|M1_Seattle_APCorp_Exterior:M1_Seattle_APCorp_LAB // etc. // From here out, the tags all trigger a bark in a specific circumstance // Different kinds of idles. // speech = grabbag for speech and inarticulate sounds without their own tag (sigh, hmmmm) // singing = whistling, humming, singing // yawn = yawn // grumble = irritated sound, exasperation (pwww!, grrrr!) // bodyfunction = cough, grunt, sniff, sneeze, fart, etc. +Idle|speech:singing:yawn:grumble:bodyfunction // QUESTION: "+Noticed +NearAlly" is very similar to "+ConfirmRequest". Might be worth // supporting, though, not sure. "Thought I saw something" vs. "Did you see something?" +Noticed // [+Evidence] [+Enemy] [+NearAlly] (notice something strange, any kind of Evidence) // Warn an ally of danger. Pass in "+Evidence object +Object stolen" to specify a thief. // Pass in "+Evidence body +Body dead" to specify a murderer. +Warn // [+Evidence] [+SpeakingTo] // no optional tags: "I think we've got trouble." +WarnReplyReject [+SpeakingTo] // Paul: I folded "AskWhy" into this one, any kind of prevariaction. "Are you sure, sir?" +WarnReplyAccept [+SpeakingTo] // "I think you're right." +WarnContinue // [+Evidence] (if we allow +Evidence here, it would have to be *additional* evidence // "... and look at those footprints over there." +WarnContinueReply // (still skeptical) "hmmmm." "humph." etc. (4th line of dialogue -- a problem?) +ReprimandPlayer|bumped:stared_at:odd_behavior:second:third:final // player is in a public place +ConfirmRequest // [+Evidence] ("did you see that?") +ConfirmReply|yes:no // [+Evidence] // +Evidence = the same tag passed to +ConfirmRequest // These are meant for when an NPC wanders into a new area, searching for the player. // He might want to ask for +Evidence collected by other NPCs // combat = guard has faught player. // pursuit = guard has seen player. // investigation = guard is searching based on incomplete evidence of the player. +PursuitRequest|combat:pursuit:investigation +PursuitReply|yes:no // [+Evidence] ("Yeah, thought I saw a shadow over there." (points)) // These are for when a guard stumbles upon a dead body or some other evidence and // wants to ask someone nearby for info on who caused the problem. +QuestionRequest // [+Evidence] "Did you see who did this?" +QuestionReply|yes:no // [+Evidence] yes = "Yeah, I think he went that way." (points) // These are for when one NPC asks another for the current "status". The NPC // asking for a report has no reason to believe that anything unusual is // going on. This state encompasses the captain-of-the-guard asking for status. // An inferior might also ask the captain (or a comrade) for status, during a patrol // route. +StatusRequest // [+SpeakingTo] +StatusReply|no_evidence:evidence // [+Evidence] [+SpeakingTo] "All clear, sir." // The following is for one NPC telling another one to do something. (pretty conjectural // at this point.) // guard = "Keep a lookout." "Secure the area." // investigate = "Take a look around." // get_help = "Go get backup." // attack = "Get him!" // cover_me = "Cover me!" // ??? depends on squad AI. +Order|guard:investigate:get_help:attack:cover_me // [+SpeakingTo] +OrderAccept // [+SpeakingTo] "Yes, sir." "Good thinking." +OrderReject // [+SpeakingTo] "Forget it!" "Not me, sir. Sorry." +OrderRejectReply // [+SpeakingTo] (NPC refused an order) "Oh, brother." "Worthless swine." // The following is for an NPC who wants to announce his intentions. // Would be cool if the AI could splice one of these on the end of // an +Order bark, but that might be problematic audio-wise. // guard = "I'll stay here." // investigate = "I'll take a look." // get_help = "I'm on my way to get backup." // attack = "I'll get him!" // cover_me = "Got you covered." +Announce|guard:investigate:get_help:attack:cover_me // [+SpeakingTo] // Summon help +Summon|investigate:defend:fight // [+Evidence] [+SpeakingTo] +SummonReply // [+SpeakingTo] "On the way!" // An NPC comments on a comrade's performance in combat. The speaker could // be a captain-of-the guard speaking to an inferior, vice-versa, or dialogue // between equals. The different cases are delineated with +SpeakingTo. // hurt = the NPC spoken to got injured CombatEvaluation|lost_enemy:ally_dead:hurt // [+SpeakingTo] CombatEvaluationReply|lost_enemy:ally_dead:hurt // [+SpeakingTo] +GreenAlert // [+Evidence] [+NearAlly] [+SpeakingTo] +YellowAlert|init:continue // [+Evidence] [+NearAlly] [+SpeakingTo] +RedAlert|init:continue // [+Evidence] [+NearAlly] [+SpeakingTo] // Combat barks. In each case, info about the enemy and nearby allies is passed // into the system. Something as specific as +SpeakingTo would probably // be supported only in a few cases. +CombatEnter // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatEnterAgain // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatOpponentBlocked // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatCharging // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatTargetFleeing // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] [+NearObject] +CombatTookHit // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatTookHitLowHealth // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatTookHitNoDamage // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatHitTarget // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatTaunt // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatGrunt // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatGruntAttacking // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatOpponentDodged // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] // player is playing hard to hit +CombatWinning // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatKill // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +CombatDying // [+Enemy] [+Monster] [+NearAlly] [+SpeakingTo] +ReturnToIdle|nothing:player // AI thinks he saw nothing or is sure that someone was there.