diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /sp/game/mod_episodic/scripts/talker | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/game/mod_episodic/scripts/talker')
| -rw-r--r-- | sp/game/mod_episodic/scripts/talker/npc_alyx.txt | 133 | ||||
| -rw-r--r-- | sp/game/mod_episodic/scripts/talker/npc_citizen.txt | 1201 | ||||
| -rw-r--r-- | sp/game/mod_episodic/scripts/talker/npc_citizen_commandermode.txt | 484 | ||||
| -rw-r--r-- | sp/game/mod_episodic/scripts/talker/npc_vortigaunt.txt | 878 | ||||
| -rw-r--r-- | sp/game/mod_episodic/scripts/talker/response_rules.txt | 158 |
5 files changed, 2854 insertions, 0 deletions
diff --git a/sp/game/mod_episodic/scripts/talker/npc_alyx.txt b/sp/game/mod_episodic/scripts/talker/npc_alyx.txt new file mode 100644 index 00000000..8b420fa4 --- /dev/null +++ b/sp/game/mod_episodic/scripts/talker/npc_alyx.txt @@ -0,0 +1,133 @@ +//============================================================================================================
+// Alyx criteria
+criterion "IsAlyx" "classname" "npc_alyx" "required"
+//============================================================================================================
+
+//============================================================================================================
+// Alyx Combat speech
+//============================================================================================================
+//----------------------------------------------------------------------------
+
+criterion "ConceptTalkFoundPlayer" "Concept" "TLK_FOUNDPLAYER" required
+
+response "AlyxIsBack"
+{
+ // speak "*vo/episode_1/npc/alyx/al_greet_cit15.wav" // I'm the person who's telling you to get moving.
+}
+
+rule AlyxIsBack
+{
+ criteria IsAlyx IsEpisodic ConceptTalkFoundPlayer
+ response AlyxIsBack
+}
+
+response "AlyxDanger"
+{
+ scene "scenes/npc/Alyx/getback01.vcd" respeakdelay 60
+ scene "scenes/npc/Alyx/getback02.vcd" respeakdelay 60
+// scene "scenes/npc/Alyx/watchout01.vcd" WATCH OUT!!!
+// scene "scenes/npc/Alyx/watchout02.vcd" WATCH OUT!!!
+}
+rule AlyxDanger
+{
+ criteria IsAlyx ConceptTalkDanger
+ response AlyxDanger
+}
+
+response AlyxShot
+{
+ scene "scenes/npc/Alyx/gasp02.vcd"
+ scene "scenes/npc/Alyx/gasp03.vcd"
+ scene "scenes/npc/Alyx/hurt04.vcd"
+ scene "scenes/npc/Alyx/hurt05.vcd"
+ scene "scenes/npc/Alyx/hurt06.vcd"
+ scene "scenes/npc/Alyx/hurt08.vcd"
+ scene "scenes/npc/Alyx/uggh01.vcd"
+}
+
+rule AlyxShot
+{
+ criteria IsAlyx ConceptShot
+ response AlyxShot
+}
+
+
+response AlyxEnemyDead
+{
+// scene "scenes/npc/Alyx/brutal02.vcd" respeakdelay 300
+}
+
+rule AlyxEnemyDead
+{
+ criteria IsAlyx ConceptEnemyDead
+ response AlyxEnemyDead
+}
+
+response AlyxHideAndReload
+{
+// scene "scenes/npc/Alyx/coverme01.vcd"
+// scene "scenes/npc/Alyx/coverme02.vcd"
+// scene "scenes/npc/Alyx/coverme03.vcd"
+}
+
+rule AlyxHideAndReload
+{
+ criteria IsAlyx ConceptHideAndReload PlayerNear
+ response AlyxHideAndReload
+}
+
+response AlyxTalkPlayerPushed
+{
+// scene "scenes/npc/Alyx/excuseme01.vcd"
+// scene "scenes/npc/Alyx/excuseme02.vcd"
+// scene "scenes/npc/Alyx/excuseme03.vcd"
+}
+
+rule AlyxTalkPlayerPushed
+{
+ criteria IsAlyx ConceptTalkPlayerPushed SeenByPlayer NoRecentCombat
+ response AlyxTalkPlayerPushed
+}
+
+// Removed - if okay, can just be deleted
+//response AlyxPlayerReload
+//{
+// scene "scenes/npc/Alyx/youreload01.vcd"
+// scene "scenes/npc/Alyx/youreload02.vcd"
+//}
+//
+//rule AlyxPlayerReload
+//{
+// criteria ConceptPlayerReload IsAlyx PlayerNear SeePlayer
+// response AlyxPlayerReload
+//}
+
+response AlyxWatchOut
+{
+ scene "scenes/npc/Alyx/lookout01.vcd"
+ scene "scenes/npc/Alyx/lookout03.vcd"
+}
+
+rule AlyxWatchOut
+{
+ criteria IsAlyx ConceptTalkWatchout
+ response AlyxWatchout
+}
+
+response AlyxPlayerDead
+{
+ scene "scenes/npc/Alyx/ohno_startle01.vcd"
+ scene "scenes/npc/Alyx/ohno_startle02.vcd"
+ scene "scenes/npc/Alyx/ohno_startle03.vcd"
+}
+
+rule AlyxPlayerDead
+{
+ criteria IsAlyx ConceptPlayerDead
+ response AlyxWatchout
+ matchonce
+}
+
+//----------------------------------------------------------------------------
+
+//============================================================================================================
diff --git a/sp/game/mod_episodic/scripts/talker/npc_citizen.txt b/sp/game/mod_episodic/scripts/talker/npc_citizen.txt new file mode 100644 index 00000000..ae78c7de --- /dev/null +++ b/sp/game/mod_episodic/scripts/talker/npc_citizen.txt @@ -0,0 +1,1201 @@ +//============================================================================================================
+// Citizen criteria
+//============================================================================================================
+criterion "IsRPGUser" "attacking_with_weapon" "weapon_rpg" required
+criterion "EnemyIsSniper" "enemy" "npc_sniper" required
+criterion "HurtByFire" "hurt_by_fire" "1" required
+criterion "AlyxCitizenHelloOkay" "AlyxCitizenHelloOkay" "1" required
+
+
+
+//============================================================================================================
+// Citizen Hello speech
+//============================================================================================================
+response "CitizenHello"
+{
+ scene "scenes/npc/$gender01/abouttime01.vcd"
+ scene "scenes/npc/$gender01/abouttime02.vcd"
+ scene "scenes/npc/$gender01/ahgordon01.vcd"
+ scene "scenes/npc/$gender01/ahgordon02.vcd"
+ scene "scenes/npc/$gender01/docfreeman01.vcd"
+ scene "scenes/npc/$gender01/docfreeman02.vcd"
+ scene "scenes/npc/$gender01/freeman.vcd"
+ scene "scenes/npc/$gender01/hellodrfm01.vcd"
+ scene "scenes/npc/$gender01/hellodrfm02.vcd"
+ scene "scenes/npc/$gender01/heydoc01.vcd"
+ scene "scenes/npc/$gender01/heydoc02.vcd"
+ scene "scenes/npc/$gender01/hi01.vcd"
+ scene "scenes/npc/$gender01/hi02.vcd"
+}
+
+rule CitizenHello
+{
+ criteria IsCitizen ConceptTalkHello PlayerNear SeePlayer NotInPanic
+ response CitizenHello
+}
+
+//============================================================================================================
+// Citizen Idle speech
+//============================================================================================================
+response "CitizenTalkStare"
+{
+ scene "scenes/npc/$gender01/doingsomething.vcd"
+ scene "scenes/npc/$gender01/getgoingsoon.vcd"
+ scene "scenes/npc/$gender01/waitingsomebody.vcd"
+}
+
+rule CitizenTalkStare
+{
+ criteria IsCitizen ConceptTalkStare IsGordonCriminal NPCIdle NotInPanic
+ response CitizenTalkStare
+}
+
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenTalkPlayerPushed"
+{
+ scene "scenes/npc/$gender01/sorryfm01.vcd"
+ scene "scenes/npc/$gender01/sorryfm02.vcd"
+ scene "scenes/npc/$gender01/sorrydoc01.vcd"
+ scene "scenes/npc/$gender01/sorrydoc02.vcd"
+ scene "scenes/npc/$gender01/sorrydoc04.vcd"
+ scene "scenes/npc/$gender01/excuseme01.vcd"
+ scene "scenes/npc/$gender01/excuseme02.vcd"
+ scene "scenes/npc/$gender01/pardonme01.vcd"
+ scene "scenes/npc/$gender01/pardonme02.vcd"
+ scene "scenes/npc/$gender01/sorry01.vcd"
+ scene "scenes/npc/$gender01/sorry02.vcd"
+ scene "scenes/npc/$gender01/sorry03.vcd"
+ scene "scenes/npc/$gender01/outofyourway01.vcd"
+ scene "scenes/npc/$gender01/outofyourway02.vcd"
+ scene "scenes/npc/$gender01/whoops01.vcd"
+}
+
+rule CitizenTalkPlayerPushed
+{
+ criteria IsCitizen ConceptTalkPlayerPushed SeenByPlayer NoRecentCombat
+ response CitizenTalkPlayerPushed
+}
+
+//============================================================================================================
+// Citizen Questions & Responses speech
+//============================================================================================================
+
+//Q&A has been commented out for episodic content, since it pertains to world before Citadel destruction. Added a couple heydocs so that citizens will still acknowledge player if triggered.
+//commented out for ep2 fornow.
+//response "CitizenQuestion"
+//{
+// sequential
+// scene "scenes/npc/$gender01/question01.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question02.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question03.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question04.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question05.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question06.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question07.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question08.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question09.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question10.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question11.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question12.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question13.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question14.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question15.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question16.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question17.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question18.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question19.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question20.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question21.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question22.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question23.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question25.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question26.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question27.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question28.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question29.vcd" respeakdelay 240
+// scene "scenes/npc/$gender01/question30.vcd" respeakdelay 240
+
+//}
+
+//rule CitizenQuestion
+//{
+// criteria IsCitizen ConceptTalkQuestion PlayerAlive NotInPanic
+// response CitizenQuestion
+//}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenAnswer"
+{
+// scene "scenes/npc/$gender01/answer01.vcd" delay 2
+// scene "scenes/npc/$gender01/answer02.vcd" delay 2
+// scene "scenes/npc/$gender01/answer03.vcd" delay 2
+// scene "scenes/npc/$gender01/answer04.vcd" delay 2
+// scene "scenes/npc/$gender01/answer05.vcd" delay 2
+// scene "scenes/npc/$gender01/answer07.vcd" delay 2
+// scene "scenes/npc/$gender01/answer08.vcd" delay 2
+// scene "scenes/npc/$gender01/answer09.vcd" delay 2
+// scene "scenes/npc/$gender01/answer10.vcd" delay 2
+// scene "scenes/npc/$gender01/answer11.vcd" delay 2
+// scene "scenes/npc/$gender01/answer12.vcd" delay 2
+// scene "scenes/npc/$gender01/answer13.vcd" delay 2
+// scene "scenes/npc/$gender01/answer14.vcd" delay 2
+// scene "scenes/npc/$gender01/answer15.vcd" delay 2
+// scene "scenes/npc/$gender01/answer16.vcd" delay 2
+// scene "scenes/npc/$gender01/answer17.vcd" delay 2
+// scene "scenes/npc/$gender01/answer18.vcd" delay 2
+// scene "scenes/npc/$gender01/answer19.vcd" delay 2
+// scene "scenes/npc/$gender01/answer20.vcd" delay 2
+// scene "scenes/npc/$gender01/answer21.vcd" delay 2
+// scene "scenes/npc/$gender01/answer22.vcd" delay 2
+// scene "scenes/npc/$gender01/answer23.vcd" delay 2
+// scene "scenes/npc/$gender01/answer24.vcd" delay 2
+// scene "scenes/npc/$gender01/answer25.vcd" delay 2
+// scene "scenes/npc/$gender01/answer26.vcd" delay 2
+// scene "scenes/npc/$gender01/answer27.vcd" delay 2
+// scene "scenes/npc/$gender01/answer28.vcd" delay 2
+// scene "scenes/npc/$gender01/answer29.vcd" delay 2
+// scene "scenes/npc/$gender01/answer30.vcd" delay 2
+// scene "scenes/npc/$gender01/answer31.vcd" delay 2
+// scene "scenes/npc/$gender01/answer32.vcd" delay 2
+// scene "scenes/npc/$gender01/answer33.vcd" delay 2
+// scene "scenes/npc/$gender01/answer34.vcd" delay 2
+// scene "scenes/npc/$gender01/answer35.vcd" delay 2
+// scene "scenes/npc/$gender01/answer36.vcd" delay 2
+// scene "scenes/npc/$gender01/answer37.vcd" delay 2
+// scene "scenes/npc/$gender01/answer38.vcd" delay 2
+// scene "scenes/npc/$gender01/answer39.vcd" delay 2
+// scene "scenes/npc/$gender01/answer40.vcd" delay 2
+}
+
+rule CitizenAnswer
+{
+ criteria IsCitizen ConceptTalkAnswer PlayerAlive NotInPanic
+ response CitizenAnswer
+}
+
+//============================================================================================================
+// Citizen Questions & Responses with Vortigaunts
+//============================================================================================================
+response "CitizenQuestionVort"
+{
+ scene "scenes/npc/$gender01/vquestion01.vcd" delay 1
+ scene "scenes/npc/$gender01/vquestion02.vcd" delay 1
+ scene "scenes/npc/$gender01/vquestion03.vcd" delay 1
+ scene "scenes/npc/$gender01/vquestion04.vcd" delay 1
+ scene "scenes/npc/$gender01/vquestion05.vcd" delay 1
+ scene "scenes/npc/$gender01/vquestion06.vcd" delay 1
+ scene "scenes/npc/$gender01/vquestion07.vcd" delay 1
+}
+
+rule CitizenQuestionVort
+{
+ criteria IsCitizen ConceptTalkQuestion PlayerAlive IsSpeechTargetAVort NotInPanic
+ response CitizenQuestionVort
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenAnswerVort"
+{
+ scene "scenes/npc/$gender01/vanswer01.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer02.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer03.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer04.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer05.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer06.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer07.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer08.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer09.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer10.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer11.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer12.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer13.vcd" delay 2
+ scene "scenes/npc/$gender01/vanswer14.vcd" delay 2
+}
+
+rule CitizenAnswerVort
+{
+ criteria IsCitizen ConceptTalkAnswer PlayerAlive IsSpeechTargetAVort NotInPanic
+ response CitizenAnswerVort
+}
+
+////============================================================================================================
+//// Citizen Questions & Responses with Alyx
+////============================================================================================================
+//response "CitizenQuestionAlyx"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_remarks01.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks02.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks03.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks04.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks05.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks06.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks07.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks08.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks09.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks10.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks11.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks12.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks13.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks14.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks15.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks16.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks17.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks18.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks19.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks20.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks21.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks22.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks23.vcd" delay 1
+//}
+//
+//rule CitizenQuestionAlyx
+//{
+// criteria IsCitizen ConceptTalkQuestion PlayerAlive IsSpeechTargetAlyx NotInPanic AlyxCitizenHelloOkay
+// response CitizenQuestionAlyx
+//}
+//
+////------------------------------------------------------------------------------------------------------------
+//response "CitizenAnswerAlyx"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_remarks01.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks02.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks03.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks04.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks05.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks06.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks07.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks08.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks09.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks10.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks11.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks12.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks13.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks14.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks15.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks16.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks17.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks18.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks19.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks20.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks21.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks22.vcd" delay 1
+// scene "scenes/episode_1/npc/$gender01/cit_remarks23.vcd" delay 1
+//}
+//
+//rule CitizenAnswerAlyx
+//{
+// criteria IsCitizen ConceptTalkAnswer PlayerAlive IsSpeechTargetAlyx NotInPanic
+// response CitizenAnswerAlyx
+//}
+//
+////============================================================================================================
+//// Citizen Hello Responses with Alyx
+////============================================================================================================
+//
+//response "CitizenQuestionHelloAlyx1"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx01.vcd" delay 1 // Hey! You�re Alyx Vance!
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx1
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore00 RGroupLess10 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx1
+//}
+//
+//response "CitizenQuestionHelloAlyx2"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx02.vcd" delay 1 // I know you!
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx2
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore10 RGroupLess20 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx2
+//}
+//
+//
+//response "CitizenQuestionHelloAlyx3"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx03.vcd" delay 1 // Alyx Vance and Gordon Freeman! You stayed behind to look after us, didn�t you?
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx05.vcd" delay 1 // I hope you two are here to help.
+//}
+//
+//rule CitizenQuestionHelloAlyx3
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore20 RGroupLess30 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx3
+//}
+//
+//
+//response "CitizenQuestionHelloAlyx4"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx04.vcd" delay 1 // Who are you again?
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx4
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore30 RGroupLess40 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx4
+//}
+//
+//
+//response "CitizenQuestionHelloAlyx5"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx06.vcd" delay 1 // your kleiner's daughter right?
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx5
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore40 RGroupLess50 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx5
+//}
+//
+//response "CitizenQuestionHelloAlyx6"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx07.vcd" delay 1 // Yeah, yeah, good to see you. Now, where's Dog?
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx6
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore50 RGroupLess60 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx6
+//}
+//
+//response "CitizenQuestionHelloAlyx7"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx08.vcd" delay 1 //Alyx, oh my god, where's Freeman!?! Oh, there he is...
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx09.vcd" delay 1 //Oh, hey Freeman. And this is the Mrs., I presume?
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx10.vcd" delay 1 //Oh, hey Freeman. And this must be the little lady.(Male) - Dr. and Mrs. Freeman, I presume? (Female)
+//}
+//
+//rule CitizenQuestionHelloAlyx7
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore60 RGroupLess70 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx7
+//}
+//
+//response "CitizenQuestionHelloAlyx8"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx11.vcd" delay 1 //honestly, do you think we have any chance?
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx8
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore70 RGroupLess80 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx8
+//}
+//
+//response "CitizenQuestionHelloAlyx9"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx12.vcd" delay 1 // Yap, yap, yap, why don't you let Freeman get a word in for once?`
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx9
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore80 RGroupLess90 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx9
+//}
+//
+//response "CitizenQuestionHelloAlyx10"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx13.vcd" delay 1
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx10
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic RGroupMore90 RGroupLess100 AlyxCitizenHelloOkay
+// response CitizenQuestionHelloAlyx10
+//}
+
+//response "CitizenQuestionHelloAlyx"
+//{
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx01.vcd" delay 1 // Hey! You�re Alyx Vance!
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx02.vcd" delay 1 // I know you!
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx03.vcd" delay 1 // Alyx Vance and Gordon Freeman! You stayed behind to look after us, didn�t you?
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx04.vcd" delay 1 // Who are you again?
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx05.vcd" delay 1 // I hope you two are here to help.
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx06.vcd" delay 1 // You're Kleiner's daughter, right?
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx07.vcd" delay 1 // Yeah, yeah, good to see you. Now, where's Dog?
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx08.vcd" delay 1 // Alyx, oh my god, where's Freeman!?! Oh, there he is...
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx09.vcd" delay 1 // Oh, hey Freeman. And this is the Mrs., I presume?
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx10.vcd" delay 1 // Alyx, Gordon - thank God you made it
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx11.vcd" delay 1 // Alyx - honestly, do you think we have any chance?
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx12.vcd" delay 1 // Yap, yap, yap, why don't you let Freeman get a word in for once?`
+// scene "scenes/episode_1/npc/$gender01/cit_greet_alyx13.vcd" delay 1 // Oh, hey Freeman. And this must be the little lady. [male only]
+//
+//}
+//
+//rule CitizenQuestionHelloAlyx
+//{
+// criteria IsCitizen ConceptTalkQuestionHello PlayerAlive IsSpeechTargetAlyx NotInPanic
+// response CitizenQuestionHelloAlyx
+//}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenAnswerHelloAlyx"
+{
+ //scene "scenes/episode_1/npc/$gender01/cit_remarks01.vcd" delay 1
+}
+
+rule CitizenAnswerHelloAlyx
+{
+ criteria IsCitizen ConceptTalkAnswerHello PlayerAlive IsSpeechTargetAlyx NotInPanic
+ response CitizenAnswerHelloAlyx
+}
+
+
+
+
+//============================================================================================================
+// Citizen Mourning the player's death
+//============================================================================================================
+
+response "CitizenMournQ"
+{
+ scene "scenes/npc/$gender01/gordead_ques01.vcd"
+ scene "scenes/npc/$gender01/gordead_ques02.vcd"
+ scene "scenes/npc/$gender01/gordead_ques03a.vcd"
+ scene "scenes/npc/$gender01/gordead_ques03b.vcd"
+ scene "scenes/npc/$gender01/gordead_ques04.vcd"
+ scene "scenes/npc/$gender01/gordead_ques05.vcd"
+ scene "scenes/npc/$gender01/gordead_ques06.vcd"
+ scene "scenes/npc/$gender01/gordead_ques07.vcd"
+ scene "scenes/npc/$gender01/gordead_ques08.vcd"
+ scene "scenes/npc/$gender01/gordead_ques09.vcd"
+ scene "scenes/npc/$gender01/gordead_ques10.vcd"
+ scene "scenes/npc/$gender01/gordead_ques11.vcd"
+ scene "scenes/npc/$gender01/gordead_ques12.vcd"
+ scene "scenes/npc/$gender01/gordead_ques13.vcd"
+ scene "scenes/npc/$gender01/gordead_ques14.vcd"
+ scene "scenes/npc/$gender01/gordead_ques15.vcd"
+ scene "scenes/npc/$gender01/gordead_ques16.vcd"
+ scene "scenes/npc/$gender01/gordead_ques17.vcd"
+}
+
+rule CitizenMournQ
+{
+ criteria IsCitizen ConceptTalkQuestion IsGordonCriminal PlayerDead
+ response CitizenMournQ
+ matchonce
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenMournA"
+{
+ scene "scenes/npc/$gender01/gordead_ans01.vcd"
+ scene "scenes/npc/$gender01/gordead_ans02.vcd"
+ scene "scenes/npc/$gender01/gordead_ans03.vcd"
+ scene "scenes/npc/$gender01/gordead_ans04.vcd"
+ scene "scenes/npc/$gender01/gordead_ans05.vcd"
+ scene "scenes/npc/$gender01/gordead_ans06.vcd"
+ scene "scenes/npc/$gender01/gordead_ans07.vcd"
+ scene "scenes/npc/$gender01/gordead_ans08.vcd"
+ scene "scenes/npc/$gender01/gordead_ans09.vcd"
+ scene "scenes/npc/$gender01/gordead_ans10.vcd"
+ scene "scenes/npc/$gender01/gordead_ans11.vcd"
+ scene "scenes/npc/$gender01/gordead_ans12.vcd"
+ scene "scenes/npc/$gender01/gordead_ans13.vcd"
+ scene "scenes/npc/$gender01/gordead_ans14.vcd"
+ scene "scenes/npc/$gender01/gordead_ans15.vcd"
+ scene "scenes/npc/$gender01/gordead_ans16.vcd"
+ scene "scenes/npc/$gender01/gordead_ans17.vcd"
+ scene "scenes/npc/$gender01/gordead_ans18.vcd"
+ scene "scenes/npc/$gender01/gordead_ans19.vcd"
+ scene "scenes/npc/$gender01/gordead_ans20.vcd"
+}
+
+rule CitizenMournA
+{
+ criteria IsCitizen ConceptTalkAnswer IsGordonCriminal PlayerDead
+ response CitizenMournA
+ matchonce
+}
+
+response "CitizenMournAll"
+{
+ response CitizenMournQ
+ response CitizenMournA
+}
+
+rule CitizenMourn
+{
+ criteria IsCitizen ConceptPlayerDead IsGordonCriminal PlayerDead
+ response CitizenMournAll
+ matchonce
+}
+
+//-----------------------------------------
+response "CitizenHeal"
+{
+ scene "scenes/npc/$gender01/health01.vcd" delay 1
+ scene "scenes/npc/$gender01/health02.vcd" delay 1
+ scene "scenes/npc/$gender01/health03.vcd" delay 1
+ scene "scenes/npc/$gender01/health04.vcd" delay 1
+ scene "scenes/npc/$gender01/health05.vcd" delay 1
+}
+
+rule CitizenHeal
+{
+ criteria IsCitizen ConceptTalkHeal
+ response CitizenHeal
+}
+//---------------------------
+response "CitizenGiveAmmo"
+{
+ scene "scenes/npc/$gender01/ammo01.vcd" delay 1
+ scene "scenes/npc/$gender01/ammo02.vcd" delay 1
+ scene "scenes/npc/$gender01/ammo03.vcd" delay 1
+ scene "scenes/npc/$gender01/ammo04.vcd" delay 1
+ scene "scenes/npc/$gender01/ammo05.vcd" delay 1
+}
+
+rule CitizenGiveAmmo
+{
+ criteria IsCitizen ConceptTalkGiveAmmo
+ response CitizenGiveAmmo
+}
+
+//============================================================================================================
+// Citizen Combat speech
+//============================================================================================================
+response "CitizenDanger"
+{
+ permitrepeats
+ scene "scenes/npc/$gender01/watchout.vcd" weight 1
+ scene "scenes/npc/$gender01/uhoh.vcd" weight 1.1
+ scene "scenes/npc/$gender01/lookoutfm01.vcd" weight .9
+ scene "scenes/npc/$gender01/startle01.vcd" weight 1.1
+ scene "scenes/npc/$gender01/startle02.vcd" weight 1.1
+ scene "scenes/npc/$gender01/getdown02.vcd" weight 1
+}
+
+rule CitizenDanger
+{
+ criteria IsCitizen ConceptTalkDanger
+ response CitizenDanger
+}
+
+response CitizenDangerBig
+{
+ permitrepeats
+ scene "scenes/npc/$gender01/strider_run.vcd"
+ scene "scenes/npc/$gender01/gethellout.vcd"
+ response CitizenDanger weight 12 // 6 * 2
+}
+
+rule CitizenDangerBig
+{
+ criteria IsCitizen ConceptTalkDanger EnemyIsStrider
+ response CitizenDangerBig
+}
+
+
+response "CitizenAntLionDanger"
+{
+ scene "scenes/episode_1/npc/$gender01/cit_alert_antlions05.vcd" respeakdelay 30
+ scene "scenes/episode_1/npc/$gender01/cit_alert_antlions06.vcd" respeakdelay 30
+ scene "scenes/episode_1/npc/$gender01/cit_alert_antlions07.vcd" respeakdelay 30
+ scene "scenes/episode_1/npc/$gender01/cit_alert_antlions08.vcd" respeakdelay 30
+ scene "scenes/episode_1/npc/$gender01/cit_alert_antlions09.vcd" respeakdelay 30
+ scene "scenes/episode_1/npc/$gender01/cit_alert_antlions18.vcd" respeakdelay 30
+}
+
+rule CitizenAntLionDanger
+{
+ criteria IsCitizen ConceptTalkAttacking EnemyIsAntLion
+ response CitizenAntLionDanger
+}
+
+
+
+
+
+response "CitizenMortarDanger"
+{
+ scene "scenes/npc/$gender01/watchout.vcd"
+ scene "scenes/npc/$gender01/headsup01.vcd"
+ scene "scenes/npc/$gender01/getdown02.vcd"
+ scene "scenes/npc/$gender01/headsup02.vcd"
+ scene "scenes/npc/$gender01/incoming02.vcd"
+ scene "scenes/npc/$gender01/takecover02.vcd"
+}
+
+rule CitizenMortarDanger
+{
+ criteria IsCitizen ConceptTalkDanger EnemyIsMortar
+ response CitizenMortarDanger
+}
+
+response "CitizenSniperDanger"
+{
+ scene "scenes/npc/$gender01/uhoh.vcd"
+ scene "scenes/npc/$gender01/startle01.vcd"
+ scene "scenes/npc/$gender01/startle02.vcd"
+ scene "scenes/npc/$gender01/getdown02.vcd"
+}
+
+rule CitizenSniperDanger
+{
+ criteria IsCitizen ConceptTalkDanger EnemyIsSniper
+ response CitizenSniperDanger
+}
+
+//============================================================================================================
+// Citizen Reloads Weapon
+//============================================================================================================
+response "CitizenHideAndReload"
+{
+ scene "scenes/npc/$gender01/coverwhilereload01.vcd"
+ scene "scenes/npc/$gender01/coverwhilereload02.vcd"
+ scene "scenes/npc/$gender01/gottareload01.vcd"
+// print "Gotta reload!"
+}
+
+rule CitizenHideAndReload
+{
+ criteria IsCitizen ConceptHideAndReload
+ response CitizenHideAndReload
+}
+
+//============================================================================================================
+// Citizen Reminds Player to Reload
+// Removed because it began to be too much, can just be deleted unless someone really misses it.
+//============================================================================================================
+//response "CitizenPlayerReload"
+//{
+// scene "scenes/npc/$gender01/dontforgetreload01.vcd"
+// scene "scenes/npc/$gender01/reloadfm01.vcd"
+// scene "scenes/npc/$gender01/reloadfm02.vcd"
+// scene "scenes/npc/$gender01/youdbetterreload01.vcd"
+//// print "You better reload, Doc."
+//}
+//
+//rule CitizenPlayerReload
+//{
+// criteria ConceptPlayerReload IsCitizen PlayerNear SeePlayer
+// response CitizenPlayerReload
+//}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenNewWeapon"
+{
+ scene "scenes/npc/$gender01/nice.vcd"
+ scene "scenes/npc/$gender01/nice01.vcd"
+ scene "scenes/npc/$gender01/nice02.vcd"
+ scene "scenes/npc/$gender01/thislldonicely.vcd"
+ scene "scenes/npc/$gender01/yeah01.vcd"
+ scene "scenes/npc/$gender01/fantastic01.vcd"
+ scene "scenes/npc/$gender01/fantastic02.vcd"
+ scene "scenes/npc/$gender01/finally.vcd"
+ scene "scenes/npc/$gender01/oneforme.vcd"
+ scene "scenes/npc/$gender01/evenodds.vcd"
+}
+
+rule CitizenNewWeapon
+{
+ criteria IsCitizen ConceptNewWeapon
+ response CitizenNewWeapon
+}
+
+//------------------------------------------------------------------------------------------------------------
+response CitizenOuch
+{
+ permitrepeats
+ scene "scenes/npc/$gender01/ow01.vcd"
+ scene "scenes/npc/$gender01/ow02.vcd"
+// speak npc_citizen.die weight 9 // there are nine waves in there
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+response CitizenMortalWound
+{
+ scene "scenes/npc/$gender01/imhurt01.vcd"
+ scene "scenes/npc/$gender01/imhurt02.vcd"
+}
+
+rule CitizenMortalWound
+{
+ criteria IsCitizen ConceptTalkMortal
+ response CitizenMortalWound
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+rule CitizenWound
+{
+ criteria IsCitizen ConceptTalkWound
+ response CitizenOuch
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+response CitizenWoundFire
+{
+ scene "scenes/npc/$gender01/ow01.vcd"
+ scene "scenes/npc/$gender01/no01.vcd"
+ scene "scenes/npc/$gender01/no02.vcd"
+}
+
+rule CitizenWoundFire
+{
+ criteria IsCitizen ConceptTalkWound HurtByFire
+ response CitizenWoundFire
+}
+
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenShotArm"
+{
+ permitrepeats
+ scene "scenes/npc/$gender01/myarm01.vcd"
+ scene "scenes/npc/$gender01/myarm02.vcd"
+ response CitizenOuch weight 8
+}
+
+rule CitizenShotArm
+{
+ criteria IsCitizen ConceptShot ShotInArm
+ response CitizenShotArm
+}
+
+response "CitizenShotLeg"
+{
+ permitrepeats
+ scene "scenes/npc/$gender01/myleg01.vcd"
+ scene "scenes/npc/$gender01/myleg02.vcd"
+ response CitizenOuch weight 8
+}
+
+
+rule CitizenShotLeg
+{
+ criteria IsCitizen ConceptShot ShotInLeg
+ response CitizenShotLeg
+}
+
+response "CitizenShotGut"
+{
+ permitrepeats
+ scene "scenes/npc/$gender01/mygut01.vcd"
+ scene "scenes/npc/$gender01/mygut02.vcd"
+ scene "scenes/npc/$gender01/hitingut01.vcd"
+ scene "scenes/npc/$gender01/hitingut02.vcd"
+ response CitizenOuch weight 16
+}
+
+rule CitizenShotGut
+{
+ criteria IsCitizen ConceptShot ShotInGut
+ response CitizenShotGut
+}
+
+//------------------------------------------------------------------------------------------------------------
+response CitizenWatchOut
+{
+ scene "scenes/npc/$gender01/lookoutfm01.vcd"
+ scene "scenes/npc/$gender01/lookoutfm02.vcd"
+}
+
+rule CitizenWatchOut
+{
+ criteria IsCitizen ConceptTalkWatchout
+ response CitizenWatchout
+}
+
+response CitizenWatchOutUp
+{
+ scene "scenes/npc/$gender01/upthere01.vcd"
+ scene "scenes/npc/$gender01/upthere02.vcd"
+}
+
+rule CitizenWatchOutUp
+{
+ criteria IsCitizen ConceptTalkWatchout
+ "dangerloc" "above" required
+ response CitizenWatchOutUp
+}
+
+response CitizenWatchOutBehind
+{
+ scene "scenes/npc/$gender01/behindyou01.vcd"
+ scene "scenes/npc/$gender01/behindyou02.vcd"
+}
+
+rule CitizenWatchOutBehind
+{
+ criteria IsCitizen ConceptTalkWatchout
+ "dangerloc" "behind" required
+ response CitizenWatchOutBehind
+}
+
+response CitizenWatchOutFar
+{
+ scene "scenes/npc/$gender01/overthere01.vcd"
+ scene "scenes/npc/$gender01/overthere02.vcd"
+}
+
+rule CitizenWatchOutFar
+{
+ criteria IsCitizen ConceptTalkWatchout
+ "dangerloc" "far" required
+ response CitizenWatchOutFar
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenEnemyDead"
+{
+ scene "scenes/episode_1/npc/$gender01/cit_kill01.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill02.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill03.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill04.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill06.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill07.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill08.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill09.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill10.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill11.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill12.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill13.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill14.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill17.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill18.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill19.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_kill20.vcd"
+ scene "scenes/npc/$gender01/gotone01.vcd"
+ scene "scenes/npc/$gender01/gotone02.vcd"
+ scene "scenes/npc/$gender01/likethat.vcd"
+}
+
+rule CitizenEnemyDead
+{
+ criteria IsCitizen ConceptEnemyDead
+ response CitizenEnemyDead
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenNoShoot"
+{
+ scene "scenes/npc/$gender01/onyourside.vcd"
+ scene "scenes/npc/$gender01/stopitfm.vcd"
+ scene "scenes/npc/$gender01/watchwhat.vcd"
+
+}
+
+rule CitizenNoShoot
+{
+ criteria IsCitizen ConceptTalkNoShoot
+ response CitizenNoShoot
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenBetrayed"
+{
+ scene "scenes/npc/$gender01/heretohelp01.vcd"
+ scene "scenes/npc/$gender01/heretohelp02.vcd"
+ scene "scenes/npc/$gender01/wetrustedyou01.vcd"
+ scene "scenes/npc/$gender01/wetrustedyou02.vcd"
+ scene "scenes/npc/$gender01/notthemanithought01.vcd"
+ scene "scenes/npc/$gender01/notthemanithought02.vcd"
+}
+
+rule CitizenBetrayed
+{
+ criteria IsCitizen ConceptTalkBetrayed
+ response CitizenBetrayed
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenAllyKilled"
+{
+
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled01.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled02.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled03.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled04.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled05.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled06.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled07.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled08.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled09.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled10.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled11.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled12.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled13.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled14.vcd"
+ scene "scenes/episode_1/npc/$gender01/cit_buddykilled15.vcd"
+ scene "scenes/npc/$gender01/ohno.vcd"
+ scene "scenes/npc/$gender01/goodgod.vcd"
+ scene "scenes/npc/$gender01/startle01.vcd"
+ scene "scenes/npc/$gender01/startle02.vcd"
+ scene "scenes/npc/$gender01/no01.vcd"
+ scene "scenes/npc/$gender01/no02.vcd"
+}
+
+rule CitizenAllyKilled
+{
+ criteria IsCitizen ConceptTalkAllyKilled
+ response CitizenAllyKilled
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+response CitizenCombineGroup
+{
+ scene "scenes/npc/$gender01/combine01.vcd"
+ scene "scenes/npc/$gender01/combine02.vcd"
+}
+
+response CitizenCombine
+{
+ response CitizenCombineGroup respeakdelay 300
+}
+
+rule CitizenStartCombatCombine
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_combine_s required
+ response CitizenCombine
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+response CitizenHeadcrabGroup
+{
+ scene "scenes/npc/$gender01/headcrabs01.vcd"
+ scene "scenes/npc/$gender01/headcrabs02.vcd"
+}
+
+response CitizenHeadcrab
+{
+ response CitizenHeadcrabGroup respeakdelay 300
+}
+
+rule CitizenStartCombatHeadcrab
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_headcrab required
+ response CitizenHeadcrab
+}
+
+rule CitizenStartCombatHeadcrabFast
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_headcrab_fast required
+ response CitizenHeadcrab
+}
+
+rule CitizenStartCombatHeadcrabBlack
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_headcrab_black required
+ response CitizenHeadcrab
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+response CitizenZombieGroup
+{
+ scene "scenes/npc/$gender01/zombies01.vcd"
+ scene "scenes/npc/$gender01/zombies02.vcd"
+}
+
+response CitizenZombie
+{
+ response CitizenZombieGroup respeakdelay 300
+}
+
+rule CitizenStartCombatZombie
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_zombie required
+ response CitizenZombie
+}
+
+rule CitizenStartCombatZombieTorso
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_zombie_torso required
+ response CitizenZombie
+}
+
+rule CitizenStartCombatZombieFast
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_fastzombie required
+ response CitizenZombie
+}
+
+rule CitizenStartCombatZombiePoison
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_poisonzombie required
+ response CitizenZombie
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+response CitizenScannersGroup
+{
+ scene "scenes/npc/$gender01/scanners01.vcd"
+ scene "scenes/npc/$gender01/scanners02.vcd"
+}
+
+response CitizenScanners
+{
+ response CitizenScannersGroup respeakdelay 300
+}
+
+
+rule CitizenStartCombatScanners
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_cscanner required
+ response CitizenScanners
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+response CitizenStrider
+{
+ scene "scenes/npc/$gender01/strider.vcd" respeakdelay 300
+}
+
+rule CitizenStartCombatStrider
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_strider required
+ response CitizenStrider
+}
+
+//------------------------------------------------------------------------------------------------------------
+
+response CitizenManhacksGroup
+{
+ scene "scenes/npc/$gender01/itsamanhack01.vcd"
+ scene "scenes/npc/$gender01/itsamanhack02.vcd"
+ scene "scenes/npc/$gender01/herecomehacks01.vcd"
+ scene "scenes/npc/$gender01/herecomehacks02.vcd"
+ scene "scenes/npc/$gender01/thehacks01.vcd"
+ scene "scenes/npc/$gender01/thehacks02.vcd"
+ scene "scenes/npc/$gender01/hacks01.vcd"
+ scene "scenes/npc/$gender01/hacks02.vcd"
+}
+
+response CitizenManhacks
+{
+ response CitizenManhacksGroup respeakdelay 300
+}
+
+rule CitizenStartCombatManhacks
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_manhack required
+ response CitizenManhacks
+}
+
+
+//------------------------------------------------------------------------------------------------------------
+
+response "CitizenMetroGroup"
+{
+ scene "scenes/npc/$gender01/cps01.vcd"
+ scene "scenes/npc/$gender01/cps02.vcd"
+ scene "scenes/npc/$gender01/civilprotection01.vcd"
+ scene "scenes/npc/$gender01/civilprotection02.vcd"
+}
+
+response CitizenMetro
+{
+ response CitizenMetroGroup respeakdelay 300
+}
+
+
+rule CitizenStartCombatMetro
+{
+ criteria IsCitizen ConceptStartCombat
+ enemy npc_metropolice required
+ response CitizenMetro
+}
+
+
+//============================================================================================================
+// Citizen misc speech
+//============================================================================================================
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenFiringRPG"
+{
+//
+}
+
+rule CitizenFiringRPG
+{
+ criteria IsCitizen IsRPGUser
+ response CitizenFiringRPG
+}
+
+//============================================================================================================
+// Citizen Leader speech (a citizen that's leading the player somewhere)
+//============================================================================================================
+//response "CitizenLeadWaitOver"
+//{
+// scene "scenes/npc/$gender01/gotone02.vcd"
+//}
+
+//rule CitizenLeadWaitOver
+//{
+// criteria ConceptLeadWaitOver
+// response CitizenLeadWaitOver
+//}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenSeeCombine"
+{
+ scene "scenes/npc/$gender01/combine01.vcd"
+}
+
+rule CitizenSeeCombine
+{
+ criteria IsCitizen ConceptSeeCombine
+ response CitizenSeeCombine
+ respeakdelay 45
+}
+
+//============================================================================================================
+// Citizen responding to the player 'attacking' them with a physics object
+//============================================================================================================
+response "CitizenPlayerPhysAttack"
+{
+
+}
+
+rule CitizenPlayerPhysAttack
+{
+ criteria IsCitizen ConceptTalkPlayerPhysAttack
+ response CitizenPlayerPhysAttack
+}
+
+
+
+
+
+
+//============================================================================================================
+//#include "talker/npc_citizen_commandermode.txt"
+//#include "talker/npc_citizen_terminal.txt"
+//#include "talker/npc_citizen_tenement.txt"
+//#include "talker/npc_citizen_coast.txt"
+//#include "talker/npc_citizen_canals.txt"
+//#include "talker/npc_citizen_c17.txt"
+//#include "talker/npc_citizen_ep1.txt"
\ No newline at end of file diff --git a/sp/game/mod_episodic/scripts/talker/npc_citizen_commandermode.txt b/sp/game/mod_episodic/scripts/talker/npc_citizen_commandermode.txt new file mode 100644 index 00000000..6573ca5b --- /dev/null +++ b/sp/game/mod_episodic/scripts/talker/npc_citizen_commandermode.txt @@ -0,0 +1,484 @@ +//============================================================================================================
+// Commander mode criteria
+//============================================================================================================
+criterion "IsOnlySelected" "numselected" "1" required
+criterion "NotOnlySelected" "numselected" ">1" required
+criterion "Is_03_first" "name" "citizen_c17_03_first" required
+
+criterion "UseRadio" "useradio" "1" required
+
+criterion "SquadNearPlayer" "distancetoplayer" "<240" required
+criterion "SquadNotNearPlayer" "distancetoplayer" ">=240" required
+criterion "SquadNearCommandPoint" "commandpoint_dist_to_npc" "<240" required
+criterion "SquadNotNearCommandPoint" "commandpoint_dist_to_npc" ">=240" required
+criterion "CommandPointNearPlayer" "commandpoint_dist_to_player" "<144" required
+criterion "CommandPointNotNearPlayer" "commandpoint_dist_to_player" ">=144" required
+criterion "JoinSquadIndividual" "numjoining" "1" required
+criterion "JoinSquadMultiple" "numjoining" ">1" required
+criterion "TrailingReinforcement" "reinforcement" "1" required
+
+//============================================================================================================
+// Commander mode selection speech
+//============================================================================================================
+response "CitizenSelected"
+{
+ scene "scenes/npc/$gender01/ok01.vcd"
+ scene "scenes/npc/$gender01/ok02.vcd"
+ scene "scenes/npc/$gender01/okimready01.vcd"
+ scene "scenes/npc/$gender01/okimready02.vcd"
+ scene "scenes/npc/$gender01/okimready03.vcd"
+ scene "scenes/npc/$gender01/readywhenyouare01.vcd"
+ scene "scenes/npc/$gender01/readywhenyouare02.vcd"
+
+}
+
+rule CitizenSelected
+{
+ criteria IsCitizen ConceptTalkSelected
+ response CitizenSelected
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenGroupSelectedRadio"
+{
+}
+
+rule CitizenGroupSelectedRadio
+{
+ criteria IsCitizen ConceptTalkSelected NotOnlySelected UseRadio
+ response CitizenGroupSelectedRadio
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenSoloSelectedRadio"
+{
+}
+
+rule CitizenSoloSelectedRadio
+{
+ criteria IsCitizen ConceptTalkSelected UseRadio
+ response CitizenSoloSelectedRadio
+}
+
+
+//============================================================================================================
+// Commander mode orders speech
+//============================================================================================================
+
+response CitizenSquadNearToFarIndividual
+{
+ scene "scenes/npc/$gender01/squad_affirm01.vcd"
+ scene "scenes/npc/$gender01/squad_affirm02.vcd"
+ scene "scenes/npc/$gender01/squad_affirm03.vcd"
+ scene "scenes/npc/$gender01/squad_affirm04.vcd"
+ scene "scenes/npc/$gender01/squad_affirm05.vcd"
+ scene "scenes/npc/$gender01/squad_affirm06.vcd"
+ scene "scenes/npc/$gender01/squad_affirm07.vcd"
+ scene "scenes/npc/$gender01/squad_affirm08.vcd"
+ scene "scenes/npc/$gender01/squad_affirm09.vcd"
+ // speak "npc_citizen.squad_affirm01"
+ // speak "npc_citizen.squad_affirm02"
+ // speak "npc_citizen.squad_affirm03"
+ // speak "npc_citizen.squad_affirm04"
+ // speak "npc_citizen.squad_affirm05"
+ // speak "npc_citizen.squad_affirm06"
+ // speak "npc_citizen.squad_affirm07"
+ // speak "npc_citizen.squad_affirm08"
+ // speak "npc_citizen.squad_affirm09"
+ scene "scenes/npc/$gender01/letsgo01.vcd"
+ scene "scenes/npc/$gender01/letsgo02.vcd"
+ scene "scenes/npc/$gender01/yougotit02.vcd"
+}
+
+response CitizenSquadNearToFarGroup
+{
+ scene "scenes/npc/$gender01/squad_affirm01.vcd"
+ scene "scenes/npc/$gender01/squad_affirm02.vcd"
+ scene "scenes/npc/$gender01/squad_affirm03.vcd"
+ scene "scenes/npc/$gender01/squad_affirm05.vcd"
+ scene "scenes/npc/$gender01/squad_affirm06.vcd"
+ scene "scenes/npc/$gender01/squad_affirm07.vcd"
+ scene "scenes/npc/$gender01/squad_affirm08.vcd"
+ scene "scenes/npc/$gender01/squad_affirm09.vcd"
+ scene "scenes/npc/$gender01/squad_away01.vcd"
+ scene "scenes/npc/$gender01/squad_away02.vcd"
+ scene "scenes/npc/$gender01/squad_away03.vcd"
+ // speak "npc_citizen.squad_affirm01"
+ // speak "npc_citizen.squad_affirm02"
+ // speak "npc_citizen.squad_affirm03"
+ // speak "npc_citizen.squad_affirm05"
+ // speak "npc_citizen.squad_affirm06"
+ // speak "npc_citizen.squad_affirm07"
+ // speak "npc_citizen.squad_affirm08"
+ // speak "npc_citizen.squad_affirm09"
+ // speak "npc_citizen.squad_away01"
+ // speak "npc_citizen.squad_away02"
+ // speak "npc_citizen.squad_away03"
+ scene "scenes/npc/$gender01/letsgo01.vcd"
+ scene "scenes/npc/$gender01/letsgo02.vcd"
+ scene "scenes/npc/$gender01/yougotit02.vcd"
+}
+
+response CitizenSquadFarToNearIndividual
+{
+ scene "scenes/npc/$gender01/squad_affirm01.vcd"
+ scene "scenes/npc/$gender01/squad_affirm02.vcd"
+ scene "scenes/npc/$gender01/squad_affirm03.vcd"
+ scene "scenes/npc/$gender01/squad_affirm07.vcd"
+ scene "scenes/npc/$gender01/squad_affirm08.vcd"
+ scene "scenes/npc/$gender01/squad_affirm09.vcd"
+ //scene "scenes/npc/$gender01/squad_approach04.vcd"
+ // speak "npc_citizen.squad_affirm01"
+ // speak "npc_citizen.squad_affirm02"
+ // speak "npc_citizen.squad_affirm03"
+ // speak "npc_citizen.squad_affirm07"
+ // speak "npc_citizen.squad_affirm08"
+ // speak "npc_citizen.squad_affirm09"
+ // speak "npc_citizen.squad_approach04"
+ scene "scenes/npc/$gender01/yougotit02.vcd"
+}
+
+response CitizenSquadFarToNearGroup
+{
+ scene "scenes/npc/$gender01/squad_affirm01.vcd"
+ scene "scenes/npc/$gender01/squad_affirm02.vcd"
+ scene "scenes/npc/$gender01/squad_affirm03.vcd"
+ scene "scenes/npc/$gender01/squad_affirm07.vcd"
+ scene "scenes/npc/$gender01/squad_affirm08.vcd"
+ scene "scenes/npc/$gender01/squad_affirm09.vcd"
+ scene "scenes/npc/$gender01/squad_approach01.vcd"
+ scene "scenes/npc/$gender01/squad_approach02.vcd"
+ scene "scenes/npc/$gender01/squad_approach03.vcd"
+ scene "scenes/npc/$gender01/squad_approach04.vcd"
+ // speak "npc_citizen.squad_affirm01"
+ // speak "npc_citizen.squad_affirm02"
+ // speak "npc_citizen.squad_affirm03"
+ // speak "npc_citizen.squad_affirm07"
+ // speak "npc_citizen.squad_affirm08"
+ // speak "npc_citizen.squad_affirm09"
+ // speak "npc_citizen.squad_approach01"
+ // speak "npc_citizen.squad_approach02"
+ // speak "npc_citizen.squad_approach03"
+ // speak "npc_citizen.squad_approach04"
+ scene "scenes/npc/$gender01/letsgo01.vcd"
+ scene "scenes/npc/$gender01/letsgo02.vcd"
+ scene "scenes/npc/$gender01/yougotit02.vcd"
+}
+
+response CitizenSquadNearToNear
+{
+ scene "scenes/npc/$gender01/squad_affirm01.vcd"
+ scene "scenes/npc/$gender01/squad_affirm02.vcd"
+ scene "scenes/npc/$gender01/squad_affirm03.vcd"
+ scene "scenes/npc/$gender01/squad_affirm07.vcd"
+ scene "scenes/npc/$gender01/squad_affirm08.vcd"
+ scene "scenes/npc/$gender01/squad_affirm09.vcd"
+ // speak "npc_citizen.squad_affirm01"
+ // speak "npc_citizen.squad_affirm02"
+ // speak "npc_citizen.squad_affirm03"
+ // speak "npc_citizen.squad_affirm07"
+ // speak "npc_citizen.squad_affirm08"
+ // speak "npc_citizen.squad_affirm09"
+ scene "scenes/npc/$gender01/illstayhere01.vcd"
+ scene "scenes/npc/$gender01/holddownspot01.vcd"
+ scene "scenes/npc/$gender01/holddownspot02.vcd"
+ scene "scenes/npc/$gender01/imstickinghere01.vcd"
+ scene "scenes/npc/$gender01/littlecorner01.vcd"
+ scene "scenes/npc/$gender01/yougotit02.vcd"
+}
+
+response CitizenSquadFarToFarIndividual
+{
+ scene "scenes/npc/$gender01/squad_affirm01.vcd"
+ scene "scenes/npc/$gender01/squad_affirm02.vcd"
+ scene "scenes/npc/$gender01/squad_affirm03.vcd"
+ scene "scenes/npc/$gender01/squad_affirm04.vcd"
+ scene "scenes/npc/$gender01/squad_affirm07.vcd"
+ scene "scenes/npc/$gender01/squad_affirm08.vcd"
+ scene "scenes/npc/$gender01/squad_affirm09.vcd"
+ // speak "npc_citizen.squad_affirm01"
+ // speak "npc_citizen.squad_affirm02"
+ // speak "npc_citizen.squad_affirm03"
+ // speak "npc_citizen.squad_affirm04"
+ // speak "npc_citizen.squad_affirm07"
+ // speak "npc_citizen.squad_affirm08"
+ // speak "npc_citizen.squad_affirm09"
+ scene "scenes/npc/$gender01/yougotit02.vcd"
+}
+
+response CitizenSquadFarToFarGroup
+{
+ scene "scenes/npc/$gender01/squad_affirm01.vcd"
+ scene "scenes/npc/$gender01/squad_affirm02.vcd"
+ scene "scenes/npc/$gender01/squad_affirm03.vcd"
+ scene "scenes/npc/$gender01/squad_affirm07.vcd"
+ scene "scenes/npc/$gender01/squad_affirm08.vcd"
+ scene "scenes/npc/$gender01/squad_affirm09.vcd"
+ scene "scenes/npc/$gender01/squad_away01.vcd"
+ scene "scenes/npc/$gender01/squad_away02.vcd"
+ scene "scenes/npc/$gender01/squad_away03.vcd"
+ // speak "npc_citizen.squad_affirm01"
+ // speak "npc_citizen.squad_affirm02"
+ // speak "npc_citizen.squad_affirm03"
+ // speak "npc_citizen.squad_affirm07"
+ // speak "npc_citizen.squad_affirm08"
+ // speak "npc_citizen.squad_affirm09"
+ // speak "npc_citizen.squad_away01"
+ // speak "npc_citizen.squad_away02"
+ // speak "npc_citizen.squad_away03"
+ scene "scenes/npc/$gender01/letsgo01.vcd"
+ scene "scenes/npc/$gender01/letsgo02.vcd"
+ scene "scenes/npc/$gender01/yougotit02.vcd"
+}
+
+response CitizenSquadGeneral
+{
+ scene "scenes/npc/$gender01/squad_affirm01.vcd"
+ scene "scenes/npc/$gender01/squad_affirm02.vcd"
+ scene "scenes/npc/$gender01/squad_affirm03.vcd"
+ scene "scenes/npc/$gender01/squad_affirm05.vcd"
+ scene "scenes/npc/$gender01/squad_affirm06.vcd"
+ scene "scenes/npc/$gender01/squad_affirm07.vcd"
+ scene "scenes/npc/$gender01/squad_affirm08.vcd"
+ scene "scenes/npc/$gender01/squad_affirm09.vcd"
+ // speak "npc_citizen.squad_affirm01"
+ // speak "npc_citizen.squad_affirm02"
+ // speak "npc_citizen.squad_affirm03"
+ // speak "npc_citizen.squad_affirm05"
+ // speak "npc_citizen.squad_affirm06"
+ // speak "npc_citizen.squad_affirm07"
+ // speak "npc_citizen.squad_affirm08"
+ // speak "npc_citizen.squad_affirm09"
+ scene "scenes/npc/$gender01/yougotit02.vcd"
+}
+
+rule CitizenCommanded
+{
+ criteria IsCitizen ConceptTalkCommanded
+ response CitizenSquadGeneral
+}
+
+rule CitizenCommandedNearToFarIndividual
+{
+ criteria IsCitizen ConceptTalkCommanded IsOnlySelected SquadNearPlayer CommandPointNotNearPlayer
+ response CitizenSquadNearToFarIndividual
+}
+
+rule CitizenCommandedNearToFarGroup
+{
+ criteria IsCitizen ConceptTalkCommanded NotOnlySelected SquadNearPlayer CommandPointNotNearPlayer
+ response CitizenSquadNearToFarGroup
+}
+
+rule CitizenCommandedFarToNearIndividual
+{
+ criteria IsCitizen ConceptTalkCommanded IsOnlySelected SquadNotNearPlayer CommandPointNearPlayer
+ response CitizenSquadFarToNearIndividual
+}
+
+rule CitizenCommandedFarToNearGroup
+{
+ criteria IsCitizen ConceptTalkCommanded NotOnlySelected SquadNotNearPlayer CommandPointNearPlayer
+ response CitizenSquadFarToNearGroup
+}
+
+rule CitizenCommandedNearToNearIndividual
+{
+ criteria IsCitizen ConceptTalkCommanded SquadNearPlayer CommandPointNearPlayer
+ response CitizenSquadNearToNear
+}
+
+rule CitizenCommandedFarToFarIndividual
+{
+ criteria IsCitizen ConceptTalkCommanded IsOnlySelected SquadNotNearPlayer CommandPointNotNearPlayer
+ response CitizenSquadFarToFarIndividual
+}
+
+rule CitizenCommandedFarToFarGroup
+{
+ criteria IsCitizen ConceptTalkCommanded NotOnlySelected SquadNotNearPlayer CommandPointNotNearPlayer
+ response CitizenSquadFarToFarGroup
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenCommandedRadio"
+{
+
+}
+
+rule CitizenCommandedRadio
+{
+ criteria IsCitizen ConceptTalkCommanded UseRadio
+ response CitizenCommandedRadio
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenCommandFailedRadio"
+{
+
+}
+
+rule CitizenCommandFailedRadio
+{
+ criteria IsCitizen ConceptTalkCommandFailed UseRadio
+ response CitizenCommandFailedRadio
+}
+
+//============================================================================================================
+// Commander mode follow speech
+//============================================================================================================
+response CitizenFollowGeneral
+{
+ scene "scenes/npc/$gender01/leadtheway01.vcd"
+ scene "scenes/npc/$gender01/leadtheway02.vcd"
+ scene "scenes/npc/$gender01/leadon01.vcd"
+ scene "scenes/npc/$gender01/leadon02.vcd"
+}
+
+response CitizenFollowGroup
+{
+ scene "scenes/npc/$gender01/squad_follow01.vcd"
+ scene "scenes/npc/$gender01/squad_follow02.vcd"
+ scene "scenes/npc/$gender01/squad_follow03.vcd"
+ scene "scenes/npc/$gender01/squad_follow04.vcd"
+ response CitizenFollowGeneral weight 2
+}
+
+rule CitizenFollow
+{
+ criteria IsCitizen ConceptTalkStartFollow
+ response CitizenFollowGeneral
+}
+
+rule CitizenFollowGroup
+{
+ criteria IsCitizen ConceptTalkStartFollow NotOnlySelected
+ response CitizenFollowGroup
+}
+
+//============================================================================================================
+// Commander mode join speech
+//============================================================================================================
+
+
+// I'm not sure all these lines will play well when not coming up from behind, so I've made a distinction between trailing & non-trailing
+response CitizenJoinIndividual
+{
+ scene "scenes/npc/$gender01/squad_reinforce_single01.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_single02.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_single03.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_single04.vcd"
+}
+
+response CitizenJoinGroup
+{
+ scene "scenes/npc/$gender01/squad_reinforce_group01.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_group02.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_group03.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_group04.vcd"
+}
+
+response CitizenJoinIndividualTrailing
+{
+ scene "scenes/npc/$gender01/squad_reinforce_single01.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_single02.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_single03.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_single04.vcd"
+}
+
+response CitizenJoinGroupTrailing
+{
+ scene "scenes/npc/$gender01/squad_reinforce_group01.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_group02.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_group03.vcd"
+ scene "scenes/npc/$gender01/squad_reinforce_group04.vcd"
+}
+
+rule CitizenJoinIndividual
+{
+ criteria IsCitizen ConceptJoinPlayer JoinSquadIndividual
+ response CitizenJoinIndividual
+}
+
+rule CitizenJoinGroup
+{
+ criteria IsCitizen ConceptJoinPlayer JoinSquadMultiple
+ response CitizenJoinGroup
+}
+
+rule CitizenJoinIndividualTrailing
+{
+ criteria IsCitizen ConceptJoinPlayer JoinSquadIndividual TrailingReinforcement
+ response CitizenJoinIndividualTrailing
+}
+
+rule CitizenJoinGroupTrailing
+{
+ criteria IsCitizen ConceptJoinPlayer JoinSquadMultiple TrailingReinforcement
+ response CitizenJoinGroupTrailing
+}
+
+response CitizenJoin_d3_c17_07
+{
+ scene "scenes/Streetwar/tunnel/$gender01/d3_c17_07_tenant.vcd"
+}
+
+rule CitizenJoin_d3_c17_07
+{
+ criteria IsCitizen ConceptJoinPlayer
+ "map" "d3_c17_07" required weight 1000
+ response CitizenJoin_d3_c17_07
+ matchonce
+}
+
+
+//============================================================================================================
+// Commander mode follow speech SPECIAL CASE: first citizen in d3_17_03
+//============================================================================================================
+response "CitizenFollow_First"
+{
+ scene "scenes/npc/$gender01/abouttime01.vcd"
+
+}
+
+rule CitizenFollow_First
+{
+ criteria IsCitizen ConceptJoinPlayer JoinSquadIndividual Is_03_first
+ response CitizenFollow_First
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "CitizenUnFollow"
+{
+
+ scene "scenes/npc/$gender01/illstayhere01.vcd"
+ scene "scenes/npc/$gender01/holddownspot01.vcd"
+ scene "scenes/npc/$gender01/holddownspot02.vcd"
+ scene "scenes/npc/$gender01/imstickinghere01.vcd"
+ scene "scenes/npc/$gender01/littlecorner01.vcd"
+
+}
+
+rule CitizenUnFollow
+{
+ criteria IsCitizen ConceptTalkStopFollow
+ response CitizenUnFollow
+}
+
+
+//------------------------------------------------------------------------------------------------------------
+// For ep1_c17_05
+//------------------------------------------------------------------------------------------------------------
+response "CitizenDenyCommand"
+{
+
+ scene "scenes/npc/$gender01/illstayhere01.vcd"
+ scene "scenes/npc/$gender01/imstickinghere01.vcd"
+}
+
+rule CitizenDenyCommand
+{
+ criteria IsCitizen ConceptTalkDenyCommand
+ response CitizenDenyCommand
+}
+
diff --git a/sp/game/mod_episodic/scripts/talker/npc_vortigaunt.txt b/sp/game/mod_episodic/scripts/talker/npc_vortigaunt.txt new file mode 100644 index 00000000..1cb60eb0 --- /dev/null +++ b/sp/game/mod_episodic/scripts/talker/npc_vortigaunt.txt @@ -0,0 +1,878 @@ +//============================================================================================================
+// Vortigaunt criteria
+//============================================================================================================
+criterion "IsVortigaunt" "classname" "npc_vortigaunt" required
+criterion "VortigauntCure" concept" "VORT_CURE" required
+criterion "VortigauntCureStop" "concept" "VORT_CURESTOP" required
+criterion "VortigauntCureInterrupt" "concept" "VORT_CURE_INTERRUPT" required
+criterion "VortigauntAttack" "concept" "VORT_ATTACK" required
+criterion "VortigauntMad" "concept" "VORT_MAD" required
+criterion "VortigauntShot" "concept" "VORT_SHOT" required
+criterion "VortigauntPain" "concept" "VORT_PAIN" required
+criterion "VortigauntDie" "concept" "VORT_DIE" required
+criterion "VortigauntKill" "concept" "VORT_KILL" required
+criterion "VortigauntLineOfFire" "concept" "VORT_LINE_FIRE" required
+criterion "VortigauntPOk" "concept" "VORT_POK" required
+criterion "VortigauntExtractBugbait" "concept" "VORT_EXTRACT_START" required
+criterion "VortigauntExtractBugbaitFinish" "concept" "VORT_EXTRACT_FINISH" required
+criterion "VortNagKeepMovingOutland_11" "concept" "TLK_VortNag_KeepMoving" required
+criterion "NotUsedVortResponse01" "UsedVortResponse01" "!=1" "required" weight 0
+
+//============================================================================================================
+// Vortigaunt Level Plus Use
+//============================================================================================================
+response VortUseEverywhere
+{
+ scene "scenes/npc/vortigaunt/vort_affirmed.vcd"
+ scene "scenes/npc/vortigaunt/vort_vortigese05.vcd"
+ scene "scenes/npc/vortigaunt/vort_beofservice.vcd"
+ scene "scenes/npc/vortigaunt/vort_vort_chant21.vcd"
+ scene "scenes/npc/vortigaunt/vort_certainly.vcd"
+ scene "scenes/npc/vortigaunt/vort_vort_chant05.vcd"
+ scene "scenes/npc/vortigaunt/vort_forthefm.vcd"
+ scene "scenes/npc/vortigaunt/vort_freeman.vcd"
+ scene "scenes/npc/vortigaunt/vort_vort_mant04.vcd"
+ scene "scenes/npc/vortigaunt/vort_vort_livetoserve.vcd"
+}
+
+
+rule VortUseEverywhere
+{
+ criteria IsVortigaunt ConceptTalkUse NotUsedVortResponse NotInCombat
+ applycontext "UsedVortResponse:1:20"
+ response VortUseEverywhere
+}
+
+
+response "VortTalkUse01"
+{
+ scene "scenes/npc/vortigaunt/vort_leadus.vcd"
+ scene "scenes/npc/vortigaunt/vort_leadon.vcd"
+ sequential
+ norepeat
+}
+
+rule VortTalkUse01
+{
+
+ criteria IsVortigaunt ConceptTalkUse IsMap_ep2_outland_01 NotUsedVortResponse01 NotUsedVortResponse NotInCombat
+ applycontext "UsedVortResponse:1:20,UsedVortResponse01:1:30"
+ response VortTalkUse01
+}
+
+
+
+
+response "VortLabUsedisable11"
+{
+ scene "scenes\outland_11\vort_silo_maghonor02.vcd"
+ scene "scenes\outland_11\vort_silo_maghonor03.vcd"
+ scene "scenes\eli_lab\vort_elab_goaway.vcd"
+}
+
+rule IsVortLabUseDisable11
+{
+ criteria ConceptTalkUse IsVortLabUseDisable NPCIdle NotUsedVortResponse IsMap_ep2_outland_11
+ applycontext "UsedVortResponse:1:20"
+ response VortLabUsedisable11
+}
+
+
+
+
+
+//------------------------------------------------------------------------------------------------------------
+criterion "IsNotVortNoticedHurt" "VortNoticedHurt" "!=1" required
+
+response "VortNoticeHurt"
+{
+ NOREPEAT
+ scene "scenes/npc/vortigaunt/vort_combat_combined01.vcd"
+ scene "scenes/npc/vortigaunt/vort_combat_combined02.vcd"
+}
+
+rule VortNoticeHurt
+{
+ criteria IsVortigaunt ConceptTalkPlayerHurt NoRecentCombatShort IsMap_ep3_outland_03 IsNotVortNoticedHurt PlayerWounded
+ applycontext "VortNoticedHurt:1:300"
+ response VortNoticeHurt
+}
+
+
+//TLK_VORTIGAUNT_DISPEL
+
+
+response "VortAntlionCombatStart"
+{
+ scene "scenes/npc/vortigaunt/vort_alert_antlions.vcd" respeakdelay 30
+ scene "scenes/npc/vortigaunt/vort_worry.vcd" respeakdelay 30
+ scene "scenes/npc/vortigaunt/vort_alert.vcd" respeakdelay 0
+ }
+
+rule VortAntlionCombatStart
+{
+ criteria IsVortigaunt ConceptStartCombat EnemyIsAntLion
+ response VortAntlionCombatStart
+}
+
+response "VortAntlionCombatStart2"
+{
+ scene "scenes/npc/vortigaunt/vort_worry.vcd" respeakdelay 30
+ scene "scenes/npc/vortigaunt/vort_alert.vcd" respeakdelay 30
+ }
+
+rule VortAntlionCombatStart2
+{
+ criteria IsVortigaunt ConceptStartCombat
+ response VortAntlionCombatStart2
+}
+
+response "VortAntlionAttack"
+{
+ scene "scenes/npc/vortigaunt/vort_vortigese03.vcd" respeakdelay 15
+ scene "scenes/npc/vortigaunt/vort_vortigese05.vcd" respeakdelay 15
+ scene "scenes/npc/vortigaunt/vort_vortigese09.vcd" respeakdelay 15
+}
+
+rule VortAntlionAttack
+{
+ criteria IsVortigaunt ConceptTalkAttacking
+ applycontext "VortKill:1:10"
+ response VortAntlionAttack
+}
+
+
+response "VortigauntPain"
+{
+ scene "scenes/npc/vortigaunt/vort_vortigese04.vcd" respeakdelay 30
+ scene "scenes/npc/vortigaunt/vort_vortigese07.vcd" respeakdelay 30
+ scene "scenes/npc/vortigaunt/vort_vortigese08.vcd" respeakdelay 30
+}
+
+rule VortigauntPain
+{
+ criteria IsVortigaunt VortigauntPain
+ response VortigauntPain
+}
+
+
+criterion "contextvortkill" "VortKill" "1" required
+response "VortigauntRangedKill"
+{
+ scene "scenes/npc/vortigaunt/vort_returntoall.vcd" respeakdelay 15
+ scene "scenes/npc/vortigaunt/vort_yes.vcd" respeakdelay 15
+ scene "scenes/npc/vortigaunt/vort_tethercut.vcd" respeakdelay 15
+ scene "scenes/npc/vortigaunt/vort_passon.vcd" respeakdelay 15
+ scene "scenes/npc/vortigaunt/returnvoid.vcd" respeakdelay 15
+}
+
+rule VortigauntRangedKill
+{
+ criteria IsVortigaunt ConceptEnemyDead
+ applycontext "VortKill:1:15"
+ response VortigauntRangedKill
+}
+
+
+criterion "NotVortPostKill" "VortPostKill" "!=1" required
+response "VortCombatFun"
+{
+ NOREPEAT
+ scene "scenes/npc/vortigaunt/vort_prevail.vcd"
+ scene "scenes/npc/vortigaunt/vort_goodfightwithus.vcd"
+ scene "scenes/npc/vortigaunt/vort_killsformidable.vcd"
+ scene "scenes/npc/vortigaunt/vort_goodtogether.vcd"
+
+}
+rule VortCombatFun
+{
+ criteria IsVortigaunt IsMap_ep3_outland_03 ConceptPlayerKilledNPC contextvortkill NotVortPostKill
+ applycontext "VortPostKill:1:80"
+ response VortCombatFun
+}
+
+
+criterion "NotVortCompliment" "VortCompliment" "!=1" required
+response "VortCombatCompliment"
+{
+
+ scene "scenes/npc/vortigaunt/vort_excellent.vcd"
+ scene "scenes/npc/vortigaunt/vort_excellentshooting.vcd"
+ scene "scenes/npc/vortigaunt/vort_excellentshot.vcd"
+ scene "scenes/npc/vortigaunt/vort_exceptional.vcd"
+
+}
+rule VortCombatCompliment
+{
+ criteria IsVortigaunt ConceptPlayerKilledNPC ContextPlayer1Shot NotVortCompliment
+ applycontext "VortCompliment:1:60"
+ response VortCombatCompliment
+}
+
+
+
+
+//response "Vort03Test"
+//{
+// scene "scenes/outland_02/vort_pre_revive_nag01.vcd"
+// scene "scenes/outland_02/vort_pre_revive_nag02.vcd"
+// scene "scenes/outland_02/vort_pre_revive_nag03.vcd"
+// scene "scenes/outland_02/vort_pre_revive_nag04.vcd"
+// scene "scenes/outland_02/vort_pre_revive_nag05.vcd"
+//}
+//
+//rule Vort03Test
+//{
+// criteria IsVortigaunt IsMap_ep3_outland_03 ConceptTalkLook
+// response Vort03Test
+//}
+
+
+
+
+criterion "VortsNagPlayerAlyxHealOutland02" "OUTLAND_02_VORTS_NAG_PLAYER" "1" required
+
+
+
+response "NagPlayerHealAlyxVort"
+{
+ scene "scenes/outland_02/vort_pre_revive_nag01.vcd"
+ scene "scenes/outland_02/vort_pre_revive_nag02.vcd"
+ scene "scenes/outland_02/vort_pre_revive_nag03.vcd"
+ scene "scenes/outland_02/vort_pre_revive_nag04.vcd"
+ scene "scenes/outland_02/vort_pre_revive_nag05.vcd"
+}
+
+rule NagPlayerHealAlyxVort
+{
+ criteria IsVortigaunt ConceptVortsNagPlayerAlyxHealOutland02
+ response NagPlayerHealAlyxVort
+}
+
+
+criterion "VortAskingForHelp" "SaidProtectUs" "!=1" "required" weight 0
+response "VortUnderAttackVort"
+{
+ scene "scenes/outland_02/vort_turret_weneedhelpcometous.vcd"
+ scene "scenes/outland_02/vort_turret_weareunderattackdefendus.vcd"
+ scene "scenes/outland_02/vort_turret_defendus.vcd"
+ scene "scenes/outland_02/vort_turret_protectalyx.vcd"
+ scene "scenes/outland_02/vort_turret_protectus.vcd"
+
+}
+
+
+rule VortUnderAttackVort
+{
+ criteria IsVortigaunt VortigauntPain IsVortHealingAlyx VortAskingForHelp
+ applycontext "SaidProtectUs:1:2,VortNeedsHelp:1:10"
+ response VortUnderAttackVort
+}
+
+
+
+
+response "NagPlayerKeepMovingOutland_11Vort"
+{
+ scene "scenes/outland_11/vort_fmadvance.vcd"
+ scene "scenes/outland_11/vort_hastefm.vcd"
+ scene "scenes/outland_11/vort_fmmustmove.vcd"
+
+}
+
+
+rule NagPlayerKeepMovingOutland_11Vort
+{
+ criteria IsVortigaunt PlayerNear VortNagKeepMovingOutland_11
+ response NagPlayerKeepMovingOutland_11Vort
+}
+
+
+
+//============================================================================================================
+// Vortigaunt Hello speech
+//============================================================================================================
+response "VortigauntHello"
+{
+// scene "scenes/npc/vortigaunt/wellmet.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/isitthefm.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/itisthefm.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/thefreeman.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/beofservice.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/greetingsfm.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/neuroprints.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/salute.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/trulyitis.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/takeus.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/webeofuse.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/corporeal.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/seebeforeoureye.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/morethanmeets.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/weknowyou.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/putaside.vcd" delay "3,3.5" speakonce
+// scene "scenes/npc/vortigaunt/mystery.vcd" delay "3,3.5" speakonce
+}
+rule VortigauntTlkHello
+{
+ criteria IsVortigaunt ConceptTalkHello PlayerNear SeePlayer
+ response VortigauntHello
+}
+
+//------------------------------------------------------------------------------------------------------------
+rule VortigauntPlayerHello
+{
+ criteria IsVortigaunt ConceptTalkPHello
+ response NullResponse
+}
+
+//============================================================================================================
+// Vortigaunt Questions & Responses speech
+//============================================================================================================
+response "VortigauntQuestion"
+{
+// scene "scenes/npc/vortigaunt/vques01.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques02.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques03.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques04.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques05.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques06.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques07.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques08.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques09.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vques10.vcd" delay 1
+//
+}
+rule VortigauntTlkQuestion
+{
+ criteria IsVortigaunt ConceptTalkQuestion
+ response VortigauntQuestion
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntAnswer"
+{
+// scene "scenes/npc/vortigaunt/vanswer01.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer02.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer03.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer04.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer05.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer06.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer07.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer08.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer09.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer10.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer11.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer12.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer13.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer14.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer15.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer16.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer17.vcd" delay 1
+// scene "scenes/npc/vortigaunt/vanswer18.vcd" delay 1
+}
+
+rule VortigauntTlkAnswer
+{
+ criteria IsVortigaunt ConceptTalkAnswer
+ response VortigauntAnswer
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntTalkUse"
+{
+ sequential
+ norepeat
+}
+
+rule VortigauntTalkUse
+{
+ criteria IsVortigaunt ConceptTalkUse
+ response VortigauntTalkUse
+}
+
+//============================================================================================================
+// Vortigaunt Combat speech
+//============================================================================================================
+response "VortigauntCure"
+{
+ scene "scenes/npc/vortigaunt/allowrecharge.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/wewillcharge.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/fmcanuse.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/here.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/acceptenergy.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/holdstill.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/acceptcharge.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/weshare.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/prepare.vcd" defaultdelay
+}
+
+
+rule VortigauntCure
+{
+ criteria IsVortigaunt VortigauntCure
+ response VortigauntCure
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntCureStop"
+{
+ scene "scenes/npc/vortigaunt/allwecanspare.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/allfornow.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/thatisall.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/done.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/keepfmsafe.vcd" defaultdelay
+}
+
+rule VortigauntCureStop
+{
+ criteria IsVortigaunt VortigauntCureStop
+ response VortigauntCureStop
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntCureInterrupt"
+{
+ scene "scenes/npc/vortigaunt/holdorcantcharge.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/hold.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/halt.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/fmstandstill.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/ifyoumove.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/movingtarget.vcd" defaultdelay
+}
+
+rule VortigauntCureInterrupt
+{
+ criteria IsVortigaunt VortigauntCureInterrupt
+ response VortigauntCureInterrupt
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntAttack"
+{
+ scene "scenes/npc/vortigaunt/tothevoid.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/allinoneinall.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/giveover.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/weclaimyou.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/undeserving.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/satisfaction.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/regrettable.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/allowme.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/livetoserve.vcd" defaultdelay
+ scene "scenes/npc/vortigaunt/returnvoid.vcd" defaultdelay
+}
+
+
+rule VortigauntAttack
+{
+ criteria IsVortigaunt VortigauntAttack
+ response VortigauntAttack
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntMad"
+{
+// sentence "VORT_MAD" soundlevel "SNDLVL_NORM" delay "4"
+}
+rule VortigauntMad
+{
+ criteria IsVortigaunt VortigauntMad
+ response VortigauntMad
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntShot"
+
+{
+// sentence "VORT_SHOT" soundlevel "SNDLVL_NORM" delay "4"
+}
+rule VortigauntShot
+{
+ criteria IsVortigaunt VortigauntShot
+ response VortigauntShot
+}
+
+//------------------------------------------------------------------------------------------------------------
+//response "VortigauntPain"
+
+//{
+// sentence "VORT_PAIN" defaultdelay
+//}
+
+//rule VortigauntPain
+//{
+// criteria IsVortigaunt VortigauntPain
+// response VortigauntPain
+//}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntDie"
+
+{
+// sentence "VORT_DIE" defaultdelay
+
+}
+
+rule VortigauntDie
+{
+ criteria IsVortigaunt VortigauntDie
+ response VortigauntDie
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntKill"
+{
+ scene "scenes/npc/vortigaunt/forthefm.vcd" delay 4
+ scene "scenes/npc/vortigaunt/forfreedom.vcd" delay 4
+ scene "scenes/npc/vortigaunt/tethercut.vcd" delay 4
+ scene "scenes/npc/vortigaunt/troubleus.vcd" delay 4
+ scene "scenes/npc/vortigaunt/dreamed.vcd" delay 4
+ scene "scenes/npc/vortigaunt/energyempower.vcd" delay 4
+ scene "scenes/npc/vortigaunt/empowerus.vcd" delay 4
+ scene "scenes/npc/vortigaunt/surge.vcd" delay 4
+ scene "scenes/npc/vortigaunt/yes.vcd" delay 4
+ scene "scenes/npc/vortigaunt/passon.vcd" delay 4
+ scene "scenes/npc/vortigaunt/nodenexus.vcd" delay 4
+ scene "scenes/npc/vortigaunt/returntoall.vcd" delay 4
+
+}
+
+
+rule VortigauntKill
+{
+ criteria IsVortigaunt VortigauntKill
+ response VortigauntKill
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntLineOfFire"
+{
+ scene "scenes/npc/vortigaunt/cautionfm.vcd" delay 4
+ scene "scenes/npc/vortigaunt/caution.vcd" delay 4
+ scene "scenes/npc/vortigaunt/fmbeware.vcd" delay 4
+ scene "scenes/npc/vortigaunt/ware.vcd" delay 4
+ scene "scenes/npc/vortigaunt/fmmustbeware.vcd" delay 4
+ scene "scenes/npc/vortigaunt/warefm.vcd" delay 4
+ scene "scenes/npc/vortigaunt/fminway.vcd" delay 4
+ scene "scenes/npc/vortigaunt/standclear.vcd" delay 4
+ scene "scenes/npc/vortigaunt/fmmustmove.vcd" delay 4
+ scene "scenes/npc/vortigaunt/warningfm.vcd" delay 4
+ scene "scenes/npc/vortigaunt/cannotfire.vcd" delay 4
+
+}
+
+rule VortigauntLineOfFire
+{
+ criteria IsVortigaunt VortigauntLineOfFire
+ response VortigauntLineOfFire
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntPOk"
+
+{
+// sentence "VORT_POK" soundlevel "SNDLVL_NORM" delay "2"
+}
+
+rule VortigauntPOk
+{
+ criteria IsVortigaunt VortigauntPOk
+ response VortigauntLineOfFire
+}
+
+
+//============================================================================================================
+// Vortigaunt Misc speech
+//============================================================================================================
+response "VortigauntIdle"
+
+{
+// scene "scenes/npc/vortigaunt/poet.vcd"
+// scene "scenes/npc/vortigaunt/hopeless.vcd"
+// scene "scenes/npc/vortigaunt/alldear.vcd"
+// scene "scenes/npc/vortigaunt/prevail.vcd"
+// scene "scenes/npc/vortigaunt/seenworse.vcd"
+// scene "scenes/npc/vortigaunt/persevere.vcd"
+// scene "scenes/npc/vortigaunt/worthless.vcd"
+// scene "scenes/npc/vortigaunt/whereto.vcd"
+}
+
+rule VortigauntTlkIdle
+{
+ criteria IsVortigaunt ConceptTalkIdle
+ response VortigauntIdle
+}
+
+//------------------------------------------------------------------------------------------------------------
+rule VortigauntPlayerIdle
+{
+ criteria IsVortigaunt ConceptTalkPIdle
+ response NullResponse
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntStare"
+
+{
+// scene "scenes/npc/vortigaunt/optical.vcd"
+// scene "scenes/npc/vortigaunt/unclear.vcd"
+// scene "scenes/npc/vortigaunt/opaque.vcd"
+// scene "scenes/npc/vortigaunt/rememberus.vcd"
+// scene "scenes/npc/vortigaunt/stillhere.vcd"
+// scene "scenes/npc/vortigaunt/calm.vcd"
+
+}
+
+
+rule VortigauntTlkStare
+{
+ criteria IsVortigaunt ConceptTalkStare
+ response VortigauntStare
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntOk"
+{
+ scene "scenes/npc/vortigaunt/itishonor.vcd"
+ scene "scenes/npc/vortigaunt/wehonored.vcd"
+ scene "scenes/npc/vortigaunt/ourhonor.vcd"
+ scene "scenes/npc/vortigaunt/honorfollow.vcd"
+ scene "scenes/npc/vortigaunt/accompany.vcd"
+ scene "scenes/npc/vortigaunt/gladly.vcd"
+ scene "scenes/npc/vortigaunt/pleasure.vcd"
+ scene "scenes/npc/vortigaunt/wefollowfm.vcd"
+ scene "scenes/npc/vortigaunt/honorours.vcd"
+ scene "scenes/npc/vortigaunt/gloriousend.vcd"
+ scene "scenes/npc/vortigaunt/bodyyours.vcd"
+ scene "scenes/npc/vortigaunt/allwehave.vcd"
+ scene "scenes/npc/vortigaunt/weareyours.vcd"
+ scene "scenes/npc/vortigaunt/dedicate.vcd"
+ scene "scenes/npc/vortigaunt/mutual.vcd"
+ scene "scenes/npc/vortigaunt/leadus.vcd"
+ scene "scenes/npc/vortigaunt/onward.vcd"
+ scene "scenes/npc/vortigaunt/forward.vcd"
+ scene "scenes/npc/vortigaunt/propitious.vcd"
+ scene "scenes/npc/vortigaunt/leadon.vcd"
+ scene "scenes/npc/vortigaunt/fmhonorsus.vcd"
+ scene "scenes/npc/vortigaunt/fmdoesushonor.vcd"
+ scene "scenes/npc/vortigaunt/yesforward.vcd"
+ scene "scenes/npc/vortigaunt/wewillhelp.vcd"
+ scene "scenes/npc/vortigaunt/assent.vcd"
+}
+
+
+rule VortigauntTlkStartFollow
+{
+ criteria IsVortigaunt ConceptTalkStartFollow
+ response VortigauntOk
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntWait"
+{
+ scene "scenes/npc/vortigaunt/canconvince.vcd"
+ scene "scenes/npc/vortigaunt/fmknowsbest.vcd"
+ scene "scenes/npc/vortigaunt/willremain.vcd"
+ scene "scenes/npc/vortigaunt/fearfailed.vcd"
+ scene "scenes/npc/vortigaunt/servebetterhere.vcd"
+ scene "scenes/npc/vortigaunt/certainly.vcd"
+ scene "scenes/npc/vortigaunt/herewestay.vcd"
+ scene "scenes/npc/vortigaunt/asyouwish.vcd"
+ scene "scenes/npc/vortigaunt/ourplacehere.vcd"
+ scene "scenes/npc/vortigaunt/affirmed.vcd"
+
+}
+
+
+rule VortigauntTlkStopFollow
+{
+ criteria IsVortigaunt ConceptTalkStopFollow
+ response VortigauntWait
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntStop"
+
+{
+// sentence "VORT_STOP" delay "2,2.5" soundlevel "SNDLVL_NORM"
+}
+
+rule VortigauntTlkStop
+{
+ criteria IsVortigaunt ConceptTalkStop
+ response VortigauntStop
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntScared"
+
+{
+// sentence "VORT_SCARED" delay "0,0.4"
+}
+
+rule VortigauntTlkNoShoot
+{
+ criteria IsVortigaunt ConceptTalkNoShoot
+ response VortigauntScared
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntCureA"
+
+{
+// sentence "VORT_CUREA" defaultdelay speakonce
+}
+
+rule VortigauntPlayerHurt1
+{
+ criteria IsVortigaunt ConceptTalkPlayerHurt1
+ response VortigauntCureA
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntCureB"
+
+{
+// sentence "VORT_CUREB" defaultdelay speakonce
+}
+
+rule VortigauntPlayerHurt2
+{
+ criteria IsVortigaunt ConceptTalkPlayerHurt2
+ response VortigauntCureB
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntCureC"
+
+{
+// sentence "VORT_CUREC" defaultdelay speakonce
+}
+
+rule VortigauntPlayerHurt3
+{
+ criteria IsVortigaunt ConceptTalkPlayerHurt3
+ response VortigauntCureC
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntPQuest"
+
+{
+// sentence "VORT_PQUEST" defaultdelay
+}
+
+rule VortigauntPlayerQuestion
+{
+ criteria IsVortigaunt ConceptTalkPQuestion
+ response VortigauntPQuest
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntSmell"
+
+{
+// sentence "VORT_SMELL" defaultdelay respeakdelay "60"
+}
+
+rule VortigauntTlkSmell
+{
+ criteria IsVortigaunt ConceptTalkSmell
+ response VortigauntSmell
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntWound"
+
+{
+// sentence "VORT_WOUND" speakonce defaultdelay
+}
+
+rule VortigauntTlkWound
+{
+ criteria IsVortigaunt ConceptTalkWound
+ response VortigauntWound
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntMortal"
+
+{
+// sentence "VORT_MORTAL" speakonce defaultdelay
+}
+
+
+rule VortigauntTlkMortal
+{
+ criteria IsVortigaunt ConceptTalkMortal
+ response VortigauntMortal
+}
+
+//============================================================================================================
+// Vortigaunt Leader speech (a vortigaunt that's leading the player somewhere)
+//============================================================================================================
+
+response "VortigauntLeadStart"
+{
+ scene "scenes/npc/vortigaunt/fmmustfollow.vcd"
+}
+
+rule VortigauntLeadStart
+{
+ criteria IsVortigaunt ConceptLeadStart
+ response VortigauntLeadStart
+}
+
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntLeadCatchup"
+{
+ scene "scenes/npc/vortigaunt/yesforward.vcd"
+ scene "scenes/npc/vortigaunt/followfm.vcd"
+}
+
+rule VortigauntLeadCatchup
+{
+ criteria IsVortigaunt ConceptLeadCatchup
+ response VortigauntLeadCatchup
+}
+
+
+
+//============================================================================================================
+// Vortigaunt coast specific speech
+//============================================================================================================
+response "VortigauntExtractBugbait"
+{
+ scene "scenes/coast/bugbait/vort_extract01.vcd" defaultdelay
+}
+
+rule VortigauntTlkExtractBugbait
+{
+ criteria IsVortigaunt VortigauntExtractBugbait
+ response VortigauntExtractBugbait
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntExtractBugbaitFinish"
+{
+ scene "scenes/coast/bugbait/vort_podsforyou01.vcd" defaultdelay
+}
+
+rule VortigauntTlkExtractBugbaitFinish
+{
+ criteria IsVortigaunt VortigauntExtractBugbaitFinish
+ response VortigauntExtractBugbaitFinish
+}
+
+//------------------------------------------------------------------------------------------------------------
+response "VortigauntGetBugbait"
+{
+ scene "scenes/coast/bugbait/vort_podnag.vcd" defaultdelay
+}
+
+rule VortigauntTlkLeadGetBugbait
+{
+ criteria IsVortigaunt ConceptLeadMissingWeapon
+ response VortigauntGetBugbait
+}
+
diff --git a/sp/game/mod_episodic/scripts/talker/response_rules.txt b/sp/game/mod_episodic/scripts/talker/response_rules.txt new file mode 100644 index 00000000..c706d111 --- /dev/null +++ b/sp/game/mod_episodic/scripts/talker/response_rules.txt @@ -0,0 +1,158 @@ +
+
+// This is the base rule script file for the AI response system for Expressive AI's who speak based on certain "Concepts"
+// You can think of a concept as a high level state that the code is trying to convey, such as say hello, or say you're mad, etc.
+//
+// The format of this file is that there are five main types of commands:
+// 1) #include "filename" // This just causes the included scriptfile to be parsed and added to the database
+// 2) enumeration: this declares an enumerated type so that comparisons can be matched against the string versions of the type
+// 3) response: this specifies a response to issue. A response consists of a weighted set of options and can recursively reference
+// other responses by name
+// 4) criterion: This is a match condition
+// 5) rule: a rule consists of one or more criteria and a response
+//
+// In general, the system is presented with a criteria set, which is a set of key value pairs generated by the game code and
+// various entity I/O and keyfields. For instance, the following criteria set was created in a map with a train terminal
+// "speaker" entity wishing to fire random station announcements
+// concept = 'train_speaker' (weight 5.000000) ; the high level concept for the search request
+// map = 'terminal_pa' ; the name of the map
+// classname = 'speaker' ; the classname and name of the "speaking" entity
+// name = 'terminal_pa'
+// health = '10' ; the absolute health of the speaking entity
+// healthfrac = '0.000' ; the health fraction (health/maxhealth) of the speaking entity
+// playerhealth = '100' ; similar data related to the current player:
+// playerhealthfrac = '1.000'
+// playerweapon = 'none' ; the name of the weapon the player is carrying
+// playeractivity = 'ACT_WALK' ; animating activity of the player
+// playerspeed = '0.000' ; how fast the player is moving
+//
+// Based on such a criteria set, the system checks each rule against the set. To do this, each criterion of the rule is
+// given a numeric score as follows:
+// score = 0 if criteria doesn't match or, criterion weight * keyvaliue weight if it does match
+// The final score for a rule is the sum of all of the scores of its criteria. The best rule is the one with the highest
+// score. Once a best rule is selected, then a response is looked up based on the response definitions and the engine is
+// asked to dispatch that response.
+//
+// The specific syntax for the various keywords is as follows:
+//
+// ENUMERATIONS:
+//
+// enumeration <enumerationname>
+// {
+// "key1" "value1"
+// "key2" "value2"
+// ...etc.
+// }
+// The code and criteria refer to enumerations with square brackets and a double colon separator, e.g.:
+// [enumerationname::key1]
+//
+//
+// RESPONSES:
+//
+// Single line:
+// response <responsegroupname> [nodelay | defaultdelay | delay interval ] [speakonce] [noscene] [odds nnn] [respeakdelay interval] [soundlevel "SNDLVL_xxx"] [stop_on_nonidle] responsetype parameters
+// Multiple lines
+// response <responsegroupname>
+// {
+// [permitrepeats] ; optional parameter, by default we visit all responses in group before repeating any
+// [sequential] ; optional parameter, by default we randomly choose responses, but with this we walk through the list starting at the first and going to the last
+// [norepeat] ; Once we've run through all of the entries, disable the response group
+// responsetype1 parameters1 [nodelay | defaultdelay | delay interval ] [speakonce] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] [displayfirst] [ displaylast ] [ stop_on_nonidle ] weight nnn
+// responsetype2 parameters2 [nodelay | defaultdelay | delay interval ] [speakonce] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] [displayfirst] [ displaylast ] [ stop_on_nonidle ] weight nnn
+// etc.
+// }
+// Where:
+// interval = "startnumber,endnumber" or "number" (e.g., "2.8,3.2" or "3.2")
+// responsetype =:
+// speak ; it's an entry in sounds.txt
+// sentence ; it's a sentence name from sentences.txt
+// scene ; it's a .vcd file
+// response ; it's a reference to another response group by name
+// print ; print the text in developer 2 (for placeholder responses)
+// nodelay = an additional delay of 0 after speaking
+// defaultdelay = an additional delay of 2.8 to 3.2 seconds after speaking
+// delay interval = an additional delay based on a random sample from the interval after speaking
+// speakonce = don't use this response more than one time (default off)
+// noscene = For an NPC, play the sound immediately using EmitSound, don't play it through the scene system. Good for playing sounds on dying or dead NPCs.
+// odds = if this response is selected, if odds < 100, then there is a chance that nothing will be said (default 100)
+// respeakdelay = don't use this response again for at least this long (default 0)
+// soundlevel = use this soundlevel for the speak/sentence (default SNDLVL_TALKING)
+// weight = if there are multiple responses, this is a selection weighting so that certain responses are favored over others in the group (default 1)
+// displayfirst/displaylast : this should be the first/last item selected (ignores weight)
+// stop_on_nonidle = If this response starts a .vcd, and during that scene the NPC changes out of idle state (e.g. sees an enemy), stop the .vcd
+//
+// CRITERIA:
+//
+// criterion <criterionname> <matchkey> <matchvalue> weight nnn required
+// Where:
+// matchkey matches one of the criteria in the set as shown above
+// matchvalue is a string or number value or a range, the following are all valid:
+// "0" ; numeric match to value 0
+// "1" ; numeric match to value 1
+// "weapon_smg1" ; string match to weapon_smg1 string
+// "[npcstate::idle]" ; match enumeration by looking up numeric value
+// ">0" ; match if greater than zero
+// ">10,<=50" ; match if greater than ten and less than or equal to 50
+// ">0,<[npcstate::alert]" ; match if greater than zer and les then value of enumeration for alert
+// "!=0" ; match if not equal to zero
+// weight = floating point weighting for score assuming criteria match (default value 1.0)
+// required: if a rule has one or more criteria with the required flag set, then if any such criteria
+// fail, the entire rule receives a score of zero
+//
+// RULE:
+//
+// rule <rulename>
+// {
+// criteria name1 [name2 name3 etc.]
+// response responsegroupname [responsegroupname2 etc.]
+// [matchonce] ; optional parameter
+// [ <matchkey > <matchvalue> weight nnn required ]
+// }
+// Where:
+// criteria just lies one more more criterion names from above and response list one or more of the response
+// names from above (usually just one)
+// matchonce (off by default): means that the rule is deactivated after the first time it is matched
+// Note that additional "unnamed" criteria can be specified inline in the rule using the same syntax
+// as for defining a criterion, except for the criterion keyword and the criterion name keys
+//
+// Interaction with entity I/O system
+// CBaseEntity contains an inputfunc called "DispatchResponse" which accepts a string which is a concept name
+// Thus, a game entity can fire this input on another entity with a concept string and a criteria set will
+// be generated and searched against the entities current response system rule set.
+// Right now only the speaker entity and NPC_Talker derived NPCs have any response rules loaded
+// In addition, map placed entities have up to three "context" keypairs that can be specified.
+// They take the form: "key:value" (key, single colon separator, value)
+// When an entity with any such context keypairs is asked to dispatch a response, the keypairs are added to the
+// criteria set passed to the rule system. Thus, map placed entities and triggers can specify their
+// own context keypairs and these can be hooked up to response rules to do map-specific and appropriate
+// responses
+// In addition, entity I/O can be used to add, remove and clear any such context keypairs via the
+// AddContext, RemoveContext, and ClearContext input functions.
+// AddContext takes a keypair of the "key:value" format, while RemoveContext take just the "key"
+// ClearContext removes all context keypairs
+// The game .dll code can enumerate context keypairs and change them via code based methods
+//
+// The player and the world have their context added with the string player or world as a prefix, e.g.:
+// "playerkey:value" or "worldkey:value" to differentiate world/player context from the context of the
+// responding entity.
+
+// Base script
+#include "talker/response_criteria.txt"
+
+// Test rules
+#include "talker/interjections.txt"
+
+#include "talker/npc_combine.txt"
+#include "talker/response_k_lab.txt"
+#include "talker/response_eli_lab.txt"
+#include "talker/npc_vortigaunt.txt"
+#include "talker/npc_citizen.txt"
+#include "talker/npc_citizen_scenes.txt"
+//#include "talker/npc_grigori.txt"
+//#include "talker/npc_barney.txt"
+#include "talker/npc_alyx.txt"
+#include "talker/npc_alyx_episodic.txt"
+#include "talker/npc_alyx_episodic_scenes.txt"
+//#include "talker/npc_barney_episodic.txt"
+#include "talker/nags_Alyx.txt"
+#include "talker/npc_alyx_vehicle.txt"
|