From 381abc4cb27f14e7a91fb3c7445002564ff0a641 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 6 Jun 2020 05:54:45 +0000 Subject: [PATCH] Fixed restoring multiple summons. --- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- .../dist/db_installer/sql/game/character_summons.sql | 2 +- .../gameserver/data/sql/impl/CharSummonTable.java | 7 +++---- 30 files changed, 60 insertions(+), 75 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_1.0_Ertheia/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_1.0_Ertheia/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_2.5_Underground/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_2.5_Underground/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_2.5_Underground/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_2.5_Underground/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_3.0_Helios/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_3.0_Helios/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_3.0_Helios/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_3.0_Helios/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_4.0_GrandCrusade/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_4.0_GrandCrusade/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_5.0_Salvation/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_5.0_Salvation/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_5.0_Salvation/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_5.0_Salvation/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_5.5_EtinasFate/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_5.5_EtinasFate/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_5.5_EtinasFate/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_6.0_Fafurion/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_6.0_Fafurion/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_6.0_Fafurion/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_7.0_PreludeOfWar/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_Classic_2.0_Saviors/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_Classic_2.1_Zaken/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_Classic_2.2_Antharas/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_Classic_2.3_SevenSigns/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_Classic_3.0_TheKamael/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e) diff --git a/L2J_Mobius_Classic_Interlude/dist/db_installer/sql/game/character_summons.sql b/L2J_Mobius_Classic_Interlude/dist/db_installer/sql/game/character_summons.sql index acd2d4219d..e089d258b3 100644 --- a/L2J_Mobius_Classic_Interlude/dist/db_installer/sql/game/character_summons.sql +++ b/L2J_Mobius_Classic_Interlude/dist/db_installer/sql/game/character_summons.sql @@ -6,5 +6,5 @@ CREATE TABLE IF NOT EXISTS `character_summons` ( `curHp` int(9) unsigned DEFAULT '0', `curMp` int(9) unsigned DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`ownerId`,`summonSkillId`) + PRIMARY KEY (`ownerId`,`summonId`,`summonSkillId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java index b97aab8727..a5c58a1ce8 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/impl/CharSummonTable.java @@ -196,13 +196,12 @@ public class CharSummonTable final int curMp = rs.getInt("curMp"); final int time = rs.getInt("time"); + removeServitor(player, summonObjId); skill = SkillData.getInstance().getSkill(skillId, player.getSkillLevel(skillId)); if (skill == null) { - removeServitor(player, summonObjId); return; } - skill.applyEffects(player, player); if (player.hasServitors()) @@ -223,7 +222,7 @@ public class CharSummonTable public void saveSummon(ServitorInstance summon) { - if ((summon == null) || (summon.getLifeTimeRemaining() <= 0)) + if (summon == null) { return; } @@ -238,7 +237,7 @@ public class CharSummonTable ps.setInt(3, summon.getReferenceSkill()); ps.setInt(4, (int) Math.round(summon.getCurrentHp())); ps.setInt(5, (int) Math.round(summon.getCurrentMp())); - ps.setInt(6, summon.getLifeTimeRemaining()); + ps.setInt(6, Math.max(0, summon.getLifeTimeRemaining())); ps.execute(); } catch (Exception e)