---
 lib/wormux/include/WORMUX_action.h      |    3 -
 src/ai/ai_movement_module.cpp           |    2 +-
 src/character/character.cpp             |  164 +------------------------------
 src/character/character.h               |   10 --
 src/include/action_handler.cpp          |  108 +-------------------
 src/include/action_handler.h            |    8 --
 src/interface/man_machine_interface.cpp |    9 +-
 src/interface/mouse.cpp                 |    7 +-
 src/object/bonus_box.cpp                |   12 ---
 src/object/bonus_box.h                  |    2 -
 src/object/medkit.cpp                   |   12 ---
 src/object/medkit.h                     |    2 -
 src/object/objbox.cpp                   |   16 ---
 src/object/objbox.h                     |    2 -
 src/object/physical_obj.cpp             |   49 ---------
 src/object/physical_obj.h               |    4 -
 src/object/physics.cpp                  |   53 ----------
 src/object/physics.h                    |    4 -
 src/team/teams_list.cpp                 |    1 -
 src/weapon/explosion.cpp                |   89 +----------------
 src/weapon/explosion.h                  |   11 +--
 src/weapon/grapple.cpp                  |    3 +-
 src/weapon/jetpack.cpp                  |    1 -
 src/weapon/parachute.cpp                |    3 +-
 src/weapon/suicide.cpp                  |    1 -
 src/weapon/weapon.cpp                   |    4 +-
 src/weapon/weapon_launcher.cpp          |    4 +-
 27 files changed, 29 insertions(+), 555 deletions(-)

diff --git a/lib/wormux/include/WORMUX_action.h 
b/lib/wormux/include/WORMUX_action.h
index 3c64807..c5d0f05 100644
--- a/lib/wormux/include/WORMUX_action.h
+++ b/lib/wormux/include/WORMUX_action.h
@@ -83,8 +83,6 @@ public:
     ACTION_CHARACTER_HIGH_JUMP,
     ACTION_CHARACTER_BACK_JUMP,
 
-    ACTION_CHARACTER_SET_PHYSICS,
-
     // ########################################################
     // Using Weapon
     ACTION_WEAPON_SHOOT,
@@ -105,7 +103,6 @@ public:
     ACTION_DROP_BONUS_BOX,
 
     // ########################################################
-    ACTION_EXPLOSION,
     ACTION_NETWORK_PING,
     ACTION_NETWORK_VERIFY_RANDOM_SYNC,
     // ########################################################
diff --git a/src/ai/ai_movement_module.cpp b/src/ai/ai_movement_module.cpp
index 83e5713..1a21e92 100644
--- a/src/ai/ai_movement_module.cpp
+++ b/src/ai/ai_movement_module.cpp
@@ -133,7 +133,7 @@ void AIMovementModule::Jump()
 
   //  GameMessages::GetInstance()->Add("try to jump!");
   SetMovement(JUMPING);
-  ActionHandler::GetInstance()->NewActionActiveCharacter(new 
Action(Action::ACTION_CHARACTER_HIGH_JUMP));
+  ActionHandler::GetInstance()->NewAction(new 
Action(Action::ACTION_CHARACTER_HIGH_JUMP));
 }
 
 void AIMovementModule::EndOfJump()
diff --git a/src/character/character.cpp b/src/character/character.cpp
index 74b2cb4..f65edda 100644
--- a/src/character/character.cpp
+++ b/src/character/character.cpp
@@ -704,11 +704,6 @@ void Character::Move(enum BodyDirection direction, bool 
slowly)
   }
 
   ASSERT(&ActiveCharacter() == this);
-
-  //Refresh skin position across network
-  if (!Network::GetInstance()->IsLocal()
-      && (ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI()))
-    SendActiveCharacterInfo();
 }
 
 // Signal the end of a fall
@@ -926,154 +921,6 @@ uint Character::GetCharacterIndex() const
   return 0;
 }
 
-// ###################################################################
-// ###################################################################
-// ###################################################################
-
-void Character::StoreValue(Action *a)
-{
-  PhysicalObj::StoreValue(a);
-  a->Push((int)GetDirection());
-  a->Push(GetAbsFiringAngle());
-  a->Push((int)disease_damage_per_turn);
-  a->Push((int)disease_duration);
-  if (IsActiveCharacter()) { // If active character, store step animation
-    a->Push((int)true);
-    a->Push(GetBody()->GetClothe());
-    a->Push(GetBody()->GetMovement());
-    a->Push((int)GetBody()->GetFrame());
-  } else {
-    a->Push((int)false);
-  }
-}
-
-void Character::GetValueFromAction(Action *a)
-{
-  // those 2 parameters will be retrieved by PhysicalObj::GetValueFromAction
-  alive_t prev_live_state = m_alive;
-  int prev_energy = m_energy;
-  Point2d prev_position = Physics::GetPos();
-
-  PhysicalObj::GetValueFromAction(a);
-  SetDirection((BodyDirection_t)(a->PopInt()));
-  SetFiringAngle(a->PopDouble());
-
-  if (m_alive != prev_live_state) {
-    switch (m_alive) {
-    case ALIVE:
-      fprintf(stderr, "Character::GetValueFromAction: %s has been 
resurrected\n",
-             GetName().c_str());
-      SetClothe("normal");
-      SetMovement("breathe");
-      if (prev_live_state == DROWNED) {
-       SignalGoingOutOfWater();
-      }
-      break;
-    case DEAD:
-      fprintf(stderr,
-             "Character::GetValueFromAction: %s has died on the other side of 
the network\n"
-             "        Previous energy: %d\n",
-             GetName().c_str(), prev_energy);
-      death_explosion = false;
-
-      // to avoid violating an ASSERT in Die()
-      m_alive = prev_live_state;
-      if (m_alive != ALIVE && m_alive != DROWNED)
-       m_alive = ALIVE;
-
-      Die();
-      break;
-    case GHOST: {
-      fprintf(stderr, "Character::GetValueFromAction: %s is now a ghost!\n", 
GetName().c_str());
-      m_alive = prev_live_state;
-      bool was_dead = IsDead();
-      m_alive = GHOST;
-      SignalGhostState(was_dead);
-      break;
-    }
-    case DROWNED:
-      fprintf(stderr, "Character::GetValueFromAction: %s is drowning!\n", 
GetName().c_str());
-      SignalDrowning();
-      break;
-    }
-  }
-
-  if (prev_energy != m_energy) {
-    fprintf(stderr,
-           "Character::GetValueFromAction: energy points were differents for 
%s:\n"
-           "        - remote : %d\n"
-           "        - local  : %d\n",
-           GetName().c_str(), m_energy, prev_energy);
-    if (m_energy > 0) {
-      energy_bar.Actu(m_energy);
-    }
-  }
-
-  uint disease_damage_per_turn = (a->PopInt());
-  uint disease_duration = (a->PopInt());
-  SetDiseaseDamage(disease_damage_per_turn, disease_duration);
-  if (a->PopInt()) { // If active characters, retrieve stored animation
-    if (GetTeam().IsActiveTeam())
-      ActiveTeam().SelectCharacter(this);
-
-    std::string clothe = a->PopString();
-    std::string movement = a->PopString();
-    uint frame = a->PopInt();
-
-    fprintf(stderr,
-           "Character::GetValueFromAction: Animation for %s\n"
-           "        - Clothe %s (current: %s)\n"
-           "        - Movement %s (current: %s)\n"
-           "        - Frame %d (current: %d)\n",
-           GetName().c_str(),
-           clothe.c_str(), GetBody()->GetClothe().c_str(),
-           movement.c_str(), GetBody()->GetMovement().c_str(),
-           frame, GetBody()->GetFrame());
-
-    SetClothe(clothe, true);
-    SetMovement(movement, true);
-    GetBody()->SetFrame(frame);
-
-    GetBody()->UpdateWeaponPosition(GetPosition());
-  }
-
-  // If the player has moved, the camera should follow it!
-  Point2d current_position = Physics::GetPos();
-  if (IsActiveCharacter() && prev_position != current_position) {
-    Camera::GetInstance()->FollowObject(this);
-    HideGameInterface();
-  }
-}
-
-// Static method
-void Character::RetrieveCharacterFromAction(Action *a)
-{
-  int team_no = a->PopInt();
-  int char_no = a->PopInt();
-  Character * c = 
GetTeamsList().FindPlayingByIndex(team_no)->FindByIndex(char_no);
-  c->GetValueFromAction(a);
-}
-
-// Static method
-void Character::StoreActiveCharacter(Action *a)
-{
-  Character::StoreCharacter(a, ActiveCharacter().GetTeamIndex(), 
ActiveCharacter().GetCharacterIndex());
-}
-
-// Static method
-void Character::StoreCharacter(Action *a, uint team_no, uint char_no)
-{
-  a->Push((int)team_no);
-  a->Push((int)char_no);
-  Character * c = 
GetTeamsList().FindPlayingByIndex(team_no)->FindByIndex(char_no);
-  c->StoreValue(a);
-}
-
-// ###################################################################
-// ###################################################################
-// ###################################################################
-
-
 const std::string& Character::GetName() const
 {
     return character_name;
@@ -1115,8 +962,6 @@ void Character::HandleKeyReleased_MoveRight(bool 
/*slowly*/)
   StopWalk();
 
   ActiveTeam().crosshair.Show();
-
-  SendActiveCharacterInfo();
 }
 
 // #################### MOVE_LEFT
@@ -1142,8 +987,6 @@ void Character::HandleKeyReleased_MoveLeft(bool /*slowly*/)
   body->StopWalk();
 
   ActiveTeam().crosshair.Show();
-
-  SendActiveCharacterInfo();
 }
 
 // #################### UP
@@ -1175,7 +1018,6 @@ void Character::HandleKeyRefreshed_Down(bool slowly)
       CharacterCursor::GetInstance()->Hide();
       if (slowly) AddFiringAngle(DELTA_CROSSHAIR/10.0);
       else       AddFiringAngle(DELTA_CROSSHAIR);
-      SendActiveCharacterInfo();
     }
 }
 
@@ -1189,7 +1031,7 @@ void Character::HandleKeyPressed_Jump()
 
   if (IsImmobile()) {
     Action a(Action::ACTION_CHARACTER_JUMP);
-    SendActiveCharacterAction(a);
+    Network::GetInstance()->SendActionToAll(a);
     Jump();
   }
 }
@@ -1203,7 +1045,7 @@ void Character::HandleKeyPressed_HighJump()
 
   if (IsImmobile()) {
     Action a(Action::ACTION_CHARACTER_HIGH_JUMP);
-    SendActiveCharacterAction(a);
+    Network::GetInstance()->SendActionToAll(a);
     HighJump();
   }
 }
@@ -1217,7 +1059,7 @@ void Character::HandleKeyPressed_BackJump()
 
   if (IsImmobile()) {
     Action a(Action::ACTION_CHARACTER_BACK_JUMP);
-    SendActiveCharacterAction(a);
+    Network::GetInstance()->SendActionToAll(a);
     BackJump();
   }
 }
diff --git a/src/character/character.h b/src/character/character.h
index f9e4ac3..ce9b54f 100644
--- a/src/character/character.h
+++ b/src/character/character.h
@@ -149,16 +149,6 @@ public:
     else disease_damage_per_turn = 0;
   }
 
-  // ================================================
-  // Used to sync value across network
-  virtual void GetValueFromAction(Action *);
-  virtual void StoreValue(Action *);
-
-  static void RetrieveCharacterFromAction(Action *);
-  static void StoreActiveCharacter(Action *);
-  static void StoreCharacter(Action *, uint team_no, uint char_no);
-  // ================================================
-
   void Draw();
   void Refresh();
 
diff --git a/src/include/action_handler.cpp b/src/include/action_handler.cpp
index 5e90b29..e7aa6e9 100644
--- a/src/include/action_handler.cpp
+++ b/src/include/action_handler.cpp
@@ -304,8 +304,9 @@ static void Action_Player_ChangeWeapon (Action *a)
 static void Action_Player_ChangeCharacter (Action *a)
 {
   JukeBox::GetInstance()->Play("default", "character/change_in_same_team");
-  Character::RetrieveCharacterFromAction(a);       // Retrieve current 
character's information
-  Character::RetrieveCharacterFromAction(a);       // Retrieve next character 
information
+  int char_no = a->PopInt();
+  Character * c = ActiveTeam().FindByIndex(char_no);
+  ActiveTeam().SelectCharacter(c);
   Camera::GetInstance()->FollowObject(&ActiveCharacter(),true);
 }
 
@@ -313,11 +314,7 @@ static void Action_Game_NextTeam (Action *a)
 {
   std::string team = a->PopString();
   GetTeamsList().SetActive(team);
-
-  Character::RetrieveCharacterFromAction(a);       // Retrieve current 
character's information
-
-  ASSERT (!ActiveCharacter().IsDead());
-
+  ActiveTeam().NextCharacter(true);
   Camera::GetInstance()->FollowObject(&ActiveCharacter());
 
   // Are we turn master for next turn ?
@@ -334,11 +331,10 @@ static void Action_Game_CalculateFrame (Action */*a*/)
   // that the frame is complete.
 }
 
-static void Action_DropBonusBox (Action *a)
+static void Action_DropBonusBox (Action */*a*/)
 {
   ObjBox* current_box = Game::GetInstance()->GetCurrentBox();
   if (current_box != NULL) {
-    current_box->GetValueFromAction(a);
     current_box->DropBox();
   }
 }
@@ -559,30 +555,6 @@ void WORMUX_DisconnectPlayer(Player& player)
 
 // ########################################################
 
-// Send information about energy and the position of every character
-void SyncCharacters()
-{
-  ASSERT(Network::GetInstance()->IsTurnMaster());
-
-  TeamsList::iterator
-    it=GetTeamsList().playing_list.begin(),
-    end=GetTeamsList().playing_list.end();
-
-  for (int team_no = 0; it != end; ++it, ++team_no)
-  {
-    Team& team = **it;
-    Team::iterator
-        tit = team.begin(),
-        tend = team.end();
-
-    for (int char_no = 0; tit != tend; ++tit, ++char_no)
-    {
-      // Sync the character's position, energy, ...
-      SendCharacterInfo(team_no, char_no);
-    }
-  }
-}
-
 static void Action_Character_Jump (Action */*a*/)
 {
   Game::GetInstance()->SetCharacterChosen(true);
@@ -604,42 +576,6 @@ static void Action_Character_BackJump (Action */*a*/)
   ActiveCharacter().BackJump();
 }
 
-static void Action_Character_SetPhysics (Action *a)
-{
-  while(!a->IsEmpty())
-    Character::RetrieveCharacterFromAction(a);
-}
-
-void SendActiveCharacterAction(const Action& a)
-{
-  ASSERT(ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI());
-  SendActiveCharacterInfo();
-  Network::GetInstance()->SendActionToAll(a);
-}
-
-// Send character information over the network (it's totally stupid to send it 
locally ;-)
-void SendCharacterInfo(int team_no, int char_no)
-{
-  Action a(Action::ACTION_CHARACTER_SET_PHYSICS);
-  Character::StoreCharacter(&a, team_no, char_no);
-  Network::GetInstance()->SendActionToAll(a);
-}
-
-uint last_time = 0;
-
-// Send active character information over the network (it's totally stupid to 
send it locally ;-)
-void SendActiveCharacterInfo(bool can_be_dropped)
-{
-  uint current_time = Time::GetInstance()->Read();
-
-  if (!can_be_dropped || last_time + 100 < Time::GetInstance()->Read()) {
-    last_time = current_time;
-    SendCharacterInfo(ActiveCharacter().GetTeamIndex(), 
ActiveCharacter().GetCharacterIndex());
-  }
-}
-
-// ########################################################
-
 static void Action_Weapon_Shoot (Action *a)
 {
   if (Game::GetInstance()->ReadState() != Game::PLAYING)
@@ -952,28 +888,6 @@ void WORMUX_DisconnectHost(DistantComputer& host)
     Network::GetInstance()->SendActionToAll(a); // host is already removed 
from the list
   }
 }
-
-static void Action_Explosion (Action *a)
-{
-  ExplosiveWeaponConfig config;
-  MSG_DEBUG("action_handler","-> Begin");
-
-  Point2i pos = a->PopPoint2i();
-  config.explosion_range = a->PopInt();
-  config.particle_range = a->PopInt();
-  config.damage = a->PopInt();
-  config.blast_range = a->PopInt();
-  config.blast_force = a->PopInt();
-  std::string son = a->PopString();
-  bool fire_particle = !!a->PopInt();
-  ParticleEngine::ESmokeStyle smoke = (ParticleEngine::ESmokeStyle)a->PopInt();
-  std::string unique_id = a->PopString();
-
-  ApplyExplosion_common(pos, config, son, fire_particle, smoke, unique_id);
-
-  MSG_DEBUG("action_handler","<- End");
-}
-
 // ########################################################
 // ########################################################
 // ########################################################
@@ -1020,9 +934,6 @@ void Action_Handler_Init()
   ActionHandler::GetInstance()->Register (Action::ACTION_CHARACTER_JUMP, 
"CHARACTER_jump", &Action_Character_Jump);
   ActionHandler::GetInstance()->Register (Action::ACTION_CHARACTER_HIGH_JUMP, 
"CHARACTER_super_jump", &Action_Character_HighJump);
   ActionHandler::GetInstance()->Register (Action::ACTION_CHARACTER_BACK_JUMP, 
"CHARACTER_back_jump", &Action_Character_BackJump);
-
-  ActionHandler::GetInstance()->Register 
(Action::ACTION_CHARACTER_SET_PHYSICS, "CHARACTER_set_physics", 
&Action_Character_SetPhysics);
-
   // ########################################################
   // Using Weapon
   ActionHandler::GetInstance()->Register (Action::ACTION_WEAPON_SHOOT, 
"WEAPON_shoot", &Action_Weapon_Shoot);
@@ -1043,8 +954,6 @@ void Action_Handler_Init()
   ActionHandler::GetInstance()->Register (Action::ACTION_DROP_BONUS_BOX, 
"BONUSBOX_drop_box", &Action_DropBonusBox);
   // ########################################################
   ActionHandler::GetInstance()->Register (Action::ACTION_NETWORK_PING, 
"NETWORK_ping", &Action_Network_Ping);
-
-  ActionHandler::GetInstance()->Register (Action::ACTION_EXPLOSION, 
"explosion", &Action_Explosion);
   ActionHandler::GetInstance()->Register (Action::ACTION_NETWORK_RANDOM_INIT, 
"NETWORK_random_init", &Action_Network_RandomInit);
   ActionHandler::GetInstance()->Register 
(Action::ACTION_NETWORK_VERIFY_RANDOM_SYNC, "NETWORK_verify_random_sync", 
&Action_Network_VerifyRandomSync);
   ActionHandler::GetInstance()->Register 
(Action::ACTION_INFO_CLIENT_DISCONNECT, "INFO_client_disconnect", 
&Action_Info_ClientDisconnect);
@@ -1137,10 +1046,3 @@ void ActionHandler::NewAction(Action* a, bool 
repeat_to_network)
   Menu::WakeUpOnCallback();
 }
 
-void ActionHandler::NewActionActiveCharacter(Action* a)
-{
-  ASSERT(ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI());
-  SendActiveCharacterInfo();
-  NewAction(a);
-}
-
diff --git a/src/include/action_handler.h b/src/include/action_handler.h
index d4447e1..077ad69 100644
--- a/src/include/action_handler.h
+++ b/src/include/action_handler.h
@@ -53,14 +53,6 @@ void Action_Handler_Init();
 
 // TODO: Move it in an object !
 
-// Send character information over the network (it's totally stupid to send it 
locally ;-)
-void SendCharacterInfo(int team_no, int char_no);
-void SendActiveCharacterInfo(bool can_be_dropped = false);
-
-// Send character information + an action over the network
-// WARNING: it does not post the action in local queue!!
-void SendActiveCharacterAction(const Action& a);
-
 void SendGameMode();
 void SyncCharacters();
 
diff --git a/src/interface/man_machine_interface.cpp 
b/src/interface/man_machine_interface.cpp
index d72a3a8..bc480fa 100644
--- a/src/interface/man_machine_interface.cpp
+++ b/src/interface/man_machine_interface.cpp
@@ -269,7 +269,6 @@ void ManMachineInterface::HandleKeyReleased(const Key_t 
&key)
       ObjBox* current_box = Game::GetInstance()->GetCurrentBox();
       if (current_box != NULL) {
         Action * a = new Action(Action::ACTION_DROP_BONUS_BOX);
-        current_box->StoreValue(a);
         ActionHandler::GetInstance()->NewAction(a);
       }
     } else if (Game::GetInstance()->ReadState() == Game::PLAYING &&
@@ -426,15 +425,15 @@ void ManMachineInterface::HandleKeyReleased(const Key_t 
&key)
       {
         if (GameMode::GetInstance()->AllowCharacterSelection()) {
           SDLMod mod = SDL_GetModState();
-         Action * change_character = new 
Action(Action::ACTION_PLAYER_CHANGE_CHARACTER);
-         Character::StoreActiveCharacter(change_character);
           if (mod & KMOD_CTRL) {
             ActiveTeam().PreviousCharacter();
           } else {
             ActiveTeam().NextCharacter();
           }
-         Character::StoreActiveCharacter(change_character);
-         ActionHandler::GetInstance()->NewAction(change_character);
+          Action * next_character = new 
Action(Action::ACTION_PLAYER_CHANGE_CHARACTER);
+          uint next_character_index = ActiveCharacter().GetCharacterIndex();
+          next_character->Push((int)next_character_index);
+          ActionHandler::GetInstance()->NewAction(next_character);
         }
       }
       return;
diff --git a/src/interface/mouse.cpp b/src/interface/mouse.cpp
index c1305a7..98a6c6d 100644
--- a/src/interface/mouse.cpp
+++ b/src/interface/mouse.cpp
@@ -118,13 +118,12 @@ void Mouse::ActionLeftClic(bool) const
     }
 
     if (character_found) {
-      Action * next_character = new 
Action(Action::ACTION_PLAYER_CHANGE_CHARACTER);
-      Character::StoreActiveCharacter(next_character);
-
       while ( &(*it) != &ActiveCharacter() )
         ActiveTeam().NextCharacter ();
 
-      Character::StoreActiveCharacter(next_character);
+      Action * next_character = new 
Action(Action::ACTION_PLAYER_CHANGE_CHARACTER);
+      uint next_character_index = (*it).GetCharacterIndex();
+      next_character->Push((int)next_character_index);
       ActionHandler::GetInstance()->NewAction(next_character);
 
       return;
diff --git a/src/object/bonus_box.cpp b/src/object/bonus_box.cpp
index f4b47ce..a1ceec7 100644
--- a/src/object/bonus_box.cpp
+++ b/src/object/bonus_box.cpp
@@ -177,19 +177,7 @@ void BonusBox::LoadXml(const xmlNode* object)
   ASSERT(total_probability != 0.0);
 }
 
-void BonusBox::GetValueFromAction(Action * a)
-{
-  ObjBox::GetValueFromAction(a);
-  weapon_num = (uint)(a->PopInt());
-}
-
 void BonusBox::Randomize()
 {
   PickRandomWeapon();
 }
-
-void BonusBox::StoreValue(Action * a)
-{
-  ObjBox::StoreValue(a);
-  a->Push(int(weapon_num));
-}
diff --git a/src/object/bonus_box.h b/src/object/bonus_box.h
index 6f48962..69c33d2 100644
--- a/src/object/bonus_box.h
+++ b/src/object/bonus_box.h
@@ -57,8 +57,6 @@ class BonusBox : public ObjBox
 
     void ApplyBonus(Character *);
     void Randomize();
-    void GetValueFromAction(Action *);
-    void StoreValue(Action *);
 };
 
 //-----------------------------------------------------------------------------
diff --git a/src/object/medkit.cpp b/src/object/medkit.cpp
index 3913754..805ae34 100644
--- a/src/object/medkit.cpp
+++ b/src/object/medkit.cpp
@@ -90,15 +90,3 @@ void Medkit::LoadXml(const xmlNode*  object)
   if (!r)
     nbr_health = 24;
 }
-
-void Medkit::GetValueFromAction(Action * a)
-{
-  ObjBox::GetValueFromAction(a);
-  nbr_health = a->PopInt();
-}
-
-void Medkit::StoreValue(Action * a)
-{
-  ObjBox::StoreValue(a);
-  a->Push(nbr_health);
-}
diff --git a/src/object/medkit.h b/src/object/medkit.h
index 4612b2e..92d6499 100644
--- a/src/object/medkit.h
+++ b/src/object/medkit.h
@@ -44,8 +44,6 @@ class Medkit : public ObjBox//public PhysicalObj
 
     static void LoadXml(const xmlNode * object);
     void ApplyBonus(Character *);
-    void GetValueFromAction(Action *);
-    void StoreValue(Action *);
 };
 
 //-----------------------------------------------------------------------------
diff --git a/src/object/objbox.cpp b/src/object/objbox.cpp
index 659dbc9..2ca5b18 100644
--- a/src/object/objbox.cpp
+++ b/src/object/objbox.cpp
@@ -159,22 +159,6 @@ void ObjBox::SignalGhostState(bool /*was_already_dead*/)
   Explode();
 }
 
-void ObjBox::GetValueFromAction(Action * a)
-{
-  PhysicalObj::GetValueFromAction(a);
-  start_life_points = a->PopInt();
-  SetXY(a->PopPoint2d());
-  SetSpeedXY(a->PopPoint2d());
-}
-
-void ObjBox::StoreValue(Action *a)
-{
-  PhysicalObj::StoreValue(a);
-  a->Push(start_life_points);
-  a->Push(GetPosition());
-  a->Push(GetSpeed());
-}
-
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // Static methods
diff --git a/src/object/objbox.h b/src/object/objbox.h
index d52c1a0..36c64e4 100644
--- a/src/object/objbox.h
+++ b/src/object/objbox.h
@@ -53,8 +53,6 @@ class ObjBox : public PhysicalObj //it would be nice to name 
this "Box", but tha
     void Draw();
     virtual void Refresh();
     virtual void Randomize() {};
-    virtual void GetValueFromAction(Action *);
-    virtual void StoreValue(Action *);
     virtual void ApplyBonus(Character *) {};
 
   protected:
diff --git a/src/object/physical_obj.cpp b/src/object/physical_obj.cpp
index 83738cc..f1885da 100644
--- a/src/object/physical_obj.cpp
+++ b/src/object/physical_obj.cpp
@@ -132,55 +132,6 @@ void PhysicalObj::SetSize(const Point2i &newSize)
   SetPhysSize( (double)newSize.x / PIXEL_PER_METER, 
(double)newSize.y/PIXEL_PER_METER );
 }
 
-void PhysicalObj::StoreValue(Action *a)
-{
-  Physics::StoreValue(a);
-  a->Push(m_collides_with_ground);
-  a->Push(m_collides_with_characters);
-  a->Push(m_collides_with_objects);
-  a->Push(m_rebound_position);
-  a->Push((int)m_minimum_overlapse_time);
-  a->Push(m_ignore_movements);
-  a->Push(m_is_character);
-  a->Push(m_test_left);
-  a->Push(m_test_right);
-  a->Push(m_test_top);
-  a->Push(m_test_bottom);
-  a->Push(m_width);
-  a->Push(m_height);
-  a->Push(m_alive);
-  a->Push(m_energy);
-  a->Push(m_allow_negative_y);
-}
-
-void PhysicalObj::GetValueFromAction(Action *a)
-{
-  Physics::GetValueFromAction(a);
-  m_collides_with_ground     = !!a->PopInt();
-  m_collides_with_characters = !!a->PopInt();
-  m_collides_with_objects    = !!a->PopInt();
-  m_rebound_position         = a->PopPoint2i();
-  m_minimum_overlapse_time   = (uint)a->PopInt();
-  m_ignore_movements         = !!a->PopInt();
-  m_is_character             = !!a->PopInt();
-  m_test_left                = a->PopInt();
-  m_test_right               = a->PopInt();
-  m_test_top                 = a->PopInt();
-  m_test_bottom              = a->PopInt();
-  m_width                    = a->PopInt();
-  m_height                   = a->PopInt();
-  m_alive                    = (alive_t)a->PopInt();
-  m_energy                   = a->PopInt();
-  m_allow_negative_y         = !!a->PopInt();
-
-  ASSERT(m_test_left >= 0);
-  ASSERT(m_test_right >= 0);
-  ASSERT(m_test_top >= 0);
-  ASSERT(m_test_bottom >= 0);
-  ASSERT(m_width >= 0);
-  ASSERT(m_height >= 0);
-}
-
 void PhysicalObj::SetOverlappingObject(PhysicalObj* obj, int timeout)
 {
   m_minimum_overlapse_time = 0;
diff --git a/src/object/physical_obj.h b/src/object/physical_obj.h
index f2674f1..d0da305 100644
--- a/src/object/physical_obj.h
+++ b/src/object/physical_obj.h
@@ -105,10 +105,6 @@ public:
   double GetYdouble() const;
   const Point2d GetPosition() const { return Point2d(GetXdouble(), 
GetYdouble()) ;};
 
-  // Used to sync value across network
-  virtual void GetValueFromAction(Action *);
-  virtual void StoreValue(Action *);
-
   // Set/Get size
   void SetSize(const Point2i &newSize);
   int GetWidth() const { return m_width; };
diff --git a/src/object/physics.cpp b/src/object/physics.cpp
index c5ae5c2..5cedb8b 100644
--- a/src/object/physics.cpp
+++ b/src/object/physics.cpp
@@ -144,59 +144,6 @@ void Physics::GetSpeed(double &norm, double &angle) const
   }
 }
 
-
-void Physics::StoreValue(Action *a)
-{
-  a->Push((int)m_motion_type);
-  a->Push(m_pos_x);
-  a->Push(m_pos_y);
-  a->Push(m_extern_force);
-  a->Push((int)m_last_move);
-  a->Push(m_phys_width);
-  a->Push(m_phys_height);
-  a->Push(m_fix_point_gnd);
-  a->Push(m_fix_point_dxy);
-  a->Push(m_rope_angle);
-  a->Push(m_rope_length);
-  a->Push(m_rope_elasticity);
-  a->Push(m_elasticity_damping);
-  a->Push(m_balancing_damping);
-  a->Push(m_elasticity_off);
-
-  MSG_DEBUG( "physic.sync", "%s now - x0:%f, x1:%f, x2:%f - y0:%f, y1:%f, 
y2:%f - extern_force: %f, %f",
-            typeid(*this).name(),
-             m_pos_x.x0, m_pos_x.x1, m_pos_x.x2,
-             m_pos_y.x0, m_pos_y.x1, m_pos_y.x2,
-             m_extern_force.x, m_extern_force.y);
-}
-
-void Physics::GetValueFromAction(Action *a)
-{
-  m_motion_type        = (MotionType_t)a->PopInt();
-  m_pos_x              = a->PopEulerVector();
-  m_pos_y              = a->PopEulerVector();
-  m_extern_force       = a->PopPoint2d();
-  m_last_move          = (uint)a->PopInt();
-  m_phys_width         = a->PopDouble();
-  m_phys_height        = a->PopDouble();
-  m_fix_point_gnd      = a->PopPoint2d();
-  m_fix_point_dxy      = a->PopPoint2d();
-  m_rope_angle         = a->PopEulerVector();
-  m_rope_length        = a->PopEulerVector();
-  m_rope_elasticity    = a->PopDouble();
-  m_elasticity_damping = a->PopDouble();
-  m_balancing_damping  = a->PopDouble();
-  m_elasticity_off     = !!a->PopInt();
-
-  ASSERT(Time::GetInstance()->Read() >= m_last_move);
-
-  MSG_DEBUG( "physic.sync", "%s now - x0:%f, x1:%f, x2:%f - y0:%f, y1:%f, 
y2:%f - extern_force: %f, %f",
-            typeid(*this).name(),
-             m_pos_x.x0, m_pos_x.x1, m_pos_x.x2,
-             m_pos_y.x0, m_pos_y.x1, m_pos_y.x2,
-             m_extern_force.x, m_extern_force.y);
-}
-
 void Physics::SetExternForceXY (const Point2d& vector)
 {
   bool was_moving = IsMoving();
diff --git a/src/object/physics.h b/src/object/physics.h
index 61e965f..113395a 100644
--- a/src/object/physics.h
+++ b/src/object/physics.h
@@ -106,10 +106,6 @@ public:
   void SetAlignParticleState(bool state) { m_align_particle_state = state; }
   bool GetAlignParticleState(void) const { return m_align_particle_state; }
 
-  // Used to sync value across network
-  virtual void GetValueFromAction(Action *);
-  virtual void StoreValue(Action *);
-
   // Reset the physics constants (mass, air_resistance...) to the default 
values in the cfg
   void ResetConstants() { *((ObjectConfig*)this) = m_cfg; };
 
diff --git a/src/team/teams_list.cpp b/src/team/teams_list.cpp
index 7c0303d..4f8779e 100644
--- a/src/team/teams_list.cpp
+++ b/src/team/teams_list.cpp
@@ -65,7 +65,6 @@ void TeamsList::NextTeam ()
   ActiveTeam().NextCharacter(true);
 
   Action a(Action::ACTION_GAMELOOP_NEXT_TEAM, next->GetId());
-  Character::StoreActiveCharacter(&a);
   Network::GetInstance()->SendActionToAll(a);
 
   printf("\nPlaying character : %i %s\n", 
ActiveCharacter().GetCharacterIndex(), ActiveCharacter().GetName().c_str());
diff --git a/src/weapon/explosion.cpp b/src/weapon/explosion.cpp
index 1877471..e831ce7 100644
--- a/src/weapon/explosion.cpp
+++ b/src/weapon/explosion.cpp
@@ -43,13 +43,12 @@
 
 Profile *weapons_res_profile = NULL;
 
-void ApplyExplosion_common (const Point2i &pos,
-                            const ExplosiveWeaponConfig &config,
-                            const std::string& son,
-                            bool fire_particle,
-                            ParticleEngine::ESmokeStyle smoke,
-                            std::string network_id
-                            )
+void ApplyExplosion (const Point2i &pos,
+                     const ExplosiveWeaponConfig &config,
+                     const std::string& son,
+                     bool fire_particle,
+                     ParticleEngine::ESmokeStyle smoke
+                     )
 {
   MSG_DEBUG("explosion", "explosion range : %i", config.explosion_range);
 
@@ -146,11 +145,6 @@ void ApplyExplosion_common (const Point2i &pos,
    {
      PhysicalObj *obj = *it;
 
-     if (obj->GetUniqueId() == network_id) {
-       MSG_DEBUG("explosion", "!! skip blast for object %s", 
network_id.c_str());
-       continue; // hack to fix bug #8529
-     }
-
      if (obj->CollidesWithGround() && !obj->IsGhost())
      {
        double distance = pos.Distance(obj->GetCenter());
@@ -185,7 +179,6 @@ void ApplyExplosion_common (const Point2i &pos,
 
          ASSERT( obj->GetMass() != 0.0);
 
-        MSG_DEBUG("explosion", "!! blasting object %s", network_id.c_str());
          obj->AddSpeed (force / obj->GetMass(), angle);
        }
      }
@@ -209,73 +202,3 @@ void ApplyExplosion_common (const Point2i &pos,
   };
 }
 
-void ApplyExplosion_master (const Point2i &pos,
-                            const ExplosiveWeaponConfig &config,
-                            const std::string& son,
-                            bool fire_particle,
-                            ParticleEngine::ESmokeStyle smoke,
-                            std::string network_id
-                            )
-{
-  ActionHandler* action_handler = ActionHandler::GetInstance();
-
-  TeamsList::iterator
-    it=GetTeamsList().playing_list.begin(),
-    end=GetTeamsList().playing_list.end();
-
-  Action a_characters_info(Action::ACTION_CHARACTER_SET_PHYSICS);
-
-  for (int team_no = 0; it != end; ++it, ++team_no)
-  {
-    Team& team = **it;
-    Team::iterator
-        tit = team.begin(),
-        tend = team.end();
-
-    for (int char_no = 0; tit != tend; ++tit, ++char_no)
-    {
-      Character &character = *tit;
-
-      double distance = pos.Distance( character.GetCenter());
-
-      // If the character is in the explosion range, apply damage on it !
-      if (distance <= config.explosion_range || distance < config.blast_range)
-      {
-        // clients : Place characters
-       Character::StoreCharacter(&a_characters_info, team_no, char_no);
-      }
-    }
-  }
-  // send characters infos on network
-  Network::GetInstance()->SendActionToAll(a_characters_info);
-
-  Action* a = new Action(Action::ACTION_EXPLOSION);
-  a->Push(pos);
-  a->Push((int)config.explosion_range);
-  a->Push((int)config.particle_range);
-  a->Push((int)config.damage);
-  a->Push((int)config.blast_range);
-  a->Push((int)config.blast_force);
-  a->Push(son);
-  a->Push(fire_particle);
-  a->Push(smoke);
-  ASSERT(network_id.size()>0);
-  a->Push(network_id);
-
-  action_handler->NewAction(a);
-}
-
-
-void ApplyExplosion (const Point2i &pos,
-                     const ExplosiveWeaponConfig &config,
-                     const std::string& son,
-                     bool fire_particle,
-                     ParticleEngine::ESmokeStyle smoke,
-                     std::string network_id
-                     )
-{
-  if (Network::GetInstance()->IsLocal())
-    ApplyExplosion_common(pos, config, son, fire_particle, smoke, network_id);
-  else if (Network::GetInstance()->IsTurnMaster())
-    ApplyExplosion_master(pos, config, son, fire_particle, smoke, network_id);
-}
diff --git a/src/weapon/explosion.h b/src/weapon/explosion.h
index 6cb3b7c..f6ceeff 100644
--- a/src/weapon/explosion.h
+++ b/src/weapon/explosion.h
@@ -32,18 +32,9 @@ void ApplyExplosion(const Point2i &pos,
                     const ExplosiveWeaponConfig &config,
                     const std::string& son="weapon/explosion",
                     bool fire_particle = true,
-                    ParticleEngine::ESmokeStyle smoke = 
ParticleEngine::BigESmoke,
-                    std::string network_id = "LOCAL" // Useful only on network 
: this is used to know that we should not apply blast and damage to the 
projectile which has created the explosion (bugfix #8529)
+                    ParticleEngine::ESmokeStyle smoke = 
ParticleEngine::BigESmoke
                     );
 
-void ApplyExplosion_common (const Point2i &pos,
-                            const ExplosiveWeaponConfig &config,
-                            const std::string& son,
-                            bool fire_particle,
-                            ParticleEngine::ESmokeStyle smoke,
-                            std::string network_id
-                           );
-
 extern Profile *weapons_res_profile;
 
 #endif //WEAPON_TOOLS_H
diff --git a/src/weapon/grapple.cpp b/src/weapon/grapple.cpp
index a120c35..32138e9 100644
--- a/src/weapon/grapple.cpp
+++ b/src/weapon/grapple.cpp
@@ -416,11 +416,10 @@ void Grapple::Refresh()
   if (!ActiveTeam().IsLocal() && !ActiveTeam().IsLocalAI())
     return;
 
-if (IsInUse() && !m_attaching)
+  if (IsInUse() && !m_attaching)
   {
     ActiveCharacter().SetMovement("ninja-rope");
     ActiveCharacter().UpdatePosition();
-    SendActiveCharacterInfo(true);
   }
 }
 
diff --git a/src/weapon/jetpack.cpp b/src/weapon/jetpack.cpp
index 48c0843..3f092cd 100644
--- a/src/weapon/jetpack.cpp
+++ b/src/weapon/jetpack.cpp
@@ -75,7 +75,6 @@ void JetPack::Refresh()
     F.y = m_y_force ;
 
     ActiveCharacter().SetExternForceXY(F);
-    SendActiveCharacterInfo(true);
 
     if (!F.IsNull())
     {
diff --git a/src/weapon/parachute.cpp b/src/weapon/parachute.cpp
index c0619ea..f394d1f 100644
--- a/src/weapon/parachute.cpp
+++ b/src/weapon/parachute.cpp
@@ -149,11 +149,10 @@ void Parachute::Refresh()
     }
   }
   // If parachute is open => character can move a little to the left or to the 
right
-  if (open && Network::GetInstance()->IsTurnMaster()) {
+  if (open) {
     ActiveCharacter().SetExternForce(m_x_strength.x_extern, 0.0);
     if (m_x_strength.changing) {
       m_x_strength.changing = false;
-      SendActiveCharacterInfo(false);
     }
   }
 }
diff --git a/src/weapon/suicide.cpp b/src/weapon/suicide.cpp
index 3877003..4ed9bc5 100644
--- a/src/weapon/suicide.cpp
+++ b/src/weapon/suicide.cpp
@@ -55,7 +55,6 @@ void Suicide::Refresh()
     ActiveCharacter().DisableDeathExplosion();
     ActiveCharacter().body->MakeParticles(ActiveCharacter().GetPosition());
     ActiveCharacter().SetEnergy(0); // Die!
-    SendActiveCharacterInfo();
     ApplyExplosion(ActiveCharacter().GetCenter(),cfg());
   }
 }
diff --git a/src/weapon/weapon.cpp b/src/weapon/weapon.cpp
index 68de2fc..75d4e8f 100644
--- a/src/weapon/weapon.cpp
+++ b/src/weapon/weapon.cpp
@@ -251,7 +251,7 @@ void Weapon::NewActionWeaponShoot() const
   Action* a_shoot = new Action(Action::ACTION_WEAPON_SHOOT,
                                m_strength,
                                ActiveCharacter().GetAbsFiringAngle());
-  ActionHandler::GetInstance()->NewActionActiveCharacter(a_shoot);
+  ActionHandler::GetInstance()->NewAction(a_shoot);
 }
 
 void Weapon::NewActionWeaponStopUse() const
@@ -259,7 +259,7 @@ void Weapon::NewActionWeaponStopUse() const
   ASSERT(ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI());
 
   Action* a = new Action(Action::ACTION_WEAPON_STOP_USE);
-  ActionHandler::GetInstance()->NewActionActiveCharacter(a);
+  ActionHandler::GetInstance()->NewAction(a);
 }
 
 void Weapon::PrepareShoot(double strength, double angle)
diff --git a/src/weapon/weapon_launcher.cpp b/src/weapon/weapon_launcher.cpp
index fec13c8..cccb8ec 100644
--- a/src/weapon/weapon_launcher.cpp
+++ b/src/weapon/weapon_launcher.cpp
@@ -107,7 +107,7 @@ void WeaponBullet::Refresh()
 void WeaponBullet::DoExplosion()
 {
   Point2i pos = GetCenter();
-  ApplyExplosion(pos, cfg, "", false, ParticleEngine::LittleESmoke, 
GetUniqueId());
+  ApplyExplosion(pos, cfg, "", false, ParticleEngine::LittleESmoke);
 }
 //-----------------------------------------------------------------------------
 
@@ -351,7 +351,7 @@ void WeaponProjectile::SignalExplosion()
 void WeaponProjectile::DoExplosion()
 {
   Point2i pos = GetCenter();
-  ApplyExplosion(pos, cfg, "weapon/explosion", true, 
ParticleEngine::BigESmoke, GetUniqueId());
+  ApplyExplosion(pos, cfg, "weapon/explosion", true, 
ParticleEngine::BigESmoke);
 }
 
 void WeaponProjectile::IncrementTimeOut()
-- 
1.6.0.4


_______________________________________________
Wormux-dev mailing list
Wormux-dev@gna.org
https://mail.gna.org/listinfo/wormux-dev

Répondre à