Index: trunk/src/world_entities/weapons/aim.cc
===================================================================
--- trunk/src/world_entities/weapons/aim.cc	(revision 7193)
+++ trunk/src/world_entities/weapons/aim.cc	(revision 7221)
@@ -147,5 +147,5 @@
  * @param textureFile The texture-file to load onto the crosshair
  */
-void Aim::setTexture(const char* textureFile)
+void Aim::setTexture(const std::string& textureFile)
 {
   this->material->setDiffuseMap(textureFile);
Index: trunk/src/world_entities/weapons/aim.h
===================================================================
--- trunk/src/world_entities/weapons/aim.h	(revision 7193)
+++ trunk/src/world_entities/weapons/aim.h	(revision 7221)
@@ -46,5 +46,5 @@
 
   void setSize(float size);
-  void setTexture(const char* textureFile);
+  void setTexture(const std::string& textureFile);
   /** @param rotationSpeed the speed at what the crosshair should rotate */
   inline void setRotationSpeed(float rotationSpeed) { this->rotationSpeed = rotationSpeed; };
Index: trunk/src/world_entities/weapons/aiming_turret.cc
===================================================================
--- trunk/src/world_entities/weapons/aiming_turret.cc	(revision 7193)
+++ trunk/src/world_entities/weapons/aiming_turret.cc	(revision 7221)
@@ -168,5 +168,6 @@
   glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
 
-  this->getModel()->draw();
+  if (this->getModel())
+    this->getModel()->draw();
   glPopMatrix();
 }
Index: trunk/src/world_entities/weapons/crosshair.cc
===================================================================
--- trunk/src/world_entities/weapons/crosshair.cc	(revision 7193)
+++ trunk/src/world_entities/weapons/crosshair.cc	(revision 7221)
@@ -79,5 +79,5 @@
   EventListener::loadParams(root);
 
-  LoadParam(root, "texture", this, Crosshair, setTexture)
+  LoadParam(root, "texture", this->material, Material, setDiffuseMap)
       .describe("the texture-file to load onto the Crosshair");
 
@@ -103,5 +103,5 @@
  * @param textureFile The texture-file to load onto the crosshair
  */
-void Crosshair::setTexture(const char* textureFile)
+void Crosshair::setTexture(const std::string& textureFile)
 {
   this->material->setDiffuseMap(textureFile);
Index: trunk/src/world_entities/weapons/crosshair.h
===================================================================
--- trunk/src/world_entities/weapons/crosshair.h	(revision 7193)
+++ trunk/src/world_entities/weapons/crosshair.h	(revision 7221)
@@ -31,5 +31,5 @@
 
   void setSize(float size);
-  void setTexture(const char* textureFile);
+  void setTexture(const std::string& textureFile);
   /** @param rotationSpeed the speed at what the crosshair should rotate */
   void setRotationSpeed(float rotationSpeed) { this->rotationSpeed = rotationSpeed; };
Index: trunk/src/world_entities/weapons/weapon.cc
===================================================================
--- trunk/src/world_entities/weapons/weapon.cc	(revision 7193)
+++ trunk/src/world_entities/weapons/weapon.cc	(revision 7221)
@@ -165,8 +165,6 @@
  * @param projectile the Name of the Projectile.
  */
-void Weapon::setProjectileTypeC(const char* projectile)
-{
-  if (projectile == NULL)
-    return;
+void Weapon::setProjectileTypeC(const std::string& projectile)
+{
   FastFactory* tmpFac = FastFactory::searchFastFactory(projectile);
   if (tmpFac != NULL)
@@ -176,5 +174,5 @@
   else
   {
-    PRINTF(1)("Projectile %s does not exist for weapon %s\n", projectile, this->getName());
+    PRINTF(1)("Projectile %s does not exist for weapon %s\n", projectile.c_str(), this->getName());
   }
 }
@@ -232,5 +230,5 @@
  * @param soundFile the soundFile's relative position to the data-directory (will be looked for by the ResourceManager)
  */
-void Weapon::setActionSound(WeaponAction action, const char* soundFile)
+void Weapon::setActionSound(WeaponAction action, const std::string& soundFile)
 {
   if (action >= WA_ACTION_COUNT)
@@ -239,14 +237,14 @@
     ResourceManager::getInstance()->unload(this->soundBuffers[action]);
 
-  else if (soundFile != NULL)
+  else if (!soundFile.empty())
   {
     this->soundBuffers[action] = (SoundBuffer*)ResourceManager::getInstance()->load(soundFile, WAV);
     if (this->soundBuffers[action] != NULL)
     {
-      PRINTF(4)("Loaded sound %s to action %s.\n", soundFile, actionToChar(action));
+      PRINTF(4)("Loaded sound %s to action %s.\n", soundFile.c_str(), actionToChar(action));
     }
     else
     {
-      PRINTF(2)("Failed to load sound %s to %s.\n.", soundFile, actionToChar(action));
+      PRINTF(2)("Failed to load sound %s to %s.\n.", soundFile.c_str(), actionToChar(action));
     }
   }
@@ -613,23 +611,23 @@
  * @return The Action if known, WA_NONE otherwise.
  */
-WeaponAction Weapon::charToAction(const char* action)
-{
-  if (!strcmp(action, "none"))
+WeaponAction Weapon::charToAction(const std::string& action)
+{
+  if (action == "none")
     return WA_NONE;
-  else if (!strcmp(action, "shoot"))
+  else if (action == "shoot")
     return WA_SHOOT;
-  else if (!strcmp(action, "charge"))
+  else if (action == "charge")
     return WA_CHARGE;
-  else if (!strcmp(action, "reload"))
+  else if (action == "reload")
     return WA_RELOAD;
-  else if (!strcmp(action, "acitvate"))
+  else if (action == "acitvate")
     return WA_ACTIVATE;
-  else if (!strcmp(action, "deactivate"))
+  else if (action == "deactivate")
     return WA_DEACTIVATE;
-  else if (!strcmp(action, "special1"))
+  else if (action == "special1")
     return WA_SPECIAL1;
   else
   {
-    PRINTF(2)("action %s could not be identified.\n", action);
+    PRINTF(2)("action %s could not be identified.\n", action.c_str());
     return WA_NONE;
   }
@@ -674,25 +672,25 @@
  * @return The State if known, WS_NONE otherwise.
  */
-WeaponState Weapon::charToState(const char* state)
-{
-  if (!strcmp(state, "none"))
+WeaponState Weapon::charToState(const std::string& state)
+{
+  if (state == "none")
     return WS_NONE;
-  else if (!strcmp(state, "shooting"))
+  else if (state == "shooting")
     return WS_SHOOTING;
-  else if (!strcmp(state, "charging"))
+  else if (state == "charging")
     return WS_CHARGING;
-  else if (!strcmp(state, "reloading"))
+  else if (state == "reloading")
     return WS_RELOADING;
-  else if (!strcmp(state, "activating"))
+  else if (state == "activating")
     return WS_ACTIVATING;
-  else if (!strcmp(state, "deactivating"))
+  else if (state == "deactivating")
     return WS_DEACTIVATING;
-  else if (!strcmp(state, "inactive"))
+  else if (state == "inactive")
     return WS_INACTIVE;
-  else if (!strcmp(state, "idle"))
+  else if (state == "idle")
     return WS_IDLE;
   else
   {
-    PRINTF(2)("state %s could not be identified.\n", state);
+    PRINTF(2)("state %s could not be identified.\n", state.c_str());
     return WS_NONE;
   }
Index: trunk/src/world_entities/weapons/weapon.h
===================================================================
--- trunk/src/world_entities/weapons/weapon.h	(revision 7193)
+++ trunk/src/world_entities/weapons/weapon.h	(revision 7221)
@@ -111,5 +111,5 @@
     inline long getCapability() const { return this->capability; };
     void setProjectileType(ClassID projectile);
-    void setProjectileTypeC(const char* projectile);
+    void setProjectileTypeC(const std::string& projectile);
     /** @returns The projectile's classID */
     inline ClassID getProjectileType() { return this->projectile; };
@@ -132,5 +132,5 @@
     // STATE CHANGES //
     /** @param state the State to time @param duration the duration of the State */
-    inline void setStateDuration(const char* state, float duration) { setStateDuration(charToState(state), duration); };
+    inline void setStateDuration(const std::string& state, float duration) { setStateDuration(charToState(state), duration); };
     /** @param state the State to time @param duration the duration of the State */
     inline void setStateDuration(WeaponState state, float duration) { /*(state < WS_STATE_COUNT)?*/this->times[state] = duration; };
@@ -148,7 +148,7 @@
     inline void setAmmoContainer(const CountPointer<AmmoContainer>& ammoContainer) { this->ammoContainer = ammoContainer;}
 
-    void setActionSound(WeaponAction action, const char* soundFile);
-    /** @see void setActionSound(WeaponAction action, const char* soundFile); */
-    void setActionSound(const char* action, const char* soundFile) { this->setActionSound(charToAction(action), soundFile); };
+    void setActionSound(WeaponAction action, const std::string& soundFile);
+    /** @see void setActionSound(WeaponAction action, const std::string& soundFile); */
+    void setActionSound(const std::string& action, const std::string& soundFile) { this->setActionSound(charToAction(action), soundFile); };
 
     Animation3D* getAnimation(WeaponState state, PNode* node = NULL);
@@ -176,7 +176,7 @@
 
     // utility:
-    static WeaponAction  charToAction(const char* action);
+    static WeaponAction  charToAction(const std::string& action);
     static const char*   actionToChar(WeaponAction action);
-    static WeaponState   charToState(const char* state);
+    static WeaponState   charToState(const std::string& state);
     static const char*   stateToChar(WeaponState state);
 
