Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/campaignHS15/data/levels/Campaign1.oxw @ 10689

Last change on this file since 10689 was 10689, checked in by paulsc, 9 years ago

Made further improvements to events and quests. Some things need fixing though, see comments.

File size: 14.4 KB
Line 
1<LevelInfo
2    name = "CampaignHS15 1"
3    description = "Protect the transporter!"
4    tags = "mission"
5    screenshot = "missionOne.png"
6/>
7
8<?lua
9    include("stats.oxo")
10    include("HUDTemplates3.oxo")
11    include("templates/lodInformation.oxt")
12?>
13
14<?lua
15    include("templates/spaceshipAssff2.oxt")
16    include("templates/spaceshipPirate.oxt")
17    include("templates/spaceshipEscort.oxt")
18    include("templates/spaceshipRing.oxt")
19    include("templates/spaceshipSwallow.oxt")
20    include("templates/spaceshipTransporter.oxt")
21?>
22
23<Level gametype = "Mission">
24    <templates>
25        <Template link="lodtemplate_default" />
26    </templates>
27
28    <?lua include("includes/notifications.oxi") ?>
29    <NotificationQueueCEGUI
30        name="narrative"
31        targets="simpleNotification"
32        size=3
33        displayTime=3.9
34        position="0.15, 0, 0.1, 0"
35        fontSize="23"
36        fontColor="0.3, 1, 0.2, 0.8"
37        alignment="HorzCentred"
38        displaySize="0.7, 0, 0, 0"
39    />
40
41    <!-- GLOBAL LUA VARIABLES -->
42    <?lua
43        waves = 3
44        enemies = 5
45    ?>
46
47    <Scene
48        ambientlight = "0.8, 0.8, 0.8"
49        skybox = "Orxonox/Starbox"
50    >
51
52    <SpawnPoint name="playerSpawn" team=1 position="0,-50,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff2 />
53
54    <WorldAmbientSound source="Earth.ogg" looping="true" playOnLoad="true" />
55
56    <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
57
58    <!--QUEST DEFINITIONS-->
59
60    <GlobalQuest id="quest1">
61        <QuestDescription title="Reach the Station!" description="" failMessage="" completeMessage="" />
62        <hints>
63            <QuestHint id="quest1hint1" />
64        </hints>
65        <complete-effects>
66            <!-- Quest 2 not made as of yet
67            <AddQuest questId="quest2" />
68            <AddQuest questId="quest2.1" />
69            <AddQuest questId="quest2.2" />
70            <AddQuest questId="quest2.3" />
71            -->
72            <AddQuest questId="quest3" />
73        </complete-effects>
74    </GlobalQuest>
75
76    <GlobalQuest id="quest2">
77        <QuestDescription title="Prepare to fight the Wave" description="" failMessage="" completeMessage="" />
78        <hints>
79        </hints>
80        <subquests>
81            <GlobalQuest id="quest2.1">
82                <QuestDescription title="Get a better Spaceship" description="" failMessage="" completeMessage="" />
83            </GlobalQuest>
84            <GlobalQuest id="quest2.2">
85                <QuestDescription title="Get some Pickups" description="" failMessage="" completeMessage="" />
86            </GlobalQuest>
87            <GlobalQuest id="quest2.3">
88                <QuestDescription title="Meet your Unit" description="" failMessage="" completeMessage="" />
89            </GlobalQuest>
90        </subquests>
91        <complete-effects>
92            <AddQuest questId="quest3" />
93        </complete-effects>
94    </GlobalQuest>
95
96    <GlobalQuest id="quest3">
97        <QuestDescription title="Fight the first Wave" description="" failMessage="" completeMessage="" />
98        <hints>
99        </hints>
100        <complete-effects>
101            <AddQuest questId="quest4" />
102            <AddQuest questId="quest4.1" />
103            <AddQuest questId="quest4.2" />
104        </complete-effects>
105    </GlobalQuest>
106
107    <GlobalQuest id="quest4">
108        <QuestDescription title="Prepare for the next Wave" description="" failMessage="" completeMessage="" />
109        <hints>
110        </hints>
111        <subquests>
112            <GlobalQuest id="quest4.1">
113                <QuestDescription title="Get to the Defense Station" description="" failMessage="" completeMessage="" />
114            </GlobalQuest>
115            <GlobalQuest id="quest4.2">
116                <QuestDescription title="Find the turret" description="" failMessage="" completeMessage="" />
117            </GlobalQuest>
118        </subquests>
119        <complete-effects>
120            <AddQuest questId="quest5" />
121        </complete-effects>
122    </GlobalQuest>
123
124    <GlobalQuest id="quest5">
125        <QuestDescription title="Fight the Hord!" description="" failMessage="" completeMessage="" />
126        <hints>
127        </hints>
128        <complete-effects>
129            <AddQuest questId="quest6" />
130            <AddQuest questId="quest6.1" />
131            <AddQuest questId="quest6.2" />
132        </complete-effects>
133    </GlobalQuest>
134
135    <GlobalQuest id="quest6">
136        <QuestDescription title="Get back to the Transporter" description="" failMessage="" completeMessage="" />
137        <hints>
138        </hints>
139        <subquests>
140            <GlobalQuest id="quest6.1">
141                <QuestDescription title="Collect the local Pickups" description="" failMessage="" completeMessage="" />
142            </GlobalQuest>
143            <GlobalQuest id="quest6.2">
144                <QuestDescription title="Use Portal to the Transporter" description="" failMessage="" completeMessage="" />
145            </GlobalQuest>
146        </subquests>
147        <complete-effects>
148            <AddQuest questId="quest7" />
149        </complete-effects>
150    </GlobalQuest>
151
152    <GlobalQuest id="quest7">
153        <QuestDescription title="Fight the final Wave" description="" failMessage="" completeMessage="" />
154        <hints>
155        </hints>
156        <subquests>
157        </subquests>
158    </GlobalQuest>
159
160    <!--EVENTS AND TRIGGERS
161        Usable events and triggers:
162        _spawntrigger
163        _reachedA
164        _wave<k>
165        _killedEnemy<k>.<i>
166        _waveClear<k>
167    -->
168
169    <EventMultiTrigger name="spawntrigger">
170        <events>
171            <trigger>
172                <EventListener event="playerSpawn" />
173            </trigger>
174        </events>
175    </EventMultiTrigger>
176
177    <DistanceTrigger name="reachedA" position="2494,-1667,0" distance=200 target="SpaceShip" beaconMode="exclude" targetname="NPC" stayactive=true />
178
179    <EventMultiTrigger name="wave1" activations="1" stayactive="true" >
180        <events>
181            <trigger>
182                <EventListener event="reachedA" />
183            </trigger>
184        </events>
185    </EventMultiTrigger>
186
187    <!-- Recursive helper function for the end-of-wave events. F*ck the event system, seriously. -->
188    <?lua
189    function enemyTriggerRecursor(i, k)
190    if i > 0 then
191    return [[
192    <EventTrigger name=killedEnemy]] .. k .. [[.]] .. i .. [[ activations=1 stayactive=true delay=0.1>
193        <events>
194            <trigger>
195                <EventListener event=attackers]] .. k .. [[ />
196            </trigger>
197        </events>
198        ]] .. enemyTriggerRecursor(i-1, k) .. [[
199    </EventTrigger>
200    ]]
201    else return ""
202    end
203    end
204    ?>
205    <!-- Actual recursive Event(s) for the respective waves. -->
206    <?lua
207    for k = 1, waves, 1
208    do
209    print(enemyTriggerRecursor(enemies,k))
210    ?>
211    <EventMultiTrigger name="waveClear<?lua print(k) ?>" delay=4.0>
212        <events>
213            <trigger>
214                <EventListener event="killedEnemy<?lua print(k .. [[.]] .. enemies) ?>" />
215            </trigger>
216        </events>
217    </EventMultiTrigger>
218    <?lua end ?>
219
220    <!-- This trigger needs fixing, as endMission can only be called by a Pawn Distance Trigger. Herpaderp -->
221    <EventMultiTrigger name="missionFailed" target="Pawn" stayActive="true" delay=1.5>
222        <events>
223            <trigger>
224                <EventListener event="transporter" />
225            </trigger>
226        </events>
227    </EventMultiTrigger>
228
229    <Script code="Mission endMission fail" onLoad="false" times="1">
230        <events>
231            <trigger>
232                <EventListener event="missionFailed" />
233            </trigger>
234        </events>
235    </Script>
236
237    <!--QUEST EFFECT BEACONS -->
238
239    <QuestEffectBeacon times=1>
240        <effects>
241            <AddQuest questId="quest1" />
242        </effects>
243        <events>
244            <execute>
245                <EventListener event="spawntrigger" />
246            </execute>
247        </events>
248    </QuestEffectBeacon>
249
250    <QuestEffectBeacon times=1>
251        <effects>
252            <CompleteQuest questId="quest1" />
253        </effects>
254        <events>
255            <execute>
256                <EventListener event="reachedA" />
257            </execute>
258        </events>
259    </QuestEffectBeacon>
260
261    <QuestEffectBeacon times=1>
262        <effects>
263            <CompleteQuest questId="quest3" />
264        </effects>
265        <events>
266            <execute>
267                <EventListener event="waveClear1" />
268            </execute>
269        </events>
270    </QuestEffectBeacon>
271
272    <!--NOTIFICATIONS -->
273
274    <SimpleNotification broadcast="true" message="Welcome, Commander. Please report at Station A">
275        <events>
276            <trigger>
277                <EventListener event="spawntrigger" />
278            </trigger>
279        </events>
280    </SimpleNotification>
281
282    <SimpleNotification broadcast="true" message="An enemy wave is approaching the shuttle!">
283        <events>
284            <trigger>
285                <EventListener event="wave1" />
286                <EventListener event="wave2" />
287                <EventListener event="wave3" />
288            </trigger>
289        </events>
290    </SimpleNotification>
291
292    <SimpleNotification broadcast="true" message="yippie kai yay motherf*cker!">
293        <events>
294            <trigger>
295                <EventListener event="attackers1" />
296                <EventListener event="attackers2" />
297                <EventListener event="attackers3" />
298            </trigger>
299        </events>
300    </SimpleNotification>
301
302    <SimpleNotification broadcast="true" message="Phew, that was close! Well done, Commmander.">
303        <events>
304            <trigger>
305                <EventListener event="waveClear1" />
306                <EventListener event="waveClear2" />
307                <EventListener event="waveClear3" />
308            </trigger>
309        </events>
310    </SimpleNotification>
311
312    <SimpleNotification broadcast="true" message="It's over... we failed. Retreat!">
313        <events>
314            <trigger>
315                <EventListener event="missionFailed" />
316            </trigger>
317        </events>
318    </SimpleNotification>
319
320    <!--STRUCTURE -->
321
322    <!-- A, Coordinates are approx. (cos(29pi/16), sin(29pi/16), 0)*3000 -->
323    <StaticEntity name="statA" position="2494,-1667,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01>
324        <attached>
325            <Model position="0,0,0" mesh="cube.mesh" scale3D="40,40,40" />
326        </attached>
327        <collisionShapes>
328            <BoxCollisionShape position="0,0,0" halfExtents="10,10,10" />
329        </collisionShapes>
330    </StaticEntity>
331
332    <!-- B, Coordinates are approx. (-cos(29pi/16), sin(29pi/16), 0)*3000 -->
333    <StaticEntity name="statB" position="-2494,-1667,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01>
334        <attached>
335            <Model position="0,0,0" mesh="cube.mesh" scale3D="40,40,40" />
336        </attached>
337        <collisionShapes>
338            <BoxCollisionShape position="0,0,0" halfExtents="10,10,10" />
339        </collisionShapes>
340    </StaticEntity>
341
342    <!-- C -->
343    <StaticEntity name="statC" position="0,-1400,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01>
344        <attached>
345            <Model position="0,0,0" mesh="cube.mesh" scale3D="40,40,40" />
346        </attached>
347        <collisionShapes>
348            <BoxCollisionShape position="0,0,0" halfExtents="10,10,10" />
349        </collisionShapes>
350    </StaticEntity>
351
352    <!--ELEMENTS -->
353
354    <!-- Enemies. Outer loop defines waves, inner loop defines enemies in every wave. -->
355    <?lua
356    for k = 1, waves, 1
357    do
358    ?>
359    <?lua
360    for i = 1, enemies, 1
361    do
362    x = math.cos(math.pi/8*(i+1))*1500
363    y = math.sin(math.pi/8*(i+1))*1500
364    ?>
365    <SpaceShip visible=false active=false name="attackers<?lua print(k)?>" radarname="Attacker" position="<?lua print(x)?>,<?lua print(y)?>,<?lua print(math.pow(-1,i)*250) ?>" lookat="0,0,0" team=2>
366        <templates>
367            <Template link="spaceshippirate" />
368        </templates>
369        <events>
370            <visibility>
371                <EventListener event="wave<?lua print(k)?>" />
372            </visibility>
373            <activity>
374                <EventListener event="wave<?lua print(k)?>" />
375            </activity>
376        </events>
377        <attached>
378            <DistanceTriggerBeacon name="NPC" />
379        </attached>
380        <controller>
381            <WaypointPatrolController name="attackController" alertnessradius=50 team=1 active=false>
382                <waypoints>
383                    <Attacher target="transporter" deletewithparent=false />
384                </waypoints>
385                <events>
386                    <activity>
387                        <EventListener event="wave<?lua print(k)?>" />
388                    </activity>
389                </events>
390            </WaypointPatrolController>
391        </controller>
392    </SpaceShip>
393    <?lua end ?>
394    <?lua end ?>
395
396    <!-- Transporter, starting Point is near A, end Point near B, the circle parameters for the waypoints are: Center = (0, -887, 0), r = 2613 -->
397    <SpaceShip position="2450, -1667, 0" lookat="-2494, -1667, 0" team=1 name="transporter" radarname="Shuttle">
398        <templates>
399            <Template link="spaceshipTransporter" />
400        </templates>
401        <attached>
402            <DistanceTriggerBeacon name="NPC" />
403        </attached>
404        <controller>
405            <WaypointController accuracy=10>
406                <waypoints>
407                    <!-- A to B -->
408                    <?lua
409                    max = 5
410                    for i = 1, max, 1
411                    do
412                    x = math.cos(math.pi*(i+1)/8)*2613
413                    y = -math.sin(math.pi*(i+1)/8)*2613-887
414                    ?>
415                    <Model mesh="sphere.mesh" scale=100 position="<?lua print(x) ?>,<?lua print(y) ?>,0" />
416                    <?lua end ?>
417
418                    <!-- Return Point -->
419                    <Model mesh="sphere.mesh" scale=100 position="-2450, -1667, 0" />
420
421                    <!-- B to A -->
422                    <?lua
423                    max = 5
424                    for i = 1, max, 1
425                    do
426                    x = math.cos(math.pi*(max+2-i)/8)*2613
427                    y = -math.sin(math.pi*(max+2-i)/8)*2613-887
428                    ?>
429                    <Model mesh="sphere.mesh" scale=100 position="<?lua print(x) ?>,<?lua print(y) ?>,0" />
430                    <?lua end ?>
431
432                    <!-- Start Point -->
433                    <Model mesh="sphere.mesh" scale=100 position="2450,-1667,0" />
434                </waypoints>
435            </WaypointController>
436        </controller>
437    </SpaceShip>
438
439    </Scene>
440</Level>
Note: See TracBrowser for help on using the repository browser.