Index: /branches/presentation/src/defs/class_id.h
===================================================================
--- /branches/presentation/src/defs/class_id.h	(revision 9179)
+++ /branches/presentation/src/defs/class_id.h	(revision 9180)
@@ -229,6 +229,7 @@
   CL_BOMB                       =    0x000003e4,
   CL_GROUND_TURRET              =    0x000003e5,
-  CL_GUIDED_MISSILE             =    0x000003e6,
-  CL_HYPERBLAST                 =    0x000003e7,
+  CL_SPACE_TURRET               =    0x000003e6,
+  CL_GUIDED_MISSILE             =    0x000003e7,
+  CL_HYPERBLAST                 =    0x000003e8,
 
   // NPC's
Index: /branches/presentation/src/story_entities/game_world_data.cc
===================================================================
--- /branches/presentation/src/story_entities/game_world_data.cc	(revision 9179)
+++ /branches/presentation/src/story_entities/game_world_data.cc	(revision 9180)
@@ -392,5 +392,4 @@
     std::string oggFile = ResourceManager::getFullName(name);
     this->music = new OrxSound::OggPlayer(oggFile);
-    this->music->debug();
     if (this->localPlayer != NULL)
       this->localPlayer->hud().notifyUser(std::string("Playing SoundTrack: ") + this->music->artist() + " - " + this->music->title());
Index: /branches/presentation/src/world_entities/WorldEntities.am
===================================================================
--- /branches/presentation/src/world_entities/WorldEntities.am	(revision 9179)
+++ /branches/presentation/src/world_entities/WorldEntities.am	(revision 9180)
@@ -4,4 +4,5 @@
                 world_entities/npcs/npc_test.cc \
                 world_entities/npcs/ground_turret.cc \
+                world_entities/npcs/space_turret.cc \
                 world_entities/npcs/generic_npc.cc \
                 world_entities/npcs/door.cc \
@@ -74,4 +75,5 @@
                 npcs/npc_test1.h \
                 npcs/ground_turret.h \
+                npcs/space_turret.h \
                 npcs/door.cc \
                 npcs/repair_station.h \
Index: /branches/presentation/src/world_entities/npcs/space_turret.cc
===================================================================
--- /branches/presentation/src/world_entities/npcs/space_turret.cc	(revision 9180)
+++ /branches/presentation/src/world_entities/npcs/space_turret.cc	(revision 9180)
@@ -0,0 +1,193 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Manuel Leuenberger
+   co-programmer: ...
+*/
+
+#include "space_turret.h"
+#include "model.h"
+#include "world_entities/weapons/turret.h"
+
+#include "state.h"
+#include "playable.h"
+#include "player.h"
+
+
+#include "util/loading/factory.h"
+#include "network_game_manager.h"
+#include "util/loading/load_param.h"
+
+#include "effects/explosion.h"
+
+CREATE_FACTORY(SpaceTurret, CL_SPACE_TURRET);
+
+/**
+ * constructs and loads a SpaceTurret from a XML-element
+ * @param root the XML-element to load from
+ */
+SpaceTurret::SpaceTurret(const TiXmlElement* root)
+  : NPC(root)
+{
+  this->init();
+  if (root != NULL)
+    this->loadParams(root);
+}
+
+
+/**
+ * standard deconstructor
+ */
+SpaceTurret::~SpaceTurret ()
+{
+
+}
+
+
+/**
+ * initializes the SpaceTurret
+ * @todo change this to what you wish
+ */
+void SpaceTurret::init()
+{
+  this->setClassID(CL_SPACE_TURRET, "SpaceTurret");
+  this->loadModel("models/ground_turret_#.obj", 5);
+  this->loadModel("models/comet.obj", .5, 3);
+  this->left = NULL;
+  this->right = NULL;
+
+  this->setHealthMax(300);
+  this->setHealth(300);
+
+  this->weaponHolder[0].addNodeFlags(PNODE_PROHIBIT_DELETE_WITH_PARENT);
+  this->weaponHolder[1].addNodeFlags(PNODE_PROHIBIT_DELETE_WITH_PARENT);
+
+  this->weaponHolder[0].setRelCoor(0,25,0);
+  this->weaponHolder[0].setParent(this);
+  this->weaponHolder[1].setParent(this);
+}
+
+
+/**
+ * loads a SpaceTurret from a XML-element
+ * @param root the XML-element to load from
+ * @todo make the class Loadable
+ */
+void SpaceTurret::loadParams(const TiXmlElement* root)
+{
+  // all the clases this Entity is directly derived from must be called in this way, to load all settings.
+  NPC::loadParams(root);
+
+
+  /**
+   * @todo: make the class Loadable
+   */
+  const TiXmlElement* element;
+
+  element = root->FirstChildElement("weapon-left");
+  if (element != NULL) element = element->FirstChildElement();
+  this->left = dynamic_cast<Weapon*>( Factory::fabricate( element) );
+  if (this->left)
+  {
+    this->left->setParent(this);
+    this->left->toList(this->getOMListNumber());
+    this->left->setRelCoor(0,10,-5);
+    this->left->requestAction( WA_ACTIVATE);
+    this->left->setParent(&this->weaponHolder[0]);
+  }
+
+  element = root->FirstChildElement("weapon-right");
+  if (element != NULL)  if (element != NULL) element = element->FirstChildElement();
+  this->right = dynamic_cast<Weapon*>( Factory::fabricate( element) );
+  if (this->right)
+  {
+    this->right->setParent(this);
+    this->right->toList(this->getOMListNumber());
+    this->right->setRelCoor(0,10,5);
+    this->left->requestAction( WA_ACTIVATE);
+    this->right->setParent(&this->weaponHolder[0]);
+  }
+}
+
+/**
+ * advances the SpaceTurret about time seconds
+ * @param time the Time to step
+ */
+void SpaceTurret::tick(float dt)
+{
+  if(this->getHealth() > 0.0f && State::getPlayer() &&
+     State::getPlayer()->getPlayable() &&
+     State::getPlayer()->getPlayable()->distance(this) < 120) // HACK
+  {
+  if (likely(this->left != NULL))
+  {
+//    this->left->tickW(dt);
+    this->left->requestAction(WA_SHOOT);
+  }
+  if (likely(this->right != NULL))
+  {
+//    this->right->tickW(dt);
+    this->right->requestAction(WA_SHOOT);
+  }
+  }
+}
+
+/**
+ * draws this worldEntity
+ */
+void SpaceTurret::draw () const
+{
+  glPushMatrix();
+  glTranslatef (this->getAbsCoor ().x,
+                this->getAbsCoor ().y,
+                this->getAbsCoor ().z);
+
+  Vector tmpRot = this->getAbsDir().getSpacialAxis();
+  glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
+
+  this->getModel()->draw();
+  if (this->getModel() != NULL)
+    this->getModel(3)->draw();
+  glPopMatrix();
+
+  if (this->left != NULL)
+    this->left->draw();
+  if (this->right != NULL)
+    this->right->draw();
+}
+
+
+
+/**
+ *
+ *
+ */
+void SpaceTurret::postSpawn ()
+{
+
+}
+
+/**
+ *
+ *
+ */
+void SpaceTurret::leftWorld ()
+{
+
+}
+
+void SpaceTurret::destroy(WorldEntity* killer)
+{
+  this->setAbsDirSoft(Quaternion(-90, Vector(0,0,1)), 90);
+  Explosion::explode(this, Vector(10,10,10));
+
+  this->toList(OM_DEAD);
+}
Index: /branches/presentation/src/world_entities/npcs/space_turret.h
===================================================================
--- /branches/presentation/src/world_entities/npcs/space_turret.h	(revision 9180)
+++ /branches/presentation/src/world_entities/npcs/space_turret.h	(revision 9180)
@@ -0,0 +1,40 @@
+/*!
+ * @file space_turret.h
+ * @brief description
+*/
+
+#ifndef _SPACE_TURRET_H
+#define _SPACE_TURRET_H
+
+#include "npcs/npc.h"
+
+class Weapon;
+
+//! A Class to ...
+class SpaceTurret : public NPC
+{
+
+public:
+  SpaceTurret(const TiXmlElement* root = NULL);
+  virtual ~SpaceTurret();
+
+  virtual void loadParams(const TiXmlElement* root);
+
+  virtual void postSpawn ();
+  virtual void leftWorld ();
+
+  virtual void destroy(WorldEntity* killer);
+
+  virtual void draw() const;
+  virtual void tick(float time);
+
+private:
+  void init();
+
+
+private:
+  PNode  weaponHolder[2];
+  Weapon *left, *right;
+};
+
+#endif /* _SPACE_TURRET_H */
