First version of the SOurce SDK 2013

This commit is contained in:
Joe Ludwig
2013-06-26 15:22:04 -07:00
commit 39ed87570b
7469 changed files with 3312656 additions and 0 deletions

View File

@@ -0,0 +1,120 @@
//============================================================================================================
// Alyx criteria
criterion "IsAlyx" "classname" "npc_alyx" "required"
//============================================================================================================
//============================================================================================================
// Alyx Combat speech
//============================================================================================================
//----------------------------------------------------------------------------
response "AlyxDanger"
{
scene "scenes/npc/Alyx/getback01.vcd"
scene "scenes/npc/Alyx/getback02.vcd"
scene "scenes/npc/Alyx/getdown01.vcd"
scene "scenes/npc/Alyx/watchout01.vcd"
scene "scenes/npc/Alyx/watchout02.vcd"
}
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
}
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
}
//----------------------------------------------------------------------------
//============================================================================================================

View File

@@ -0,0 +1,915 @@
//============================================================================================================
// Citizen criteria
//============================================================================================================
criterion "IsCitizen" "classname" "npc_citizen" "required"
criterion "IsRPGUser" "attacking_with_weapon" "weapon_rpg" required
criterion "EnemyIsSniper" "enemy" "npc_sniper" required
criterion "EnemyIsStrider" "enemy" "npc_strider" required
criterion "HurtByFire" "hurt_by_fire" "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 IsGordonCriminal NPCIdle PlayerNear SeePlayer
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
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
//============================================================================================================
response "CitizenQuestion"
{
scene "scenes/npc/$gender01/question01.vcd" delay 1
scene "scenes/npc/$gender01/question02.vcd" delay 1
scene "scenes/npc/$gender01/question03.vcd" delay 1
scene "scenes/npc/$gender01/question04.vcd" delay 1
scene "scenes/npc/$gender01/question05.vcd" delay 1
scene "scenes/npc/$gender01/question06.vcd" delay 1
scene "scenes/npc/$gender01/question07.vcd" delay 1
scene "scenes/npc/$gender01/question08.vcd" delay 1
scene "scenes/npc/$gender01/question09.vcd" delay 1
scene "scenes/npc/$gender01/question10.vcd" delay 1
scene "scenes/npc/$gender01/question11.vcd" delay 1
scene "scenes/npc/$gender01/question12.vcd" delay 1
scene "scenes/npc/$gender01/question13.vcd" delay 1
scene "scenes/npc/$gender01/question14.vcd" delay 1
scene "scenes/npc/$gender01/question15.vcd" delay 1
scene "scenes/npc/$gender01/question16.vcd" delay 1
scene "scenes/npc/$gender01/question17.vcd" delay 1
scene "scenes/npc/$gender01/question18.vcd" delay 1
scene "scenes/npc/$gender01/question19.vcd" delay 1
scene "scenes/npc/$gender01/question20.vcd" delay 1
scene "scenes/npc/$gender01/question21.vcd" delay 1
scene "scenes/npc/$gender01/question22.vcd" delay 1
scene "scenes/npc/$gender01/question23.vcd" delay 1
scene "scenes/npc/$gender01/question25.vcd" delay 1
scene "scenes/npc/$gender01/question26.vcd" delay 1
scene "scenes/npc/$gender01/question27.vcd" delay 1
scene "scenes/npc/$gender01/question28.vcd" delay 1
scene "scenes/npc/$gender01/question29.vcd" delay 1
scene "scenes/npc/$gender01/question30.vcd" delay 1
scene "scenes/npc/$gender01/question31.vcd" delay 1
}
rule CitizenQuestion
{
criteria IsCitizen ConceptTalkQuestion IsGordonCriminal PlayerAlive
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 IsGordonCriminal PlayerAlive
response CitizenAnswer
}
//============================================================================================================
// Citizen Questions & Responses with Vortigaunts in Scene
//============================================================================================================
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 ConceptTalkQuestionVort IsGordonCriminal NPCIdle PlayerAlive
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 ConceptTalkAnswerVort IsGordonCriminal NPCIdle PlayerAlive
response CitizenAnswerVort
}
//============================================================================================================
// 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 "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
//============================================================================================================
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/npc/$gender01/gotone01.vcd"
scene "scenes/npc/$gender01/gotone02.vcd"
// scene "scenes/npc/$gender01/likethemapples.vcd"
scene "scenes/npc/$gender01/likethat.vcd"
}
rule CitizenEnemyDead
{
criteria IsCitizen ConceptEnemyDead
response CitizenEnemyDead
rescenedelay 3
}
//------------------------------------------------------------------------------------------------------------
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/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 "CitizenLeadAttractPlayer"
{
scene "scenes/npc/$gender01/overhere01.vcd"
}
rule CitizenLeadAttractPlayer
{
criteria IsCitizen ConceptLeadAttractPlayer
response CitizenLeadAttractPlayer
}
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"

View File

@@ -0,0 +1,467 @@
//============================================================================================================
// 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
}

View File

@@ -0,0 +1,635 @@
//============================================================================================================
// 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
//============================================================================================================
// 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
// scene "scenes/npc/vortigaunt/vmono_01.vcd" defaultdelay
// scene "scenes/npc/vortigaunt/vmono_02.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_03.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_04.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_05.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_06.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_07.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_08.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_09.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_10.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_11.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_12.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_13.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_14.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_15.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_16.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_17.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_18.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_19.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_20.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_21.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_22.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_23.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_24.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_25.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_26.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_27.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_28.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_29.vcd" defaultdelay
scene "scenes/npc/vortigaunt/vmono_30.vcd" defaultdelay
}
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
}

View File

@@ -0,0 +1,262 @@
// 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] [soundelvel "SNDLVL_xxx"] 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 ] weight nnn
// responsetype2 parameters2 [nodelay | defaultdelay | delay interval ] [speakonce] [odds nnn] [respeakdelay interval] [soundelvel "SNDLVL_xxx"] [displayfirst] [ displaylast ] 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)
//
// 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
enumeration "NPCState"
{
"None" "0"
"Idle" "1"
"Alert" "2"
"Combat" "3"
"Scripted" "4"
"PlayDead" "5"
"Dead" "6"
}
response "NullResponse"
// Question / Answer concepts
criterion "ConceptTalkAnswer" "Concept" "TLK_ANSWER" required weight 1
criterion "ConceptTalkQuestion" "Concept" "TLK_QUESTION" required // weight 1 implied
criterion "ConceptTalkAnswerCitizen" "Concept" "TLK_ANSWER_CIT" required weight 1
criterion "ConceptTalkQuestionCitizen" "Concept" "TLK_QUESTION_CIT" required
criterion "ConceptTalkAnswerVort" "Concept" "TLK_ANSWER_VORT" required weight 1
criterion "ConceptTalkQuestionVort" "Concept" "TLK_QUESTION_VORT" required
// General concepts
criterion "ConceptTalkIdle" "Concept" "TLK_IDLE" required
criterion "ConceptTalkStare" "Concept" "TLK_STARE" required
criterion "ConceptTalkUse" "Concept" "TLK_USE" required
criterion "ConceptTalkStartFollow" "Concept" "TLK_STARTFOLLOW" required
criterion "ConceptTalkStopFollow" "Concept" "TLK_STOPFOLLOW" required
criterion "ConceptTalkStop" "Concept" "TLK_STOP" required
criterion "ConceptTalkNoShoot" "Concept" "TLK_NOSHOOT" required
criterion "ConceptTalkHello" "Concept" "TLK_HELLO" required
criterion "ConceptTalkPHello" "Concept" "TLK_PHELLO" required
criterion "ConceptTalkPIdle" "Concept" "TLK_PIDLE" required
criterion "ConceptTalkPQuestion" "Concept" "TLK_PQUESTION" required
criterion "ConceptTalkPlayerHurt1" "Concept" "TLK_PLHURT1" required
criterion "ConceptTalkPlayerHurt2" "Concept" "TLK_PLHURT2" required
criterion "ConceptTalkPlayerHurt3" "Concept" "TLK_PLHURT3" required
criterion "ConceptTalkPlayerPushed" "Concept" "TLK_PLPUSH" required
criterion "ConceptTalkSmell" "Concept" "TLK_SMELL" required
criterion "ConceptTalkWound" "Concept" "TLK_WOUND" required
criterion "ConceptTalkMortal" "Concept" "TLK_MORTAL" required
criterion "ConceptTalkDanger" "Concept" "TLK_DANGER" required
criterion "ConceptTalkResume" "Concept" "TLK_RESUME" required
criterion "ConceptTalkHeal" "Concept" "TLK_HEAL" required
criterion "ConceptTalkTourGuideStayPut" "Concept" "TLK_TGSTAYPUT" required
criterion "ConceptTalkTourGuideFind" "Concept" "TLK_TGFIND" required
criterion "ConceptTalkTourGuideSeek" "Concept" "TLK_TGSEEK" required
criterion "ConceptTalkTourGuideLostYou" "Concept" "TLK_TGLOSTYOU" required
criterion "ConceptTalkTourGuideCatchUp" "Concept" "TLK_TGCATCHUP" required
criterion "ConceptTalkTourGuideEndTour" "Concept" "TLK_TGENDTOUR" required
criterion "ConceptTalkSelected" "Concept" "TLK_SELECTED" required
criterion "ConceptTalkCommanded" "Concept" "TLK_COMMANDED" required
criterion "ConceptTalkCommandFailed" "Concept" "TLK_COMMAND_FAILED" required
criterion "ConceptTalkBetrayed" "Concept" "TLK_BETRAYED" required
criterion "ConceptTalkGiveAmmo" "Concept" "TLK_GIVEAMMO" required
criterion "ConceptTalkAllyKilled" "Concept" "TLK_ALLY_KILLED" required
criterion "ConceptSeeCombine" "Concept" "TLK_SEE_COMBINE" required
criterion "ConceptEnemyDead" "Concept" "TLK_ENEMY_DEAD" required
criterion "ConceptTalkWatchOut" "Concept" "TLK_WATCHOUT" required
criterion "ConceptTalkAttacking" "Concept" "TLK_ATTACKING" required
criterion "ConceptTalkDeath" "Concept" "TLK_DEATH" required
criterion "ConceptTalkHelpMe" "Concept" "TLK_HELP_ME" required
criterion "ConceptTalkPlayerPhysAttack" "Concept" "TLK_PLYR_PHYSATK" required
criterion "ConceptDissolveScream" "Concept" "TLK_DISSOLVESCREAM" required
criterion "ConceptElectrocuteScream" "Concept" "TLK_ELECTROCUTESCREAM" required
criterion "ConceptNewWeapon" "Concept" "TLK_NEWWEAPON" required
criterion "ConceptShot" "Concept" "TLK_SHOT" required
criterion "ConceptPlayerReload" "Concept" "TLK_PLRELOAD" required
criterion "ConceptPlayerDead" "Concept" "TLK_PLDEAD" required
criterion "ConceptHideAndReload" "Concept" "TLK_HIDEANDRELOAD" required
criterion "ConceptStartCombat" "Concept" "TLK_STARTCOMBAT" required
criterion "ConceptJoinPlayer" "Concept" "TLK_JOINPLAYER" required
// Lead behavior
criterion "ConceptLeadStart" "Concept" "TLK_LEAD_START" required // Spoken once when the NPC first starts to lead the player
criterion "ConceptLeadWaitOver" "Concept" "TLK_LEAD_WAITOVER" required // Spoken when the player arrives at an NPC waiting to lead the player
criterion "ConceptLeadAttractPlayer" "Concept" "TLK_LEAD_ATTRACTPLAYER" required // Nag spoken by a NPC waiting to lead the player, trying to attract the player
criterion "ConceptLeadCatchup" "Concept" "TLK_LEAD_CATCHUP" required // Spoken by the NPC when the player's lagging behind
criterion "ConceptLeadComingBack" "Concept" "TLK_LEAD_COMINGBACK" required // Spoken when the NPC comes back to find a lost player
criterion "ConceptLeadRetrieve" "Concept" "TLK_LEAD_RETRIEVE" required // Spoken when the NPC has come back to the player, and is now resuming the lead
criterion "ConceptLeadArrival" "Concept" "TLK_LEAD_ARRIVAL" required // Spoken when the leading NPC reaches the target point
criterion "ConceptLeadSuccess" "Concept" "TLK_LEAD_SUCCESS" required // Spoken when the player and the leading NPC have both reached the target point
criterion "ConceptLeadMissingWeapon" "Concept" "TLK_LEAD_MISSING_WEAPON" required // Spoken when the NPC refuses to lead the player because he's missing a weapon
// Citizen responses
criterion "ConceptCRPlayerShotGunship" "Concept" "TLK_CITIZEN_RESPONSE_SHOT_GUNSHIP" required
criterion "ConceptCRPlayerKilledGunship" "Concept" "TLK_CITIZEN_RESPONSE_KILLEd_GUNSHIP" required
criterion "ConceptCRVitalNPCDied" "Concept" "TLK_VITALNPC_DIED" required
criterion "PlayerAlive" "PlayerHealth" ">0" required
criterion "PlayerDead" "PlayerHealth" "<=0" required
criterion "PlayerWounded" "PlayerHealthFrac" ">0,<=.5"
criterion "NPCAlive" "Health" ">0" required
criterion "NPCAlert" "NPCState" ">=[NPCState::Idle],<[NPCState::Alert]"
criterion "NPCIdle" "NPCState" "[NPCState::Idle]" required
criterion "PlayerNear" "distancetoplayer" "<500" required
criterion "SeePlayer" "seeplayer" "1" required
criterion "SeenByPlayer" "seenbyplayer" "1" required
criterion "NoRecentCombat" "timesincecombat" ">25" required
criterion "ShotInLeg" "shotloc" "leg" required weight 0
criterion "ShotInArm" "shotloc" "arm" required weight 0
criterion "ShotInGut" "shotloc" "gut" required weight 0
criterion "EnemyIsMortar" "enemy" "func_tankmortar" required
criterion "NotUsedVortResponse" "UsedVortResponse" "!=1" "required" weight 0
criterion "IsVortLabUseDisable" "VortLab_Enable" "0" weight 2 required
// Global states
criterion "IsGordonCriminal" "gordon_precriminal" "0" required
criterion "IsGordonPreCriminal" "gordon_precriminal" "1" required
criterion "IsMap_d3_c17_09" "map" "d3_c17_09" "required"
// 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_grigori.txt"
#include "talker/npc_barney.txt"
#include "talker/npc_alyx.txt"