Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ai2/data/levels/missionOne.oxw @ 8875

Last change on this file since 8875 was 8875, checked in by jo, 13 years ago

Radar fix: pawns were not displayed when their visibility/activity changed from 'invisible' to 'visible'.

File size: 44.0 KB
Line 
1<LevelInfo
2 name = "Mission One"
3 description = "First guided steps in the orxonoxian universe."
4 tags = "singleplayer"
5/>
6
7<?lua
8  include("stats.oxo")
9  include("HUDTemplates3.oxo")
10  include("templates/lodInformation.oxt")
11  include("templates/spaceshipAssff.oxt")
12  include("templates/spaceshipPirate.oxt")
13  include("templates/spaceshipSpacecruiser.oxt")
14  include("templates/spaceshipTransporter.oxt")
15?>
16
17<?lua
18include("templates/pickupRepresentationTemplates.oxt")
19?>
20
21<Level
22 name         = "Mission One"
23 description  = "How to steer a spaceship."
24>
25  <templates>
26    <Template link=lodtemplate_default />
27  </templates>
28  <?lua include("includes/notifications.oxi") ?>
29
30  <NotificationQueueCEGUI
31    name="narrative"
32    targets="simpleNotification"
33    size=3
34    displayTime=3.9
35    position="0.2, 0, 0.1, 0"
36    fontSize="23"
37    fontColor="0.3, 1, 0.2, 0.8"
38    alignment="HorzCentred"
39    displaySize="0.6, 0, 0, 0"
40    />
41  <Scene
42    ambientlight = "0.8, 0.8, 0.8"
43    skybox       = "Orxonox/Starbox"
44  >
45    <?lua
46      include("includes/pickups.oxi")
47    ?>
48
49  <WorldAmbientSound source="Mars.ogg" looping="true" playOnLoad="true" /> <!-- AlphaCentauri.ogg-->
50
51    <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"/>
52    <SpawnPoint team=0 position="800,700,600" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
53
54
55<!-- END OF INCLUDES & NECESSARITIES -->
56
57    <LocalQuest id="missionOne.basicFlying">
58        <QuestDescription title="Flying" description="INSERT STORY HERE. The first thing you have to learn is flying. Use 'W' to accelerate and steer with your mouse. In order to know where to fly there are two detection systems. The navigation markers highlite important objects directly in the level. If you can't directly see those objects, there are arrows which indicate how you have to steer. The second device is the radar. There you get an overview of all objects near you. In order to find an object that you spotted on radar, you have to steer in a way that the corresponding dot is in the center of the radar. Now you can find the corresponding object straight ahead. Your goal is to fly to the first waypoint. It's that orange dot on the radar." failmessage="" completeMessage="Well done." />
59        <!--subquests>
60            <Quest id ="questId1" />
61            <Quest id="questIdn" />
62        </subquests>
63        <hints>
64            <QuestHint id="hintId1" /> //A list of n QuestHints, see QuestHint for the full XML representation of those.
65            ...
66            <QuestHint id="hintIdn" />
67        </hints>
68        <fail-effects>
69            <QuestEffect /> //A list of QuestEffects, invoked when the Quest is failed, see QuestEffect for the full XML representation.
70            ...
71            <QuestEffect />
72        </fail-effects>
73        <complete-effects>
74            <QuestEffect /> //A list of QuestEffects, invoked when the Quest is completed, see QuestEffect for the full XML representation.
75            ...
76            <QuestEffect />
77        </complete-effects-->
78    </LocalQuest>
79
80    <LocalQuest id="missionOne.weaponsystemI">
81        <QuestDescription title="Weaponsystem I" description="INSERT STORY HERE. Test your four different weapons on the four boxes. The four weapons are laser (left click), plasma (right click), self targeting rockets (middle click) and manual rockets (press 'T'). Attention if you use manual rockets: Press 'T' only once to start the rocket. If you miss your target you can get out of the rocket, by clicking or pressing 'T' once more." failmessage="" completeMessage="All right." />
82        <!--subquests>
83            <Quest id ="questId1" />
84            <Quest id="questIdn" />
85        </subquests>
86        <hints>
87            <QuestHint id="hintId1" />
88           
89"The laser is a standard weapon. It is fast and precise but does not deal much damage."
90"That was the lightning gun. Its plasma munition is quite slow, but a normal spaceship can't take more than three hits of such a strong weapon. That could be your favourite weapon for close range combat or if you want to hit a really slow enemy."
91"The target seeking rockets follow slow targets on their own."
92"Task complete. Manual rockets are your most powerful weapon. But since you have to steer it to your target yourself, you will leave your spaceship unprotected for a while. The total amount of both manual and target seeking rockets is limited to 10."
93
94
95            <QuestHint id="hintIdn" />
96        </hints>
97        <fail-effects>
98            <QuestEffect />
99            ...
100            <QuestEffect />
101        </fail-effects>
102        <complete-effects>
103            <QuestEffect />
104            ...
105            <QuestEffect />
106        </complete-effects-->
107    </LocalQuest>
108
109
110
111
112
113        <QuestEffectBeacon position="800,700,600" times="1">
114            <effects>
115                <AddQuest questId="missionOne.basicFlying" />
116            </effects>
117            <events>
118                <execute>
119                    <EventListener event="questStart"/>
120                </execute>
121            </events>
122            <attached>
123                <DistanceTrigger name="questStart" position="0,0,0" distance="50" target="Pawn" beaconMode="identify" targetname="PlayerDistanceTrigger" delay="2" />
124            </attached>
125        </QuestEffectBeacon>
126
127
128<!-- TUTORIAL-TODO: -->
129<!-- 1. Flying & manoeuvring (basic flying, using pickups, forcefields, docks & portals) --> <!-- "W","S","SPACE"-->
130<!-- 2. Aiming & Weapons (static targets, moving targets, dangerous targets)--> <!-- 3 Mouse buttons + "T"-->
131<!-- 3. Game handling (quests, knowing when a game is over :-), pausing, chat, ... ) --> <!--"F3", "F2", "ESC" -->
132<!-- 4. Extras (other things to discover) --> <!-- "Q","E","A","D","C", "CTRL", "", ... -->
133
134<!--
135
136
137
138"Lets start flying. Use W to accelerate and S to brake. The goal is to reach the spacestation which is displayed on the radar. If you want to be faster you can temporarily boost by hitting additionally the space button. If you use too much boost your engine heats up and you won't be able to use boost for a while. By the way boost could be useful during combat .."
139
140-->
141
142    <DistanceTrigger name="spawndelaytrigger0" position="800,700,600" target="Pawn" distance=10 stayActive="true"/>
143    <SimpleNotification message="Welcome to the Orxonox Tutorial.">
144        <events>
145            <trigger>
146                <EventListener event="spawndelaytrigger0" />
147            </trigger>
148        </events>
149    </SimpleNotification>
150<!-------------------------------------- PART ZERO: How to fly --------------------------------------->
151
152
153
154
155
156
157
158
159
160
161
162<!-------------------------------------- PART ONE : Destroy boxes --------------------------------------->
163    <DistanceTrigger name="spawndelaytrigger1" position="-200,0,0" target="Pawn" distance=10 stayActive="true" delay=4 />
164    <SimpleNotification message="Destroy those four boxes.">
165        <events>
166            <trigger>
167                <EventListener event="spawndelaytrigger1" />
168            </trigger>
169        </events>
170    </SimpleNotification>
171
172    <DistanceTrigger name="spawndelaytrigger2" position="-200,0,0" target="Pawn" distance=10 stayActive="true" delay=8.1 />
173    <SimpleNotification message=" 1. Aim the a the red cycle.">
174        <events>
175            <trigger>
176                <EventListener event="spawndelaytrigger2" />
177            </trigger>
178        </events>
179    </SimpleNotification>
180
181    <DistanceTrigger name="spawndelaytrigger3" position="-200,0,0" target="Pawn" distance=10 stayActive="true" delay=12.2 />
182    <SimpleNotification message="2. Click! (hold the left mouse button)">
183        <events>
184            <trigger>
185                <EventListener event="spawndelaytrigger3" />
186            </trigger>
187        </events>
188    </SimpleNotification>
189
190<!-- @Objects: 4 boxes (uncontrolled pawns) -->
191                <Pawn health=30 position="0,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
192                    <attached>
193                        <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
194                    </attached>
195                    <collisionShapes>
196                        <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
197                    </collisionShapes>
198                </Pawn>
199
200                <Pawn health=30 position="0,100,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box visible="true">
201                    <!--events>
202                        <visibility>
203                            <EventListener event=spawndelaytrigger3 />
204                        </visibility>
205                   </events-->
206
207                    <attached>
208                        <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
209                    </attached>
210                    <collisionShapes>
211                        <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
212                    </collisionShapes>
213                </Pawn>
214                <Pawn health=30 position="0,200,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
215                    <attached>
216                        <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
217                    </attached>
218                    <collisionShapes>
219                        <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
220                    </collisionShapes>
221                </Pawn>
222                <Pawn health=30 position="0,300,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
223                    <attached>
224                        <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
225                    </attached>
226                    <collisionShapes>
227                        <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
228                    </collisionShapes>
229                </Pawn>
230
231<!-- @Triggers: boxtrigger1 <-> one   box   destroyed
232                boxtrigger2 <-> two   boxes destroyed
233                boxtrigger3 <-> three boxes destroyed
234                boxtrigger4 <-> four  boxes destroyed  -->
235    <EventTrigger name="boxtrigger4" activations="1" stayactive="true" delay=0.1>
236      <events>
237        <trigger>
238          <EventListener event="box" />
239        </trigger>
240      </events>
241      <EventTrigger name="boxtrigger3" activations="1" stayactive="true" delay=0.1>
242        <events>
243          <trigger>
244            <EventListener event="box" />
245          </trigger>
246        </events>
247        <EventTrigger name="boxtrigger2" activations="1" stayactive="true" delay=0.1>
248          <events>
249            <trigger>
250              <EventListener event="box" />
251            </trigger>
252          </events>
253          <EventTrigger name="boxtrigger1" activations="1" stayactive="true" delay=0.1>
254            <events>
255              <trigger>
256                <EventListener event="box" />
257              </trigger>
258            </events>
259          </EventTrigger>
260        </EventTrigger>
261      </EventTrigger>
262    </EventTrigger>
263
264
265  <SimpleNotification message="Right click on the next target." broadcast="true">
266        <events>
267            <trigger>
268                <EventListener event="boxtrigger1" />
269            </trigger>
270        </events>
271    </SimpleNotification>
272
273  <SimpleNotification message="Middle click on the next target." broadcast="true">
274        <events>
275            <trigger>
276                <EventListener event="boxtrigger2" />
277            </trigger>
278        </events>
279    </SimpleNotification>
280
281
282  <SimpleNotification message="Aim at the last target and press 'T'." broadcast="true">
283        <events>
284            <trigger>
285                <EventListener event="boxtrigger3" />
286            </trigger>
287        </events>
288    </SimpleNotification>
289
290  <SimpleNotification message="Fly towards the pirates. Press 'W'." broadcast="true">
291        <events>
292            <trigger>
293                <EventListener event="boxtrigger4" />
294            </trigger>
295        </events>
296    </SimpleNotification>
297
298
299<!--------------------------------------PART TWO: Moving targets --------------------------------------->
300    <DistanceTrigger name="movingtargets" position="0,500,0" target="Pawn" distance=180 stayActive="true" delay=2 />
301    <Billboard position="0,500,0" material="Examples/Flare" colour="0.5,0,0" scale=3/><!-- TODO: hide. -->
302    <SimpleNotification message="Try to hit the pirates while you are flying.">
303        <events>
304            <trigger>
305                <EventListener event=movingtargets />
306            </trigger>
307        </events>
308    </SimpleNotification>
309
310<!-- @Objects: 2 pirates moving in squares, nolethal -->
311                <SpaceShip position="0,2000,200" lookat="0,0,0" name="movingtarget" >
312                    <templates>
313                      <Template link=spaceshippirate />
314                    </templates>
315                    <controller>
316                      <WaypointController>
317                         <waypoints>
318                          <Model mesh="cube.mesh" scale=8 position="  0,1700,-200" />
319                          <Model mesh="cube.mesh" scale=8 position="  0,1700,-700" />
320                          <Model mesh="cube.mesh" scale=8 position="500,1700,-700" />
321                          <Model mesh="cube.mesh" scale=8 position="500,1700,-200" />
322                       </waypoints>
323                    </WaypointController>
324                  </controller>
325                </SpaceShip>
326
327                <SpaceShip position="0,2000,400" lookat="0,0,0" name="movingtarget">
328                  <templates>
329                    <Template link=spaceshippirate />
330                  </templates>
331                  <controller>
332                    <WaypointController>
333                      <waypoints>
334                        <Model mesh="cube.mesh" scale=8 position="  0,2400,1000" />
335                        <Model mesh="cube.mesh" scale=8 position="  0,2400, 500" />
336                        <Model mesh="cube.mesh" scale=8 position="500,2400, 500" />
337                        <Model mesh="cube.mesh" scale=8 position="500,2400,1000" />
338                      </waypoints>
339                    </WaypointController>
340                  </controller>
341                </SpaceShip>
342
343<!-- @Triggers: movingpirates1 <-> one  pirate  dead
344                movingpirates2 <-> both pirates dead  -->
345    <EventTrigger name="movingpirates2" activations="1" stayactive="true" delay=0.1>
346      <events>
347        <trigger>
348          <EventListener event="movingtarget" />
349        </trigger>
350      </events>
351      <EventTrigger name="movingpirates1" activations="1" stayactive="true" delay=0.1>
352        <events>
353          <trigger>
354            <EventListener event="movingtarget" />
355          </trigger>
356        </events>
357      </EventTrigger>
358    </EventTrigger>
359
360
361    <SimpleNotification message="Now get the other one."  broadcast="true">
362        <events>
363            <trigger>
364                <EventListener event="movingpirates1" />
365            </trigger>
366        </events>
367    </SimpleNotification>
368
369    <SimpleNotification message="Fly towards the space station (grey dot)."  broadcast="true">
370        <events>
371            <trigger>
372                <EventListener event="movingpirates2" />
373            </trigger>
374        </events>
375    </SimpleNotification>
376
377
378
379<!--------------------------------------PART THREE: the space station --------------------------------------->
380    <DistanceTrigger name="duball1" position="-1000,-300,700" target="Pawn" distance=700 stayActive="true" delay=1 />
381    <SimpleNotification message="Welcome to the Duball Space Station!">
382        <events>
383            <trigger>
384                <EventListener event=duball1 />
385            </trigger>
386        </events>
387    </SimpleNotification>
388
389    <DistanceTrigger name="duball2" position="-1000,-300,700" target="Pawn" distance=700 stayActive="true" delay=5 />
390    <SimpleNotification message="Warning: Something big is coming.">
391        <events>
392            <trigger>
393                <EventListener event=duball2 />
394            </trigger>
395        </events>
396    </SimpleNotification>
397
398    <!--DistanceTrigger name="duball3" position="-1000,-300,700" target="Pawn" distance=700 stayActive="true" delay=9 />
399    <SimpleNotification message="Get some help,  before it is too late.">
400        <events>
401            <trigger>
402                <EventListener event=duball3 />
403            </trigger>
404        </events>
405    </SimpleNotification-->
406
407    <DistanceTrigger name="duball4" position="-1000,-300,700" target="Pawn" distance=700 stayActive="true" delay=10 />
408    <SimpleNotification message="Use the portals to get help. (grey dot)">
409        <events>
410            <trigger>
411                <EventListener event=duball4 />
412            </trigger>
413        </events>
414    </SimpleNotification>
415
416
417<!-- @Objects: DuBall Space Station, (no pawn!) -->
418    <StaticEntity position="-1000,-300,700" collisionType=static>
419      <attached>
420        <Model scale=13 mesh="DuBall1.mesh" position = "-100,0,0"/>
421        <Model scale=13 mesh="DuBall2.mesh" position = "100,0,0"/>
422        <Billboard scale=7 material="Examples/Flare" colour="0.5,0.5,0.5" position = "-100,0,0"/>
423        <Billboard scale=7 material="Examples/Flare" colour="0.5,0.5,0.5" position = "100,0,0"/>       
424      </attached>
425      <collisionShapes>
426        <SphereCollisionShape radius="80"            position = "-100,0,0" />
427        <SphereCollisionShape radius="120"           position = "100,0,0" />
428        <BoxCollisionShape    halfExtents="90,25,45" position = "-155,0,40" />
429      </collisionShapes>
430    </StaticEntity>
431
432
433<!-- @Objects: PORTAL: from DuBall to HydroHarvester  -->
434    <Template name=PortalDefault>
435        <PortalEndPoint>
436            <attached>
437                <Billboard material="Portals/Default" />
438            </attached>
439        </PortalEndPoint>
440    </Template>
441
442    <PortalEndPoint position="-1400,-500,800" id="1" distance="50" target="MobileEntity" design="PortalDefault">
443          <events>
444            <activity>
445              <Trigger mode="or" activations="2">
446                <Trigger mode="and" activations="1">
447                  <EventTrigger>
448                    <events>
449                      <trigger>
450                        <EventListener event="movingpirates2" />
451                      </trigger>
452                    </events>
453                  </EventTrigger>
454                  <EventTrigger invert=true>
455                    <events>
456                      <trigger>
457                        <EventListener event="toHydroFarmer" />
458                      </trigger>
459                    </events>
460                  </EventTrigger>
461                </Trigger>
462                <Trigger mode="and" activations="1">
463                  <EventTrigger>
464                    <events>
465                      <trigger>
466                        <EventListener event="ondock" />
467                      </trigger>
468                    </events>
469                  </EventTrigger>
470                  <EventTrigger invert=true>
471                    <events>
472                      <trigger>
473                        <EventListener event="attack" />
474                      </trigger>
475                    </events>
476                  </EventTrigger>
477                </Trigger>
478                <EventTrigger>
479                  <events>
480                    <trigger>
481                      <EventListener event="HydroFarmer" />
482                    </trigger>
483                  </events>
484                </EventTrigger>
485              </Trigger>
486            </activity>
487          </events>
488    </PortalEndPoint>
489
490    <PortalEndPoint position="-47000,-1000,1300" id="2" distance="70" target="MobileEntity" design="PortalDefault">
491          <events>
492            <activity>
493              <Trigger mode="or" activations="3">
494                <Trigger mode="and" activations="1">
495                  <EventTrigger>
496                    <events>
497                      <trigger>
498                        <EventListener event="movingpirates2" />
499                      </trigger>
500                    </events>
501                  </EventTrigger>
502                  <EventTrigger invert=true>
503                    <events>
504                      <trigger>
505                        <EventListener event="toHydroFarmer" />
506                      </trigger>
507                    </events>
508                  </EventTrigger>
509                </Trigger>
510                <Trigger mode="and" activations="1">
511                  <EventTrigger>
512                    <events>
513                      <trigger>
514                        <EventListener event="ondock" />
515                      </trigger>
516                    </events>
517                  </EventTrigger>
518                  <EventTrigger invert=true>
519                    <events>
520                      <trigger>
521                        <EventListener event="attack" />
522                      </trigger>
523                    </events>
524                  </EventTrigger>
525                </Trigger>
526                <EventTrigger>
527                  <events>
528                    <trigger>
529                      <EventListener event="HydroFarmer" />
530                    </trigger>
531                  </events>
532                </EventTrigger>
533              </Trigger>
534            </activity>
535          </events>
536    </PortalEndPoint>
537    <PortalLink fromID="1" toID="2" />
538    <PortalLink fromID="2" toID="1" />
539<!-- ????????????????????????????????????????????????????? why does this NOT work ??
540                <Trigger mode="and" activations="1">
541                  <EventTrigger>
542                    <events>
543                      <trigger>
544                        <EventListener event="HydroFarmer" />
545                      </trigger>
546                    </events>
547                  </EventTrigger>
548                  <EventTrigger invert=true>
549                    <events>
550                      <trigger>
551                        <EventListener event="attack" />
552                      </trigger>
553                    </events>
554                  </EventTrigger>
555                </Trigger>
556-->
557<!-- PORTALS END-->
558
559
560    <SimpleNotification message="Dock to the Hydrogen Farmer.">
561        <events>
562            <trigger>
563                <EventListener event=toHydroFarmer />
564            </trigger>
565        </events>
566    </SimpleNotification>
567
568<!-------------------------------------- PART FOUR : Get Help --------------------------------------->   
569    <DistanceTrigger name="famer1" position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=0 />
570    <SimpleNotification message="We just received a message from DuBall.">
571        <events>
572            <trigger>
573                <EventListener event=famer1 />
574            </trigger>
575        </events>
576    </SimpleNotification>
577
578    <DistanceTrigger name="famer2" position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=4 />
579    <SimpleNotification message="We will lend you our strongest ship.">
580        <events>
581            <trigger>
582                <EventListener event=famer2 />
583            </trigger>
584        </events>
585    </SimpleNotification>
586
587
588<!-- @Objects: HYDROGEN FARMER & DOCKING -->
589    <SpaceShip position="-48900,100,0" roll=90 yaw=0 pitch=20 mass=10000 health=100000 name="HydroFarmer">
590      <attached>
591        <!-- Docking -->
592        <DistanceTriggerBeacon name="bcnDestroyer" />
593        <DockingTarget name="destroyer" />
594
595        <Model mesh="HydroHarvester.mesh" mass=10 position="0,0,0" scale=50 />
596   <!-- <Model mesh="cube.mesh" mass=10 position="-560,0,0" scale3D="115,100,245"  />
597        <Model mesh="cube.mesh" mass=10 position="290,0,-480" scale3D="115,100,245" yaw=-120 />
598        <Model mesh="cube.mesh" mass=10 position="290,0,480" scale3D="115,100,245" yaw=-240 />
599        <Model mesh="cube.mesh" mass=10 position="-280,0,0" scale3D="163,50,50" />
600        <Model mesh="cube.mesh" mass=10 position="140,0,-240" scale3D="163,50,50"  yaw=-120/>
601        <Model mesh="cube.mesh" mass=10 position="140,0,240" scale3D="163,50,50" yaw=-240/>
602        <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" />
603        <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" yaw=-120/>
604        <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" yaw=-240/>
605        <Model mesh="cube.mesh" mass=10 position="0,400,0" scale3D="43,110,26" yaw=-30 />
606        <Model mesh="cube.mesh" mass=10 position="-200,100,0" scale3D="26,50,43" />
607        <Model mesh="cube.mesh" mass=10 position="100,100,-173" scale3D="43,50,26" yaw=-30/>
608        <Model mesh="cube.mesh" mass=10 position="100,100,173" scale3D="43,50,26" yaw=30/>
609        <Model mesh="cube.mesh" mass=10 position="-100,264,0" scale3D="26,105,43" roll=-49/>
610        <Model mesh="cube.mesh" mass=10 position="50,264,-87" scale3D="26,105,43" roll=-49 yaw=-120/>
611        <Model mesh="cube.mesh" mass=10 position="50,264,87" scale3D="26,105,43" roll=-49 yaw=-240/>     -->
612      </attached>
613      <collisionShapes>
614        <BoxCollisionShape  position="-560,0,0" halfExtents="115,100,245" /><!-- Three lower boxes -->
615        <BoxCollisionShape  position="290,0,-480" halfExtents="115,100,245" yaw=-120 />
616        <BoxCollisionShape  position="290,0,480" halfExtents="115,100,245" yaw=-240 />
617        <BoxCollisionShape  position="-280,0,0" halfExtents="163,50,50" /><!-- Three lower connections -->
618        <BoxCollisionShape  position="140,0,-240" halfExtents="163,50,50" yaw=-120 />
619        <BoxCollisionShape  position="140,0,240" halfExtents="163,50,50" yaw=-240 />
620        <BoxCollisionShape  position="0,530,0" halfExtents="172,52,298" /><!-- Upper Tower -->
621        <BoxCollisionShape  position="0,530,0" halfExtents="172,52,298" yaw=-120 />
622        <BoxCollisionShape  position="0,530,0" halfExtents="172,52,298" yaw=-240 />
623        <BoxCollisionShape  position="0,400,0" halfExtents="43,110,26" yaw=-30 /><!-- Middle one-->
624        <BoxCollisionShape  position="-200,100,0" halfExtents="26,50,43" /><!--Three lower legs -->
625        <BoxCollisionShape  position="100,100,-173" halfExtents="43,50,26" yaw=-30 />
626        <BoxCollisionShape  position="100,100,-173" halfExtents="43,50,26" yaw=30 />
627        <BoxCollisionShape  position="-100,264,0" halfExtents="26,105,43" roll=-49 /><!--Three upper legs -->
628        <BoxCollisionShape  position="50,264,-87" halfExtents="26,105,43" roll=-49 yaw=-120 />
629        <BoxCollisionShape  position="50,264,87" halfExtents="26,105,43" roll=-49 yaw=-240 />
630      </collisionShapes>
631    </SpaceShip>
632
633    <Billboard position="-48900,0,0" material="Examples/Flare" colour="0.6,0,0" scale=3/>
634    <Dock position="-48900,0,0" roll=90 yaw=180 >
635        <animations>
636            <MoveToDockingTarget target="destroyer" />
637        </animations>
638        <effects>
639            <DockToShip target="spaceShip" />
640        </effects>
641        <events>
642            <execute>
643                <EventListener event="dockMe" />
644            </execute>
645        </events>
646        <attached>
647            <DistanceTrigger position="10,-202, -42" distance="800" target="Pawn"
648                beaconMode="exclude" targetname="bcnDestroyer" name="dockMe"
649            />
650        </attached>
651    </Dock>
652
653    <SpaceShip template="spaceshipspacecruiser" position="-48900,800,0" orientation="-0.14, 0.68, 0.68, 0.223" health="300" maxhealth="400" initialhealth="300" name="cruiser" >
654      <attached>
655        <DockingTarget name="spaceShip" />
656      </attached>
657    </SpaceShip>
658
659
660          <Trigger name="cruiserFriendlyFire" mode="and" activations="2">
661            <EventTrigger>
662              <events>
663                <trigger>
664                  <EventListener event="cruiser" />
665                </trigger>
666              </events>
667            </EventTrigger>
668            <EventTrigger invert=true>
669              <events>
670                <trigger>
671                  <EventListener event="ondock" />
672                </trigger>
673              </events>
674            </EventTrigger>
675          </Trigger>
676
677
678    <SimpleNotification message="You killed the Hydrogen Farmer!" broadcast="true">
679        <events>
680            <trigger>
681                <EventListener event="HydroFarmer" />
682            </trigger>
683        </events>
684    </SimpleNotification>
685
686    <SimpleNotification message="You killed the SpaceCruiser!" broadcast="true">
687        <events>
688            <trigger>
689                <EventListener event="cruiserFriendlyFire" /><!--cruiserFriendlyFire-->
690            </trigger>
691        </events>
692    </SimpleNotification>
693
694
695
696<!-- hydrogen farmer & docking END -->
697
698
699<!-- @Objects: Pickup - find better place !! -->
700    <PickupSpawner position="-48650,700,100" triggerDistance="70" respawnTime="30" maxSpawnedItems="1">
701      <pickup>
702        <ShieldPickup template=hugeshieldpickup />
703      </pickup>
704    </PickupSpawner>
705
706
707    <DistanceTrigger name="pickup" position="-48650,700,100" target="Pawn" distance=60 stayActive="true" delay=0 />
708    <SimpleNotification message="This pickup protects your spaceship.">
709        <events>
710            <trigger>
711                <EventListener event=pickup />
712            </trigger>
713        </events>
714    </SimpleNotification>
715<!-- Pickup-->
716
717
718<!-- @Objects: planet && spaceboundaries  -->
719    <Planet
720      position="-44000,0,0"
721      scale="2500"
722      collisionType="dynamic"
723      linearDamping="0.8"
724      angularDamping="0"
725      mass="10000000"
726      pitch="0"
727      mesh="planets/muunilinst.mesh"
728      atmosphere="atmosphere1"
729      rotationaxis="1,0,0"
730      rotationrate="1.0"
731      atmospheresize="80.0f"
732      imagesize="1024.0f"
733      collisiondamage = "2"
734      enablecollisiondamage = "false"
735    >
736      <!--attached>
737        <ForceField position="0,0,0" mode="sphere" diameter="10000" velocity="-50" />
738      </attached-->  <!-- Forcefield kills HYDROGEN FARMER-->
739      <collisionShapes>
740        <SphereCollisionShape radius="2500" position="0,0,0" />
741      </collisionShapes>
742    </Planet>
743
744
745<!-------------------------------------- The attack --------------------------------------->
746
747<!-- TODO:
748     - update spaceshipTransporter
749     - bots do friendly fire (is drone function reusable?)
750-->
751
752<!-- @Triggers: toHydroFamer <-> first  portal usage
753                ondock       <-> successfull docking
754                attack       <-> second portal usage -->
755
756    <DistanceTrigger name="attack" position="-1400,-500,800" target="Pawn" distance=100 stayActive="true" >
757        <EventTrigger name="ondock" activations="1" stayactive="true" delay=6>
758          <events>
759            <trigger>
760              <EventListener event="dockMe" />
761            </trigger>
762          </events>
763            <DistanceTrigger name="toHydroFarmer" position="-47000,-1000,1300" target="Pawn" distance=100 stayActive="true" />
764        </EventTrigger>
765    </DistanceTrigger>
766
767    <SimpleNotification message="Return before it's too late. Boost with 'Space'." broadcast="true">
768        <events>
769            <trigger>
770                <EventListener event=ondock />
771            </trigger>
772        </events>
773    </SimpleNotification>
774
775    <SimpleNotification message="Several serious enemies are approaching!">
776        <events>
777            <trigger>
778                <EventListener event=attack />
779            </trigger>
780        </events>
781    </SimpleNotification>
782
783
784
785<!-- @Objects: 6 pirates, heading towards DuBall, attacking  -->
786<!-- 1 -->
787    <SpaceShip position="3000,-4000,4000" lookat="-1300,-600,900" name="attacker"visible="true">
788        <events>
789            <visibility>
790                <EventListener event="ondock" />
791            </visibility>
792        </events>
793        <templates>
794            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
795        </templates>
796        <controller>
797            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
798                <waypoints>
799                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
800                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
801                </waypoints>
802                <events>
803                    <activity>
804                        <EventListener event="attack" /> <!-- activates enemies-->
805                     </activity>
806                </events>
807            </WaypointPatrolController>
808        </controller>
809    </SpaceShip>
810<!-- 2 -->
811    <SpaceShip position="3000,-4000,-4000" lookat="-1300,-600,900" name="attacker" visible="true">
812        <events>
813            <visibility>
814                <EventListener event="ondock" />
815            </visibility>
816        </events>
817        <templates>
818            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
819        </templates>
820        <controller>
821            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
822                <waypoints>
823                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
824                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
825                </waypoints>
826                <events>
827                    <activity>
828                        <EventListener event="attack" /> <!-- activates enemies-->
829                     </activity>
830                </events>
831            </WaypointPatrolController>
832        </controller>
833    </SpaceShip>
834<!-- 3 -->
835    <SpaceShip position="-4000,-3000,4000" lookat="-1300,-600,900" name="attacker" visible="true">
836        <events>
837            <visibility>
838                <EventListener event="ondock" />
839            </visibility>
840        </events>
841        <templates>
842            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
843        </templates>
844        <controller>
845            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
846                <waypoints>
847                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
848                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
849                </waypoints>
850                <events>
851                    <activity>
852                        <EventListener event="attack" /> <!-- activates enemies-->
853                     </activity>
854                </events>
855            </WaypointPatrolController>
856        </controller>
857    </SpaceShip>
858<!-- 4 -->
859    <SpaceShip position="-3000,-3000,-5000" lookat="-1300,-600,900" name="attacker" visible="true">
860        <events>
861            <visibility>
862                <EventListener event="ondock" />
863            </visibility>
864        </events>
865        <templates>
866            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
867        </templates>
868        <controller>
869            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
870                <waypoints>
871                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
872                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
873                </waypoints>
874                <events>
875                    <activity>
876                        <EventListener event="attack" /> <!-- activates enemies-->
877                     </activity>
878                </events>
879            </WaypointPatrolController>
880        </controller>
881    </SpaceShip>
882<!-- 5 -->
883    <SpaceShip position="4000,4000,3000" lookat="-1300,-600,900" name="attacker"visible="true">
884        <events>
885            <visibility>
886                <EventListener event="ondock" />
887            </visibility>
888        </events>
889        <templates>
890            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
891        </templates>
892        <controller>
893            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
894                <waypoints>
895                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
896                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
897                </waypoints>
898                <events>
899                    <activity>
900                        <EventListener event="attack" /> <!-- activates enemies-->
901                     </activity>
902                </events>
903            </WaypointPatrolController>
904        </controller>
905    </SpaceShip>
906<!-- 6 -->
907    <SpaceShip position="2000,-4000,5000" lookat="-1300,-600,900" name="attacker" visible="true">
908        <events>
909            <visibility>
910                <EventListener event="ondock" />
911            </visibility>
912        </events>
913        <templates>
914            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
915        </templates>
916        <controller>
917            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
918                <waypoints>
919                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
920                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
921                </waypoints>
922                <events>
923                    <activity>
924                        <EventListener event="attack" /> <!-- activates enemies-->
925                     </activity>
926                </events>
927            </WaypointPatrolController>
928        </controller>
929    </SpaceShip>
930
931<!-- @Triggers: attacktriggerX <-> X enemies destroyed , X is an element of [1,6] -->
932    <EventTrigger name="attacktrigger6" activations="1" stayactive="true">
933      <events>
934        <trigger>
935          <EventListener event="attacker" />
936        </trigger>
937      </events>
938      <EventTrigger name="attacktrigger5" activations="1" stayactive="true" delay=0.1>
939        <events>
940          <trigger>
941            <EventListener event="attacker" />
942          </trigger>
943        </events>
944        <EventTrigger name="attacktrigger4" activations="1" stayactive="true" delay=0.1>
945          <events>
946            <trigger>
947              <EventListener event="attacker" />
948            </trigger>
949          </events>
950          <EventTrigger name="attacktrigger3" activations="1" stayactive="true" delay=0.1>
951            <events>
952              <trigger>
953                <EventListener event="attacker" />
954              </trigger>
955            </events>
956            <EventTrigger name="attacktrigger2" activations="1" stayactive="true" delay=0.1>
957              <events>
958                <trigger>
959                  <EventListener event="attacker" />
960                </trigger>
961              </events>
962              <EventTrigger name="attacktrigger1" activations="1" stayactive="true" delay=0.1>
963                <events>
964                  <trigger>
965                    <EventListener event="attacker" />
966                  </trigger>
967                </events>
968              </EventTrigger>
969            </EventTrigger>
970          </EventTrigger>
971        </EventTrigger>
972      </EventTrigger>
973    </EventTrigger>
974
975
976    <SimpleNotification message="5 enemies left!" broadcast="true">
977      <events>
978        <trigger>
979          <EventListener event="attacktrigger1" />
980        </trigger>
981      </events>
982    </SimpleNotification>
983
984    <SimpleNotification message="4 enemies left!" broadcast="true">
985      <events>
986        <trigger>
987          <EventListener event="attacktrigger2" />
988        </trigger>
989      </events>
990    </SimpleNotification>
991
992    <SimpleNotification message="3 enemies left!" broadcast="true">
993      <events>
994        <trigger>
995          <EventListener event="attacktrigger3" />
996        </trigger>
997      </events>
998    </SimpleNotification>
999
1000    <SimpleNotification message="2 enemies left!" broadcast="true">
1001      <events>
1002        <trigger>
1003          <EventListener event="attacktrigger4" />
1004        </trigger>
1005      </events>
1006    </SimpleNotification>
1007    <SimpleNotification message="One enemy left!" broadcast="true">
1008      <events>
1009        <trigger>
1010          <EventListener event="attacktrigger5" />
1011        </trigger>
1012      </events>
1013    </SimpleNotification>
1014    <SimpleNotification message="Well done. You finished this tutorial." broadcast="true">
1015      <events>
1016        <trigger>
1017          <EventListener event="attacktrigger6" />
1018        </trigger>
1019      </events>
1020    </SimpleNotification>
1021
1022<!-- @Triggers: postAttack <-> delayed attacktrigger6 -->
1023    <EventTrigger name="postAttack1" activations="1" stayactive="true" delay=3>
1024      <events>
1025        <trigger>
1026          <EventListener event="attacktrigger6" />
1027        </trigger>
1028      </events>
1029    </EventTrigger>
1030
1031    <EventTrigger name="postAttack2" activations="1" stayactive="true" delay=6>
1032      <events>
1033        <trigger>
1034          <EventListener event="attacktrigger6" />
1035        </trigger>
1036      </events>
1037    </EventTrigger>
1038
1039    <SimpleNotification message="Either quit by pressing 'Esc' or ..." broadcast="true">
1040      <events>
1041        <trigger>
1042          <EventListener event="postAttack1" />
1043        </trigger>
1044      </events>
1045    </SimpleNotification>
1046
1047    <SimpleNotification message="... stay here to learn some tricks." broadcast="true">
1048      <events>
1049        <trigger>
1050          <EventListener event="postAttack2" />
1051        </trigger>
1052      </events>
1053    </SimpleNotification>
1054
1055<!-------------------------------------- |Bonus Part| --------------------------------------->
1056<!-- @Triggers: "bonusX" <->  delayed "attacktrigger6" -->
1057    <EventTrigger name="bonus1" activations="1" stayactive="true" delay=10>
1058      <events>
1059        <trigger>
1060          <EventListener event="attacktrigger6" />
1061        </trigger>
1062      </events>
1063    </EventTrigger>
1064    <EventTrigger name="bonus2" activations="1" stayactive="true" delay=16>
1065      <events>
1066        <trigger>
1067          <EventListener event="attacktrigger6" />
1068        </trigger>
1069      </events>
1070    </EventTrigger>
1071    <EventTrigger name="bonus3" activations="1" stayactive="true" delay=22>
1072      <events>
1073        <trigger>
1074          <EventListener event="attacktrigger6" />
1075        </trigger>
1076      </events>
1077    </EventTrigger>
1078    <EventTrigger name="bonus4" activations="1" stayactive="true" delay=28>
1079      <events>
1080        <trigger>
1081          <EventListener event="attacktrigger6" />
1082        </trigger>
1083      </events>
1084    </EventTrigger>
1085    <EventTrigger name="bonus5" activations="1" stayactive="true" delay=32.1>
1086      <events>
1087        <trigger>
1088          <EventListener event="attacktrigger6" />
1089        </trigger>
1090      </events>
1091    </EventTrigger>
1092    <EventTrigger name="bonus6" activations="1" stayactive="true" delay=36.2>
1093      <events>
1094        <trigger>
1095          <EventListener event="attacktrigger6" />
1096        </trigger>
1097      </events>
1098    </EventTrigger>
1099    <EventTrigger name="bonus7" activations="1" stayactive="true" delay=4>
1100      <events>
1101        <trigger>
1102          <EventListener event="bonus6" />
1103        </trigger>
1104      </events>
1105    </EventTrigger>
1106
1107
1108
1109    <SimpleNotification message="Rotate your ship. Press 'Q' or 'E'. "  broadcast="true">
1110        <events>
1111            <trigger>
1112                <EventListener event=bonus1 />
1113            </trigger>
1114        </events>
1115    </SimpleNotification>
1116
1117    <SimpleNotification message="Switch the camera's position. Press 'C'. "  broadcast="true">
1118        <events>
1119            <trigger>
1120                <EventListener event=bonus2 />
1121            </trigger>
1122        </events>
1123    </SimpleNotification>
1124
1125    <SimpleNotification message="360° view: press 'Ctrl' + use the mouse "  broadcast="true">
1126        <events>
1127            <trigger>
1128                <EventListener event=bonus3 />
1129            </trigger>
1130        </events>
1131    </SimpleNotification>
1132
1133    <SimpleNotification message="Have a look at the main menu's settings."  broadcast="true">
1134        <events>
1135            <trigger>
1136                <EventListener event=bonus4 />
1137            </trigger>
1138        </events>
1139    </SimpleNotification>
1140
1141    <SimpleNotification message="E.g: Settings > Miscellaneous > Nr. of bots"  broadcast="true">
1142        <events>
1143            <trigger>
1144                <EventListener event=bonus5 />
1145            </trigger>
1146        </events>
1147    </SimpleNotification>
1148
1149    <SimpleNotification message="You successfully finished Mission One!"  broadcast="true">
1150        <events>
1151            <trigger>
1152                <EventListener event=bonus6 />
1153            </trigger>
1154        </events>
1155    </SimpleNotification>
1156
1157    <SimpleNotification message="Press 'Esc' and return to the main menu."  broadcast="true">
1158        <events>
1159            <trigger>
1160                <EventListener event=bonus7 />
1161            </trigger>
1162        </events>
1163    </SimpleNotification>
1164
1165
1166    <!--Script code="addBots 3" onLoad="false">
1167        <events>
1168            <trigger>
1169                <EventListener event=bonus6 />
1170            </trigger>
1171        </events>
1172    </Script>
1173
1174    <Script code="artificialcontroller setbotlevel 0.1" onLoad="false">
1175        <events>
1176            <trigger>
1177                <EventListener event=bonus6 />
1178            </trigger>
1179        </events>
1180    </Script-->
1181    <!-- Script code="artificialcontroller setbotlevel 0.1" /-->
1182  </Scene>
1183</Level>
1184<!-- TODO:
1185! Quest Interface
1186- Foolproof text messages (e.g. verspätete Nachrichten unterdrücken)
1187- Radar visibility & Hud Markers
1188- End Tutorial, if either the Hydrogen Farmer or the SpaceCruiser gets destroyed.
1189
1190 -->
Note: See TracBrowser for help on using the repository browser.