Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/campaignHS15/data/levels/shuttleRetaliation.oxw @ 10906

Last change on this file since 10906 was 10906, checked in by gania, 8 years ago

tried to fix fighting whn fps is low

File size: 38.2 KB
Line 
1<!--TODO: Rename screenshot as soon as it is in data_extern branch -->
2<LevelInfo
3    name = "Retaliation"
4    description = "This attack cannot be met with no consequences! Commander, we order you to get back to sector 5C and erradicate the alien menace at once!"
5    tags = "mission"
6    screenshot = "missionOne.png"
7/>
8
9<?lua
10    include("stats.oxo")
11    include("HUDTemplates3.oxo")
12    include("templates/lodInformation.oxt")
13
14    include("templates/spaceshipAssff.oxt")
15    include("templates/spaceshipPirate.oxt")
16    include("templates/spaceshipEscort.oxt")
17    include("templates/spaceshipShuttle.oxt")
18    include("templates/FPS.oxt")
19    include("templates/pickupRepresentationTemplates.oxt")
20?>
21
22<Level gametype = "Mission">
23    <templates>
24        <Template link="lodtemplate_default" />
25    </templates>
26
27    <?lua include("includes/notifications.oxi") ?>
28
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="15"
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
44        enemies = 2
45        allies = 2
46
47        radSector = 12000
48
49        --[[ Coordinates in (y,z,x). NOTE: Indexing starts at 1 in lua! Don´t forget to adapt the for loops, too! ]]--
50        cCenter = {0, 0, 0}
51        cSpawn = {1500, -2000, 900}
52        cSector = {-15000, -5500, -9000}
53        cSectorEntry = {-4710, -5500, -2826}
54        cPathToEntry = {{0, -2000, 0}}
55        cBeacon = {-6500, -5500, -4400}
56         cAllyWait = cBeacon
57
58        cAlly = cSpawn
59        cEnemy = {-9600, -5500, -6000}
60
61        rSection= {0, -200, 0}
62        rWingman1 = {0, -100, 100}
63        rWingman2 = {0, -100, -100}
64
65        cPlanet1 = {20000, 0, 29000}
66        cPlanet2 = {-22000, 0, -29000}
67
68        cEnemyBasePlanet = {-20000, -8000, -10000}
69
70        cField1 = {-5000, -4000, -3000}
71        cField2 = {4000, 2000, 4500}
72
73
74        --[[ Function to print Coordinates. Quotes not included! ]]--
75        function printC(coord)
76          print(coord[1] .. [[,]] .. coord[2] .. [[,]] .. coord[3])
77        end
78
79        --[[ Function to add Coordinates.]]--
80        function addC(coord1, coord2)
81            return {coord1[1]+coord2[1], coord1[2]+coord2[2], coord1[3]+coord2[3]}
82        end
83    ?>
84
85    <Scene
86        ambientlight = "0.8, 0.8, 0.8"
87        skybox = "Orxonox/skyBoxMoreNebula"
88        hasPhysics = true
89    >
90
91    <WorldAmbientSound source="Earth.ogg" looping="true" playOnLoad="true" />
92
93    <Light type=directional position="<?lua printC(cSpawn) ?>" 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"/>
94
95    <!--SPAWNING-->
96
97    <Template name=commander>
98        <SpaceShip
99            template            = "spaceshipassff"
100            team                = "0"
101            health              = "800"
102            initialhealth       = "800"
103            maxhealth           = "1500"
104            shieldhealth        = "80"
105            initialshieldhealth = "80"
106            maxshieldhealth     = "120"
107            shieldabsorption    = "0.8"
108            reloadrate          = "1"
109            reloadwaittime      = "1"
110            name                = "commander"
111            radarname           = "Commander"
112            >
113            <attached>
114                <DistanceTriggerBeacon name="Commander" />
115            </attached>
116        </SpaceShip>
117    </Template>
118
119    <Template name=ally>
120        <SpaceShip
121            template            = "spaceshipassff"
122            team                = "0"
123            radarname           = "Ally"
124            lookat              = "<?lua printC(cPathToEntry[1]) ?>"
125        >
126            <attached>
127                <DistanceTriggerBeacon name="Ally" />
128            </attached>
129        </SpaceShip>
130    </Template>
131
132    <Template name=enemy>
133        <SpaceShip
134            template            = "spaceshippirate"
135            team                = "1"
136            radarname           = "Invader"
137            lookat              = "<?lua printC(cBeacon) ?>"
138            active              = false
139            visible             = false
140        >
141            <attached>
142                <DistanceTriggerBeacon name="Enemy" />
143            </attached>
144        </SpaceShip>
145    </Template>
146
147    <TeamSpawnPoint active=false name="playerSpawn" team=0 position="<?lua printC(cSpawn) ?>" lookat="<?lua printC(cPathToEntry[1]) ?>" spawnclass=SpaceShip pawndesign=commander>
148        <events>
149            <activity>
150                <EventTrigger invert=true>
151                  <events>
152                    <trigger>
153                      <EventListener event="reachedSector" />
154                    </trigger>
155                  </events>
156                </EventTrigger>
157            </activity>
158        </events>
159    </TeamSpawnPoint>
160
161    <TeamSpawnPoint active=false name="altSpawn" team=0 position="<?lua printC(cBeacon) ?>" lookat="<?lua printC(cSector) ?>" spawnclass=SpaceShip pawndesign=commander>
162        <events>
163            <activity>
164                <EventListener event="reachedSector" />
165            </activity>
166        </events>
167    </TeamSpawnPoint>
168
169    <!--QUEST DEFINITIONS-->
170
171    <GlobalQuest id="quest1">
172        <QuestDescription title="Enter Sector 5C" description="It is time to retaliate against the aggressors. Get back to Sector 5C to kill every last one of them! We have you covered with <?lua print(allies) ?> of our finest Divisions. They will guide, help and protect you if necessary." failMessage="" completeMessage="" />
173        <hints>
174            <QuestHint id="quest1hint1">
175                <QuestDescription title="Markings" description="We have marked the bounds of Sector 5C in red lights, you can follow the green trail to get there." />
176            </QuestHint>
177        </hints>
178    </GlobalQuest>
179
180    <GlobalQuest id="quest2">
181        <QuestDescription title="Find them" description="It seems they have hidden themselves, that is, their whole civilization, in fear of retaliation. Our scientists presume some cloaking technology to be in use. Look out for a way to make the aggressors visible!" failMessage="" completeMessage="" />
182        <hints>
183            <QuestHint id="quest2hint1">
184                <QuestDescription title="The detector beacon" description="Our scientists claim cloaking is generally toggled by a visible Switch called a detector beacon. Try to find a bright light in your Area and approach it!" />
185            </QuestHint>
186        </hints>
187    </GlobalQuest>
188
189    <GlobalQuest id="quest3">
190        <QuestDescription title="Fight their army" description="You have successfully uncovered their civilization and home planet, and it is much worse than we thought... they came prepared! You have to fight their army to fulfill your mission." failMessage="" completeMessage="" />
191        <hints>
192        </hints>
193        <complete-effects>
194            <AddQuest questId="quest4" />
195            <AddQuest questId="quest4.1" />
196            <AddQuest questId="quest4.2" />
197            <AddQuestHint hintId="quest4.1hint1" />
198            <AddQuestHint hintId="quest4.2hint1" />
199        </complete-effects>
200    </GlobalQuest>
201
202    <GlobalQuest id="quest4">
203        <QuestDescription title="Do the right thing" description="The aggressors have surrendered and seem to have had good reasons for their actions. Yet they did not talk to us beforehand and tried to kill us. What will you do?" failMessage="" completeMessage="" />
204        <hints>
205        </hints>
206        <subquests>
207            <GlobalQuest id="quest4.1">
208                <QuestDescription title="> Destroy their civilisation" description="Even if they had reasons, they are still murderers and can not be trusted anymore. This whole thing might even be a setup... We need to kill them and destroy their planet!" failMessage="" completeMessage="" />
209                <hints>
210                    <QuestHint id="quest4.1hint1">
211                        <QuestDescription title="Choosing" description="To make this choice, kill one of the remaining enemy ships. The divisions will follow your decision." />
212                    </QuestHint>
213                </hints>
214            </GlobalQuest>
215            <GlobalQuest id="quest4.2">
216                <QuestDescription title="> Spare them and leave" description="Military tension arising from a missunderstanding is no valid reasoning for a genocide. Nothing is. We should leave and talk this out later." failMessage="" completeMessage="" />
217                <hints>
218                    <QuestHint id="quest4.2hint1">
219                        <QuestDescription title="Choosing" description="To make this choice, fly away from the remaining enemy ships. The divisions will follow your decision." />
220                    </QuestHint>
221                </hints>
222            </GlobalQuest>
223        </subquests>
224    </GlobalQuest>
225
226    <!--EVENTS AND TRIGGERS
227        Usable events and triggers:
228        spawntrigger
229    -->
230
231    <EventMultiTrigger name="spawntrigger" activations=1>
232        <events>
233            <trigger>
234                <EventListener event="playerSpawn" />
235            </trigger>
236        </events>
237    </EventMultiTrigger>
238
239    <EventMultiTrigger name="spawned" stayactive=true activations=1>
240        <events>
241            <trigger>
242                <EventListener event="spawntrigger" />
243            </trigger>
244        </events>
245    </EventMultiTrigger>
246
247    <DistanceTrigger name="reachedSector" position="<?lua printC(cSector) ?>" distance="<?lua print(radSector) ?>" target="SpaceShip" beaconMode="identify" targetname="Commander" stayactive=true />
248
249    <EventMultiTrigger name="addQuest2">
250        <events>
251            <trigger>
252                <EventTrigger stayactive="true" delay=10 >
253                   <events>
254                      <trigger>
255                         <EventListener event="reachedSector" />
256                      </trigger>
257                   </events>
258                </EventTrigger>
259            </trigger>
260        </events>
261    </EventMultiTrigger>
262
263    <DistanceTrigger name="alliesReachedWait" position="<?lua printC(cAllyWait) ?>" distance="1000" target="SpaceShip" beaconMode="identify" targetname="Ally" stayactive=true />
264
265    <!-- So the allies stall when they reached their position for negociation and don´t fire away... -->
266
267    <EventDispatcher name="allyControllerDispatcher">
268      <targets>
269        <EventTarget target="allyController" />
270      </targets>
271      <events>
272          <activity>
273                <Trigger mode=or>
274                    <EventTrigger invert=true>
275                        <events>
276                            <trigger>
277                                <EventListener event="alliesReachedWait" />
278                            </trigger>
279                        </events>
280                    </EventTrigger>
281                    <EventTrigger>
282                        <events>
283                            <trigger>
284                                <EventListener event="noMercy" />
285                            </trigger>
286                        </events>
287                    </EventTrigger>
288                    <Trigger mode=and>
289                        <EventTrigger>
290                            <events>
291                                <trigger>
292                                    <EventListener event="fightBegun" />
293                                </trigger>
294                            </events>
295                        </EventTrigger>
296                        <EventTrigger invert=true>
297                            <events>
298                                <trigger>
299                                    <EventListener event="oneUnitLeft" />
300                                </trigger>
301                            </events>
302                        </EventTrigger>
303                    </Trigger>
304                </Trigger> 
305          </activity>
306      </events>
307    </EventDispatcher>
308
309    <EventMultiTrigger name="hintBeacon">
310        <events>
311            <trigger>
312                <EventTrigger stayactive="true" delay=70 >
313                   <events>
314                      <trigger>
315                         <EventListener event="reachedSector" />
316                      </trigger>
317                   </events>
318                </EventTrigger>
319            </trigger>
320        </events>
321    </EventMultiTrigger>
322
323    <DistanceTrigger name="cloakBeacon" position="<?lua printC(cBeacon) ?>" distance=100 target="SpaceShip" beaconMode="identify" targetname="Commander" stayactive=true />
324
325    <EventMultiTrigger name="fightBegun" stayactive=true>
326        <events>
327            <trigger>
328                <EventTrigger stayactive="true" delay=12>
329                   <events>
330                      <trigger>
331                         <EventListener event="cloakBeacon" />
332                      </trigger>
333                   </events>
334                </EventTrigger>
335            </trigger>
336        </events>
337    </EventMultiTrigger>
338
339    <EventDispatcher name="enemyControllerDispatcher">
340      <targets>
341        <EventTarget target="enemyController" />
342      </targets>
343      <events>
344          <activity>
345              <Trigger mode=and>
346                  <EventTrigger>
347                      <events>
348                          <trigger>
349                              <EventListener event="fightBegun" />
350                          </trigger>
351                      </events>
352                  </EventTrigger>
353                  <EventTrigger invert=true>
354                      <events>
355                          <trigger>
356                              <EventListener event="oneUnitLeft" />
357                          </trigger>
358                      </events>
359                  </EventTrigger>
360              </Trigger>
361          </activity>
362      </events>
363    </EventDispatcher>
364
365    <EventMultiTrigger name="noMercy" stayactive=true>
366        <events>
367            <trigger>
368                    <Trigger mode=or>
369                        <?lua
370                        for i = 1, enemies, 1
371                        do
372                        ?>
373                        <EventTrigger active=false>
374                            <events>
375                                <activity>
376                                    <EventTrigger>
377                                        <events>
378                                            <trigger>
379                                                <EventListener event="oneUnitLeft" />
380                                            </trigger>
381                                        </events>
382                                    </EventTrigger>
383                                </activity>
384                                <trigger>
385                                    <EventListener event="enemy<?lua print(i) ?>" />      <!--TODO: trigger this with something that comes up when an enemy dies WITHOUT breaking the rest -->
386                                </trigger>
387                            </events>
388                        </EventTrigger>
389                        <?lua end ?>
390                    </Trigger>
391            </trigger>
392        </events>
393    </EventMultiTrigger>
394
395    <!-- Recursive helper function for the event at the "end" of a Unit.-->
396    <?lua
397    function enemyTriggerRecursor(i, k)
398    if i > 0 then
399    return [[
400    <EventTrigger name=killedEnemy]] .. ((k-1)*4+i) .. [[ activations=1 stayactive=true delay=0.1>
401        <events>
402            <trigger>
403                <EventListener event=enemy]] .. k .. [[ />
404            </trigger>
405        </events>
406        ]] .. enemyTriggerRecursor(i-1, k) .. [[
407    </EventTrigger>
408    ]]
409    else return ""
410    end
411    end
412    ?>
413    <!-- Actual recursive Event(s) for the respective Units. (packs of 4 Enemies that is!) -->
414    <?lua
415    for k = 1, enemies, 1
416    do
417    print(enemyTriggerRecursor(4,k))
418    ?>
419    <EventMultiTrigger name="unit<?lua print(k) ?>Down" delay=0.1 stayactive=true>
420        <events>
421            <trigger>
422                <EventListener event="killedEnemy<?lua print(k*4) ?>" />
423            </trigger>
424        </events>
425    </EventMultiTrigger>
426    <?lua end ?>
427
428    <EventMultiTrigger name="oneUnitLeft" stayactive=true>
429        <events>
430            <trigger>
431                <Trigger mode=or>
432                    <?lua
433                    for k = 1, enemies, 1
434                    do
435                    ?>
436                        <Trigger mode=and>
437                            <EventTrigger invert=true>
438                                <events>
439                                    <trigger>
440                                        <EventListener event="unit<?lua print(k) ?>Down" />
441                                    </trigger>
442                                </events>
443                            </EventTrigger>
444                            <?lua
445                            for i = 1, enemies, 1
446                            do
447                            if not (i == k) then
448                            ?>
449                            <EventTrigger>
450                                <events>
451                                    <trigger>
452                                        <EventListener event="unit<?lua print(i) ?>Down" />
453                                    </trigger>
454                                </events>
455                            </EventTrigger>
456                            <?lua end end ?>
457                        </Trigger>
458                    <?lua end ?>
459                </Trigger>
460            </trigger>
461        </events>
462    </EventMultiTrigger>
463
464    <EventMultiTrigger name="allUnitsDown" stayactive=true>
465        <events>
466            <trigger>
467                <Trigger mode=and>
468                    <?lua
469                    for k = 1, enemies, 1
470                    do
471                    ?>
472                    <EventTrigger>
473                        <events>
474                            <trigger>
475                                <EventListener event="unit<?lua print(i) ?>Down" />
476                            </trigger>
477                        </events>
478                    </EventTrigger>
479                    <?lua end ?>
480                </Trigger>
481            </trigger>
482        </events>
483    </EventMultiTrigger>
484
485    <!--TODO: Complete the DistanceTriggers for completing/succeeding correctly! -->
486
487    <DistanceTrigger active=false name="missionComplete" position="2000,0,0" distance=100 target="SpaceShip" stayactive=true>
488        <events>
489            <activity>
490                <EventListener event="missionCompletePrereq" />
491            </activity>
492        </events>
493    </DistanceTrigger>
494
495    <Script code="Mission endMission true" onLoad="false">
496        <events>
497            <trigger>
498                <EventListener event="missionComplete" />
499            </trigger>
500        </events>
501    </Script>
502
503    <DistanceTrigger active=false name="missionFailed" position="2000,0,0" distance=100 target="SpaceShip" stayactive=true>
504        <events>
505            <activity>
506                <EventListener event="missionFailedPrereq" />
507            </activity>
508        </events>
509    </DistanceTrigger>
510
511    <Script code="Mission endMission fail" onLoad="false">
512        <events>
513            <trigger>
514                <EventListener event="failMission" />
515            </trigger>
516        </events>
517    </Script>
518
519    <!--QUEST EFFECT BEACONS -->
520
521    <QuestEffectBeacon times=1>
522        <effects>
523            <AddQuest questId="quest1" />
524            <AddQuestHint HintId="quest1hint1" />
525        </effects>
526        <events>
527            <execute>
528                <EventListener event="spawntrigger" />
529            </execute>
530        </events>
531    </QuestEffectBeacon>
532
533    <QuestEffectBeacon times=1>
534        <effects>
535            <CompleteQuest questId="quest1" />
536        </effects>
537        <events>
538            <execute>
539                <EventListener event="reachedSector" />
540            </execute>
541        </events>
542    </QuestEffectBeacon>
543
544    <QuestEffectBeacon times=1>
545        <effects>
546            <AddQuest questId="quest2" />
547        </effects>
548        <events>
549            <execute>
550                <EventListener event="addQuest2" />
551            </execute>
552        </events>
553    </QuestEffectBeacon>
554
555    <QuestEffectBeacon times=1>
556        <effects>
557            <AddQuestHint hintId="quest2hint1
558                " />
559        </effects>
560        <events>
561            <execute>
562                <EventListener event="hintBeacon" />
563            </execute>
564        </events>
565    </QuestEffectBeacon>
566
567    <QuestEffectBeacon times=1>
568        <effects>
569            <CompleteQuest questId="quest2" />
570        </effects>
571        <events>
572            <execute>
573                <EventListener event="cloakBeacon" />
574            </execute>
575        </events>
576    </QuestEffectBeacon>
577
578    <QuestEffectBeacon times=1>
579        <effects>
580            <AddQuest questId="quest3" />
581        </effects>
582        <events>
583            <execute>
584                <EventListener event="fightBegun" />
585            </execute>
586        </events>
587    </QuestEffectBeacon>
588
589    <QuestEffectBeacon times=1>
590        <effects>
591            <CompleteQuest questId="quest3" />
592        </effects>
593        <events>
594            <execute>
595                <EventListener event="oneUnitLeft" />
596            </execute>
597        </events>
598    </QuestEffectBeacon>
599
600    <!--TODO: Include planet destruction and quitting -->
601
602    <QuestEffectBeacon times=1>
603        <effects>
604            <CompleteQuest questId="quest4" />
605        </effects>
606        <events>
607            <execute>
608                <EventListener event="enemyAllGone" />
609            </execute>
610        </events>
611    </QuestEffectBeacon>
612
613
614    <!--NOTIFICATIONS -->
615
616    <SimpleNotification broadcast="true" message="Welcome, Commander. It is time to retaliate!">
617        <events>
618            <trigger>
619                <EventTrigger stayactive="true" delay=4 >
620                   <events>
621                      <trigger>
622                         <EventListener event="spawntrigger" />
623                      </trigger>
624                   </events>
625                </EventTrigger>
626            </trigger>
627        </events>
628    </SimpleNotification>
629
630    <SimpleNotification broadcast="true" message="Get to section 5C and erradicate the aggressors!">
631        <events>
632            <trigger>
633                <EventTrigger stayactive="true" delay=8 >
634                   <events>
635                      <trigger>
636                         <EventListener event="spawntrigger" />
637                      </trigger>
638                   </events>
639                </EventTrigger>
640            </trigger>
641        </events>
642    </SimpleNotification>
643
644    <SimpleNotification broadcast="true" message="That seems extreme. Is there no way around it?">
645        <events>
646            <trigger>
647                <EventTrigger stayactive="true" delay=12 >
648                   <events>
649                      <trigger>
650                         <EventListener event="spawntrigger" />
651                      </trigger>
652                   </events>
653                </EventTrigger>
654            </trigger>
655        </events>
656    </SimpleNotification>
657
658    <SimpleNotification broadcast="true" message="Stick to your objective, Commander. This is war.">
659        <events>
660            <trigger>
661                <EventTrigger stayactive="true" delay=16 >
662                   <events>
663                      <trigger>
664                         <EventListener event="spawntrigger" />
665                      </trigger>
666                   </events>
667                </EventTrigger>
668            </trigger>
669        </events>
670    </SimpleNotification>
671
672    <SimpleNotification broadcast="true" message="Huh?! The sector is empty! where are they hiding?">
673       <events>
674           <trigger>
675               <EventTrigger stayactive="true" delay=2 >
676                  <events>
677                     <trigger>
678                        <EventListener event="reachedSector" />
679                     </trigger>
680                  </events>
681               </EventTrigger>
682           </trigger>
683       </events>
684    </SimpleNotification>
685
686    <SimpleNotification broadcast="true" message="They must be cloaking themselves! But we'll figure it out...">
687      <events>
688          <trigger>
689              <EventTrigger stayactive="true" delay=6 >
690                 <events>
691                    <trigger>
692                       <EventListener event="reachedSector" />
693                    </trigger>
694                 </events>
695              </EventTrigger>
696          </trigger>
697      </events>
698    </SimpleNotification>
699
700    <SimpleNotification broadcast="true" message="Got it! Look out for a bright light and touch it!">
701     <events>
702         <trigger>
703             <EventListener event="addQuest2" />
704         </trigger>
705     </events>
706    </SimpleNotification>
707
708    <SimpleNotification broadcast="true" message="Divisions are standing by, Sir.">
709     <events>
710         <trigger>
711             <EventListener event="alliesReachedWait" />
712         </trigger>
713     </events>
714    </SimpleNotification>
715
716    <SimpleNotification broadcast="true" message="Woah! what the hell! they boobytrapped us!">
717     <events>
718         <trigger>
719             <EventListener event="cloakBeacon" />
720         </trigger>
721     </events>
722    </SimpleNotification>
723
724    <SimpleNotification broadcast="true" message="Greetings, Humans. Are you here to resign to your menace and make amends?">
725     <events>
726         <trigger>
727             <EventTrigger stayactive="true" delay=4 >
728                <events>
729                   <trigger>
730                      <EventListener event="cloakBeacon" />
731                   </trigger>
732                </events>
733             </EventTrigger>
734         </trigger>
735     </events>
736    </SimpleNotification>
737
738    <SimpleNotification broadcast="true" message="Menace? What is he on about, General?">
739     <events>
740         <trigger>
741             <EventTrigger stayactive="true" delay=8 >
742                <events>
743                   <trigger>
744                      <EventListener event="cloakBeacon" />
745                   </trigger>
746                </events>
747             </EventTrigger>
748         </trigger>
749     </events>
750    </SimpleNotification>
751
752    <SimpleNotification broadcast="true" message="None of your concern, Commander. Launch the attack!">
753     <events>
754         <trigger>
755             <EventTrigger stayactive="true" delay=12 >
756                <events>
757                   <trigger>
758                      <EventListener event="cloakBeacon" />
759                   </trigger>
760                </events>
761             </EventTrigger>
762         </trigger>
763     </events>
764    </SimpleNotification>
765
766    <SimpleNotification broadcast="true" message="Unit 1 down!">
767     <events>
768         <trigger>
769             <EventListener event="unit1Down" />
770         </trigger>
771     </events>
772    </SimpleNotification>
773
774    <SimpleNotification broadcast="true" message="Unit 2 down!">
775     <events>
776         <trigger>
777             <EventListener event="unit2Down" />
778         </trigger>
779     </events>
780    </SimpleNotification>
781
782    <SimpleNotification broadcast="true" message="Unit 3 down!">
783     <events>
784         <trigger>
785             <EventListener event="unit3Down" />
786         </trigger>
787     </events>
788    </SimpleNotification>
789
790    <SimpleNotification broadcast="true" message="Unit 4 down!">
791     <events>
792         <trigger>
793             <EventListener event="unit4Down" />
794         </trigger>
795     </events>
796    </SimpleNotification>
797
798    <SimpleNotification broadcast="true" message="Please! No More! We surrender!">
799     <events>
800         <trigger>
801             <EventListener event="oneUnitLeft" />
802         </trigger>
803     </events>
804    </SimpleNotification>
805
806    <SimpleNotification broadcast="true" message="Well done, Commander. You got rid of the alien scum.">
807     <events>
808         <trigger>
809             <EventListener event="allUnitsDown" />
810         </trigger>
811     </events>
812    </SimpleNotification>
813
814    <SimpleNotification broadcast="true" message="Roger that, Commander. We kill them.">
815     <events>
816         <trigger>
817             <EventListener event="noMercy" />
818         </trigger>
819     </events>
820    </SimpleNotification>
821
822    <!--ELEMENTS -->
823
824    <!-- Billboard Path to Sector 5C. Height changes in an atan shape -->
825
826    <?lua
827    for i = 1, 11, 1
828    do
829    heightNow = cPathToEntry[1][2] - (cPathToEntry[1][2]-cSectorEntry[2])*(math.atan(-1.6+0.3*i) + 1)/2
830    cBillNow = {(cSectorEntry[1]-cPathToEntry[1][1])*i/12, heightNow, (cSectorEntry[3]-cPathToEntry[1][3])*i/12}
831    cPathToEntry[i+1] = cBillNow
832    ?>
833    <Billboard position="<?lua printC(cBillNow) ?>"  scale=2 material="Flares/ringflare" colour="0.2,0.9,0.2"/>
834    <?lua
835    end
836    cPathToEntry[13] = cSectorEntry
837    ?>
838
839    <Billboard position="<?lua printC(cSectorEntry) ?>"  scale=5 material="Flares/ringflare" colour="0.2,0.9,0.2"/>
840
841    <!-- Circular Billboard Ring around Sector 5C -->
842
843    <?lua
844    for i = 1, 64, 1
845    do
846    rBillboard = {math.sin(i*math.pi/32)*radSector, 0, math.cos(i*math.pi/32)*radSector}
847    cBillNow = addC(cSector,rBillboard)
848    ?>
849    <Billboard position="<?lua printC(cBillNow) ?>"  scale=10 material="Flares/lensflare" colour="1,0.2,0.2"/>
850    <?lua end ?>
851
852    <!-- Cloaking Beacon -->
853
854    <BlinkingBillboard visible=false active=false scale=2 position="<?lua printC(cBeacon) ?>" material="Flares/lensflare" frequency=1 amplitude=3 colour="0.4,0.4,1">
855        <events>
856            <activity>
857                <EventListener event="addQuest2" />
858            </activity>
859            <visibility>
860                <EventListener event="addQuest2" />
861            </visibility>
862        </events>
863    </BlinkingBillboard>
864
865    <!-- Asteroids you have to fly through to get to the EnemyBase -->
866
867    <?lua
868        dofile("includes/asteroidField.lua")
869       asteroidField(cField1[1], cField1[2], cField1[3], 20, 30, 4500, 500, 0)
870    ?>
871
872    <!-- Other Asteroid-Fields -->
873
874    <?lua
875        dofile("includes/asteroidField.lua")
876       asteroidField(cField2[1], cField2[2], cField2[3], 20, 30, 4500, 500, 0)
877    ?>
878
879    <!-- Planets -->
880
881   <Planet
882        position="<?lua printC(cPlanet1) ?>"
883        scale="3000"
884        collisionType="dynamic"
885        linearDamping="0.8"
886        angularDamping="0"
887        mass="5000000"
888        pitch="0"
889        mesh="planets/muunilinst.mesh"
890        atmosphere="atmosphere1"
891        rotationaxis="1,0,0"
892        rotationrate="1.0"
893        atmospheresize="80.0f"
894        imagesize="1024.0f"
895        collisiondamage = 2
896        enablecollisiondamage = true
897    visible=true
898    active=true
899      >
900      <attached>
901        <ForceField position="0,0,0" mode="sphere" diameter="6000" velocity="-500" />
902        </attached>
903          <collisionShapes>
904            <SphereCollisionShape radius="3000" position="0,0,0" />
905      </collisionShapes>
906    </Planet>
907
908    <?lua
909        dofile("includes/asteroidField.lua")
910        asteroidBelt(cPlanet1[1], cPlanet1[2], cPlanet1[3], 30, 20, 100, 20, 40, 3400, 3700, 400, 1)
911    ?>
912
913    <Planet
914        position="<?lua printC(cPlanet2) ?>"
915        scale="2000"
916        collisionType="dynamic"
917        linearDamping="0.8"
918        angularDamping="0"
919        mass="5000000"
920        pitch="0"
921        mesh="planets/ganymede.mesh"
922        atmosphere="atmosphere1"
923        rotationaxis="1,0,0"
924        rotationrate="1.0"
925        atmospheresize="80.0f"
926        imagesize="1024.0f"
927        collisiondamage = 2
928        enablecollisiondamage = true
929        visible=true
930        active=true
931      >
932      <attached>
933        <ForceField position="0,0,0" mode="sphere" diameter="4000" velocity="-500" />
934        </attached>
935          <collisionShapes>
936            <SphereCollisionShape radius="2000" position="0,0,0" />
937      </collisionShapes>
938    </Planet>
939
940    <?lua
941        dofile("includes/asteroidField.lua")
942        asteroidBelt(cPlanet2[1], cPlanet2[2], cPlanet2[3], 30, 20, 100, 20, 40, 3400, 3700, 400, 1)
943    ?>
944
945    <!-- EnemyPlanet -->
946
947    <Planet
948        position="<?lua printC(cEnemyBasePlanet) ?>"
949        scale="5000"
950        collisionType="dynamic"
951        linearDamping="0.8"
952        angularDamping="0"
953        mass="5000000"
954        pitch="0"
955        mesh="planets/jupiter.mesh"
956        atmosphere="atmosphere1"
957        rotationaxis="1,0,0"
958        rotationrate="1.0"
959        atmospheresize="80.0f"
960        imagesize="1024.0f"
961        collisiondamage = 2
962        enablecollisiondamage = true
963        visible=false
964        active=false
965    >
966        <attached>
967           <ForceField position="0,0,0" mode="sphere" diameter="10000" velocity="-500" />
968        </attached>
969        <events>
970            <activity>
971              <EventListener event="enemyPlanetVisible" />
972            </activity>
973            <visibility>
974              <EventListener event="enemyPlanetVisible" />
975            </visibility>
976        </events>
977    </Planet>
978
979    <EventMultiTrigger name="enemyPlanetMulti">
980     <events>
981         <trigger>
982             <EventListener event="enemyPlanet" />
983         </trigger>
984     </events>
985    </EventMultiTrigger>
986
987    <EventMultiTrigger name="enemyPlanetVisible">
988     <events>
989         <trigger>
990             <Trigger mode=and>
991                <EventTrigger>
992                      <events>
993                          <trigger>
994                              <EventListener event="cloakBeacon" />
995                          </trigger>
996                      </events>
997                  </EventTrigger>
998                  <EventTrigger invert=true>
999                      <events>
1000                          <trigger>
1001                              <EventListener event="enemyPlanetMulti" />
1002                          </trigger>
1003                      </events>
1004                  </EventTrigger>
1005              </Trigger>
1006         </trigger>
1007     </events>
1008    </EventMultiTrigger>
1009
1010    <!-- Pawn that represents the planet during destruction -->
1011
1012    <Pawn team=1 health=300 name="enemyPlanet" position="<?lua printC(cEnemyBasePlanet) ?>" collisionType=dynamic mass=5000000 radarname="Enemy home planet">
1013        <collisionShapes>
1014          <SphereCollisionShape position="0,0,0" radius=5500/>
1015        </collisionShapes>
1016    </Pawn>
1017    <!--SHIPS -->
1018
1019    <!--Allied units-->
1020
1021    <?lua
1022    for i = 1, allies, 1
1023    do
1024    rUnit = {-math.sin(math.pi*((i-1/2)/allies))*125, math.pow(-1,i)*80, math.cos(math.pi*((i-1/2)/allies))*800}
1025    cAllyNow = addC(cAlly,rUnit)
1026    ?>
1027
1028    <SpaceShip health=600 initialhealth=600 maxhealth=600 position="<?lua printC(cAllyNow) ?>" name="ally<?lua print(i) ?>.D">
1029      <templates>
1030        <Template link=ally />
1031      </templates>
1032      <controller>
1033        <DivisionController name="allyController" team=0 formationMode="diamond" spread=100>
1034          <actionpoints>
1035              <?lua
1036              for i = 1, 13, 1
1037              do
1038              ?>
1039              <Actionpoint position="<?lua printC(addC(cPathToEntry[i], rUnit)) ?>" action="fly"/>
1040              <?lua end ?>
1041           </actionpoints>
1042        </DivisionController>
1043      </controller>
1044    </SpaceShip>
1045
1046    <SpaceShip health=600 initialhealth=600 maxhealth=600 position="<?lua printC(addC(cAllyNow,rSection)) ?>" lookat="0,0,0" name="ally<?lua print(i) ?>.S">
1047      <templates>
1048        <Template link=ally />
1049      </templates>
1050      <controller>
1051        <SectionController name="allyController" team=0>
1052        </SectionController>
1053      </controller>
1054    </SpaceShip>
1055
1056    <SpaceShip health=600 initialhealth=600 maxhealth=600 position="<?lua printC(addC(cAllyNow,rWingman1)) ?>" lookat="0,0,0" name="ally<?lua print(i) ?>.W1">
1057      <templates>
1058        <Template link=ally />
1059      </templates>
1060      <controller>
1061        <WingmanController name="allyController" team=0>
1062        </WingmanController>
1063      </controller>
1064    </SpaceShip>
1065
1066    <SpaceShip health=600 initialhealth=600 maxhealth=600 position="<?lua printC(addC(cAllyNow,rWingman2)) ?>" lookat="0,0,0" name="ally<?lua print(i) ?>.W2">
1067      <templates>
1068        <Template link=ally />
1069      </templates>
1070      <controller>
1071        <WingmanController name="allyController" team=0>
1072        </WingmanController>
1073      </controller>
1074    </SpaceShip>
1075
1076    <?lua end ?>
1077
1078    <!-- Enemy Units -->
1079
1080    <?lua
1081    for k = 1, enemies, 1
1082    do
1083    rUnit = {125 -math.sin(math.pi*((k-1/2)/enemies))*200, math.pow(-1,k)*300, math.cos(math.pi*((k-1/2)/enemies))*1000}
1084    cEnemyNow = addC(cEnemy,rUnit)
1085    ?>
1086
1087    <SpaceShip health=400 initialhealth=400 maxhealth=400 position="<?lua printC(cEnemyNow) ?>" name="enemy<?lua print(k) ?>">
1088      <templates>
1089        <Template link=enemy />
1090      </templates>
1091      <events>
1092          <activity>
1093              <EventListener event="cloakBeacon" />
1094          </activity>
1095          <visibility>
1096              <EventListener event="cloakBeacon" />
1097          </visibility>
1098      </events>
1099      <controller>
1100        <DivisionController name="enemyController" active=false team=1 formationMode="diamond" spread=100>
1101          <actionpoints>
1102              <Actionpoint position="<?lua printC(cEnemyNow) ?>" action="fightall" />
1103          </actionpoints>
1104        </DivisionController>
1105      </controller>
1106    </SpaceShip>
1107
1108    <SpaceShip health=400 initialhealth=400 maxhealth=400 position="<?lua printC(addC(cEnemyNow,rSection)) ?>" name="enemy<?lua print(k) ?>">
1109      <templates>
1110        <Template link=enemy />
1111      </templates>
1112      <events>
1113          <activity>
1114              <EventListener event="cloakBeacon" />
1115          </activity>
1116          <visibility>
1117              <EventListener event="cloakBeacon" />
1118          </visibility>
1119      </events>
1120      <controller>
1121        <SectionController name="enemyController" active=false team=1>
1122        </SectionController>
1123      </controller>
1124    </SpaceShip>
1125
1126    <SpaceShip health=400 initialhealth=400 maxhealth=400 position="<?lua printC(addC(cEnemyNow,rWingman1)) ?>" lookat="0,0,0" name="enemy<?lua print(k) ?>">
1127      <templates>
1128        <Template link=enemy />
1129      </templates>
1130      <events>
1131          <activity>
1132              <EventListener event="cloakBeacon" />
1133          </activity>
1134          <visibility>
1135              <EventListener event="cloakBeacon" />
1136          </visibility>
1137      </events>
1138      <controller>
1139        <WingmanController name="enemyController" active=false team=1>
1140        </WingmanController>
1141      </controller>
1142    </SpaceShip>
1143
1144    <SpaceShip health=400 initialhealth=400 maxhealth=400 position="<?lua printC(addC(cEnemyNow,rWingman2)) ?>" name="enemy<?lua print(k) ?>">
1145      <templates>
1146        <Template link=enemy />
1147      </templates>
1148      <events>
1149          <activity>
1150              <EventListener event="cloakBeacon" />
1151          </activity>
1152          <visibility>
1153              <EventListener event="cloakBeacon" />
1154          </visibility>
1155      </events>
1156      <controller>
1157        <WingmanController name="enemyController" active=false team=1>
1158        </WingmanController>
1159      </controller>
1160    </SpaceShip>
1161
1162    <?lua end ?>
1163
1164    </Scene>
1165</Level>
Note: See TracBrowser for help on using the repository browser.