[Orxonox-commit 6030] r10689 - code/branches/campaignHS15/data/levels

paulsc at orxonox.net paulsc at orxonox.net
Sun Oct 25 01:26:45 CEST 2015


Author: paulsc
Date: 2015-10-25 01:26:44 +0200 (Sun, 25 Oct 2015)
New Revision: 10689

Modified:
   code/branches/campaignHS15/data/levels/Campaign1.oxw
Log:
Made further improvements to events and quests. Some things need fixing though, see comments.

Modified: code/branches/campaignHS15/data/levels/Campaign1.oxw
===================================================================
--- code/branches/campaignHS15/data/levels/Campaign1.oxw	2015-10-24 20:51:18 UTC (rev 10688)
+++ code/branches/campaignHS15/data/levels/Campaign1.oxw	2015-10-24 23:26:44 UTC (rev 10689)
@@ -27,23 +27,29 @@
 
     <?lua include("includes/notifications.oxi") ?>
     <NotificationQueueCEGUI
-      name="narrative"
-      targets="simpleNotification"
-      size=3
-      displayTime=3.9
-      position="0.15, 0, 0.1, 0"
-      fontSize="23"
-      fontColor="0.3, 1, 0.2, 0.8"
-      alignment="HorzCentred"
-      displaySize="0.7, 0, 0, 0"
-      />
+        name="narrative"
+        targets="simpleNotification"
+        size=3
+        displayTime=3.9
+        position="0.15, 0, 0.1, 0"
+        fontSize="23"
+        fontColor="0.3, 1, 0.2, 0.8"
+        alignment="HorzCentred"
+        displaySize="0.7, 0, 0, 0"
+    />
 
+    <!-- GLOBAL LUA VARIABLES -->
+    <?lua
+        waves = 3
+        enemies = 5
+    ?>
+
     <Scene
         ambientlight = "0.8, 0.8, 0.8"
         skybox = "Orxonox/Starbox"
     >
 
-    <SpawnPoint name="PlayerSpawn" team=1 position="0,-50,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff2 />
+    <SpawnPoint name="playerSpawn" team=1 position="0,-50,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff2 />
 
     <WorldAmbientSound source="Earth.ogg" looping="true" playOnLoad="true" />
 
@@ -57,10 +63,13 @@
             <QuestHint id="quest1hint1" />
         </hints>
         <complete-effects>
+            <!-- Quest 2 not made as of yet
             <AddQuest questId="quest2" />
             <AddQuest questId="quest2.1" />
             <AddQuest questId="quest2.2" />
             <AddQuest questId="quest2.3" />
+            -->
+            <AddQuest questId="quest3" />
         </complete-effects>
     </GlobalQuest>
 
@@ -152,17 +161,81 @@
         Usable events and triggers:
         _spawntrigger
         _reachedA
-        _wave<1|2|3>
+        _wave<k>
+        _killedEnemy<k>.<i>
+        _waveClear<k>
     -->
 
     <EventMultiTrigger name="spawntrigger">
         <events>
             <trigger>
-                <EventListener event="PlayerSpawn" />
+                <EventListener event="playerSpawn" />
             </trigger>
         </events>
     </EventMultiTrigger>
 
+    <DistanceTrigger name="reachedA" position="2494,-1667,0" distance=200 target="SpaceShip" beaconMode="exclude" targetname="NPC" stayactive=true />
+
+    <EventMultiTrigger name="wave1" activations="1" stayactive="true" >
+        <events>
+            <trigger>
+                <EventListener event="reachedA" />
+            </trigger>
+        </events>
+    </EventMultiTrigger>
+
+    <!-- Recursive helper function for the end-of-wave events. F*ck the event system, seriously. -->
+    <?lua
+    function enemyTriggerRecursor(i, k)
+    if i > 0 then
+    return [[
+    <EventTrigger name=killedEnemy]] .. k .. [[.]] .. i .. [[ activations=1 stayactive=true delay=0.1>
+        <events>
+            <trigger>
+                <EventListener event=attackers]] .. k .. [[ />
+            </trigger>
+        </events>
+        ]] .. enemyTriggerRecursor(i-1, k) .. [[
+    </EventTrigger>
+    ]]
+    else return ""
+    end
+    end
+    ?>
+    <!-- Actual recursive Event(s) for the respective waves. -->
+    <?lua
+    for k = 1, waves, 1
+    do
+    print(enemyTriggerRecursor(enemies,k))
+    ?>
+    <EventMultiTrigger name="waveClear<?lua print(k) ?>" delay=4.0>
+        <events>
+            <trigger>
+                <EventListener event="killedEnemy<?lua print(k .. [[.]] .. enemies) ?>" />
+            </trigger>
+        </events>
+    </EventMultiTrigger>
+    <?lua end ?>
+
+    <!-- This trigger needs fixing, as endMission can only be called by a Pawn Distance Trigger. Herpaderp -->
+    <EventMultiTrigger name="missionFailed" target="Pawn" stayActive="true" delay=1.5>
+        <events>
+            <trigger>
+                <EventListener event="transporter" />
+            </trigger>
+        </events>
+    </EventMultiTrigger>
+
+    <Script code="Mission endMission fail" onLoad="false" times="1">
+        <events>
+            <trigger>
+                <EventListener event="missionFailed" />
+            </trigger>
+        </events>
+    </Script>
+
+    <!--QUEST EFFECT BEACONS -->
+
     <QuestEffectBeacon times=1>
         <effects>
             <AddQuest questId="quest1" />
@@ -174,16 +247,28 @@
         </events>
     </QuestEffectBeacon>
 
-    <DistanceTrigger name="reachedA" position="2494,-1667,0" distance=200 target="SpaceShip" beaconMode="exclude" targetname="NPC" stayactive=true />
-
-    <EventMultiTrigger name="wave1">
+    <QuestEffectBeacon times=1>
+        <effects>
+            <CompleteQuest questId="quest1" />
+        </effects>
         <events>
-            <trigger>
+            <execute>
                 <EventListener event="reachedA" />
-            </trigger>
+            </execute>
         </events>
-    </EventMultiTrigger>
+    </QuestEffectBeacon>
 
+    <QuestEffectBeacon times=1>
+        <effects>
+            <CompleteQuest questId="quest3" />
+        </effects>
+        <events>
+            <execute>
+                <EventListener event="waveClear1" />
+            </execute>
+        </events>
+    </QuestEffectBeacon>
+
     <!--NOTIFICATIONS -->
 
     <SimpleNotification broadcast="true" message="Welcome, Commander. Please report at Station A">
@@ -214,6 +299,24 @@
         </events>
     </SimpleNotification>
 
+    <SimpleNotification broadcast="true" message="Phew, that was close! Well done, Commmander.">
+        <events>
+            <trigger>
+                <EventListener event="waveClear1" />
+                <EventListener event="waveClear2" />
+                <EventListener event="waveClear3" />
+            </trigger>
+        </events>
+    </SimpleNotification>
+
+    <SimpleNotification broadcast="true" message="It's over... we failed. Retreat!">
+        <events>
+            <trigger>
+                <EventListener event="missionFailed" />
+            </trigger>
+        </events>
+    </SimpleNotification>
+
     <!--STRUCTURE -->
 
     <!-- A, Coordinates are approx. (cos(29pi/16), sin(29pi/16), 0)*3000 -->
@@ -250,12 +353,10 @@
 
     <!-- Enemies. Outer loop defines waves, inner loop defines enemies in every wave. -->
     <?lua
-    waves = 5
     for k = 1, waves, 1
     do
     ?>
     <?lua
-    enemies = 5
     for i = 1, enemies, 1
     do
     x = math.cos(math.pi/8*(i+1))*1500




More information about the Orxonox-commit mailing list