Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

Tutorial in first 'playable' version. There are some serious bugs though. The triggers for the four boxes and for the two pirates at the beginning are somehow not always triggered in the right way. I've got no explanation for this behaviour. /n Secondly the 'invisible' portals appear on the radar.

File size: 37.5 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=1
34    displayTime=30
35    position="0.2, 0, 0.1, 0"
36    fontSize="24"
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
52    <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"/>
53    <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
54    <!-- Script code="artificialcontroller setbotlevel 0.1" /-->
55
56<!-- END OF INCLUDES & NECESSARITIES -->
57
58<!-- QUESTS: TODO! STORY!!
59    <LocalQuest id="orxonox-weaponsystem-check">
60        <QuestDescription title="Tutorial" description="Before we  serious missions you have to proof that " /> //The description of the quest.
61        <subquests>
62            <Quest id ="questId1" />
63            <Quest id="questIdn" />
64        </subquests>
65        <hints>
66            <QuestHint id="hintId1" /> //A list of n QuestHints, see QuestHint for the full XML representation of those.
67            ...
68            <QuestHint id="hintIdn" />
69        </hints>
70        <fail-effects>
71            <QuestEffect /> //A list of QuestEffects, invoked when the Quest is failed, see QuestEffect for the full XML representation.
72            ...
73            <QuestEffect />
74        </fail-effects>
75        <complete-effects>
76            <QuestEffect /> //A list of QuestEffects, invoked when the Quest is completed, see QuestEffect for the full XML representation.
77            ...
78            <QuestEffect />
79        </complete-effects>
80    </LocalQuest-->
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101<!-- TUTORIAL-TODO: -->
102
103<!-- 1. Aiming & Weapons (static targets, moving targets, dangerous targets)--> <!-- 3 Mouse buttons + "T"-->
104<!-- 2. Flying & manoeuvring (basic flying, using pickups, forcefields, docks & portals) --> <!-- "W","S","SPACE"-->
105<!-- 3. Game handling (quests, knowing when a game is over :-), pausing, chat, ... ) --> <!--"F3", "F2", "ESC" -->
106<!-- 4. Extras (other things to discover) --> <!-- "Q","E","A","D","C", "CTRL", "", ... -->
107
108<!--
109Four boxes for aiming
110
111TODO: display text: "Destroy those four boxes. Aim the a the box and shoot by using the left mouse button."
112"The laser is a standard weapon. It is fast and precise but does not deal much damage. Now do the same with the next target, but right click instead."
113"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 should be your favourite in close range combat or if you want to hit a really slow enemy. Try to destroy the next box by right clicking at it."
114"The target seeking rockets follow their target on their own and the explosive load shouldn't be underestimated. Now its time to hit the last target with the hand guided rocket. You can release one by pressing T once. Note: If you miss the target, you can get out of the rocket by clicking or pressing T once more."
115
116"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. Now lets move to a slightly more difficult target. Take a look at your radar. The red dot is an enemy's ship. Try to turn your ship towards it, such that the red dot is in the radar's centre. You should be able to see it then directly. Your task is to destroy it."
117
118"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 .."
119
120-->
121
122    <DistanceTrigger name="spawndelaytrigger0" position="-200,0,0" target="Pawn" distance=10 stayActive="true" />
123    <SimpleNotification message="Welcome to the Orxonox Tutorial.">
124        <events>
125            <trigger>
126                <EventListener event="spawndelaytrigger0" />
127            </trigger>
128        </events>
129    </SimpleNotification>
130<!-------------------------------------- PART ONE: Destroy boxes --------------------------------------->
131    <DistanceTrigger name="spawndelaytrigger1" position="-200,0,0" target="Pawn" distance=10 stayActive="true" delay=2 />
132    <SimpleNotification message="Destroy those four boxes.">
133        <events>
134            <trigger>
135                <EventListener event="spawndelaytrigger1" />
136            </trigger>
137        </events>
138    </SimpleNotification>
139
140    <DistanceTrigger name="spawndelaytrigger2" position="-200,0,0" target="Pawn" distance=10 stayActive="true" delay=5 />
141    <SimpleNotification message=" 1. Aim the a the red cycle.">
142        <events>
143            <trigger>
144                <EventListener event="spawndelaytrigger2" />
145            </trigger>
146        </events>
147    </SimpleNotification>
148
149    <DistanceTrigger name="spawndelaytrigger3" position="-200,0,0" target="Pawn" distance=10 stayActive="true" delay=8 />
150    <SimpleNotification message="2. Click! (hold the left mouse button)">
151        <events>
152            <trigger>
153                <EventListener event="spawndelaytrigger3" />
154            </trigger>
155        </events>
156    </SimpleNotification>
157
158<!-- @Objects: 4 boxes (uncontrolled pawns) -->
159                <Pawn health=30 position="0,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
160                    <attached>
161                        <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
162                    </attached>
163                    <collisionShapes>
164                        <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
165                    </collisionShapes>
166                </Pawn>
167
168                <Pawn health=30 position="0,100,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
169                    <!--events>
170                        <visibility>
171                            <EventListener event=spawndelaytrigger3 />
172                        </visibility>
173                   </events-->
174
175                    <attached>
176                        <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
177                    </attached>
178                    <collisionShapes>
179                        <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
180                    </collisionShapes>
181                </Pawn>
182                <Pawn health=30 position="0,200,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
183                    <attached>
184                        <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
185                    </attached>
186                    <collisionShapes>
187                        <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
188                    </collisionShapes>
189                </Pawn>
190                <Pawn health=30 position="0,300,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
191                    <attached>
192                        <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
193                    </attached>
194                    <collisionShapes>
195                        <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
196                    </collisionShapes>
197                </Pawn>
198
199<!-- @Triggers: boxtrigger1 <-> one   box   destroyed
200                boxtrigger2 <-> two   boxes destroyed
201                boxtrigger3 <-> three boxes destroyed
202                boxtrigger4 <-> four  boxes destroyed  -->
203    <EventTrigger name="boxtrigger4" activations="1" stayactive="true">
204      <events>
205        <trigger>
206          <EventListener event="box" />
207        </trigger>
208      </events>
209      <EventTrigger name="boxtrigger3" activations="1" stayactive="true">
210        <events>
211          <trigger>
212            <EventListener event="box" />
213          </trigger>
214        </events>
215        <EventTrigger name="boxtrigger2" activations="1" stayactive="true">
216          <events>
217            <trigger>
218              <EventListener event="box" />
219            </trigger>
220          </events>
221          <EventTrigger name="boxtrigger1" activations="1" stayactive="true">
222            <events>
223              <trigger>
224                <EventListener event="box" />
225              </trigger>
226            </events>
227          </EventTrigger>
228        </EventTrigger>
229      </EventTrigger>
230    </EventTrigger>
231
232
233  <SimpleNotification message="Right click on the next target." broadcast="true">
234        <events>
235            <trigger>
236                <EventListener event="boxtrigger1" />
237            </trigger>
238        </events>
239    </SimpleNotification>
240
241  <SimpleNotification message="Middle click on the next target." broadcast="true">
242        <events>
243            <trigger>
244                <EventListener event="boxtrigger2" />
245            </trigger>
246        </events>
247    </SimpleNotification>
248
249
250  <SimpleNotification message="Aim at the last target and press 'T'." broadcast="true">
251        <events>
252            <trigger>
253                <EventListener event="boxtrigger3" />
254            </trigger>
255        </events>
256    </SimpleNotification>
257
258  <SimpleNotification message="Fly towards the pirates. Press 'W'." broadcast="true">
259        <events>
260            <trigger>
261                <EventListener event="boxtrigger4" />
262            </trigger>
263        </events>
264    </SimpleNotification>
265
266
267<!--------------------------------------PART TWO: Moving targets --------------------------------------->
268    <DistanceTrigger name="movingtargets" position="0,500,0" target="Pawn" distance=180 stayActive="true" delay=2 />
269    <Billboard position="0,500,0" material="Examples/Flare" colour="0.5,0,0" scale=3/><!-- TODO: hide. -->
270    <SimpleNotification message="Try to hit the pirates while you are flying.">
271        <events>
272            <trigger>
273                <EventListener event=movingtargets />
274            </trigger>
275        </events>
276    </SimpleNotification>
277
278<!-- @Objects: 2 pirates moving in squares, nolethal -->
279                <SpaceShip position="0,2000,200" lookat="0,0,0" name="movingtarget">
280                    <templates>
281                      <Template link=spaceshippirate />
282                    </templates>
283                    <controller>
284                      <WaypointController>
285                         <waypoints>
286                          <Model mesh="cube.mesh" scale=8 position="  0,1700,-200" />
287                          <Model mesh="cube.mesh" scale=8 position="  0,1700,-700" />
288                          <Model mesh="cube.mesh" scale=8 position="500,1700,-700" />
289                          <Model mesh="cube.mesh" scale=8 position="500,1700,-200" />
290                       </waypoints>
291                    </WaypointController>
292                  </controller>
293                </SpaceShip>
294
295                <SpaceShip position="0,2000,400" lookat="0,0,0" name="movingtarget">
296                  <templates>
297                    <Template link=spaceshippirate />
298                  </templates>
299                  <controller>
300                    <WaypointController>
301                      <waypoints>
302                        <Model mesh="cube.mesh" scale=8 position="  0,2400,1000" />
303                        <Model mesh="cube.mesh" scale=8 position="  0,2400, 500" />
304                        <Model mesh="cube.mesh" scale=8 position="500,2400, 500" />
305                        <Model mesh="cube.mesh" scale=8 position="500,2400,1000" />
306                      </waypoints>
307                    </WaypointController>
308                  </controller>
309                </SpaceShip>
310
311<!-- @Triggers: movingpirates1 <-> one  pirate  dead
312                movingpirates2 <-> both pirates dead  -->
313    <EventTrigger name="movingpirates2" activations="1" stayactive="true">
314      <events>
315        <trigger>
316          <EventListener event="movingtarget" />
317        </trigger>
318      </events>
319      <EventTrigger name="movingpirates1" activations="1" stayactive="true">
320        <events>
321          <trigger>
322            <EventListener event="movingtarget" />
323          </trigger>
324        </events>
325      </EventTrigger>
326    </EventTrigger>
327
328
329    <SimpleNotification message="Now get the other one."  broadcast="true">
330        <events>
331            <trigger>
332                <EventListener event="movingpirates1" />
333            </trigger>
334        </events>
335    </SimpleNotification>
336
337    <SimpleNotification message="Fly towards the space station (grey dot)."  broadcast="true">
338        <events>
339            <trigger>
340                <EventListener event="movingpirates2" />
341            </trigger>
342        </events>
343    </SimpleNotification>
344
345
346
347<!--------------------------------------PART THREE: the space station --------------------------------------->
348    <DistanceTrigger name="duball1" position="-1000,-300,700" target="Pawn" distance=700 stayActive="true" delay=2 />
349    <SimpleNotification message="Welcome to the Duball Space Station!">
350        <events>
351            <trigger>
352                <EventListener event=duball1 />
353            </trigger>
354        </events>
355    </SimpleNotification>
356
357    <DistanceTrigger name="duball2" position="-1000,-300,700" target="Pawn" distance=700 stayActive="true" delay=5 />
358    <SimpleNotification message="Warning: Something big is coming.">
359        <events>
360            <trigger>
361                <EventListener event=duball2 />
362            </trigger>
363        </events>
364    </SimpleNotification>
365
366    <!--DistanceTrigger name="duball3" position="-1000,-300,700" target="Pawn" distance=700 stayActive="true" delay=9 />
367    <SimpleNotification message="Get some help,  before it is too late.">
368        <events>
369            <trigger>
370                <EventListener event=duball3 />
371            </trigger>
372        </events>
373    </SimpleNotification-->
374
375    <DistanceTrigger name="duball4" position="-1000,-300,700" target="Pawn" distance=700 stayActive="true" delay=10 />
376    <SimpleNotification message="Use the portals to get help. (grey dot)">
377        <events>
378            <trigger>
379                <EventListener event=duball4 />
380            </trigger>
381        </events>
382    </SimpleNotification>
383
384
385<!-- @Objects: DuBall Space Station, (no pawn!) -->
386    <StaticEntity position="-1000,-300,700" collisionType=static>
387      <attached>
388        <Model scale=13 mesh="DuBall1.mesh" position = "-100,0,0"/>
389        <Model scale=13 mesh="DuBall2.mesh" position = "100,0,0"/>
390        <Billboard scale=7 material="Examples/Flare" colour="0.5,0.5,0.5" position = "-100,0,0"/>
391        <Billboard scale=7 material="Examples/Flare" colour="0.5,0.5,0.5" position = "100,0,0"/>       
392      </attached>
393      <collisionShapes>
394        <SphereCollisionShape radius="80"            position = "-100,0,0" />
395        <SphereCollisionShape radius="120"           position = "100,0,0" />
396        <BoxCollisionShape    halfExtents="90,25,45" position = "-155,0,40" />
397      </collisionShapes>
398    </StaticEntity>
399
400
401<!-- @Objects: PORTAL: from DuBall to HydroHarvester  -->
402    <Template name=PortalDefault>
403        <PortalEndPoint>
404            <attached>
405                <Billboard material="Portals/Default" />
406            </attached>
407        </PortalEndPoint>
408    </Template>
409
410    <PortalEndPoint position="-1400,-500,800" id="1" distance="50" target="MobileEntity" design="PortalDefault">
411        <!--events>
412            <visibility>
413                <EventListener event=portal />
414            </visibility>
415        </events-->
416    </PortalEndPoint>
417
418    <PortalEndPoint position="-47000,-1000,1300" id="2" distance="70" target="MobileEntity" design="PortalDefault" />
419    <PortalLink fromID="1" toID="2" />
420    <PortalLink fromID="2" toID="1" />
421<!-- PORTALS END-->
422
423    <!--DistanceTrigger name="toHydroFarmer" position="-47000,-1000,1300" target="Pawn" distance=700 stayActive="true" delay=0 /-->
424    <SimpleNotification message="Find the Hydrogen Farmer.">
425        <events>
426            <trigger>
427                <EventListener event=toHydroFarmer />
428            </trigger>
429        </events>
430    </SimpleNotification>
431
432<!-------------------------------------- PART FOUR : Get Help --------------------------------------->   
433    <DistanceTrigger name="famer1" position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=0 />
434    <SimpleNotification message="We just received a message from DuBall.">
435        <events>
436            <trigger>
437                <EventListener event=famer1 />
438            </trigger>
439        </events>
440    </SimpleNotification>
441
442    <DistanceTrigger name="famer2" position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=4 />
443    <SimpleNotification message="We will lend you our strongest ship.">
444        <events>
445            <trigger>
446                <EventListener event=famer2 />
447            </trigger>
448        </events>
449    </SimpleNotification>
450
451
452<!-- @Objects: HYDROGEN FARMER & DOCKING -->
453    <SpaceShip position="-48900,100,0" roll=90 yaw=0 pitch=20 mass=10000 health=100000 >
454      <attached>
455        <!-- Docking -->
456        <DistanceTriggerBeacon name="bcnDestroyer" />
457        <DockingTarget name="destroyer" />
458
459        <Model mesh="HydroHarvester.mesh" mass=10 position="0,0,0" scale=50 />
460   <!-- <Model mesh="cube.mesh" mass=10 position="-560,0,0" scale3D="115,100,245"  />
461        <Model mesh="cube.mesh" mass=10 position="290,0,-480" scale3D="115,100,245" yaw=-120 />
462        <Model mesh="cube.mesh" mass=10 position="290,0,480" scale3D="115,100,245" yaw=-240 />
463        <Model mesh="cube.mesh" mass=10 position="-280,0,0" scale3D="163,50,50" />
464        <Model mesh="cube.mesh" mass=10 position="140,0,-240" scale3D="163,50,50"  yaw=-120/>
465        <Model mesh="cube.mesh" mass=10 position="140,0,240" scale3D="163,50,50" yaw=-240/>
466        <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" />
467        <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" yaw=-120/>
468        <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" yaw=-240/>
469        <Model mesh="cube.mesh" mass=10 position="0,400,0" scale3D="43,110,26" yaw=-30 />
470        <Model mesh="cube.mesh" mass=10 position="-200,100,0" scale3D="26,50,43" />
471        <Model mesh="cube.mesh" mass=10 position="100,100,-173" scale3D="43,50,26" yaw=-30/>
472        <Model mesh="cube.mesh" mass=10 position="100,100,173" scale3D="43,50,26" yaw=30/>
473        <Model mesh="cube.mesh" mass=10 position="-100,264,0" scale3D="26,105,43" roll=-49/>
474        <Model mesh="cube.mesh" mass=10 position="50,264,-87" scale3D="26,105,43" roll=-49 yaw=-120/>
475        <Model mesh="cube.mesh" mass=10 position="50,264,87" scale3D="26,105,43" roll=-49 yaw=-240/>     -->
476      </attached>
477      <collisionShapes>
478        <BoxCollisionShape  position="-560,0,0" halfExtents="115,100,245" /><!-- Three lower boxes -->
479        <BoxCollisionShape  position="290,0,-480" halfExtents="115,100,245" yaw=-120 />
480        <BoxCollisionShape  position="290,0,480" halfExtents="115,100,245" yaw=-240 />
481        <BoxCollisionShape  position="-280,0,0" halfExtents="163,50,50" /><!-- Three lower connections -->
482        <BoxCollisionShape  position="140,0,-240" halfExtents="163,50,50" yaw=-120 />
483        <BoxCollisionShape  position="140,0,240" halfExtents="163,50,50" yaw=-240 />
484        <BoxCollisionShape  position="0,530,0" halfExtents="172,52,298" /><!-- Upper Tower -->
485        <BoxCollisionShape  position="0,530,0" halfExtents="172,52,298" yaw=-120 />
486        <BoxCollisionShape  position="0,530,0" halfExtents="172,52,298" yaw=-240 />
487        <BoxCollisionShape  position="0,400,0" halfExtents="43,110,26" yaw=-30 /><!-- Middle one-->
488        <BoxCollisionShape  position="-200,100,0" halfExtents="26,50,43" /><!--Three lower legs -->
489        <BoxCollisionShape  position="100,100,-173" halfExtents="43,50,26" yaw=-30 />
490        <BoxCollisionShape  position="100,100,-173" halfExtents="43,50,26" yaw=30 />
491        <BoxCollisionShape  position="-100,264,0" halfExtents="26,105,43" roll=-49 /><!--Three upper legs -->
492        <BoxCollisionShape  position="50,264,-87" halfExtents="26,105,43" roll=-49 yaw=-120 />
493        <BoxCollisionShape  position="50,264,87" halfExtents="26,105,43" roll=-49 yaw=-240 />
494      </collisionShapes>
495    </SpaceShip>
496
497    <Billboard position="-48900,0,0" material="Examples/Flare" colour="0.6,0,0" scale=3/>
498    <Dock position="-48900,0,0" roll=90 yaw=180 >
499        <animations>
500            <MoveToDockingTarget target="destroyer" />
501        </animations>
502        <effects>
503            <DockToShip target="spaceShip" />
504        </effects>
505        <events>
506            <execute>
507                <EventListener event="dockMe" />
508            </execute>
509        </events>
510        <attached>
511            <DistanceTrigger position="10,-202, -42" distance="800" target="Pawn"
512                beaconMode="exclude" targetname="bcnDestroyer" name="dockMe"
513            />
514        </attached>
515    </Dock>
516
517    <SpaceShip template="spaceshipspacecruiser" position="-48900,800,0" orientation="-0.14, 0.68, 0.68, 0.223" health="300" maxhealth="400" initialhealth="300">
518      <attached>
519        <DockingTarget name="spaceShip" />
520      </attached>
521    </SpaceShip>
522<!-- hydrogen farmer & docking END -->
523
524
525<!-- @Objects: Pickup - find better place !! -->
526    <PickupSpawner position="-48650,700,100" triggerDistance="70" respawnTime="30" maxSpawnedItems="1">
527      <pickup>
528        <ShieldPickup template=hugeshieldpickup />
529      </pickup>
530    </PickupSpawner>
531
532
533    <DistanceTrigger name="pickup" position="-48650,700,100" target="Pawn" distance=60 stayActive="true" delay=0 />
534    <SimpleNotification message="This pickup protects your spaceship.">
535        <events>
536            <trigger>
537                <EventListener event=pickup />
538            </trigger>
539        </events>
540    </SimpleNotification>
541<!-- Pickup-->
542
543    <DistanceTrigger name="warning" position="-48650,700,100" target="Pawn" distance=100 stayActive="true" delay=4 />
544    <SimpleNotification message="Return before it's too late. Boost with 'Space'.">
545        <events>
546            <trigger>
547                <EventListener event=warning />
548            </trigger>
549        </events>
550    </SimpleNotification>
551
552<!-- @Objects: planet && spaceboundaries  -->
553    <Planet
554      position="-44000,0,0"
555      scale="2500"
556      collisionType="dynamic"
557      linearDamping="0.8"
558      angularDamping="0"
559      mass="10000000"
560      pitch="0"
561      mesh="planets/muunilinst.mesh"
562      atmosphere="atmosphere1"
563      rotationaxis="1,0,0"
564      rotationrate="1.0"
565      atmospheresize="80.0f"
566      imagesize="1024.0f"
567      collisiondamage = 2
568      enablecollisiondamage = true
569    >
570      <attached>
571        <Model mesh="sphere.mesh" mass=10 position="0,0,0" scale=2500 />
572      </attached>
573      <!--attached>
574        <ForceField position="0,0,0" mode="sphere" diameter="10000" velocity="-50" />
575      </attached-->  <!-- Forcefield kills HYDROGEN FARMER-->
576      <collisionShapes>
577        <SphereCollisionShape radius="2400" position="0,0,0" /> <!-- Nasty: Collisionradius =! planet scale -->
578      </collisionShapes>
579    </Planet>
580    <SpaceBoundaries reactionMode=2 warnDistance="1" maxDistance="2750" showDistance="2800" healthDecrease="0.1" position="-44000,0,0"/>
581
582
583<!-------------------------------------- The attack --------------------------------------->
584
585<!-- TODO:
586     - better performance: 4-8 Transporters from different directions heading towards duball's station
587     - attached with triggers: - if all bots died, then display end message
588                               - do a count down: 'x enemies left'
589     - update spaceshipTransporter
590     - bots do friendly fire (is drone function reusable?)
591-->
592
593<!-- @Triggers: toHydroFamer <-> first  portal usage
594                ondock       <-> successfull docking
595                attack       <-> second portal usage -->
596
597    <DistanceTrigger name="attack" position="-1400,-500,800" target="Pawn" distance=100 stayActive="true" >
598        <EventTrigger name="ondock" activations="1" stayactive="true" delay=6>
599          <events>
600            <trigger>
601              <EventListener event="dockMe" />
602            </trigger>
603          </events>
604            <DistanceTrigger name="toHydroFarmer" position="-47000,-1000,1300" target="Pawn" distance=100 stayActive="true" />
605        </EventTrigger>
606    </DistanceTrigger>
607
608    <SimpleNotification message="WHY IS THIS MESSAGE NOT DISPLAYED ??"> <!-- ondock-message should be: "Return before it's too late. Boost with 'Space'." -->
609        <events>
610            <trigger>
611                <EventListener event=ondock />
612            </trigger>
613        </events>
614    </SimpleNotification>
615
616    <SimpleNotification message="Several serious enemies are approaching!">
617        <events>
618            <trigger>
619                <EventListener event=attack />
620            </trigger>
621        </events>
622    </SimpleNotification>
623
624
625
626<!-- @Objects: 6 pirates, heading towards DuBall, attacking  -->
627<!-- 1 -->
628    <SpaceShip position="3000,-4000,4000" lookat="-1300,-600,900" name="attacker">
629        <templates>
630            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
631        </templates>
632        <controller>
633            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
634                <waypoints>
635                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
636                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
637                </waypoints>
638                <events>
639                    <activity>
640                        <EventListener event="attack" /> <!-- activates enemies-->
641                     </activity>
642                </events>
643            </WaypointPatrolController>
644        </controller>
645    </SpaceShip>
646<!-- 2 -->
647    <SpaceShip position="3000,-4000,-4000" lookat="-1300,-600,900" name="attacker">
648        <templates>
649            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
650        </templates>
651        <controller>
652            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
653                <waypoints>
654                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
655                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
656                </waypoints>
657                <events>
658                    <activity>
659                        <EventListener event="attack" /> <!-- activates enemies-->
660                     </activity>
661                </events>
662            </WaypointPatrolController>
663        </controller>
664    </SpaceShip>
665<!-- 3 -->
666    <SpaceShip position="-4000,-3000,4000" lookat="-1300,-600,900" name="attacker">
667        <templates>
668            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
669        </templates>
670        <controller>
671            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
672                <waypoints>
673                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
674                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
675                </waypoints>
676                <events>
677                    <activity>
678                        <EventListener event="attack" /> <!-- activates enemies-->
679                     </activity>
680                </events>
681            </WaypointPatrolController>
682        </controller>
683    </SpaceShip>
684<!-- 4 -->
685    <SpaceShip position="-3000,-3000,-5000" lookat="-1300,-600,900" name="attacker">
686        <templates>
687            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
688        </templates>
689        <controller>
690            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
691                <waypoints>
692                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
693                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
694                </waypoints>
695                <events>
696                    <activity>
697                        <EventListener event="attack" /> <!-- activates enemies-->
698                     </activity>
699                </events>
700            </WaypointPatrolController>
701        </controller>
702    </SpaceShip>
703<!-- 5 -->
704    <SpaceShip position="4000,4000,3000" lookat="-1300,-600,900" name="attacker">
705        <templates>
706            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
707        </templates>
708        <controller>
709            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
710                <waypoints>
711                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
712                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
713                </waypoints>
714                <events>
715                    <activity>
716                        <EventListener event="attack" /> <!-- activates enemies-->
717                     </activity>
718                </events>
719            </WaypointPatrolController>
720        </controller>
721    </SpaceShip>
722<!-- 6 -->
723    <SpaceShip position="2000,-4000,5000" lookat="-1300,-600,900" name="attacker">
724        <templates>
725            <Template link=spaceshippirate /> <!--spaceshipTransporter -->
726        </templates>
727        <controller>
728            <WaypointPatrolController alertnessradius=3129 team=0 active=false>
729                <waypoints>
730                    <Model mesh="cube.mesh" scale=0 position="-1300,-600,900" />
731                    <Model mesh="cube.mesh" scale=0 position="0,0,0" />
732                </waypoints>
733                <events>
734                    <activity>
735                        <EventListener event="attack" /> <!-- activates enemies-->
736                     </activity>
737                </events>
738            </WaypointPatrolController>
739        </controller>
740    </SpaceShip>
741
742<!-- @Triggers: attacktriggerX <-> X enemies destroyed , X is an element of [1,6] -->
743    <EventTrigger name="attacktrigger6" activations="1" stayactive="true">
744      <events>
745        <trigger>
746          <EventListener event="attacker" />
747        </trigger>
748      </events>
749      <EventTrigger name="attacktrigger5" activations="1" stayactive="true">
750        <events>
751          <trigger>
752            <EventListener event="attacker" />
753          </trigger>
754        </events>
755        <EventTrigger name="attacktrigger4" activations="1" stayactive="true">
756          <events>
757            <trigger>
758              <EventListener event="attacker" />
759            </trigger>
760          </events>
761          <EventTrigger name="attacktrigger3" activations="1" stayactive="true">
762            <events>
763              <trigger>
764                <EventListener event="attacker" />
765              </trigger>
766            </events>
767            <EventTrigger name="attacktrigger2" activations="1" stayactive="true">
768              <events>
769                <trigger>
770                  <EventListener event="attacker" />
771                </trigger>
772              </events>
773              <EventTrigger name="attacktrigger1" activations="1" stayactive="true">
774                <events>
775                  <trigger>
776                    <EventListener event="attacker" />
777                  </trigger>
778                </events>
779              </EventTrigger>
780            </EventTrigger>
781          </EventTrigger>
782        </EventTrigger>
783      </EventTrigger>
784    </EventTrigger>
785
786
787    <SimpleNotification message="5 enemies left!" broadcast="true">
788      <events>
789        <trigger>
790          <EventListener event="attacktrigger1" />
791        </trigger>
792      </events>
793    </SimpleNotification>
794
795    <SimpleNotification message="4 enemies left!" broadcast="true">
796      <events>
797        <trigger>
798          <EventListener event="attacktrigger2" />
799        </trigger>
800      </events>
801    </SimpleNotification>
802
803    <SimpleNotification message="3 enemies left!" broadcast="true">
804      <events>
805        <trigger>
806          <EventListener event="attacktrigger3" />
807        </trigger>
808      </events>
809    </SimpleNotification>
810
811    <SimpleNotification message="2 enemies left!" broadcast="true">
812      <events>
813        <trigger>
814          <EventListener event="attacktrigger4" />
815        </trigger>
816      </events>
817    </SimpleNotification>
818    <SimpleNotification message="One enemy left!" broadcast="true">
819      <events>
820        <trigger>
821          <EventListener event="attacktrigger5" />
822        </trigger>
823      </events>
824    </SimpleNotification>
825    <SimpleNotification message="Well done. You finished this tutorial." broadcast="true">
826      <events>
827        <trigger>
828          <EventListener event="attacktrigger6" />
829        </trigger>
830      </events>
831    </SimpleNotification>
832
833<!-- @Triggers: postAttack <-> delayed attacktrigger6 -->
834    <EventTrigger name="postAttack1" activations="1" stayactive="true" delay=3>
835      <events>
836        <trigger>
837          <EventListener event="attacktrigger6" />
838        </trigger>
839      </events>
840    </EventTrigger>
841
842    <EventTrigger name="postAttack2" activations="1" stayactive="true" delay=6>
843      <events>
844        <trigger>
845          <EventListener event="attacktrigger6" />
846        </trigger>
847      </events>
848    </EventTrigger>
849
850    <SimpleNotification message="Either quit by pressing 'Esc' or ..." broadcast="true">
851      <events>
852        <trigger>
853          <EventListener event="postAttack1" />
854        </trigger>
855      </events>
856    </SimpleNotification>
857
858    <SimpleNotification message="... continue by using the new portal." broadcast="true">
859      <events>
860        <trigger>
861          <EventListener event="postAttack2" />
862        </trigger>
863      </events>
864    </SimpleNotification>
865
866
867<!--- Message: Mission accomplished. Well done. Either you return to the main menu by pressing 'Esc' & then the button 'return to main menu'
868      or you might want to discover some further tricks. Then use the new portal. --->
869
870<!-------------------------------------- |Bonus Part| --------------------------------------->
871
872<!-- @Objects: 6 pirates, heading towards DuBall, attacking  -->
873    <PortalEndPoint position="700,-600,500" id="3" distance="50" target="MobileEntity" design="PortalDefault" visible=true>
874        <events>
875            <visibility>
876                <EventListener event="postAttack2" />
877            </visibility>
878        </events>
879    </PortalEndPoint>
880
881    <PortalEndPoint position="7000,10000,-5000" id="4" distance="70" target="MobileEntity" design="PortalDefault" visible=true>
882        <events>
883            <visibility>
884                <EventListener event="postAttack2" />
885            </visibility>
886        </events>
887    </PortalEndPoint>
888
889    <PortalLink fromID="3" toID="4" />
890    <PortalLink fromID="4" toID="3" />
891
892    <DistanceTrigger name="bonus1" position="7000,10000,-5000" target="Pawn" distance=100 stayActive="true" delay=2 />
893    <SimpleNotification message="Rotate your ship. Press 'Q' or 'E'. ">
894        <events>
895            <trigger>
896                <EventListener event=bonus1 />
897            </trigger>
898        </events>
899    </SimpleNotification>
900
901    <DistanceTrigger name="bonus2" position="7000,10000,-5000" target="Pawn" distance=100 stayActive="true" delay=7 />
902    <SimpleNotification message="Switch the camera's position. Press 'C'. ">
903        <events>
904            <trigger>
905                <EventListener event=bonus2 />
906            </trigger>
907        </events>
908    </SimpleNotification>
909
910    <DistanceTrigger name="bonus3" position="7000,10000,-5000" target="Pawn" distance=100 stayActive="true" delay=12 />
911    <SimpleNotification message="360° view: press 'Ctrl' + use the mouse ">
912        <events>
913            <trigger>
914                <EventListener event=bonus3 />
915            </trigger>
916        </events>
917    </SimpleNotification>
918
919    <DistanceTrigger name="bonus4" position="7000,10000,-5000" target="Pawn" distance=100 stayActive="true" delay=17 />
920    <SimpleNotification message="Have a look at the main menu's settings.">
921        <events>
922            <trigger>
923                <EventListener event=bonus4 />
924            </trigger>
925        </events>
926    </SimpleNotification>
927
928    <DistanceTrigger name="bonus5" position="7000,10000,-5000" target="Pawn" distance=100 stayActive="true" delay=22 />
929    <SimpleNotification message="E.g: Settings > Miscellaneous > Nr. of bots">
930        <events>
931            <trigger>
932                <EventListener event=bonus5 />
933            </trigger>
934        </events>
935    </SimpleNotification>
936
937    <DistanceTrigger name="bonus6" position="7000,10000,-5000" target="Pawn" distance=100 stayActive="true" delay=27 />
938    <SimpleNotification message="That's it. Have fun with some bots.">
939        <events>
940            <trigger>
941                <EventListener event=bonus6 />
942            </trigger>
943        </events>
944    </SimpleNotification>
945
946    <Script code="addBots 3" onLoad="false">
947        <events>
948            <trigger>
949                <EventListener event=bonus6 />
950            </trigger>
951        </events>
952    </Script>
953
954    <Script code="artificialcontroller setbotlevel 0.1" onLoad="false">
955        <events>
956            <trigger>
957                <EventListener event=bonus6 />
958            </trigger>
959        </events>
960    </Script>
961
962  </Scene>
963</Level>
964<!-- TODO:
965! Quest Interface
966! Problem with triggers (bug! e.g. at boxes, fast destroy)
967- Foolproof text messages (e.g. verspätete Nachrichten unterdrücken)
968- Clear Message Output: ""
969 -->
Note: See TracBrowser for help on using the repository browser.