The Tunnel – Dying Light community map goes official in DLC

Nearly year ago I made Dying Light community map – The Tunnel. The map was well received by the workshop community becoming one of most popular maps. I have added some tweaks and now… the maps is part of the DLC: Community Map 4-Pack ūüôā

The Tunnel is a single player survival horror story with multiple choices that player can make.










Here are some gameplay videos from YouTube for the older version of the map

Dying Light don’t have dialogs that support making decisions so I have created a ‘system’ that gives player power to control quest system paths.

Basically every event in The Tunnel is a small quest that is hidden and it starts triggered with other event.

QuestAssist

How it works?

Player talks with Yakup

,talk _ yakup Yakup_TheTunnel_USB -show=false  -questgiver_indicator=true

yakuptalk

After that talk I block player ability to move and show the decision spheres.

 ,player-block-move _ true
 ,show-multi _
 ,o QuestInventoryItemDI Yakup_decision_no
 ,o QuestInventoryItemDI Yakup_decision_yes

Making choices is definied by choosing green or red sphere.

quest TheTunnel_YakupTalk2 -parent=TheTunnel_YakupTalk
    ,OR _
        path
            ,cnd-quest-started _ TheTunnel_rifle -finished=true -show=false
            ,hide-multi _
                ,o QuestInventoryItemDI Yakup_decision_no
                ,o QuestInventoryItemDI Yakup_decision_yes
                ,o ModelObject Rifle
        path
             ,cnd-quest-started _ TheTunnel_machete -finished=true -show=false
             ,hide-multi _
                 ,o QuestInventoryItemDI Yakup_decision_no
                 ,o QuestInventoryItemDI Yakup_decision_yes 
                 ,o ModelObject Machete 
    ,player-block-move _ false

There are two hidden quests that wait for player response also:

quest TheTunnel_machete -parent=TheTunnel_YakupTalk -reward_set=EncExperienceNormal
    ,take _ QuestInventoryItemDI Yakup_decision_yes -show=false
    ,give-weapon _ Melee_MacheteB2
    ,reward _ yakup
quest TheTunnel_rifle -parent=TheTunnel_YakupTalk
   ,take _ QuestInventoryItemDI Yakup_decision_no -show=false
   ,hide _ ModelObject dead_survivors::RifleAmmo
   ,give-weapon _ Bundle_Rifle_A

This is the base concept of alternative paths. Not all events start from taking the objects so I crated option that starts when player is in location using SensorGoto. And here comes the tricky part!

dawud

Using flag m_QEnableSate that can disable or enable object I can control when to enable SensorGoTo. So even if player were in sensor area few times the action wont trigger until i will enable it. This can be used as a boolean variable. For example, player didn’t help Dawud so I enable¬†SensorGoTo TheTunnel_Dawud_Fail (which is size as a playable area) that triggers actions for infected Dawud:

quest TheTUnnel_Dawud_Zombie -parent=TheTunnel_Dawud
    ,goto _ SensorGoTo TheTunnel_Dawud_Fail -show=false -- player failed to help dawud
    ,goto _ HumanAI Dawud -distance=-20 -show=false -- player enters the sewers
    ,set _ DoorDI Doors_003 -state=closed -- closing doors
    ,enable _ AISpawnBoxNumber TheTunnel_Dawud_spanwer_01 -- spawn infected viral
    ,use _ DoorDI Doors_003 -state=opened -show=false -- wait untill player opens the door
    ,kill _ AISpawnBoxNumber TheTunnel_Dawud_spanwer_01 -show=false -- be sure that player kills dawud (this will disable spawner and he won't respawn)

Using this ‘trick’ i set objectives for the player and control all events in the quest. Here is main part of quest system that control objectives:

    quest TheTunnel2 -parent=TheTunnel  -glued=true -final=true
        ,OR _  
            path
                ,use _ PhysicalSwitchDI TheTunnel_swith_01 -state=off -show=false
                ,OR _
                    path
                        ,cnd-quest-started _ TheTUnnel_SurvivorsAreDead -finished=true
                    path
                        ,cnd-quest-started _ TheTunnel_WalkingSurvivors -finished=true
                        ,goto _ SensorGoTo TheTunnel_blockEnd -show=false
                    path
                        ,show-multi _
                            ,o QuestInventoryItemDI Elevator_decision_no
                            ,o QuestInventoryItemDI Elevator_decision_yes
                        ,player-block-move _ -block=true
                        ,OR _
                            path
                                ,take _ QuestInventoryItemDI Elevator_decision_no
                            path
                                ,take _ QuestInventoryItemDI Elevator_decision_yes
                                ,hide-multi _
                                    ,o QuestInventoryItemDI Elevator_decision_no
                                    ,o QuestInventoryItemDI Elevator_decision_yes
                                ,player-block-move _ -block=false    
                                ,cnd-quest-started _ TheTunnel_WalkingSurvivors -finished=true
                                ,disable _ SensorGoTo TheTunnel_blockEnd
                                ,set _ PhysicalSwitchDI TheTunnel_swith_01 -state=on
                                ,use _ PhysicalSwitchDI TheTunnel_swith_01 -state=off
                ,player-block-move _ -block=false
                ,hide-multi _
                    ,o QuestInventoryItemDI Elevator_decision_no
                    ,o QuestInventoryItemDI Elevator_decision_yes
                ,wait _ 2
            path
                ,siblings _ -show=true  -count=13
                ,semaphore _ 
            path
                ,goto _ SensorGoTo FindOutOfSewers -show=false
                ,BLOCK _ -obj=<>
                    ,cnd-quest-started _ TheTUnnel_KillVolatiles -finished=true
                ,OR _
                    path
                        ,cnd-quest-started _ TheTunnel_WalkingSurvivors -finished=true
                    path   
                        ,BLOCK _ -obj=<>
                            ,cnd-quest-started _ TheTUnnel_SurvivorsAreDead -finished=true
                        ,BLOCK _ -obj=<>
                            ,wait _ 15
                        ,semaphore _ 
                        
                ,BLOCK _ -obj=<>
                    ,wait _ 15
                ,semaphore _ 
            path
                ,cnd-quest-started _ TheTunnel_Antizine -finished=true
                ,OR _ -obj=<>
                    path
                        ,cnd-quest-started _ TheTunnel_Tahir_Yes -finished=true
                    path
                        ,cnd-quest-started _ TheTunnel_Tahir_Maybe -finished=true
                    path
                        ,cnd-quest-started _ TheTunnel_Tahir_No -finished=true
                ,OR _
                    path
                        ,OR _
                            path
                                ,cnd-quest-started _ TheTunnel_Tahir_Yes -finished=true
                            path
                                ,cnd-quest-started _ TheTunnel_Tahir_Maybe -finished=true
                        ,BLOCK _ -obj=<>
                            -- ,goto _ SensorGoTo TheTunnel_Tahir__01_TahirGotAntizine -show=false                             
                            ,cnd-quest-started _ TheTunnel_TahirGotAntizine -finished=true
                        ,BLOCK _ -obj=<>
                            ,wait _ 15
                        ,semaphore _
                    path
                        ,cnd-quest-started _ TheTunnel_Tahir_No -finished=true
                        ,BLOCK _ -obj=<>
                            ,cnd-quest-started _ TheTunnel_fightwithtahirs -finished=true
                        ,BLOCK _ -obj=<>
                            ,wait _ 15
                        ,semaphore _
            path
                ,cnd-quest-started _ TheTunnel_Dawud -finished=true
                ,OR _ -obj=<>
                    -- path
                        -- ,cnd-quest-started _ TheTunnel_Valve2 -finished=true
                    path
                        ,cnd-quest-started _ TheTunnel_Dawud_Maybe -finished=true
                    path
                        ,cnd-quest-started _ TheTunnel_Dawud_No -finished=true
                    path
                        ,cnd-quest-started _ TheTunnel_Dawud_Yes -finished=true
                ,OR _
                    -- path
                        -- ,cnd-quest-started _ TheTunnel_Valve2 -finished=true
                    path
                        ,OR _ -- -obj=<>
                            path
                                ,cnd-quest-started _ TheTunnel_Dawud_Maybe -finished=true
                            path
                                ,cnd-quest-started _ TheTunnel_Dawud_Yes -finished=true
                        
                    path
                        ,cnd-quest-started _ TheTunnel_Dawud_No -finished=true
                        ,semaphore _ 
                ,OR _ -obj=<>
                    -- path
                        -- ,cnd-quest-started _ TheTunnel_Valve2 -finished=true
                    path
                        ,cnd-quest-started _ TheTunnel_Dawud_Yes -finished=true
                    path
                        ,cnd-quest-started _ TheTunnel_Dawud2 -finished=true
                    path
                        ,goto _ SensorGoTo TheTunnel_Dawud_Fail -show=false
                        ,cnd-quest-started _ TheTUnnel_Dawud_Zombie -finished=true
                ,OR _
                    path
                        ,goto _ SensorGoTo TheTunnel_Dawud_NotFail -show=false
                    path
                        ,goto _ SensorGoTo TheTunnel_Dawud_Fail -show=false
                        ,cnd-quest-started _ TheTUnnel_Dawud_Zombie -finished=true
                        ,BLOCK _ -obj=<>
                            ,wait _ 15
                        ,semaphore _ 
                ,BLOCK _ -obj=<>
                    ,wait _ 15
                ,semaphore _
                    
            path
                ,BLOCK _ -obj=<>
                    ,cnd-quest-started _ TheTunnel_YakupTalk -finished=true
                ,BLOCK _ -obj=<>
                    ,OR _ 
                        ,area ZoneBox ChooseWeapon
                        path
                            ,cnd-quest-started _ TheTunnel_YakupTalk2 -finished=true
                ,BLOCK _ -obj=<>
                    ,use _ DoorDI TunnelDoor -state=opened
                    ,enable _ SpawnPoint TheTunnel_sp_02
                ,AND _ -obj=<>   
                    ,area ZoneBox Sewers
                    path
                        ,goto _ SensorGoTo FindOutOfSewers -show=false
                ,BLOCK _ -obj=<>   
                    ,wait _ 15
                ,semaphore _ 

And thats it! If you have any quetions you can write them in comments or leave a message.

Comments

comments