//============================================================================================================ // Alyx criteria criterion "IsAlyx" "classname" "npc_alyx" "required" criterion "ConceptAlyxStartCombat" "Concept" "TLK_STARTCOMBAT" required criterion "AlyxGunNotHolstered" "weapon" "weapon_alyxgun" required // alyx prank criteria criterion "AlyxNotPranked" "AlyxPranked" "!=1" "required" weight 0 criterion "ContextAlyxPlayedDarknessPrank" "AlyxPlayedDarknessPrank" "1" "required" weight 10 criterion "ContextNotAlyxPlayedDarknessPrankDone" "AlyxPlayedDarknessPrankDone" "!=1" "required" weight 10 criterion "IsNotAlyxPrankLive" "AlyxPrankLive" "!=1" "required" weight 10 criterion "Isal_hint_c17_Zombies" "al_hint_c17_Zombies" "1" "required" weight 1 // Alyx Respond to Kleinercast criterion "ConceptAlyxRespondKleinerGetBusy" "Concept" "TLK_RESPOND_KLEINER_GETBUSY" required criterion "PlayerHearKCast" "playerkcaston" "1" required criterion "PlayerAlyxNotRespondKCast1" "playerkcast_alyxcomment" "0" required // Additional criteria for falling off ledge criterion "PlayerInArea" "distancetoplayer" "<2000" required criterion "IsMap_ep1_citadel_03" "map" "ep1_citadel_03" weight 10 "required" criterion "InAntLionTraining" "InAntLionTraining" "1" weight 10 "required" // Idle Speech for Alyx relating to environment - NOT USING THESE criterion "IsAlyxIdleEnvironment_Generic" "alyxidle_env_generic" "1" required criterion "IsAlyxIdleEnvironment_Cold" "alyxidle_env_cold" "1" required criterion "IsAlyxIdleEnvironment_Warm" "alyxidle_env_warm" "1" required criterion "IsAlyxIdleEnvironment_Unpleasant" "alyxidle_env_unpleasant" "1" required criterion "IsAlyxIdleEnvironment_Unstable" "alyxidle_env_unstable" "1" required // Idle speech for Alyx relating to situation criterion "IsAlyxIdleSituation_Urgency" "alyxidle_sit_urgency" "1" required // Alyx's interaction with objects (hacking) criterion "ConceptRequestItem" "Concept" "TLK_ALYX_REQUEST_ITEM" "required" criterion "ConceptInteractionDone" "Concept" "TLK_ALYX_INTERACTION_DONE" "required" criterion "ConceptCancelInteraction" "Concept" "TLK_ALYX_CANCEL_INTERACTION" "required" criterion "ConceptTalkAlyxEvacProtect" "Concept" "TLK_ALYX_EVAC_PROTECT" "required" // Alyx's injured concept criterion "IsAlyxInjured" "alyx_injured" "1" required // Alyx's concepts for when the player is escorting citizens criterion "ConceptTalkAlyxEvacCitizen" "Concept" "TLK_ALYX_EVAC_CITIZEN" required criterion "ConceptTalkAlyxEvacNextGroup" "Concept" "TLK_ALYX_EVAC_NEXT_GROUP" required criterion "ConceptTalkAlyxInBarnacle" "Concept" "TLK_SELF_IN_BARNACLE" required //alyx is interrupted hacking powerbox criterion "IsAlyxPBInterruptCantSeeBox" "Concept" "PBAlyxCantSeeBox" required criterion "IsAlyxPBInterruptSeeEnemy" "Concept" "PBAlyxSeeEnemy" required //alyx context for reacting to antlions for the first time in ep1_c17_01 criterion "IsAlyxEp1c1701_AntlionReaction" "ep1_c17_01_antlionReact" "1" weight 10 required //alyx context for giving you a hint upon hacking a rollermine in the sniper area of ep1_c17_01 criterion "IsAlyxEp1c1701_RollermineHint" "ep1_c17_01_RollermineHint" "1" weight 10 required criterion "IsMap_ep1_c17_01" "map" "ep1_c17_01" weight 10 "required" //alyx giving player hints on overcoming the sniper in ep1_c17_01 criterion "ConceptTalkc1701SniperHint" "Concept" "TLK_C1701_SNIPER_HINT" required criterion "ConceptTalkc1701RollermineHint" "Concept" "TLK_C1701_ROLLERMINE_HINT" required criterion "PlayerVeryWounded" "playerhealthfrac" ">0,<=.25" required criterion "PlayerWounded" "playerhealthfrac" ">0,<=.50" required criterion "AlyxWounded" "healthfrac" ">0,<=.99" required //============================================================================================================ // ALYX HACKING //============================================================================================================ response "AlyxRequestItem" { sequential norepeat scene "scenes/episode_1/al_hack_train05.vcd" respeakdelay 5 scene "scenes/episode_1/al_hack_train01.vcd" respeakdelay 5 scene "scenes/episode_1/al_hack_train02.vcd" respeakdelay 5 } rule AlyxRequestItem { criteria IsAlyx ConceptRequestItem response AlyxRequestItem } response "AlyxInteractionDone" { scene "scenes/episode_1/al_hack_done01.vcd" scene "scenes/episode_1/al_hack_done02.vcd" scene "scenes/episode_1/al_hack_done03.vcd" } rule AlyxInteractionDone { criteria IsAlyx ConceptInteractionDone response AlyxInteractionDone } //============================================================================================================ // ALYX RESPONDING TO ENEMY GROUPS //============================================================================================================ response "AlyxMobbed" { scene "scenes/episode_1/al_swamped03.vcd" respeakdelay 60 scene "scenes/episode_1/al_swamped05.vcd" respeakdelay 60 scene "scenes/episode_1/al_swamped06.vcd" respeakdelay 60 scene "scenes/episode_1/al_swamped09.vcd" respeakdelay 60 scene "scenes/episode_1/al_swamped10.vcd" respeakdelay 60 scene "scenes/episode_1/al_swamped12.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob01.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob02.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob03.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob04.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob05.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob06.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob07.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob08.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob09.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob10.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_mob11.vcd" respeakdelay 60 } rule AlyxMobbed { criteria IsAlyx ConceptMobbed response AlyxMobbed } response "AlyxManyEnemies" { scene "scenes/episode_1/al_seemanyfoe03.vcd" respeakdelay 300 odds 50 scene "scenes/episode_1/al_seemanyfoe05.vcd" respeakdelay 300 odds 50 scene "scenes/episode_1/al_seemanyfoe06.vcd" respeakdelay 300 odds 50 scene "scenes/episode_1/al_seemanyfoe07.vcd" respeakdelay 300 odds 50 } rule AlyxManyEnemies { criteria IsAlyx ConceptManyEnemies EnemyIsNotBarnacle NotInCombat response AlyxManyEnemies } response "AlyxSpotIncHeadcrab" { scene "scenes/npc/Alyx/al_uggh01.vcd" respeakdelay 300 scene "scenes/npc/Alyx/al_uggh02.vcd" respeakdelay 300 } rule AlyxSpotIncHeadcrab { criteria IsAlyx ConceptSpotIncHeadcrab EnemyIsClose ConceptSomeEnemies response AlyxSpotIncHeadcrab } //============================================================================================================ // DARKNESS //============================================================================================================ // LOST PLAYER //=================================================== response "AlyxDarkLostPlayer" { scene "scenes/npc/Alyx/al_darkness_lostplayer01.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_lostplayer03.vcd" respeakdelay 15 } rule AlyxDarkLostPlayer { criteria IsAlyx ConceptDarkLostPlayer response AlyxDarkLostPlayer } response "AlyxDarkLostPlayerLong" { scene "scenes/npc/Alyx/al_darkness_lostplayerlong02.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_lostplayerlong03.vcd" respeakdelay 15 } rule AlyxDarkLostPlayerLong { criteria IsAlyx ConceptDarkLostPlayer NoRecentSeenPlayerShort response AlyxDarkLostPlayerLong } response "AlyxDarkLostPlayerLonger" { scene "scenes/npc/Alyx/al_darkness_lostplayerlonger02.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_lostplayerlonger03.vcd" respeakdelay 15 } rule AlyxDarkLostPlayerLonger { criteria IsAlyx ConceptDarkLostPlayer NoRecentSeenPlayer response AlyxDarkLostPlayerLonger } response "AlyxDarkLostPlayerDist" { scene "scenes/npc/Alyx/al_darkness_lostplayer_dist01.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_lostplayer_dist02.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_lostplayer_dist03.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_lostplayer_dist04.vcd" respeakdelay 15 } rule AlyxDarkLostPlayerDist { criteria IsAlyx ConceptDarkLostPlayer PlayerNotNear response AlyxDarkLostPlayerDist } //=================================================== // FOUND PLAYER //=================================================== response "AlyxDarkFoundPlayer" { scene "scenes/npc/Alyx/al_darkness_foundplayer01.vcd" respeakdelay 15 odds 50 scene "scenes/npc/Alyx/al_darkness_foundplayer03.vcd" respeakdelay 15 odds 50 scene "scenes/npc/Alyx/al_darkness_foundplayer04.vcd" respeakdelay 15 odds 50 scene "scenes/npc/Alyx/al_darkness_foundplayer_dist01.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_foundplayer_dist02.vcd" respeakdelay 15 } rule AlyxDarkFoundPlayer { criteria IsAlyx ConceptDarkFoundPlayer response AlyxDarkFoundPlayer } //=================================================== // DARKNESS WOUNDS & SOUNDS //=================================================== response "AlyxDarkUnknownWound" { scene "scenes/npc/Alyx/al_darkness_unknownwound01.vcd" respeakdelay 5 scene "scenes/npc/Alyx/al_darkness_unknownwound02.vcd" respeakdelay 5 scene "scenes/npc/Alyx/al_darkness_unknownwound03.vcd" respeakdelay 5 } rule AlyxDarkUnknownWound { criteria IsAlyx ConceptDarkUnknownWound response AlyxDarkUnknownWound } response "AlyxDarkHearSound" { scene "scenes/npc/Alyx/al_darkness_hearsound01.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_hearsound04.vcd" respeakdelay 15 scene "scenes/npc/Alyx/al_darkness_hearsound07.vcd" respeakdelay 15 } rule AlyxDarkHearSound { criteria IsAlyx ConceptDarkHearSound NoRecentCombatShort response AlyxDarkHearSound } //=================================================== // DARKNESS LOST ENEMIES //=================================================== response "AlyxDarkLostEnemyByFlashlight" { scene "scenes/npc/Alyx/al_darkness_lostenemy_flashlight02.vcd" respeakdelay 4 scene "scenes/npc/Alyx/al_darkness_lostenemy_flashlight04.vcd" respeakdelay 4 } rule AlyxDarkLostEnemyByFlashlight { criteria IsAlyx ConceptDarkLostEnemyByFlashlight response AlyxDarkLostEnemyByFlashlight } response "AlyxDarkLostEnemyByFlashlightExpired" { scene "scenes/npc/Alyx/al_light_out01.vcd" respeakdelay 45 scene "scenes/npc/Alyx/al_light_out02.vcd" respeakdelay 45 scene "scenes/npc/Alyx/al_light_out04.vcd" respeakdelay 45 scene "scenes/npc/Alyx/al_light_out05.vcd" respeakdelay 45 scene "scenes/npc/Alyx/al_light_out16.vcd" respeakdelay 45 scene "scenes/npc/Alyx/al_light_out17.vcd" respeakdelay 45 } rule AlyxDarkLostEnemyByFlashlightExpired { criteria IsAlyx ConceptDarkLostEnemyByFlashlightExpired response AlyxDarkLostEnemyByFlashlightExpired } //=================================================== // DARKNESS FOUND ENEMIES //=================================================== response "AlyxDarkFoundEnemyByFlashlightGeneric" respeakdelay 60 odds 50 { scene "scenes/npc/Alyx/al_darkness_foundenemy_flashlight01.vcd" scene "scenes/npc/Alyx/al_darkness_foundenemy_flashlight02.vcd" scene "scenes/npc/Alyx/al_darkness_foundenemy_flashlight03.vcd" } response "AlyxDarkFoundEnemyByFlashlight" { response AlyxDarkFoundEnemyByFlashlightGeneric respeakdelay 15 odds 10 } rule AlyxDarkFoundEnemyByFlashlight { criteria IsAlyx ConceptDarkFoundEnemyByFlashlight response AlyxDarkFoundEnemyByFlashlight } response "AlyxDarkFoundEnemyByFlashlightClose" { response AlyxDarkFoundEnemyByFlashlightGeneric response AlyxSpotIncHeadcrab } rule AlyxDarkFoundEnemyByFlashlightClose { criteria IsAlyx ConceptDarkFoundEnemyByFlashlight EnemyIsClose response AlyxDarkFoundEnemyByFlashlightClose } response "AlyxDarkFoundEnemyByFlashlightZombie" { scene "scenes/npc/Alyx/al_darkness_foundzombie_flashlight01.vcd" delay 2 respeakdelay 15 odds 5 response AlyxDarkFoundEnemyByFlashlightGeneric respeakdelay 15 odds 10 } rule AlyxDarkFoundEnemyByFlashlightZombie { criteria IsAlyx ConceptDarkFoundEnemyByFlashlight EnemyIsZombie response AlyxDarkFoundEnemyByFlashlightZombie } response "AlyxDarkFoundEnemyByFlashlightZombieClose" { response AlyxDarkFoundEnemyByFlashlightZombie response AlyxSpotIncHeadcrab } rule AlyxDarkFoundEnemyByFlashlightZombieClose { criteria IsAlyx ConceptDarkFoundEnemyByFlashlight EnemyIsZombie EnemyIsClose response AlyxDarkFoundEnemyByFlashlightZombieClose } response "AlyxDarkFoundEnemyByFlashlightAntLion" { scene "scenes/npc/Alyx/al_darkness_foundantlion_flashlight01.vcd" delay 2 respeakdelay 15 odds 5 } rule AlyxDarkFoundEnemyByFlashlightAntLion { criteria IsAlyx ConceptDarkFoundEnemyByFlashlight EnemyIsAntLion response AlyxDarkFoundEnemyByFlashlightAntLion } response "AlyxDarkFoundEnemyByFlashlightAntLionClose" { response AlyxDarkFoundEnemyByFlashlightAntLion response AlyxSpotIncHeadcrab } rule AlyxDarkFoundEnemyByFlashlightAntLionClose { criteria IsAlyx ConceptDarkFoundEnemyByFlashlight EnemyIsAntLion EnemyIsClose response AlyxDarkFoundEnemyByFlashlightAntLionClose } response "AlyxDarkFoundEnemyByFlashlightBarnacle" { scene "scenes/npc/Alyx/al_darkness_foundbarnacle_flashlight01.vcd" delay 2 respeakdelay 180 odds 5 scene "scenes/npc/Alyx/al_darkness_foundbarnacle_flashlight02.vcd" delay 2 respeakdelay 180 odds 5 } rule AlyxDarkFoundEnemyByFlashlightBarnacle { criteria IsAlyx ConceptDarkFoundEnemyByFlashlight EnemyIsBarnacle response AlyxDarkFoundEnemyByFlashlightBarnacle } //============================================================================================================ // Player falls off ledge //============================================================================================================ response "AlyxPlayerFallLedge" { scene "scenes/npc/Alyx/al_playerfalling.vcd" } rule AlyxPlayerFallLedge { criteria IsAlyx PlayerFallDeath response AlyxPlayerFallLedge } //============================================================================================================ // ALYX IDLE PLAYER RESPONSES //============================================================================================================ // PlayerIsHurt response "AlyxIdlePlayerIsHurt" { scene "scenes/npc/Alyx/al_idle_playerhurt01.vcd" respeakdelay 500 odds 10 scene "scenes/npc/Alyx/al_idle_playerhurt02.vcd" respeakdelay 500 odds 10 scene "scenes/npc/Alyx/al_idle_playerhurt03.vcd" respeakdelay 500 odds 10 } rule AlyxIdlePlayerIsHurt { criteria IsAlyx ConceptTalkPlayerHurt PlayerVeryWounded PlayerNear NoRecentCombat response AlyxIdlePlayerIsHurt } // Player stare response "AlyxIdlePlayerIsStaring" { scene "scenes/npc/Alyx/al_playerstare01.vcd" respeakdelay 120 stop_on_nonidle } rule AlyxIdlePlayerIsStaring { criteria IsAlyx ConceptTalkStare NPCIdle NoRecentCombat response AlyxIdlePlayerIsStaring } // Reacting to Kleiner's speech response "AlyxRespondKleinerGetBusy" { scene "scenes/episode_1/c17/al_getbusy.vcd" speakonce stop_on_nonidle norepeat } rule AlyxRespondKleinerGetBusy { criteria IsAlyx ConceptAlyxRespondKleinerGetBusy NotInCombat PlayerNear PlayerHearKCast PlayerAlyxNotRespondKCast1 response AlyxRespondKleinerGetBusy } //============================================================================================================ // Alyx flashlight responses //============================================================================================================ response "AlyxFlashlightIlluminatedSpeech" { scene "scenes/episode_1/al_flashlightblind_nospeak.vcd" } rule AlyxFlashlightIlluminatedSpeech { criteria IsAlyx ConceptFlashlightIlluminated AlyxGunNotHolstered IsNotAlyxPrankLive response AlyxFlashlightIlluminatedSpeech } //============================================================================================================ // Alyx Injured Follow speech //============================================================================================================ criterion ConceptAlyxInjuredTooFar "Concept" "TLK_INJURED_FOLLOW_TOO_FAR" required // Alyx is too far away from the player and warns him response AlyxInjuredFollowTooFar { scene "scenes/episode_2/al_injured_toofar01.vcd" respeakdelay 5 scene "scenes/episode_2/al_injured_toofar02.vcd" respeakdelay 5 scene "scenes/episode_2/al_injured_toofar03.vcd" respeakdelay 5 scene "scenes/episode_2/al_injured_toofar04.vcd" respeakdelay 5 } rule AlyxInjuredFollowTooFar { criterion ConceptAlyxInjuredTooFar IsAlyx response AlyxInjuredFollowTooFar } // Pain sounds response AlyxInjuredPain { scene "scenes/npc/Alyx/gasp02.vcd" respeakdelay 30 scene "scenes/npc/Alyx/gasp03.vcd" respeakdelay 30 scene "scenes/npc/Alyx/hurt04.vcd" respeakdelay 30 scene "scenes/npc/Alyx/hurt05.vcd" respeakdelay 30 scene "scenes/npc/Alyx/hurt06.vcd" respeakdelay 30 scene "scenes/npc/Alyx/hurt08.vcd" respeakdelay 30 scene "scenes/npc/Alyx/uggh01.vcd" respeakdelay 30 } rule AlyxInjuredPain { criterion ConceptTalkWound IsAlyxInjured response AlyxInjuredPain } //============================================================================================================ // Alyx reactions to world events //============================================================================================================ response "AlyxGroundShakeSmall" { scene "scenes/npc/Alyx/al_groundshakesmall_01.vcd" } rule AlyxGroundShakeSmall { criteria IsAlyx GroundShakeSmall response AlyxGroundShakeSmall } response "AlyxGroundShakeLarge" { scene "scenes/npc/Alyx/al_groundshakeLarge_01.vcd" } rule AlyxGroundShakeLarge { criteria IsAlyx GroundShakeLarge response AlyxGroundShakeLarge } response "AlyxStartleReact" { scene "scenes/npc/Alyx/al_StartleReact_01.vcd" } rule AlyxStartleReact { criteria IsAlyx StartleReact response AlyxStartleReact } //============================================================================================================ // Automatic responses for LEAD/FOLLOW, etc //============================================================================================================ // Watch out! Come on Gordon, What are you stupid? //============================================================================================================ // COMBAT //============================================================================================================ response AlyxStartCombat { scene "scenes/npc/Alyx/al_startcombat01.vcd" respeakdelay 120 odds 50 weapondelay 2 scene "scenes/npc/Alyx/al_startcombat02.vcd" respeakdelay 120 odds 50 weapondelay 2 scene "scenes/npc/Alyx/al_startcombat03.vcd" respeakdelay 120 odds 50 weapondelay 2 scene "scenes/npc/Alyx/al_startcombat04.vcd" respeakdelay 120 odds 50 weapondelay 2 } rule AlyxStartCombat { criteria IsAlyx ConceptAlyxStartCombat PlayerNear CombatTalk ConceptSomeEnemies response AlyxStartCombat } //begin combat when enemy far response AlyxStartCombatFar { scene "scenes/npc/Alyx/al_combat_gradual_quiet_01.vcd" respeakdelay 120 odds 50 weapondelay 3 scene "scenes/npc/Alyx/al_combat_gradual_quiet_02.vcd" respeakdelay 120 odds 50 weapondelay 3 scene "scenes/npc/Alyx/al_combat_gradual_quiet_03.vcd" respeakdelay 120 odds 50 weapondelay 3 scene "scenes/npc/Alyx/al_combat_gradual_quiet_04.vcd" respeakdelay 120 odds 50 weapondelay 3 scene "scenes/npc/Alyx/al_combat_gradual_quiet_05.vcd" respeakdelay 120 odds 50 weapondelay 3 scene "scenes/npc/Alyx/al_combat_gradual_quiet_06.vcd" respeakdelay 120 odds 50 weapondelay 3 } rule AlyxStartCombatFar { criteria IsAlyx ConceptAlyxStartCombat PlayerNear CombatTalk EnemyIsFar response AlyxStartCombatFar } //begin combat when enemy is seen by alyx, not by player. response AlyxStartCombatAlone { scene "scenes/episode_1/al_swamped05.vcd" respeakdelay 600 scene "scenes/npc/alyx/al_dark_worriedest05.vcd" respeakdelay 600 } rule AlyxStartCombatAlone { criteria IsAlyx ConceptAlyxStartCombat CombatTalk NotSeenByPlayer ConceptManyEnemies response AlyxStartCombatAlone } //Alyx sees zombie waking up response "AlyxSpottedZombieWaking" { scene "scenes/npc/Alyx/al_zombie_liveone01.vcd" respeakdelay 1800 scene "scenes/npc/Alyx/al_zombie_itsalive01.vcd" respeakdelay 1800 } rule AlyxSpottedZombieWaking { criteria IsAlyx ConceptSpottedZombieWakeup EnemyIsClose PlayerNear response AlyxSpottedZombieWaking } //Alyx sees a headcrab leaving a zombie response "AlyxSpottedHeadcrabLeavingZombie" { scene "scenes/npc/Alyx/al_see_headcrabair01.vcd" respeakdelay 240 scene "scenes/npc/Alyx/al_see_headcrabair02.vcd" respeakdelay 240 scene "scenes/npc/Alyx/al_see_headcrabair03.vcd" respeakdelay 240 } rule AlyxSpottedHeadcrabLeavingZombie { criteria IsAlyx ConceptSpottedHeadcrabLeavingZombie EnemyIsReallyClose response AlyxSpottedHeadcrabLeavingZombie } //Player Kills Alyx Praises criterion "AlyxNotPraised1Shot" "AlyxPraised1Shot" "!=1" "required" weight 0 criterion "AlyxNotPraised" "AlyxPraised" "!=1" "required" weight 0 criterion "AlyxNotPraisedKillStreak" "AlyxPraisedKillStreak" "!=1" "required" weight 0 //Player kills monster with headshot response "Player1Shot" { scene "scenes/npc/Alyx/al_combat_goodshooting01.vcd" scene "scenes/npc/Alyx/al_combat_goodshooting02.vcd" scene "scenes/npc/Alyx/al_combat_goodshooting03.vcd" scene "scenes/npc/Alyx/al_combat_goodshot01.vcd" scene "scenes/npc/Alyx/al_combat_goodshot02.vcd" scene "scenes/npc/Alyx/al_combat_goodshot03.vcd" scene "scenes/npc/Alyx/al_combat_goodshot04.vcd" scene "scenes/npc/Alyx/al_player_goodshot01.vcd" scene "scenes/npc/Alyx/al_player_goodshot02.vcd" scene "scenes/npc/Alyx/al_player_goodshot03.vcd" scene "scenes/npc/Alyx/al_player_goodshot04.vcd" scene "scenes/npc/Alyx/al_combat_niceshot01.vcd" scene "scenes/npc/Alyx/al_combat_niceshot02.vcd" scene "scenes/npc/Alyx/al_combat_niceshot03.vcd" scene "scenes/npc/Alyx/al_combat_niceshot04.vcd" } rule Player1Shot { criteria IsAlyx ConceptPlayerKilledNPC ContextPlayer1Shot AlyxNotPraised1Shot AlyxNotPraised applycontext "AlyxPraised1Shot:1:180,AlyxPraised:1:20" response Player1Shot } rule PlayerHeadshot { criteria IsAlyx ConceptPlayerKilledNPC ContextPlayerHeadShot AlyxNotPraised1Shot AlyxNotPraised applycontext "AlyxPraised1Shot:1:180,AlyxPraised:1:20" response Player1Shot } //Player is on kill streak response "PlayerKillStreak" { scene "scenes/npc/Alyx/al_combat_niceshooting01.vcd" scene "scenes/npc/Alyx/al_combat_niceshooting02.vcd" scene "scenes/npc/Alyx/al_combat_goodshooting01.vcd" scene "scenes/npc/Alyx/al_combat_goodshooting02.vcd" scene "scenes/npc/Alyx/al_combat_goodshooting03.vcd" } rule PlayerKillStreak { criteria IsAlyx ConceptPlayerKilledNPC ConceptPlayerKillStreak PlayerNear PlayerNotUsingPhysCannon AlyxNotPraisedKillStreak AlyxNotPraised applycontext "AlyxPraisedKillStreak:1:180,AlyxPraised:1:20" response PlayerKillStreak } // Player kills alyx's enemy criterion "AlyxNotPraisedKilledEnemy" "AlyxPraisedKilledEnemy" "!=1" "required" weight 0 response PlayerKilledEnemy { scene "scenes/npc/Alyx/al_thanksforhelp03.vcd" scene "scenes/npc/Alyx/al_combat_yeah01.vcd" scene "scenes/npc/Alyx/al_combat_yeah02.vcd" } rule PlayerKilledEnemy { criteria IsAlyx ConceptPlayerKilledNPC ContextPlayerKilledEnemy EnemyIsClose PlayerNear AlyxNotPraisedKilledEnemy AlyxNotPraised applycontext "AlyxPraisedKilledEnemy:1:1200,AlyxPraised:1:20" response PlayerKilledEnemy } // Player kills enemy that actually hit alyx criterion "AlyxNotPraisedKilledAttacker" "AlyxPraisedKilledAttacker" "!=1" "required" weight 0 response "PlayerKilledAttacker" { scene "scenes/npc/Alyx/al_combat_thanks01.vcd" scene "scenes/npc/Alyx/al_combat_thanks02.vcd" scene "scenes/npc/Alyx/al_combat_thanks03.vcd" scene "scenes/npc/Alyx/al_combat_thanks04.vcd" } rule PlayerKilledAttacker { criteria IsAlyx ConceptPlayerKilledNPC ContextPlayerKilledAttacker AlyxNotPraisedKilledAttacker AlyxNotPraised applycontext "AlyxPraisedKilledAttacker:1:1200,AlyxPraised:1:20" response PlayerKilledAttacker } //Thanks for killing an enemy that was mobbing her criterion "AlyxNotPraisedKilledMob" "AlyxPraisedKilledMob" "!=1" "required" weight 0 response "AlyxMobbedThanks" { scene "scenes/episode_1/al_mobbed_thanks.vcd" respeakdelay 60 scene "scenes/episode_1/al_mobbed_thatwasclose.vcd" respeakdelay 60 scene "scenes/episode_1/al_swamped07.vcd" respeakdelay 60 scene "scenes/episode_1/al_combat_thanks.vcd" respeakdelay 60 scene "scenes/episode_1/al_mobbed_thanks01.vcd" respeakdelay 60 scene "scenes/episode_1/al_mobbed_thanks02.vcd" respeakdelay 60 scene "scenes/episode_1/al_mobbed_thatwasclose01.vcd" respeakdelay 60 scene "scenes/episode_1/al_mobbed_thatwasclose02.vcd" respeakdelay 60 scene "scenes/episode_1/al_mobbed_thatwasclose03.vcd" respeakdelay 60 } rule AlyxMobbedThanks { criteria IsAlyx ConceptPlayerKilledNPC ContextKilledMob AlyxNotPraisedKilledMob ConceptOneorLessEnemy applycontext "AlyxPraisedKilledMob:1:1200,AlyxPraised:1:20" response AlyxMobbedThanks } response "PlayerKilledAttackerWhileCower" { scene "scenes/npc/Alyx/al_combat_nice.vcd" } rule PlayerKilledAttackerWhileCower { criteria IsAlyx ConceptPlayerKilledNPC ContextPlayerKilledAttacker ContextActivityCower applycontext "AlyxPraisedKilledAttacker:1:1200,AlyxPraised:1:20" response PlayerKilledAttackerWhileCower } //AlyxNotPraisedKilledAttacker AlyxNotPraised // Player punts grenade criterion "AlyxNotPraisedPuntedGrenade" "AlyxPraisedPuntedGrenade" "!=1" "required" weight 0 response "PlayerPuntedGrenade" { scene "scenes/npc/Alyx/al_combat_nicepunt01.vcd" scene "scenes/npc/Alyx/al_combat_nicepunt02.vcd" } rule PlayerPuntedGrenade { criteria IsAlyx ConceptPlayerKilledNPC ContextPlayerPuntedGrenade AlyxNotPraisedPuntedGrenade applycontext "AlyxPraisedPuntedGrenade:1:1200,AlyxPraised:1:10" response PlayerPuntedGrenade } ////////////////////////////////////////////////////////////////// //Flashlighth Turned Off - Alyx Messing With Gordon ////////////////////////////////////////////////////////////////// response "DarknessAlyxPrank" { scene "scenes/episode_1/c17/al_dark_fakegroan.vcd" } rule DarknessAlyxPrank { criteria IsAlyx ConceptDarknessFlashlightOff ContextInDarkness NoRecentCombatShort PlayerNear NotSeenByPlayer AlyxNotPranked Isal_hint_c17_Zombies applycontext "AlyxPlayedDarknessPrank:1:10,AlyxPranked:1:120,AlyxPrankLive:1:120" response DarknessAlyxPrank } response "DarknessAlyxPrankCaught" { scene "scenes/episode_1/c17/al_dark_gotcha.vcd" } rule DarknessAlyxPrankCaught { criteria IsAlyx ConceptDarknessFlashlightOn ContextAlyxPlayedDarknessPrank PlayerNear SeenByPlayer ContextNotAlyxPlayedDarknessPrankDone NotInCombat applycontext "AlyxPlayedDarknessPrankDone:1:0,AlyxPranked:1:0,AlyxPrankLive:0:0" response DarknessAlyxPrankCaught } rule DarknessAlyxPrankCaughtLate { criteria IsAlyx ConceptTalkLook ContextAlyxPlayedDarknessPrank ContextNotAlyxPlayedDarknessPrankDone SeenByPlayer NotInCombat applycontext "AlyxPlayedDarknessPrankDone:1:0,AlyxPranked:1:0,AlyxPrankLive:0:0" response DarknessAlyxPrankCaught } //////////////////////////////////////////////////////////////////// //Flashlighth Expired - kleiner speech response "DarknessFlashlightExpired" { scene "scenes/npc/Alyx/al_darkness_lostenemy_flashlightexpired05.vcd" speakonce } rule DarknessFlashlightExpired { criteria IsAlyx ConceptDarknessFlashlightExpired NoRecentCombatShort response DarknessFlashlightExpired } //Alyx Wounded by Grenade response "AlyxWoundedbyGrenade" { norepeat scene "scenes/npc/Alyx/al_deaf_what.vcd" respeakdelay 1200 odds 50 scene "scenes/npc/Alyx/al_deaf_canthearyou.vcd" respeakdelay 1200 odds 50 scene "scenes/npc/Alyx/al_deaf_canthearanything.vcd" respeakdelay 1200 odds 50 scene "scenes/npc/Alyx/al_deaf_saysomething.vcd" respeakdelay 1200 odds 50 scene "scenes/npc/Alyx/al_deaf_earsringing.vcd" respeakdelay 1200 odds 50 } rule AlyxWoundedbyGrenade { criteria IsAlyx ConceptShot IsNPCGrenade PlayerNear EnemyIsFar response AlyxWoundedbyGrenade } //Alyx sees zombine with grenade response "DangerZombineGrenade" { scene "scenes/npc/Alyx/al_zombine_grenadewarn01.vcd" respeakdelay 60 odds 20 scene "scenes/npc/Alyx/al_zombine_grenadewarn02.vcd" respeakdelay 60 odds 20 scene "scenes/npc/Alyx/al_zombine_grenadewarn03.vcd" respeakdelay 60 odds 20 } rule DangerZombineGrenade { criteria IsAlyx ConceptDangerZombineGrenade response DangerZombineGrenade } ////Player explodes numerous barrels response "PlayerBarrelsKill" { scene "scenes/npc/Alyx/al_laugh07.vcd" respeakdelay 600 scene "scenes/npc/Alyx/al_laugh09.vcd" respeakdelay 600 } rule PlayerBarrelsKill { criteria IsAlyx ConceptPlayerKilledBarrel ConceptPlayerKillsBarrels PlayerNear response PlayerBarrelsKill } //Player explodes numerous barrels and kills alyx's enemy criterion "AlyxNotPraisedBarrelKilledEnemy" "AlyxPraisedBarrelKilledEnemy" "!=1" "required" weight 0 response "EnemyKillWithBarrel" { scene "scenes/npc/Alyx/al_combat_boom01.vcd" scene "scenes/npc/Alyx/al_combat_boom07.vcd" } rule EnemyKillWithBarrel { criteria ConceptPlayerKilledNPC ConceptPlayerKillsBarrels ContextPlayerKilledEnemy AlyxNotPraisedBarrelKilledEnemy applycontext "AlyxPraisedBarrelKilledEnemy:1:1200" response EnemyKillWithBarrel } //Player explodes barrels killing last known enemy response "PlayerBarrelsKillLast" { scene "scenes/npc/Alyx/al_positive01.vcd" scene "scenes/npc/Alyx/al_positive02.vcd" scene "scenes/npc/Alyx/al_positive03.vcd" } rule PlayerBarrelsKillLast { criteria ConceptPlayerKilledNPC ConceptPlayerKillsBarrels ContextPlayerKilledEnemy ConceptOneorLessEnemy AlyxNotPraisedBarrelKilledEnemy EnemyIsNotClose applycontext "AlyxPraisedBarrelKilledEnemy:1:1200" response PlayerBarrelsKillLast } //Alyx sees a poison headcrab criterion "AlyxDoesNotHatesPoisonHeadCrabs" "AlyxHatesPoisonHeadCrabs" "!=1" "required" response "AlyxSeesPoisonHeadcrab" { scene "scenes/npc/Alyx/al_pzcrabs_hatethings01.vcd" } rule AlyxSeesPoisonHeadcrab { criteria IsAlyx EnemyIsPoisonHeadcrab PlayerNear ConceptAlyxEnemyDead AlyxDoesNotHatesPoisonHeadCrabs applycontext "AlyxHatesPoisonHeadCrabs:1:1200" response AlyxSeesPoisonHeadcrab } //Alyx sees a poison zombie criterion "AlyxDoesNotHatesPoisonZombies" "AlyxHatesPoisonZombies" "!=1" "required" response "AlyxSeesPoisonZombies" { scene "scenes/npc/Alyx/al_pzombie_ohno.vcd" } rule AlyxSeesPoisonZombies { criteria IsAlyx EnemyIsPoisonZombie PlayerNear ConceptStartCombat AlyxDoesNotHatesPoisonZombies applycontext "AlyxHatesPoisonZombies:1:0" response AlyxSeesPoisonZombies } //Alyx reacting to a kill while manning a gun response "AlyxKillingWithFuncTank" { scene "scenes/npc/Alyx/al_combat_ohsnap.vcd" respeakdelay 600 scene "scenes/npc/Alyx/al_positive03.vcd" respeakdelay 600 } rule AlyxKillingWithFuncTank { criteria IsAlyx AlyxBehavoirisFuncTank PlayerNear ConceptAlyxEnemyDead AlyxNoWeapon response AlyxKillingWithFuncTank } //================================== // Custom level start combat //================================== //Possibly unused response AlyxStartCombat_ep1_c17_01 { scene "scenes/episode_1/al_c17_01_antlionsupheretoo.vcd" respeakdelay 60 } rule AlyxStartCombat_ep1_c17_01 { criteria IsAlyx ConceptAlyxStartCombat IsAlyxEp1c1701_AntlionReaction response AlyxStartCombat_ep1_c17_01 } //================================== // Alyx Warning Gordon //================================== response AlyxBehindYou { scene "scenes/npc/Alyx/al_behindyou01.vcd" scene "scenes/npc/Alyx/al_behindyou02.vcd" scene "scenes/npc/Alyx/al_behindyou03.vcd" scene "scenes/npc/Alyx/al_monsterbehindplayer01.vcd" scene "scenes/npc/Alyx/al_monsterbehindplayer02.vcd" } rule AlyxBehindYou { criteria IsAlyx ConceptTalkWatchout "dangerloc" "behind" required response AlyxBehindYou } response AlyxWatchOutUp { } rule AlyxWatchOutUp { criteria IsAlyx ConceptTalkWatchout "dangerloc" "above" required response AlyxWatchOutUp } //================================== // Wounds //================================== response AlyxWoundedEpisodic { scene "scenes/npc/Alyx/al_wound01.vcd" respeakdelay 30 odds 50 scene "scenes/npc/Alyx/al_wound02.vcd" respeakdelay 30 odds 50 scene "scenes/npc/Alyx/al_wound03.vcd" respeakdelay 30 odds 50 scene "scenes/npc/Alyx/al_wound04.vcd" respeakdelay 30 odds 50 } rule AlyxWoundedEpisodic { criteria IsAlyx ConceptTalkWound response AlyxWoundedEpisodic } //================================== // Combat detail //================================== response "AlyxAllyInBarnacle" { scene "scenes\episode_1\al_playerdeath02.vcd" respeakdelay 30 scene "scenes\episode_1\al_playerfalls03.vcd" respeakdelay 30 } rule AlyxAllyInBarnacle { criteria IsAlyx ConceptAllyInBarnacle response AlyxAllyInBarnacle } response AlyxAttacking { scene "scenes/npc/Alyx/al_combat_angry01.vcd" scene "scenes/npc/Alyx/al_combat_angry02.vcd" scene "scenes/npc/Alyx/al_combat_angry03.vcd" scene "scenes/npc/Alyx/al_combat_angry04.vcd" //scene "scenes/npc/Alyx/al_concerned01.vcd" //scene "scenes/npc/Alyx/al_concerned02.vcd" //scene "scenes/npc/Alyx/al_concerned03.vcd" //scene "scenes/npc/Alyx/al_excited.vcd" } rule AlyxAttacking { criteria IsAlyx ConceptTalkAttacking response AlyxAttacking } //trying here to have alyx respond to more intense combat -- looking at combat_length and num_enemies as criteria //(chet)you can play witht the combat length, it is one of the pieces of data passed back, so you can check the length each time she fires //ConceptManyEnemies is more than 4, ConceptSomeEnemies is more than 2 - some may work here if the time of combat is long enough. criterion "IsLongInCombat" "combat_length" ">10" required response AlyxAttackingMany { //scene "scenes/npc/Alyx/al_concerned01.vcd" //scene "scenes/npc/Alyx/al_concerned02.vcd" //scene "scenes/npc/Alyx/al_concerned03.vcd" //scene "scenes/npc/Alyx/al_excited.vcd" scene "scenes/npc/Alyx/al_combat_angry05.vcd" } rule AlyxAttackingMany { criteria IsAlyx ConceptTalkAttacking ConceptSomeEnemies IsLongInCombat response AlyxAttackingMany } //Alyx suggesting you flip over antlion criterion "AlyxNotSuggestedFlip" "AlyxSuggestsAntLionFlip" "!=1" "required" //alyx telling player to flip over ant-lion, used to check to see if the player is just killing them on their own criterion "ConceptNotInAntLionTraining" "AntlionTrainingHint" "!=1" required criterion "IsMapNOT_ep1_c17_02" "map" "!=ep1_c17_02" "required" response "AlyxAntLionDanger" { scene "scenes/episode_1/al_ant_flip.vcd" respeakdelay 20 } rule AlyxAntLionDanger { criteria IsAlyx EnemyIsAntLion ConceptTalkAttacking PlayerNear AlyxNotSuggestedFlip PlayerUsingPhysCannon ConceptNotInAntLionTraining IsMapNOT_ep1_c17_02 EnemyIsNotFar applycontext "AlyxSuggestsAntLionFlip:1:0" response AlyxAntLionDanger } //================================== // Reloading //================================== // Basic Reloading line response AlyxEpisodicHideAndReload { scene "scenes/episode_1/al_reload01.vcd" respeakdelay 5 // al_reload01.wav scene "scenes/episode_1/al_reload02.vcd" respeakdelay 5 // al_reload03.wav scene "scenes/episode_1/al_reload03.vcd" respeakdelay 5 // al_reload04.wav scene "scenes/episode_1/al_reload04.vcd" respeakdelay 5 // al_reload05.wav scene "scenes/episode_1/al_reload05.vcd" respeakdelay 5 // al_reload06.wav scene "scenes/episode_1/al_reload06.vcd" respeakdelay 5 // al_reloading_new06.wav scene "scenes/episode_1/al_reload07.vcd" respeakdelay 5 // al_reloading_new07.wav } rule AlyxEpisodicHideAndReload { criteria IsAlyx ConceptHideAndReload PlayerNear RecentCombat response AlyxEpisodicHideAndReload } //================================== // Enemy On Fire //================================== response AlyxEnemyBurning { scene "scenes/npc/alyx/al_combat_lightem.vcd" respeakdelay 300 scene "scenes/npc/alyx/al_combat_burnem01.vcd" respeakdelay 300 scene "scenes/npc/alyx/al_combat_burnem02.vcd" respeakdelay 300 } rule AlyxEnemyBurning { criteria IsAlyx ConceptEnemyBurning response AlyxEnemyBurning } response AlyxEnemyBurningZombie { scene "scenes/npc/alyx/al_combat_zombq01.vcd" respeakdelay 300 scene "scenes/npc/alyx/al_combat_zombq02.vcd" respeakdelay 300 } rule AlyxEnemyBurningZombie { criteria IsAlyx ConceptEnemyBurning EnemyIsZombie response AlyxEnemyBurningZombie } /////////////////////////////////////////////////////////// // Alyx Plus Use Hints /////////////////////////////////////////////////////////// criterion "IsCitPreCore" "al_hint_citPreCore" "1" required weight 8 //Alyx plus use hint pointing out you need to find the core criterion "NotUsedAlyxCitCoreSoon" "UsedAlyxCitCoreSoon" "!=1" "required" weight 0 response AlyxCitCoreSoon { scene "scenes/episode_1/citadel/al_gettocoresoon.vcd" scene "scenes/episode_1/citadel/al_gottogettocore.vcd" } rule AlyxCitCoreSoon { criteria IsAlyx ConceptTalkUse IsCitPreCore NotUsedAlyxCitCoreSoon NotUsedAlyxResponse applycontext "UsedAlyxCitCoreSoon:1:300,UsedAlyxResponse:1:30" response AlyxCitCoreSoon } //Alyx plus use hint glad we are doing this together criterion "NotUsedAlyxCitDoingTogether" "UsedAlyxCitDoingTogether" "!=1" "required" weight 0 response AlyxCitDoingTogether { scene "scenes/episode_1/citadel/al_citvista_glad.vcd" } rule AlyxCitDoingTogether { criteria IsAlyx ConceptTalkUse IsCitPreCore NotUsedAlyxCitDoingTogether NotUsedAlyxResponse applycontext "UsedAlyxCitDoingTogether:1:0" response AlyxCitDoingTogether } //==================================================== //////General Alyx Plus Use //==================================================== //Keeping the vocal response to one every 30 seconds so the user can't get her to be a sampler. //if player is below 50% health response AlyxUsePlayerWounded { scene "scenes/npc/alyx/al_player_healthlow02.vcd" scene "scenes/npc/alyx/al_player_healthlow03.vcd" scene "scenes/npc/alyx/al_player_healthlow05.vcd" } rule AlyxUsePlayerWounded { criteria IsAlyx ConceptTalkUse PlayerWounded NotUsedAlyxResponse applycontext "UsedAlyxResponse:1:30" response AlyxUsePlayerWounded } //General coverage response AlyxUseEverywhere { scene "scenes/npc/alyx/al_affirm01.vcd" scene "scenes/npc/alyx/al_affirm03.vcd" scene "scenes/npc/alyx/al_affirm05.vcd" scene "scenes/npc/alyx/al_playerstare01-vocal.vcd" scene "scenes/npc/alyx/al_playerstare02.vcd" scene "scenes/npc/alyx/al_lead_start05.vcd" scene "scenes/npc/alyx/al_lead_start06.vcd" } rule AlyxUseEverywhere { criteria IsAlyx ConceptTalkUse NotUsedAlyxResponse NotInCombat applycontext "UsedAlyxResponse:1:30" response AlyxUseEverywhere } response AlyxUseEverywhereZombies { scene "scenes/npc/alyx/al_affirm01.vcd" scene "scenes/npc/alyx/al_affirm03.vcd" scene "scenes/npc/alyx/al_affirm05.vcd" scene "scenes/npc/alyx/al_playerstare01-vocal.vcd" scene "scenes/npc/alyx/al_playerstare02.vcd" scene "scenes/npc/alyx/al_lead_start02.vcd" scene "scenes/npc/alyx/al_lead_start03.vcd" scene "scenes/npc/alyx/al_lead_start04.vcd" scene "scenes/npc/alyx/al_lead_start05.vcd" scene "scenes/npc/alyx/al_lead_start06.vcd" scene "scenes/npc/alyx/al_follow01.vcd" scene "scenes/npc/alyx/al_follow02.vcd" scene "scenes/npc/alyx/al_follow03.vcd" scene "scenes/npc/alyx/al_follow04.vcd" scene "scenes/npc/alyx/al_follow05.vcd" scene "scenes/npc/alyx/al_follow06.vcd" } rule AlyxUseEverywhereZombies { criteria IsAlyx ConceptTalkUse NotUsedAlyxResponse NotInCombat Isal_hint_c17_Zombies applycontext "UsedAlyxResponse:1:30" response AlyxUseEverywhereZombies } response AlyxUsedEverywhere { scene "scenes/npc/alyx/al_nomore.vcd" Respeakdelay 5 scene "scenes/npc/alyx/al_use_smile.vcd" Respeakdelay 5 scene "scenes/npc/alyx/al_use_smile2.vcd" Respeakdelay 5 scene "scenes/npc/alyx/al_use_what.vcd" Respeakdelay 5 } rule AlyxUsedEverywhere { criteria IsAlyx ConceptTalkUse IsUsedAlyxResponse NotInCombat response AlyxUsedEverywhere } //plus use hint while in darkness criterion "IsMapEp1_C17_01" "map" "ep1_c17_01" "required" weight 10 response AlyxUseC1701 { scene "scenes/episode_1/c17/al_hiding03.vcd" // I wonder how things are outside the city scene "scenes/episode_1/c17/al_evac_ontous02.vcd" // better find barney and get moving scene "scenes/episode_1/c17/al_notellingtime.vcd" // there is no telling how much time we have, it can't be that much farther to the train station scene "scenes/episode_1/c17/al_slugourway.vcd" //looks like we are going to have to slug our way through here... the longer we take to find the trainstation, the more dangerous it gets. } rule AlyxUseC1701 { criteria IsAlyx ConceptTalkUse NotUsedAlyxResponse IsMapEp1_C17_01 NotInCombat applycontext "UsedAlyxResponse:1:30" response AlyxUseC1701 } //Plus use hint for first light bridge criterion "Isal_hint_citLightBridge" "al_hint_citLightBridge" "1" "required" weight 10 criterion "NotUsedIsal_hint_citLightBridge" "UsedIsal_hint_citLightBridge" "!=1" "required" weight 0 response AlyxUseLightBridge { scene "scenes/episode_1/citadel/al_ifonlybridgepower.vcd" // if there was only some way to power up this bridge } rule AlyxUseLightBridge { criteria IsAlyx ConceptTalkUse NotUsedAlyxResponse Isal_hint_citLightBridge NotInCombat NotUsedIsal_hint_citLightBridge applycontext "UsedAlyxResponse:1:30,UsedIsal_hint_citLightBridge:1:0" response AlyxUseLightBridge } response AlyxUseDarkness { scene "scenes/npc/alyx/al_dark_near01.vcd" // I'm right here scene "scenes/npc/alyx/al_dark_near02.vcd" // I'm with you scene "scenes/npc/alyx/al_dark_stayclose01.vcd" // stay close okay scene "scenes/npc/alyx/al_dark_stayclose03.vcd" // lets stick together in here } rule AlyxUseDarkness { criteria IsAlyx ConceptTalkUse NotUsedAlyxResponse ContextInDarkness NotInCombat Isal_hint_c17_Zombies applycontext "UsedAlyxResponse:1:30" response AlyxUseDarkness } criterion "NotIsal_hint_c17_Zombies" "al_hint_c17_Zombies" "!=1" "required" weight 8 criterion "IsMapEp1_c17_00" "map" "ep1_c17_00" "required" response AlyxUseZombies { norepeat scene "scenes/npc/alyx/al_alert_zombies06.vcd" // ugh, that smell can only mean zombies scene "scenes/npc/alyx/al_alert_zombies07.vcd" // whats with that smell } rule AlyxUseZombies { criteria IsAlyx ConceptTalkUse NotUsedAlyxResponse NotInCombat NotIsal_hint_c17_Zombies IsMapEp1_c17_00 applycontext "UsedAlyxResponse:1:30" response AlyxUseZombies } criterion "NotUsedAlyxUseExictedAboutData" "UsedAlyxUseExictedAboutData" "!=1" "required" weight 1 criterion "IsMapEp1_c17_02" "map" "ep1_c17_02" "required" response AlyxUseExictedAboutData { norepeat scene "scenes/episode_1/c17/al_cantwait.vcd" } rule AlyxUseExictedAboutData { criteria IsAlyx ConceptTalkUse NotUsedAlyxResponse NotInCombat IsMapEp1_c17_02 NotUsedAlyxUseExictedAboutData applycontext "UsedAlyxResponse:1:30,UsedAlyxUseExictedAboutData:1:0" response AlyxUseExictedAboutData } response AlyxUseRecentCombat { scene "scenes/npc/alyx/al_post_combat02.vcd" scene "scenes/npc/alyx/al_post_combat03.vcd" scene "scenes/npc/alyx/al_post_combat04.vcd" scene "scenes/npc/alyx/al_post_combat05.vcd" scene "scenes/npc/alyx/al_post_combat06.vcd" } rule AlyxUseRecentCombat { criteria IsAlyx ConceptTalkUse NotUsedAlyxResponse AlyxWounded NotInCombat applycontext "UsedAlyxResponse:1:30" response AlyxUseRecentCombat } criterion "ConceptTalkPlayerUse" "Concept" "TLK_PLAYERUSE" required //talk use commands criterion "HintLedgePlayerFirst" "al_hint_citLedgePlayerFirst" "1" required response "AlyxUseLedge" { scene "scenes/npc/alyx/al_follow03.vcd" scene "scenes/npc/alyx/al_follow05.vcd" scene "scenes/npc/alyx/al_follow06.vcd" } rule AlyxUseLedge { criteria IsAlyx ConceptTalkPlayerUse HintLedgePlayerFirst applycontext "UsedAlyxResponse:1:30" response AlyxUseLedge } criterion "IsMap_ep1_c17_06" "map" "ep1_c17_06" "required" weight 50 response AlyxUsedEp1_06 { scene "scenes/npc/alyx/al_nomore.vcd" Respeakdelay 5 scene "scenes/npc/alyx/al_use_smile.vcd" Respeakdelay 5 scene "scenes/npc/alyx/al_use_smile2.vcd" Respeakdelay 5 scene "scenes/npc/alyx/al_use_what.vcd" Respeakdelay 5 } rule AlyxUsedEp1_06 { criteria IsAlyx ConceptTalkUse NotInCombat IsMap_ep1_c17_06 response AlyxUsedEp1_06 }