Index: branches/playability/src/world_entities/weapons/acid_launcher.cc
===================================================================
--- branches/playability/src/world_entities/weapons/acid_launcher.cc	(revision 10179)
+++ branches/playability/src/world_entities/weapons/acid_launcher.cc	(revision 10179)
@@ -0,0 +1,164 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004-2006 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: Marc Schaerrer
+   co-programmer:
+*/
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
+
+#include "acid_launcher.h"
+
+#include "weapon_manager.h"
+#include "world_entities/projectiles/acid_splash.h"
+
+#include "model.h"
+
+#include "state.h"
+#include "animation3d.h"
+
+#include <list>
+#include <iterator>
+#include "util/state.h"
+
+#include "math/quaternion.h"
+
+#include "util/loading/factory.h"
+
+#include "class_id_DEPRECATED.h"
+
+using namespace std;
+
+ObjectListDefinition(AcidLauncher);
+CREATE_FACTORY(AcidLauncher);
+
+/**
+ *  standard constructor
+ *
+ * creates a new AcidLauncher
+ */
+AcidLauncher::AcidLauncher()
+  : Weapon()
+{
+  this->init();
+}
+
+/**
+ * creates a new AcidLauncher from a TiXmlElement
+ */
+AcidLauncher::AcidLauncher(const TiXmlElement* root)
+{
+  this->init();
+  if (root != NULL)
+    this->loadParams(root);
+}
+
+/**
+ *  standard deconstructor
+*/
+AcidLauncher::~AcidLauncher ()
+{
+  // model will be deleted from WorldEntity-destructor
+}
+
+void AcidLauncher::init()
+{
+  this->registerObject(this, AcidLauncher::_objectList);
+
+  Animation3D* animation1 = this->getAnimation(WS_ACTIVATING, this);
+  Animation3D* animation2 = this->getAnimation(WS_DEACTIVATING, this);
+
+  animation1->addKeyFrame(Vector(0, -.5, 0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+  animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+  animation2->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+  animation2->addKeyFrame(Vector(0, -.5, 0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+
+  animation1->setInfinity(ANIM_INF_CONSTANT);
+  animation2->setInfinity(ANIM_INF_CONSTANT);
+
+  this->setStateDuration(WS_SHOOTING, .6);
+  this->setStateDuration(WS_RELOADING, 1.0f);
+  this->setStateDuration(WS_ACTIVATING, .4);
+  this->setStateDuration(WS_DEACTIVATING, .4);
+
+  this->setEnergyMax(10);
+  this->increaseEnergy(10);
+  //this->minCharge = 2;
+
+  this->setCapability(WTYPE_ALLDIRS | WTYPE_TURRET | WTYPE_DIRECTIONAL | WTYPE_LIGHT);
+  this->setProjectileTypeC("AcidSplash");
+
+  this->loadModel("models/guns/turret1.obj", 1.0);
+
+  this->setEmissionPoint(1.684, 0.472, 0);
+  this->getProjectileFactory()->prepare(50);
+
+  this->setActionSound(WA_SHOOT, "sound/explosions/explosion_1.wav");
+  this->setActionSound(WA_ACTIVATE, "sound/vocals/missiles.wav");
+  this->setActionSound(WA_RELOAD, "sound/vocals/reload.wav");
+
+}
+
+void AcidLauncher::loadParams(const TiXmlElement* root)
+{
+  Weapon::loadParams(root);
+}
+
+void AcidLauncher::activate()
+{
+}
+
+void AcidLauncher::deactivate()
+{
+}
+
+void AcidLauncher::tick(float dt)
+{
+  if (!Weapon::tickW(dt))
+    return;
+  /*
+  Quaternion quat;
+  Vector direction;
+  if (this->getDefaultTarget() == NULL)
+    direction = this->getAbsCoor();
+  else
+    direction = this->getDefaultTarget()->getAbsCoor() - this->getAbsCoor();
+
+  direction.normalize();
+
+  if (likely (this->getParent() != NULL))
+    quat = Quaternion(direction, this->getParent()->getAbsDir().apply(Vector(0,1,0))) * Quaternion ( -M_PI_2, Vector(0,1,0)) ;
+  else
+    quat = Quaternion(direction, Vector(0,1,0)) * Quaternion ( -M_PI_2, Vector(0,1,0)) ;
+
+  this->setAbsDirSoft(quat, 5);
+  */
+}
+
+void AcidLauncher::fire()
+{
+  bool fired  = false;
+
+  Projectile* pj = NULL;
+  for( int i=0; i < 5; i++)
+  {
+      pj  = this->getProjectile();
+      if (pj == NULL)
+        return;
+
+      fired = true;
+      pj->setVelocity(this->getVelocity()+(this->getAbsDir().apply(Vector(1,0,0))*115.0 + VECTOR_RAND(10)));
+
+      pj->setParent(PNode::getNullParent());
+      pj->setAbsCoor(this->getEmissionPoint());
+      pj->setAbsDir(this->getAbsDir()+Quaternion(0,VECTOR_RAND(5)));
+      pj->activate();
+  }
+}
Index: branches/playability/src/world_entities/weapons/acid_launcher.h
===================================================================
--- branches/playability/src/world_entities/weapons/acid_launcher.h	(revision 10179)
+++ branches/playability/src/world_entities/weapons/acid_launcher.h	(revision 10179)
@@ -0,0 +1,34 @@
+/*!
+ * @file acid_launcher.h
+*/
+
+
+#ifndef _ACID_LAUNCHER_H
+#define _ACID_LAUNCHER_H
+
+#include "weapon.h"
+
+#define ACID_LAUNCHER_MAXRANGE = 50.0;
+
+class AcidLauncher : public Weapon
+  {
+  ObjectListDeclaration(AcidLauncher);
+  public:
+    AcidLauncher ();
+    AcidLauncher(const TiXmlElement* root);
+    virtual ~AcidLauncher ();
+
+    void init();
+    virtual void loadParams(const TiXmlElement* root);
+
+    virtual void activate();
+    virtual void deactivate();
+
+    virtual void tick(float dt);
+    virtual void fire();
+
+
+  private:
+  };
+
+#endif /* _ACID_LAUNCHER_H */
Index: branches/playability/src/world_entities/weapons/swarm_launcher.cc
===================================================================
--- branches/playability/src/world_entities/weapons/swarm_launcher.cc	(revision 10170)
+++ branches/playability/src/world_entities/weapons/swarm_launcher.cc	(revision 10179)
@@ -163,5 +163,5 @@
       pj->setAbsDir(this->getAbsDir());
       dynamic_cast<SwarmProjectile*>(pj)->setTarget( (PNode*)(*eIterator) );
-      pj->toList(OM_GROUP_01_PROJ);
+      //pj->toList(OM_GROUP_01_PROJ);
       pj->activate();
     }
