Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ProtectBoss_HS17/data/levels/ProtectBoss.oxw @ 11604

Last change on this file since 11604 was 11604, checked in by lrigoni, 7 years ago

Changes of 27.11.2017

File size: 14.8 KB
Line 
1<LevelInfo
2 name = "ProtectBoss"
3 description = "Protect a disabled cargo ship!"
4 tags = "test"
5 screenshot = "emptylevel.png"
6/>
7
8<?lua
9  include("stats.oxo")
10  include("HUDTemplates3.oxo")
11  include("templates/lodInformation.oxt")
12  include("templates/HeavyCruiser.oxt")
13  include("HUDPickupTemplate.oxo")
14  include("templates/pickupRepresentationTemplates.oxt")
15  include("includes/pickups.oxi")
16?>
17
18<?lua
19  include("templates/spaceshipEscort.oxt")
20  include("templates/spaceshipAssff.oxt")
21  include("templates/endurancetest_template.oxt")
22  include("templates/spaceshipPirate.oxt")
23?>
24
25<Level gametype="Mission">
26  <templates>
27    <Template link=lodtemplate_default />
28  </templates>
29  <?lua include("includes/notifications.oxi") ?>
30
31  <NotificationQueueCEGUI
32    name="narrative"
33    targets="simpleNotification"
34    size=3
35    displayTime=7
36    position="0.2, 0, 0.1, 0"
37    fontSize="16"
38    fontColor="0.3, 1, 0.2, 0.8"
39    alignment="HorzCentred"
40    displaySize="0.6, 0, 0, 0"
41  />
42
43  <Scene
44    ambientlight = "0.8, 0.8, 0.8"
45    skybox       = "Orxonox/Starbox"
46  >
47
48    <WorldAmbientSound source="Earth.ogg" looping="true" playOnLoad="true" /> <!-- AlphaCentauri.ogg, Mars.ogg-->
49
50    <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"/>
51
52    <EventMultiTrigger name=spawntrigger>
53      <events>
54        <trigger>
55          <SpawnPoint team=0 position="0,0,1" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
56        </trigger>
57      </events>
58    </EventMultiTrigger>
59   
60    <Pawn
61        team      = 0
62        collisionType = kinematic
63        enablecollisiondamage=true
64        collisiondamage = 10
65        position  = "0,0,-2500"
66        mass      = 100000
67        health    = 1000 initialhealth=1000 maxhealth="1000"
68        direction = "1,0,0"
69        rotationaxis="0,0,1" rotationrate="4.5" velocity="0,0,30"
70        vulnerable=true
71        name      = "CargoShip"
72        radarname = "Cargo Ship" >
73      <attached>
74        <DistanceTriggerBeacon name="CargoShip" />
75        <Model mesh="escortShip.mesh" mass=10000 position="0,0,0" scale=100 />
76      </attached>
77      <collisionShapes>
78        <BoxCollisionShape position="0,0,0" halfExtents="300,100,200" /> <!-- laenge  ,   dicke    , breite -->
79        <BoxCollisionShape position="-100,-50,-280" halfExtents="220,70,100" />
80        <BoxCollisionShape position="-100,-50,280" halfExtents="220,70,100" />
81      </collisionShapes>
82      <explosion>
83        <ExplosionPart scale = 12 minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
84        <ExplosionPart scale = 12 minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
85        <ExplosionPart scale = 12 minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
86        <ExplosionPart offset="94,33,-50" delay=1 minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
87        <ExplosionPart offset="94,33,-50" delay=1 minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
88        <ExplosionPart offset="94,33,-50" delay=1 minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
89   
90        <ExplosionPart scale = 5 mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
91        <ExplosionPart scale = 5 mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
92        <ExplosionPart scale = 5 mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
93        <ExplosionPart scale = 5 mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
94        <ExplosionPart scale = 5 mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
95        <ExplosionPart scale = 5 mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
96        <ExplosionPart scale = 5 mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
97        <ExplosionPart scale = 5 mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
98        <ExplosionPart delay=0.8 scale = 2.5 mesh="CockpitDebris.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
99        <ExplosionPart delay=0.8 scale = 2.5 mesh="BodyDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
100        <ExplosionPart delay=0.8 scale = 2.5 mesh="WingDebris1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
101        <ExplosionPart delay=0.8 scale = 2.5 mesh="WingDebris2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
102       
103        <ExplosionPart offset="20,13,-15" scale=7 delay=1.3 minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
104        <ExplosionPart offset="30,13,-15" scale=7 delay=1.3 minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
105        <ExplosionPart offset="20,13,-15" scale=7 delay=1.3 minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
106        <ExplosionPart offset="-20,-13,-15" scale=5 delay=1.8 minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
107        <ExplosionPart offset="-20,-13,-15" scale=5 delay=1.8 minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
108        <ExplosionPart offset="-20,-13,-15" scale=5 delay=1.8 minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
109      </explosion>
110    </Pawn>
111
112    <!-- triggers when first quest is completed -->
113    <DistanceTrigger name="passedAsteroidFieldOne" beaconMode=identify position="0,0,3000" distance=1000 target="Pawn" targetname="CargoShip" />
114
115    <!-- triggers when first pirate wave is defeated -->
116    <Trigger name="firstPirateWaveKilled" mode="and">
117      <EventTrigger activations="1" stayactive="true" >
118        <events>
119          <trigger>
120             <EventListener event="p1" />
121          </trigger>
122        </events>
123      </EventTrigger>
124      <EventTrigger activations="1" stayactive="true" >
125        <events>
126          <trigger>
127             <EventListener event="p2" />
128          </trigger>
129        </events>
130      </EventTrigger>
131      <EventTrigger activations="1" stayactive="true" >
132        <events>
133          <trigger>
134             <EventListener event="p3" />
135          </trigger>
136        </events>
137      </EventTrigger>
138    </Trigger>
139
140    <!-- create asteroids -->
141    <?lua
142      function asteroidMesh()
143        x = math.random(8)
144        if x < 7 then
145          return "ast" .. x .. ".mesh"
146        elseif x == 7 then
147          return "asteroid_ice.mesh"
148        else
149          return "asteroid_UV.mesh"
150        end
151      end
152
153      for count = 1, 30, 1 do
154        x = math.random(-1000, 1000)
155        y = math.random(-1000, 1000)
156        z = 125 * count + math.random(-250, 250)
157        vmax = 7
158        rx = math.random(-vmax, vmax)
159        ry = math.random(-vmax, vmax)
160        rz = math.random(-vmax, vmax)
161        vx = math.random(-vmax, vmax)
162        vy = math.random(-vmax, vmax)
163        vz = math.random(-vmax, vmax)
164        rr = math.random() * 10
165        print("<Pawn team=1 health=30 position=\"" .. x .. "," .. y .. "," .. z .. "\" direction=\"0,0,-1\" velocity=\"" .. vx .. "," .. vy .. "," .. vz .. "\"rotationaxis=\"" .. rx .. "," .. ry .. "," .. rz .. "\" rotationrate=" .. rr .. " collisionType=dynamic mass=1 name=asteroid radarname=Asteroid> <attached> <Model position=\"0,0,0\" mesh=\"" .. asteroidMesh() .. "\" scale3D=\"10,10,10\" /> </attached> <collisionShapes> <SphereCollisionShape position=\"0,0,0\" radius=5 /> </collisionShapes> <controller> <WaypointController team=1> </WaypointController> </controller> <explosion> <ExplosionPart minspeed=0 maxspeed=0 effect1=\"orxonox/explosion_flash2\" effect2=\"orxonox/explosion_flame2\" /> <ExplosionPart minspeed=0 maxspeed=0 effect1=\"orxonox/explosion_shockwave2\" effect2=\"orxonox/explosion_sparks2\" /> <ExplosionPart minspeed=0 maxspeed=0 effect1=\"orxonox/explosion_streak2\" effect2=\"orxonox/explosion_afterglow\" /> </explosion> </Pawn>")
166      end
167
168      for count = 1, 20, 1 do
169        x = math.random(-1000, 1000)
170        y = math.random(-1000, 1000)
171        z = 125 * count + math.random(-250, 250)
172        typenum = math.random(7)
173        type = ""
174        if typenum == 1 then
175          type = "smallmunition"
176        elseif typenum == 2 then
177          type = "mediummunition"
178        elseif typenum == 3 then
179          type = "hugemunition"
180        elseif typenum == 4 then
181          type = "smallhealth"
182        elseif typenum == 5 then
183          type = "mediumhealth"
184        elseif typenum == 6 then
185          type = "hugehealth"
186        else
187          type = "crazyhealth"
188        end
189        type = type .. "pickup"
190        --[[print("<PickupSpawner pickup=\"" .. "mediumhealth" .. "\" position=\"" .. x .. "," .. y .. "," .. z .. "\" triggerDistance=10 respawnTime=5 maxSpawnedItems=1 />")]]
191      end
192    ?>
193
194    <!--PickupSpawner pickup=mediumhealthpickup position="0,0,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="1" /-->
195    <!--PickupSpawner pickup=smallshieldpickup position="-25,-25,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" /-->
196
197    <!-- start first quest -->
198    <QuestEffectBeacon times=1>
199      <effects>
200        <AddQuest questId="ProtectBoss.AsteroidField" />
201      </effects>
202      <events>
203        <execute>
204          <EventListener event=spawntrigger />
205        </execute>
206      </events>
207    </QuestEffectBeacon>
208
209    <!-- start second quest (doesn't work yet) -->
210    <QuestEffectBeacon times=1>
211      <effects>
212        <CompleteQuest questId="ProtectBoss.AsteroidField" />
213        <!--AddQuest questId="ProtectBoss.PirateAttack" /-->
214      </effects>
215      <events>
216        <execute>
217          <EventListener event=passedAsteroidFieldOne />
218        </execute>
219      </events>
220    </QuestEffectBeacon>
221
222    <SimpleNotification message="Protect the cargo ship! (Info: F3)" broadcast="true">
223        <events>
224            <trigger>
225                <EventListener event=spawntrigger />
226            </trigger>
227        </events>
228    </SimpleNotification>
229
230    <LocalQuest id="ProtectBoss.AsteroidField">
231        <QuestDescription title="Asteroid Field" description="The cargo ship in front of you is disabled and is drifting uncontrolled! Shoot the asteroids out of the way to protect it!" failmessage="The cargo ship has been hit!" completeMessage="" />
232        <complete-effects>
233            <AddQuest questId="ProtectBoss.PirateAttack" />
234        </complete-effects>
235    </LocalQuest>
236
237    <LocalQuest id="ProtectBoss.PirateAttack">
238      <QuestDescription title="Pirate Attack" description="Protect the cargo ship from the attacking pirates!" failmessage="The pirates boarded the cargo ship!" completeMessage="" />
239    </LocalQuest>
240
241    <SimpleNotification message="Pirates are attacking!" broadcast="true" >
242        <events>
243            <trigger>
244                <EventListener event="passedAsteroidFieldOne" />
245            </trigger>
246        </events>
247    </SimpleNotification>
248
249    <SimpleNotification message="The cargo ship got destroyed!" broadcast=true >
250      <events>
251            <trigger>
252                <EventListener event="CargoShip" />
253            </trigger>
254        </events>
255    </SimpleNotification>
256
257    <SimpleNotification message="A second pirate wave is approaching!" broadcast=true >
258      <events>
259            <trigger>
260                <EventListener event="firstPirateWaveKilled" />
261            </trigger>
262        </events>
263    </SimpleNotification>
264
265
266    <!-- A function to put pirates and asteroids to a certain location -->
267    <?lua
268      function placePirate(posX, posY, posZ, name, trigger)
269        print("<SpaceShip mass=10 health=25 initialhealth=25 maxhealth=25 shieldhealth=10 maxshieldhealth=10 initialshieldhealth=10 shieldabsorption=0.3 shieldrechargerate=1 shieldrechargewaittime=1 primaryThrust=40 auxiliaryThrust=15 rotationThrust=10 boostpower=5 boostrate=2 boostCooldownDuration = 20 position=\"" .. posX .. "," .. posY .. "," .. posZ .. "\" name=\"" .. name .. "\" radarname=Pirate><events><visibility><EventListener event=\"" .. trigger .. "\"/></visibility><activity><EventListener event=\"" .. trigger .. "\"/></activity></events><templates><Template link=spaceshippirate /></templates><controller><WaypointPatrolController alertnessradius=3129 team=1 active=false><waypoints><Model mesh=\"cube.mesh\" scale=0 position=\"-1300,-600,900\" /><Model mesh=\"cube.mesh\" scale=0 position=\"0,0,0\" /></waypoints><events><activity><EventListener event=attack /></activity></events></WaypointPatrolController></controller></SpaceShip>")
270      end
271
272      function placeAsteroid(posX, posY, posZ, vx, vy, vz, trigger)
273        rx = math.random(-vmax, vmax)
274        ry = math.random(-vmax, vmax)
275        rz = math.random(-vmax, vmax)
276        rr = math.random() * 10
277        print("<Pawn team=1 health=30 position=\"" .. posX .. "," .. posY .. "," .. posZ .. "\" direction=\"0,0,-1\" velocity=\"" .. vx .. "," .. vy .. "," .. vz .. "\"rotationaxis=\"" .. rx .. "," .. ry .. "," .. rz .. "\" rotationrate=" .. rr .. " collisionType=dynamic mass=1 name=asteroid radarname=Asteroid> <events> <visibility> <EventListener event=\"" .. trigger .. "\" /> </visibility> </events> <attached> <Model position=\"0,0,0\" mesh=\"" .. asteroidMesh() .. "\" scale3D=\"10,10,10\" /> </attached> <collisionShapes> <SphereCollisionShape position=\"0,0,0\" radius=5 /> </collisionShapes> <!--controller> <WaypointController team=1> </WaypointController> </controller--> <explosion> <ExplosionPart minspeed=0 maxspeed=0 effect1=\"orxonox/explosion_flash2\" effect2=\"orxonox/explosion_flame2\" /> <ExplosionPart minspeed=0 maxspeed=0 effect1=\"orxonox/explosion_shockwave2\" effect2=\"orxonox/explosion_sparks2\" /> <ExplosionPart minspeed=0 maxspeed=0 effect1=\"orxonox/explosion_streak2\" effect2=\"orxonox/explosion_afterglow\" /> </explosion> </Pawn>")
278      end
279    ?>
280
281    <?lua
282    placeAsteroid(0, 0, -1000, 0, 0, 0, "spawntrigger")
283    placeAsteroid(0, 0, -1100, 0, 0, 0, "spawntrigger")
284    placeAsteroid(0, 0, -1200, 0, 0, 0, "spawntrigger")
285    placeAsteroid(0, 0, -1300, 0, 0, 0, "spawntrigger")
286    placeAsteroid(0, 0, -1400, 0, 0, 0, "spawntrigger")
287    placeAsteroid(0, 0, -1500, 0, 0, 0, "spawntrigger")
288      placePirate(0, 0, 5500, "p1", "spawntrigger")
289      placePirate(0, 0, 6500, "p2", "spawntrigger")
290      placePirate(0, 0, 7500, "p3", "spawntrigger")
291      placePirate(0, 0, 5500, "p11", "firstPirateWaveKilled")
292      placePirate(0, 0, 5600, "p12", "firstPirateWaveKilled")
293      placePirate(0, 0, 5700, "p13", "firstPirateWaveKilled")
294      placePirate(0, 0, 5800, "p14", "firstPirateWaveKilled")
295      placePirate(0, 0, 5900, "p15", "firstPirateWaveKilled")
296      placePirate(0, 0, 6000, "p16", "firstPirateWaveKilled")
297    ?>
298
299  </Scene>
300</Level>
301
Note: See TracBrowser for help on using the repository browser.