[Orxonox-commit 7020] r11639 - in code/branches/ProtectBoss_HS17: data/levels src/orxonox/controllers src/orxonox/worldentities/pawns

lrigoni at orxonox.net lrigoni at orxonox.net
Mon Dec 4 16:23:58 CET 2017


Author: lrigoni
Date: 2017-12-04 16:23:58 +0100 (Mon, 04 Dec 2017)
New Revision: 11639

Modified:
   code/branches/ProtectBoss_HS17/data/levels/ProtectBoss.oxw
   code/branches/ProtectBoss_HS17/src/orxonox/controllers/DroneController.cc
   code/branches/ProtectBoss_HS17/src/orxonox/worldentities/pawns/ShootableObstacle.cc
Log:
Changes of 4.12.2017

Modified: code/branches/ProtectBoss_HS17/data/levels/ProtectBoss.oxw
===================================================================
--- code/branches/ProtectBoss_HS17/data/levels/ProtectBoss.oxw	2017-12-04 15:17:59 UTC (rev 11638)
+++ code/branches/ProtectBoss_HS17/data/levels/ProtectBoss.oxw	2017-12-04 15:23:58 UTC (rev 11639)
@@ -1,10 +1,11 @@
 <LevelInfo
  name = "ProtectBoss"
  description = "Protect a disabled cargo ship!"
- tags = "test"
+ tags = "test, mission"
  screenshot = "emptylevel.png"
 />
 
+
 <?lua
   include("stats.oxo")
   include("HUDTemplates3.oxo")
@@ -12,7 +13,6 @@
   include("templates/HeavyCruiser.oxt")
   include("HUDPickupTemplate.oxo")
   include("templates/pickupRepresentationTemplates.oxt")
-  include("includes/pickups.oxi")
 ?>
 
 <?lua
@@ -45,6 +45,10 @@
     skybox       = "Orxonox/Starbox"
   >
 
+    <?lua
+      include("includes/pickups.oxi")
+    ?>
+
     <WorldAmbientSound source="Earth.ogg" looping="true" playOnLoad="true" /> <!-- AlphaCentauri.ogg, Mars.ogg-->
 
     <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"/>
@@ -64,7 +68,7 @@
         collisiondamage = 10
         position  = "0,0,-2500"
         mass      = 100000
-        health    = 1000 initialhealth=1000 maxhealth="1000"
+        health    = 100 initialhealth=100 maxhealth="100"
         direction = "1,0,0"
         rotationaxis="0,0,1" rotationrate="4.5" velocity="0,0,30"
         vulnerable=true
@@ -113,8 +117,14 @@
     <DistanceTrigger name="passedAsteroidFieldOne" beaconMode=identify position="0,0,3000" distance=1000 target="Pawn" targetname="CargoShip" />
 
     <!-- triggers when first pirate wave is defeated -->
+
     <Trigger name="firstPirateWaveKilled" mode="and">
-      <EventTrigger activations="1" stayactive="true" >
+      <?lua
+        for n = 1, 3, 1 do
+          print("<EventTrigger activations=1 stayactive=true><events><trigger><EventListener event=p" .. n .. "/></trigger></events></EventTrigger>")
+        end
+      ?>
+      <!--EventTrigger activations="1" stayactive="true" >
         <events>
           <trigger>
              <EventListener event="p1" />
@@ -134,10 +144,148 @@
              <EventListener event="p3" />
           </trigger>
         </events>
+      </EventTrigger-->
+    </Trigger>
+
+    <!-- triggers when second pirate wave is defeated -->
+    <Trigger name="secondPirateWaveKilled" mode="and">
+      <?lua
+        for n = 1, 6, 1 do
+          print("<EventTrigger activations=1 stayactive=true><events><trigger><EventListener event=p1" .. n .. "/></trigger></events></EventTrigger>")
+        end
+      ?>
+      <!--EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p11" />
+          </trigger>
+        </events>
       </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p12" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p13" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p14" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p15" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p16" />
+          </trigger>
+        </events>
+      </EventTrigger-->
     </Trigger>
 
-    <!-- create asteroids -->
+    <!-- triggers some time after the second pirate wave was defeated -->
+    <Trigger name="thirdPirateWaveStarting" delay=15>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="secondPirateWaveKilled" />
+          </trigger>
+        </events>
+      </EventTrigger>
+    </Trigger>
+
+    <!-- triggers when third pirate wave is defeated -->
+    <Trigger name="thirdPirateWaveKilled" mode="and" delay=5>
+      <?lua
+        for n = 1, 7, 1 do
+          print("<EventTrigger activations=1 stayactive=true><events><trigger><EventListener event=p2" .. n .. "/></trigger></events></EventTrigger>")
+        end
+      ?>
+      <!--EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p21" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p22" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p23" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p24" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p25" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p26" />
+          </trigger>
+        </events>
+      </EventTrigger>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="p27" />
+          </trigger>
+        </events>
+      </EventTrigger-->
+    </Trigger>
+
+    <Trigger name="succeedMission" delay=7>
+      <EventTrigger activations="1" stayactive="true" >
+        <events>
+          <trigger>
+             <EventListener event="thirdPirateWaveKilled" />
+          </trigger>
+        </events>
+      </EventTrigger>
+    </Trigger>
+
+      <EventTrigger activations="1" stayactive="true" name="failMission" delay=0.1>
+        <events>
+          <trigger>
+             <EventListener event="CargoShip" />
+          </trigger>
+        </events>
+      </EventTrigger>
+
+    <!-- create asteroids and pickups -->
     <?lua
       function asteroidMesh()
         x = math.random(8)
@@ -162,14 +310,14 @@
         vy = math.random(-vmax, vmax)
         vz = math.random(-vmax, vmax)
         rr = math.random() * 10
-        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>")
+        print("<ShootableObstacle team=1 enablecollisiondamage=true collisiondamage=10 health=100 maxhealth=100 initialhealth=100 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> </ShootableObstacle>")
       end
 
-      for count = 1, 20, 1 do
+      for count = 1, 50, 1 do
         x = math.random(-1000, 1000)
         y = math.random(-1000, 1000)
         z = 125 * count + math.random(-250, 250)
-        typenum = math.random(7)
+        typenum = math.random(11)
         type = ""
         if typenum == 1 then
           type = "smallmunition"
@@ -183,17 +331,22 @@
           type = "mediumhealth"
         elseif typenum == 6 then
           type = "hugehealth"
+        elseif typenum == 7 then
+          type = "crazyhealth"
+        elseif typenum == 8 then
+          type = "smallshield"
+        elseif typenum == 9 then
+          type = "mediumshield"
+        elseif typenum == 10 then
+          type = "hugeshield"
         else
-          type = "crazyhealth"
+          type = "drone"
         end
         type = type .. "pickup"
-        --[[print("<PickupSpawner pickup=\"" .. "mediumhealth" .. "\" position=\"" .. x .. "," .. y .. "," .. z .. "\" triggerDistance=10 respawnTime=5 maxSpawnedItems=1 />")]]
+        print("<PickupSpawner pickup=\"" .. type .. "\" position=\"" .. x .. "," .. y .. "," .. z .. "\" triggerDistance=10 respawnTime=5 maxSpawnedItems=1 />")
       end
     ?>
 
-    <!--PickupSpawner pickup=mediumhealthpickup position="0,0,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="1" /-->
-    <!--PickupSpawner pickup=smallshieldpickup position="-25,-25,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" /-->
-
     <!-- start first quest -->
     <QuestEffectBeacon times=1>
       <effects>
@@ -246,7 +399,7 @@
         </events>
     </SimpleNotification>
 
-    <SimpleNotification message="The cargo ship got destroyed!" broadcast=true >
+    <SimpleNotification message="The cargo ship got destroyed! Game over!" broadcast=true >
       <events>
             <trigger>
                 <EventListener event="CargoShip" />
@@ -262,38 +415,70 @@
         </events>
     </SimpleNotification>
 
+    <SimpleNotification message="The third and last pirate wave is preparing for attack! They will arrive soon!" broadcast=true >
+      <events>
+            <trigger>
+                <EventListener event="secondPirateWaveKilled" />
+            </trigger>
+        </events>
+    </SimpleNotification>
 
-    <!-- A function to put pirates and asteroids to a certain location -->
+    <SimpleNotification message="The pirates are attacking!" broadcast=true >
+      <events>
+            <trigger>
+                <EventListener event="thirdPirateWaveStarting" />
+            </trigger>
+        </events>
+    </SimpleNotification>
+
+    <SimpleNotification message="You defeated the pirates! The cargo ship is exiting the asteroid field. You made it!" broadcast=true >
+      <events>
+            <trigger>
+                <EventListener event="thirdPirateWaveKilled" />
+            </trigger>
+        </events>
+    </SimpleNotification>
+
+    <Script code="Mission endMission true" onLoad="false">
+        <events>
+            <trigger>
+                <EventListener event="succeedMission" />
+            </trigger>
+        </events>
+    </Script>
+
+    <Script code="Mission endMission false" onLoad="false">
+        <events>
+            <trigger>
+                <EventListener event="CargoShip" />
+            </trigger>
+        </events>
+    </Script>
+
+    <!-- A function to put pirates to a certain location -->
     <?lua
       function placePirate(posX, posY, posZ, name, trigger)
         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>")
       end
-
-      function placeAsteroid(posX, posY, posZ, vx, vy, vz, trigger)
-        rx = math.random(-vmax, vmax)
-        ry = math.random(-vmax, vmax)
-        rz = math.random(-vmax, vmax)
-        rr = math.random() * 10
-        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>")
-      end
     ?>
 
     <?lua
-    placeAsteroid(0, 0, -1000, 0, 0, 0, "spawntrigger")
-    placeAsteroid(0, 0, -1100, 0, 0, 0, "spawntrigger")
-    placeAsteroid(0, 0, -1200, 0, 0, 0, "spawntrigger")
-    placeAsteroid(0, 0, -1300, 0, 0, 0, "spawntrigger")
-    placeAsteroid(0, 0, -1400, 0, 0, 0, "spawntrigger")
-    placeAsteroid(0, 0, -1500, 0, 0, 0, "spawntrigger")
-      placePirate(0, 0, 5500, "p1", "spawntrigger")
-      placePirate(0, 0, 6500, "p2", "spawntrigger")
-      placePirate(0, 0, 7500, "p3", "spawntrigger")
+      placePirate(0, 0, 3000, "p1", "passedAsteroidFieldOne")
+      placePirate(50, 0, 3500, "p2", "passedAsteroidFieldOne")
+      placePirate(0, 50, 4000, "p3", "passedAsteroidFieldOne")
       placePirate(0, 0, 5500, "p11", "firstPirateWaveKilled")
-      placePirate(0, 0, 5600, "p12", "firstPirateWaveKilled")
-      placePirate(0, 0, 5700, "p13", "firstPirateWaveKilled")
-      placePirate(0, 0, 5800, "p14", "firstPirateWaveKilled")
-      placePirate(0, 0, 5900, "p15", "firstPirateWaveKilled")
+      placePirate(50, 0, 5600, "p12", "firstPirateWaveKilled")
+      placePirate(-50, 0, 5700, "p13", "firstPirateWaveKilled")
+      placePirate(0, 50, 5800, "p14", "firstPirateWaveKilled")
+      placePirate(0, -50, 5900, "p15", "firstPirateWaveKilled")
       placePirate(0, 0, 6000, "p16", "firstPirateWaveKilled")
+      placePirate(0, 0, 7000, "p21", "thirdPirateWaveStarting")
+      placePirate(50, 0, 7100, "p22", "thirdPirateWaveStarting")
+      placePirate(-50, 0, 7200, "p23", "thirdPirateWaveStarting")
+      placePirate(0, 50, 7300, "p24", "thirdPirateWaveStarting")
+      placePirate(0, -50, 7400, "p25", "thirdPirateWaveStarting")
+      placePirate(50, 50, 7500, "p26", "thirdPirateWaveStarting")
+      placePirate(-50, -50, 7600, "p27", "thirdPirateWaveStarting")
     ?>
 
   </Scene>

Modified: code/branches/ProtectBoss_HS17/src/orxonox/controllers/DroneController.cc
===================================================================
--- code/branches/ProtectBoss_HS17/src/orxonox/controllers/DroneController.cc	2017-12-04 15:17:59 UTC (rev 11638)
+++ code/branches/ProtectBoss_HS17/src/orxonox/controllers/DroneController.cc	2017-12-04 15:23:58 UTC (rev 11639)
@@ -48,6 +48,7 @@
     {
         RegisterObject(DroneController);
 
+        this->setTeam(0);
         this->owner_ = nullptr;
         this->drone_ = nullptr;
         this->isShooting_ = false;
@@ -163,6 +164,7 @@
                 this->isShooting_ = false;
             }
         }
+        
         SUPER(AIController, tick, dt);
     }
 

Modified: code/branches/ProtectBoss_HS17/src/orxonox/worldentities/pawns/ShootableObstacle.cc
===================================================================
--- code/branches/ProtectBoss_HS17/src/orxonox/worldentities/pawns/ShootableObstacle.cc	2017-12-04 15:17:59 UTC (rev 11638)
+++ code/branches/ProtectBoss_HS17/src/orxonox/worldentities/pawns/ShootableObstacle.cc	2017-12-04 15:23:58 UTC (rev 11639)
@@ -24,6 +24,9 @@
  *
  */
 
+#include "ShootableObstacle.h"
+#include "core/XMLPort.h"
+
 namespace orxonox
 {
     RegisterClass(ShootableObstacle);
@@ -31,6 +34,7 @@
     ShootableObstacle::ShootableObstacle(Context* context) : Pawn(context)
     {
         RegisterObject(ShootableObstacle);
+        this->enableCollisionCallback();
     }
 
     bool ShootableObstacle::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)



More information about the Orxonox-commit mailing list