Przeglądaj źródła

'''Lineage 2, The First Throne: Hellbound'''
,,(Thanks to KenM, Kerberos, nBd, and the rest of the L2J Core and DP Team!),,

''Core Support''

Ahmed 17 lat temu
rodzic
commit
9f4a1f648c

+ 1 - 1
L2_GameServer_T1/.project

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>L2_GameServer_t1</name>
+	<name>L2_GameServer_Hell</name>
 	<comment></comment>
 	<projects>
 	</projects>

+ 1 - 1
L2_GameServer_T1/build.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project name="L2_GameServer_t1" default="dist" basedir=".">
+<project name="L2_GameServer_Hell" default="dist" basedir=".">
     <description>
         This script will build the L2J server.
         

+ 2 - 2
L2_GameServer_T1/java/config/Character.properties

@@ -379,8 +379,8 @@ DaysBeforeJoinAllyWhenDismissed = 1
 DaysBeforeAcceptNewClanWhenDismissed = 1
 
 # Number of days before creating a new alliance when dissolved an alliance.
-# Retail: 10
-DaysBeforeCreateNewAllyWhenDissolved = 10
+# Retail: 1
+DaysBeforeCreateNewAllyWhenDissolved = 1
 
 # Maximum number of clans in alliance.
 # Retail: 3

+ 2 - 2
L2_GameServer_T1/java/config/server.properties

@@ -67,5 +67,5 @@ MaximumOnlineUsers=100
 
 # Minimum and maximum protocol revision that server allow to connect.
 # You must keep MinProtocolRevision <= MaxProtocolRevision.
-MinProtocolRevision = 828
-MaxProtocolRevision = 828
+MinProtocolRevision = 831
+MaxProtocolRevision = 831

+ 3 - 3
L2_GameServer_T1/java/net/sf/l2j/gameserver/Olympiad.java

@@ -128,7 +128,7 @@ public class Olympiad
 						playerTwoStat.set(POINTS, playerTwoPoints + transferPoints);
 						_log.info("Olympia Result: "+_game._playerOneName+" vs "+_game._playerTwoName+" ... "+_game._playerTwoName+" Win "+transferPoints+" points");
 					
-						_sm = new SystemMessage(SystemMessageId.S1_HAS_WON_THE_GAME);
+						_sm = new SystemMessage(SystemMessageId.C1_HAS_WON_THE_GAME);
 						_sm2 = new SystemMessage(SystemMessageId.S1_HAS_GAINED_S2_OLYMPIAD_POINTS);
 						_sm.addString(_game._playerTwoName);
 						broadcastMessage(_sm, true);
@@ -148,7 +148,7 @@ public class Olympiad
 	    				playerOneStat.set(POINTS, playerOnePoints + transferPoints);
 	    				_log.info("Olympia Result: "+_game._playerTwoName+" vs "+_game._playerOneName+" ... "+_game._playerOneName+" Win "+transferPoints+" points");
 					
-	    				_sm = new SystemMessage(SystemMessageId.S1_HAS_WON_THE_GAME);
+	    				_sm = new SystemMessage(SystemMessageId.C1_HAS_WON_THE_GAME);
 	    				_sm2 = new SystemMessage(SystemMessageId.S1_HAS_GAINED_S2_OLYMPIAD_POINTS);
 	    				_sm.addString(_game._playerOneName);
 	    				broadcastMessage(_sm, true);
@@ -2190,7 +2190,7 @@ public class Olympiad
 				playerTwoHp = 0;
 			}
 
-            _sm = new SystemMessage(SystemMessageId.S1_HAS_WON_THE_GAME);
+            _sm = new SystemMessage(SystemMessageId.C1_HAS_WON_THE_GAME);
     		_sm2 = new SystemMessage(SystemMessageId.S1_HAS_GAINED_S2_OLYMPIAD_POINTS);
             _sm3 = new SystemMessage(SystemMessageId.S1_HAS_LOST_S2_OLYMPIAD_POINTS);
             

+ 1 - 1
L2_GameServer_T1/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java

@@ -500,7 +500,7 @@ public class EnterWorld extends L2GameClientPacket
 
             if (apprentice != null)
             {
-                SystemMessage msg = new SystemMessage(SystemMessageId.YOUR_SPONSOR_S1_HAS_LOGGED_IN);
+                SystemMessage msg = new SystemMessage(SystemMessageId.YOUR_SPONSOR_C1_HAS_LOGGED_IN);
                 msg.addString(activeChar.getName());
                 apprentice.sendPacket(msg);
             }

+ 7 - 2
L2_GameServer_T1/java/net/sf/l2j/gameserver/model/L2Character.java

@@ -1452,7 +1452,6 @@ public abstract class L2Character extends L2Object
 					skill.getSkillType() == SkillType.COMBATPOINTHEAL ||
 					skill.getSkillType() == SkillType.MANAHEAL ||
 					skill.getSkillType() == SkillType.REFLECT ||
-					skill.getSkillType() == SkillType.SEED ||
 					skill.getTargetType() == L2Skill.SkillTargetType.TARGET_SELF ||
 					skill.getTargetType() == L2Skill.SkillTargetType.TARGET_PET ||
 					skill.getTargetType() == L2Skill.SkillTargetType.TARGET_PARTY ||
@@ -2665,6 +2664,12 @@ public abstract class L2Character extends L2Object
 				if (_effects.get(i) == effect)
 				{
 					_effects.remove(i);
+					if (this instanceof L2PcInstance)
+					{
+						SystemMessage sm = new SystemMessage(SystemMessageId.EFFECT_S1_DISAPPEARED);
+						sm.addString(effect.getSkill().getName());
+						sendPacket(sm);
+					}
 					break;
 				}
 			}
@@ -5831,7 +5836,7 @@ public abstract class L2Character extends L2Object
 			  {
 				L2Character target = (L2Character) targets[i];
 
-				if (skill.getSkillType() == L2Skill.SkillType.BUFF || skill.getSkillType() == L2Skill.SkillType.SEED)
+				if (skill.getSkillType() == L2Skill.SkillType.BUFF)
 				{
 					SystemMessage smsg = new SystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
 					smsg.addString(skill.getName());

+ 1 - 1
L2_GameServer_T1/java/net/sf/l2j/gameserver/model/L2Clan.java

@@ -2154,7 +2154,7 @@ public class L2Clan
                 break;
             case 8:
             	// Upgrade to 9
-                if(getReputationScore() >= 40000 && player.getInventory().getItemByItemId(9910) != null && getMembersCount() >= 140)
+                if(getReputationScore() >= 40000 && player.getInventory().getItemByItemId(9910) != null && getMembersCount() >= 120)
                 {
                 	// itemId 9910 == Blood Oath
                 	if (player.destroyItemByItemId("ClanLvl", 9910, 150, player.getTarget(), false))

+ 1 - 3
L2_GameServer_T1/java/net/sf/l2j/gameserver/model/L2Skill.java

@@ -54,7 +54,6 @@ import net.sf.l2j.gameserver.skills.l2skills.L2SkillCreateItem;
 import net.sf.l2j.gameserver.skills.l2skills.L2SkillDecoy;
 import net.sf.l2j.gameserver.skills.l2skills.L2SkillDefault;
 import net.sf.l2j.gameserver.skills.l2skills.L2SkillDrain;
-import net.sf.l2j.gameserver.skills.l2skills.L2SkillSeed;
 import net.sf.l2j.gameserver.skills.l2skills.L2SkillSignet;
 import net.sf.l2j.gameserver.skills.l2skills.L2SkillSignetCasttime;
 import net.sf.l2j.gameserver.skills.l2skills.L2SkillSummon;
@@ -241,7 +240,6 @@ public abstract class L2Skill
     	UNBLEED,
     	UNPOISON,
     	UNDEAD_DEFENSE,
-    	SEED (L2SkillSeed.class),
     	BEAST_FEED,
     	FORCE_BUFF,
         CHARGESOUL,
@@ -1393,7 +1391,7 @@ public abstract class L2Skill
                     case BUFF: case HEAL: case HOT: case HEAL_PERCENT:
                     case MANARECHARGE: case MANAHEAL: case NEGATE:
                     case CANCEL: case REFLECT: case UNBLEED: case UNPOISON:
-                    case SEED: case COMBATPOINTHEAL: case MAGE_BANE: case WARRIOR_BANE:
+                    case COMBATPOINTHEAL: case MAGE_BANE: case WARRIOR_BANE:
                     case BETRAY: case BALANCE_LIFE: case FORCE_BUFF:
                         canTargetSelf = true;
                         break;

+ 8 - 0
L2_GameServer_T1/java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java

@@ -2323,10 +2323,18 @@ public class L2NpcInstance extends L2Character
     public void setLHandId(int newWeaponId)
     {
         _currentLHandId = newWeaponId;
+        broadcastPacket(new NpcInfo(this, null));
     }
     public void setRHandId(int newWeaponId)
     {
         _currentRHandId = newWeaponId;
+        broadcastPacket(new NpcInfo(this, null));
+    }
+    public void setLRHandId(int newLWeaponId,int newRWeaponId)
+    {
+        _currentRHandId = newRWeaponId;
+        _currentLHandId = newLWeaponId;
+        broadcastPacket(new NpcInfo(this, null));
     }
     public void setCollisionHeight(int height)
     {

+ 8 - 3
L2_GameServer_T1/java/net/sf/l2j/gameserver/model/base/Experience.java

@@ -102,15 +102,20 @@ public class Experience
         1151275834L,
         1511275834L,
         2099275834L,
-        4200000000L, //level 80
-        6299994999L
+        2807315058L, //level 80
+        3635393506L,
+        4583511178L,
+        5651668074L,
+        6839864194L,
+        8148099538L, //level 85
+        9576374106L
     };
 
 	/**
 	 * This is the first UNREACHABLE level.<BR>
 	 *   ex: If you want a max at 80 & 99.99%, you have to put 81.<BR><BR>
 	 */
-	public final static byte MAX_LEVEL = 81;
+	public final static byte MAX_LEVEL = 86;
 
 	public final static byte MIN_NEWBIE_LEVEL = 6;
 	public final static byte MAX_NEWBIE_LEVEL = 39;

+ 5 - 5
L2_GameServer_T1/java/net/sf/l2j/gameserver/model/base/SubClass.java

@@ -88,8 +88,8 @@ public final class SubClass
 
     public void setExp(long expValue)
     {
-		if (expValue > Experience.LEVEL[Experience.MAX_LEVEL])
-			expValue = Experience.LEVEL[Experience.MAX_LEVEL];
+		if (expValue > Experience.LEVEL[80])
+			expValue = Experience.LEVEL[80];
 
         _exp = expValue;
     }
@@ -106,8 +106,8 @@ public final class SubClass
 
     public void setLevel(byte levelValue)
     {
-        if (levelValue > (Experience.MAX_LEVEL - 1))
-            levelValue = (Experience.MAX_LEVEL - 1);
+        if (levelValue > 80)
+            levelValue = 80;
         else if (levelValue < 40)
             levelValue = 40;
 
@@ -116,7 +116,7 @@ public final class SubClass
 
     public void incLevel()
     {
-        if (getLevel() == (Experience.MAX_LEVEL - 1))
+        if (getLevel() == 80)
             return;
 
         _level++;

+ 0 - 38
L2_GameServer_T1/java/net/sf/l2j/gameserver/model/entity/Siege.java

@@ -39,7 +39,6 @@ import net.sf.l2j.gameserver.model.L2SiegeClan;
 import net.sf.l2j.gameserver.model.L2Spawn;
 import net.sf.l2j.gameserver.model.L2World;
 import net.sf.l2j.gameserver.model.L2SiegeClan.SiegeClanType;
-import net.sf.l2j.gameserver.model.actor.instance.L2ArtefactInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2ControlTowerInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
@@ -239,7 +238,6 @@ public class Siege
     private int _defenderRespawnDelayPenalty;
 
     // Castle setting
-    private List<L2ArtefactInstance> _artifacts = new FastList<L2ArtefactInstance>();
     private List<L2ControlTowerInstance> _controlTowers = new FastList<L2ControlTowerInstance>();
     private Castle[] _castle;
     private boolean _isInProgress = false;
@@ -282,7 +280,6 @@ public class Siege
             updatePlayerSiegeStateFlags(true);
             saveCastleSiege(); // Save castle specific data
             clearSiegeClan(); // Clear siege clan from db
-            removeArtifact(); // Remove artifact from this castle
             removeControlTower(); // Remove all control tower from this castle
             _siegeGuardManager.unspawnSiegeGuard(); // Remove all spawned siege guard from this castle
             if (getCastle().getOwnerId() > 0) _siegeGuardManager.removeMercs();
@@ -427,7 +424,6 @@ public class Siege
             updatePlayerSiegeStateFlags(false);
             teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionTable.TeleportWhereType.Town); // Teleport to the closest town
 			//teleportPlayer(Siege.TeleportWhoType.Spectator, MapRegionTable.TeleportWhereType.Town);      // Teleport to the second closest town
-            spawnArtifact(getCastle().getCastleId()); // Spawn artifact
             spawnControlTower(getCastle().getCastleId()); // Spawn control tower
             getCastle().spawnDoor(); // Spawn door
             spawnSiegeGuard(); // Spawn siege guard
@@ -1037,20 +1033,6 @@ public class Siege
         }
     }
 
-    /** Remove artifacts spawned. */
-    private void removeArtifact()
-    {
-        if (_artifacts != null)
-        {
-            // Remove all instance of artifact for this castle
-            for (L2ArtefactInstance art : _artifacts)
-            {
-                if (art != null) art.decayMe();
-            }
-            _artifacts = null;
-        }
-    }
-
     /** Remove all control tower spawned. */
     private void removeControlTower()
     {
@@ -1219,26 +1201,6 @@ public class Siege
         _isRegistrationOver = false; // Allow registration for next siege
     }
 
-    /** Spawn artifact. */
-    private void spawnArtifact(int Id)
-    {
-        //Set artefact array size if one does not exist
-        if (_artifacts == null)
-            _artifacts = new FastList<L2ArtefactInstance>();
-
-        for (SiegeSpawn _sp: SiegeManager.getInstance().getArtefactSpawnList(Id))
-        {
-        	L2ArtefactInstance art;
-
-        	art = new L2ArtefactInstance(IdFactory.getInstance().getNextId(), NpcTable.getInstance().getTemplate(_sp.getNpcId()));
-        	art.setCurrentHpMp(art.getMaxHp(), art.getMaxMp());
-        	art.setHeading(_sp.getLocation().getHeading());
-        	art.spawnMe(_sp.getLocation().getX(),_sp.getLocation().getY(),_sp.getLocation().getZ() + 50);
-
-        	_artifacts.add(art);
-        }
-    }
-
     /** Spawn control tower. */
     private void spawnControlTower(int Id)
     {

+ 97 - 48
L2_GameServer_T1/java/net/sf/l2j/gameserver/network/SystemMessageId.java

@@ -295,18 +295,36 @@ public enum SystemMessageId
      * Message: The enchantment has failed! Your +$s1 $s2 has been crystallized.
      */
     ENCHANTMENT_FAILED_S1_S2_EVAPORATED(65),
+    
+    /**
+     * ID: 66<br>
+     * Message: $s1 has invited you to his/her party. Do you accept the invitation?
+     */
+    S1_INVITED_YOU_TO_PARTY(66),
 
     /**
      * ID: 67<br>
-     * Message: $s1 has invited you to the join the clan, $s2. Do you wish to join?
+     * Message: "$s1 has invited you to the join the clan, $s2. Do you wish to join?"
      */
     S1_HAS_INVITED_YOU_TO_JOIN_THE_CLAN_S2(67),
-
+    
     /**
-     * ID: 66<br>
-     * Message: $s1 has invited you to his/her party. Do you accept the invitation?
+     * ID: 68<br>
+     * Message: "Would you like to withdraw from the $s1 clan? If you leave, you will have to wait at least a day before joining another clan."
      */
-    S1_INVITED_YOU_TO_PARTY(66),
+    WOULD_YOU_LIKE_TO_WITHDRAW_FROM_THE_S1_CLAN(68),
+    
+    /**
+     * ID: 69<br>
+     * Message: "Would you like to dismiss $s1 from the clan? If you do so, you will have to wait at least a day before accepting a new member."
+     */
+    WOULD_YOU_LIKE_TO_DISMISS_S1_FROM_THE_CLAN(69),
+    
+    /**
+     * ID: 70<br>
+     * Message: "Do you wish to disperse the clan, $s1?"
+     */
+    DO_YOU_WISH_TO_DISPERSE_THE_CLAN_S1(70),
 
     /**
      * ID: 79<br>
@@ -523,6 +541,12 @@ public enum SystemMessageId
      * Message: Your skill was removed due to a lack of MP.
      */
     SKILL_REMOVED_DUE_LACK_MP(140),
+    
+    /**
+     * ID: 141<br>
+     * Message: "Once the trade is confirmed, the item cannot be moved again."
+     */
+    ONCE_THE_TRADE_IS_CONFIRMED_THE_ITEM_CANNOT_BE_MOVED_AGAIN(141),
 
     /**
      * ID: 142<br>
@@ -655,6 +679,12 @@ public enum SystemMessageId
      * Message: $s1 has requested to become friends.
      */
     S1_REQUESTED_TO_BECOME_FRIENDS(168),
+    
+    /**
+     * ID: 169<br>
+     * Message: "Accept friendship 0/1 (1 to accept, 0 to deny)"
+     */
+    ACCEPT_THE_FRIENDSHIP(169),
 
     /**
      * ID: 170<br>
@@ -751,6 +781,12 @@ public enum SystemMessageId
      * Message: The party has dispersed.
      */
     PARTY_DISPERSED(203),
+    
+    /**
+     * ID: 211<br>
+     * Message: "You may only register a 16 x 12 pixel, 256-color BMP."
+     */
+    YOU_MAY_ONLY_REGISTER_A_16_BY_12_PIXEL_256_COLOR_BMP(211),
 
     /**
      * ID: 212<br>
@@ -832,15 +868,13 @@ public enum SystemMessageId
 
     /**
      * ID: 231<br>
-     * Message: After a clan member is dismissed from a clan, the clan
-     * must wait at least a day before accepting a new member.
+     * Message: "After a clan member is dismissed from a clan, the clan must wait at least a day before accepting a new member."
      */
     YOU_MUST_WAIT_BEFORE_ACCEPTING_A_NEW_MEMBER(231),
 
     /**
      * ID: 232<br>
-     * Message: After leaving or having been dismissed from a clan,
-     * you must wait at least a day before joining another clan.
+     * Message: "After leaving or having been dismissed from a clan, you must wait at least a day before joining another clan."
      */
     YOU_MUST_WAIT_BEFORE_JOINING_ANOTHER_CLAN(232),
 
@@ -982,6 +1016,12 @@ public enum SystemMessageId
      * Message: You have left a combat zone.
      */
     LEFT_COMBAT_ZONE(284),
+    
+    /**
+     * ID: 294<br>
+     * Message: "Because your clan is not currently on the offensive in a Clan Hall siege war, it cannot summon its base camp."
+     */
+    BECAUSE_YOUR_CLAN_IS_NOT_CURRENTLY_ON_THE_OFFENSIVE_IN_A_CLAN_HALL_SIEGE_WAR_IT_CANNOT_SUMMON_ITS_BASE_CAMP(294),
 
     /**
      * ID: 295<br>
@@ -1105,7 +1145,7 @@ public enum SystemMessageId
 
     /**
      * ID: 343<br>
-     * Message: Sweeper failed, target not spoiled.
+     * Message: "Sweeper failed, target not spoiled."
      */
     SWEEPER_FAILED_TARGET_NOT_SPOILED(343),
 
@@ -1624,7 +1664,7 @@ public enum SystemMessageId
 
     /**
      * ID: 527<br>
-     * Message: $s1 leader, $s2, has requested an alliance.
+     * Message: "$s1 leader, $s2, has requested an alliance."
      */
     S2_ALLIANCE_LEADER_OF_S1_REQUESTED_ALLIANCE(527),
 
@@ -1633,6 +1673,12 @@ public enum SystemMessageId
      * Message: Unable to find file at target location.
      */
     FILE_NOT_FOUND(528),
+    
+    /**
+     * ID: 529<br>
+     * Message: "You may only register an 8 x 12 pixel, 256-color BMP."
+     */
+    YOU_MAY_ONLY_REGISTER_AN_8_BY_12_PIXEL_256_COLOR_BMP(529),
 
     /**
      * ID: 530<br>
@@ -1714,7 +1760,7 @@ public enum SystemMessageId
 
     /**
      * ID: 549<br>
-     * Message: To create an alliance, your clan must be Level 5 or higher.
+     * Message: "To create an alliance, your clan must be Level 5 or higher."
      */
     TO_CREATE_AN_ALLY_YOU_CLAN_MUST_BE_LEVEL_5_OR_HIGHER(549),
 
@@ -1732,8 +1778,7 @@ public enum SystemMessageId
 
     /**
      * ID: 552<br>
-     * Message: During the grace period for dissolving a clan, the registration or
-     * deletion of a clan's crest is not allowed.
+     * Message: "During the grace period for dissolving a clan, the registration or deletion of a clan's crest is not allowed."
      */
     CANNOT_SET_CREST_WHILE_DISSOLUTION_IN_PROGRESS(552),
 
@@ -2535,103 +2580,103 @@ public enum SystemMessageId
 
     /**
      * ID: 910<br>
-     * Message: Current location : $s1, $s2, $s3 (Near Talking Island Village)
+     * Message: "Current location : $s1, $s2, $s3 (Near Talking Island Village)"
      */
     LOC_TI_S1_S2_S3(910),
 
     /**
      * ID: 911<br>
-     * Message: Current location : $s1, $s2, $s3 (Near Gludin Village)
+     * Message: "Current location : $s1, $s2, $s3 (Near Gludin Village)"
      */
     LOC_GLUDIN_S1_S2_S3(911),
 
     /**
      * ID: 912<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Town of Gludio)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Town of Gludio)"
      */
     LOC_GLUDIO_S1_S2_S3(912),
 
     /**
      * ID: 913<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Neutral Zone)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Neutral Zone)"
      */
     LOC_NETRAL_ZONE_S1_S2_S3(913),
 
     /**
      * ID: 914<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Elven Village)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Elven Village)"
      */
     LOC_ELVEN_S1_S2_S3(914),
 
     /**
      * ID: 915<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Dark Elf Village)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Dark Elf Village)"
      */
     LOC_DARK_ELVEN_S1_S2_S3(915),
 
     /**
      * ID: 916<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Town of Dion)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Town of Dion)"
      */
     LOC_DION_S1_S2_S3(916),
 
     /**
      * ID: 917<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Floran Village)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Floran Village)"
      */
     LOC_FLORAN_S1_S2_S3(917),
 
     /**
      * ID: 918<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Town of Giran)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Town of Giran)"
      */
     LOC_GIRAN_S1_S2_S3(918),
 
     /**
      * ID: 919<br>
-     * Message: Current location : $s1, $s2, $s3 (Near Giran Harbor)
+     * Message: "Current location : $s1, $s2, $s3 (Near Giran Harbor)"
      */
     LOC_GIRAN_HARBOR_S1_S2_S3(919),
 
     /**
      * ID: 920<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Orc Village)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Orc Village)"
      */
     LOC_ORC_S1_S2_S3(920),
 
     /**
      * ID: 921<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Dwarven Village)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Dwarven Village)"
      */
     LOC_DWARVEN_S1_S2_S3(921),
 
     /**
      * ID: 922<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Town of Oren)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Town of Oren)"
      */
     LOC_OREN_S1_S2_S3(922),
 
     /**
      * ID: 923<br>
-     * Message: Current location : $s1, $s2, $s3 (Near Hunters Village)
+     * Message: "Current location : $s1, $s2, $s3 (Near Hunters Village)"
      */
     LOC_HUNTER_S1_S2_S3(923),
 
     /**
      * ID: 924<br>
-     * Message: Current location : $s1, $s2, $s3 (Near Aden Castle Town)
+     * Message: "Current location : $s1, $s2, $s3 (Near Aden Castle Town)"
      */
     LOC_ADEN_S1_S2_S3(924),
 
     /**
      * ID: 925<br>
-     * Message: Current location : $s1, $s2, $s3 (Near the Coliseum)
+     * Message: "Current location : $s1, $s2, $s3 (Near the Coliseum)"
      */
     LOC_COLISEUM_S1_S2_S3(925),
 
     /**
      * ID: 926<br>
-     * Message: Current location : $s1, $s2, $s3 (Near Heine)
+     * Message: "Current location : $s1, $s2, $s3 (Near Heine)"
      */
     LOC_HEINE_S1_S2_S3(926),
 
@@ -3651,15 +3696,15 @@ public enum SystemMessageId
 
     /**
      * ID: 1496<br>
-     * Message: The match has started, fight!
+     * Message: "The match has started, fight!"
      */
     STARTS_THE_GAME(1496),
 
     /**
      * ID: 1497<br>
-     * Message: Congratulations $s1, you win the match!
+     * Message: Congratulations $C1, you win the match!
      */
-    S1_HAS_WON_THE_GAME(1497),
+    C1_HAS_WON_THE_GAME(1497),
 
     /**
      * ID: 1498<br>
@@ -3742,7 +3787,7 @@ public enum SystemMessageId
 
     /**
      * ID: 1511<br>
-     * Message: While a pet is attempting to resurrect, it cannot help in resurrecting its master.
+     * Message: :While a pet is attempting to resurrect, it cannot help in resurrecting its master."
      */
     MASTER_CANNOT_RES(1511),
 
@@ -3796,13 +3841,13 @@ public enum SystemMessageId
 
     /**
      * ID: 1537<br>
-     * Message: Current Location: $s1, $s2, $s3 (near Rune Village)
+     * Message: "Current Location: $s1, $s2, $s3 (near Rune Village)"
      */
     LOC_RUNE_S1_S2_S3(1537),
 
     /**
      * ID: 1538<br>
-     * Message: Current Location: $s1, $s2, $s3 (near the Town of Goddard)
+     * Message: "Current Location: $s1, $s2, $s3 (near the Town of Goddard)"
      */
     LOC_GODDARD_S1_S2_S3(1538),
 
@@ -3919,7 +3964,7 @@ public enum SystemMessageId
 
     /**
      * ID: 1605<br>
-     * Message: * Here, you can buy only seeds of $s1 Manor.
+     * Message: "* Here, you can buy only seeds of $s1 Manor."
      */
     HERE_YOU_CAN_BUY_ONLY_SEEDS_OF_S1_MANOR(1605),
 
@@ -3979,6 +4024,12 @@ public enum SystemMessageId
      * Battles in the Grand Olympiad Games are now over!
      */
     THE_OLYMPIAD_GAME_HAS_ENDED(1642),
+    
+    /**
+     * ID: 1643
+     * Message: "Current Location: $s1, $s2, $s3 (Dimensional Gap)"
+     */
+    CURRENT_LOCATION_S1_S2_S3_DIMENSIONAL_GAP(1643),
 
 	/**
      * ID: 1651<br>
@@ -3988,7 +4039,7 @@ public enum SystemMessageId
 
     /**
      * ID: 1655<br>
-     * Message: You caught something smelly and scary, maybe you should throw it back!?
+     * Message: "You caught something smelly and scary, maybe you should throw it back!?"
      */
     YOU_CAUGHT_SOMETHING_SMELLY_THROW_IT_BACK(1655),
 
@@ -4131,7 +4182,7 @@ public enum SystemMessageId
 
     /**
      * ID: 1714<br>
-     * Message: Current Location: $s1, $s2, $s3 (Near the Town of Schuttgart)
+     * Message: "Current Location: $s1, $s2, $s3 (Near the Town of Schuttgart)"
      */
     LOC_SCHUTTGART_S1_S2_S3(1714),
 
@@ -4175,9 +4226,7 @@ public enum SystemMessageId
 
     /**
      * ID: 1749<br>
-     * Message: Congratulations! You will now graduate from the Clan Academy and leave
-     * your current clan. As a graduate of the academy, you can immediately
-     * join a clan as a regular member without being subject to any penalties
+     * Message: Congratulations! You will now graduate from the Clan Academy and leave your current clan. As a graduate of the academy, you can immediately join a clan as a regular member without being subject to any penalties."
      */
     ACADEMY_MEMBERSHIP_TERMINATED(1749),
 
@@ -4195,21 +4244,21 @@ public enum SystemMessageId
 
     /**
      * ID: 1757<br>
-     * Message: Your apprentice, $s1, has logged out.
+     * Message: Your apprentice, $C1, has logged out.
      */
-    YOUR_APPRENTICE_S1_HAS_LOGGED_OUT(1757),
+    YOUR_APPRENTICE_C1_HAS_LOGGED_OUT(1757),
 
     /**
      * ID: 1758<br>
      * Message: Your sponsor, $s1, has logged in.
      */
-    YOUR_SPONSOR_S1_HAS_LOGGED_IN(1758),
+    YOUR_SPONSOR_C1_HAS_LOGGED_IN(1758),
 
     /**
      * ID: 1759<br>
      * Message: Your sponsor, $s1, has logged out.
      */
-    YOUR_SPONSOR_S1_HAS_LOGGED_OUT(1759),
+    YOUR_SPONSOR_C1_HAS_LOGGED_OUT(1759),
 
     /**
      * ID: 1762<br>
@@ -5161,7 +5210,7 @@ public enum SystemMessageId
 
     /**
      * ID: 2259<br>
-     * Message: Current Location: $s1, $s2, $s3 (near Fantasy Island)
+     * Message: Current Location: $s1, $s2, $s3 (near Fantasy Isle)
      */
 	LOC_FANTASY_ISLAND_S1_S2_S3(2259);
 

+ 6 - 1
L2_GameServer_T1/java/net/sf/l2j/gameserver/serverpackets/KeyPacket.java

@@ -35,9 +35,14 @@ public final class KeyPacket extends L2GameServerPacket
 	{
 		writeC(0x2e);
 		writeC(0x01);
-		writeB(_key);
+		for (int i = 0; i < 8; i++)
+		{
+			writeC(_key[i]);
+		}
 		writeD(0x01);
 		writeD(0x01);
+		writeC(0x00);
+		writeD(0x00);
 	}
 
 	/* (non-Javadoc)

+ 0 - 32
L2_GameServer_T1/java/net/sf/l2j/gameserver/skills/DocumentBase.java

@@ -34,7 +34,6 @@ import net.sf.l2j.gameserver.model.L2Skill;
 import net.sf.l2j.gameserver.model.base.Race;
 import net.sf.l2j.gameserver.skills.conditions.Condition;
 import net.sf.l2j.gameserver.skills.conditions.ConditionChangeWeapon;
-import net.sf.l2j.gameserver.skills.conditions.ConditionElementSeed;
 import net.sf.l2j.gameserver.skills.conditions.ConditionForceBuff;
 import net.sf.l2j.gameserver.skills.conditions.ConditionGameChance;
 import net.sf.l2j.gameserver.skills.conditions.ConditionGameTime;
@@ -359,7 +358,6 @@ abstract class DocumentBase
     protected Condition parsePlayerCondition(Node n)
     {
         Condition cond = null;
-        int[] ElementSeeds = new int[5];
         byte[] forces = new byte[2];
         NamedNodeMap attrs = n.getAttributes();
         for (int i = 0; i < attrs.getLength(); i++)
@@ -420,26 +418,6 @@ abstract class DocumentBase
                 int hp = Integer.decode(getValue(a.getNodeValue(), null));
                 cond = joinAnd(cond, new ConditionPlayerMp(hp));
             }
-            else if ("seed_fire".equalsIgnoreCase(a.getNodeName()))
-            {
-                ElementSeeds[0] = Integer.decode(getValue(a.getNodeValue(), null));
-            }
-            else if ("seed_water".equalsIgnoreCase(a.getNodeName()))
-            {
-                ElementSeeds[1] = Integer.decode(getValue(a.getNodeValue(), null));
-            }
-            else if ("seed_wind".equalsIgnoreCase(a.getNodeName()))
-            {
-                ElementSeeds[2] = Integer.decode(getValue(a.getNodeValue(), null));
-            }
-            else if ("seed_various".equalsIgnoreCase(a.getNodeName()))
-            {
-                ElementSeeds[3] = Integer.decode(getValue(a.getNodeValue(), null));
-            }
-            else if ("seed_any".equalsIgnoreCase(a.getNodeName()))
-            {
-                ElementSeeds[4] = Integer.decode(getValue(a.getNodeValue(), null));
-            }
             else if ("battle_force".equalsIgnoreCase(a.getNodeName()))
             {
                 forces[0] = Byte.decode(getValue(a.getNodeValue(), null));
@@ -450,16 +428,6 @@ abstract class DocumentBase
             }
         }
 
-        // Elemental seed condition processing
-        for (int i = 0; i < ElementSeeds.length; i++)
-        {
-            if (ElementSeeds[i] > 0)
-            {
-                cond = joinAnd(cond, new ConditionElementSeed(ElementSeeds));
-                break;
-            }
-        }
-
         if(forces[0] + forces[1] > 0)
         {
             cond = joinAnd(cond, new ConditionForceBuff(forces));

+ 0 - 85
L2_GameServer_T1/java/net/sf/l2j/gameserver/skills/conditions/ConditionElementSeed.java

@@ -1,85 +0,0 @@
-/*
- * 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 3 of the License, or (at your option) any later
- * version.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- * 
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package net.sf.l2j.gameserver.skills.conditions;
-
-import net.sf.l2j.gameserver.skills.Env;
-import net.sf.l2j.gameserver.skills.effects.EffectSeed;
-
-
-/**
- * @author Advi
- *
- */
-public class ConditionElementSeed extends Condition
-{
-    private static int[] seedSkills = {1285, 1286, 1287};
-    private final int[] _requiredSeeds;
-
-    public ConditionElementSeed(int[] seeds)
-    {
-        _requiredSeeds = seeds;
-//        if (Config.DEVELOPER) _log.info("Required seeds: " + _requiredSeeds[0] + ", " + _requiredSeeds[1] + ", " + _requiredSeeds[2]+ ", " + _requiredSeeds[3]+ ", " + _requiredSeeds[4]);
-    }
-
-    ConditionElementSeed(int fire, int water, int wind, int various, int any)
-    {
-        _requiredSeeds = new int[5];
-        _requiredSeeds[0] = fire;
-        _requiredSeeds[1] = water;
-        _requiredSeeds[2] = wind;
-        _requiredSeeds[3] = various;
-        _requiredSeeds[4] = any;
-    }
-
-    @Override
-	public boolean testImpl(Env env)
-    {
-        int[] Seeds = new int[3];
-        for (int i = 0; i < Seeds.length; i++)
-        {
-            Seeds[i] = (env.player.getFirstEffect(seedSkills[i]) instanceof EffectSeed ? ((EffectSeed)env.player.getFirstEffect(seedSkills[i])).getPower() : 0);
-            if (Seeds[i] >= _requiredSeeds[i])
-                Seeds[i] -= _requiredSeeds[i];
-            else return false;
-        }
-
-//        if (Config.DEVELOPER) _log.info("Seeds: " + Seeds[0] + ", " + Seeds[1] + ", " + Seeds[2]);
-        if (_requiredSeeds[3] > 0)
-        {
-            int count = 0;
-            for (int i = 0; i < Seeds.length && count < _requiredSeeds[3]; i++)
-            {
-                if (Seeds[i] > 0)
-                {
-                    Seeds[i]--;
-                    count++;
-                }
-            }
-            if (count < _requiredSeeds[3]) return false;
-        }
-
-        if (_requiredSeeds[4] > 0)
-        {
-            int count = 0;
-            for (int i = 0; i < Seeds.length && count < _requiredSeeds[4]; i++)
-            {
-                count += Seeds[i];
-            }
-            if (count < _requiredSeeds[4]) return false;
-        }
-
-        return true;
-    }
-}

+ 0 - 52
L2_GameServer_T1/java/net/sf/l2j/gameserver/skills/effects/EffectSeed.java

@@ -1,52 +0,0 @@
-/*
- * 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 3 of the License, or (at your option) any later
- * version.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- * 
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package net.sf.l2j.gameserver.skills.effects;
-
-import net.sf.l2j.gameserver.model.L2Effect;
-import net.sf.l2j.gameserver.skills.Env;
-
-public final class EffectSeed extends L2Effect {
-
-	private int _power = 1;
-
-    public EffectSeed(Env env, EffectTemplate template)
-	{
-		super(env, template);
-	}
-
-	@Override
-	public EffectType getEffectType()
-	{
-		return EffectType.SEED;
-	}
-
-	@Override
-	public boolean onActionTime()
-    {
-    	// just stop this effect
-    	return false;
-    }
-
-    public int getPower()
-    {
-        return _power;
-    }
-
-    public void increasePower()
-    {
-        _power++;
-    }
-}
-

+ 0 - 62
L2_GameServer_T1/java/net/sf/l2j/gameserver/skills/l2skills/L2SkillSeed.java

@@ -1,62 +0,0 @@
-/*
- * 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 3 of the License, or (at your option) any later
- * version.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- * 
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package net.sf.l2j.gameserver.skills.l2skills;
-
-import net.sf.l2j.gameserver.model.L2Character;
-import net.sf.l2j.gameserver.model.L2Effect;
-import net.sf.l2j.gameserver.model.L2Object;
-import net.sf.l2j.gameserver.model.L2Skill;
-import net.sf.l2j.gameserver.skills.effects.EffectSeed;
-import net.sf.l2j.gameserver.templates.StatsSet;
-
-public class L2SkillSeed extends L2Skill {
-
-	public L2SkillSeed(StatsSet set) {
-		super(set);
-	}
-
-	@Override
-	public void useSkill(L2Character caster, L2Object[] targets) {
-		if (caster.isAlikeDead())
-			return;
-
-		// Update Seeds Effects
-		for (int i=0;i<targets.length; i++){
-			L2Character target = (L2Character)targets[i];
-			if (target.isAlikeDead() && getTargetType() != SkillTargetType.TARGET_CORPSE_MOB)
-				continue;
-
-            EffectSeed oldEffect = (EffectSeed) target.getFirstEffect(getId());
-            if (oldEffect == null)
-                getEffects(caster, target);
-            else oldEffect.increasePower();
-
-            L2Effect[] effects = target.getAllEffects();
-            for (int j = 0; j < effects.length; j++)
-                if (effects[j].getEffectType() == L2Effect.EffectType.SEED)
-                    effects[j].rescheduleEffect();
-/*
-			for (int j=0;j<effects.length;j++){
-				if (effects[j].getEffectType()==L2Effect.EffectType.SEED){
-					EffectSeed e = (EffectSeed)effects[j];
-					if (e.getInUse() || e.getSkill().getId()==this.getId()){
-						e.rescheduleEffect();
-					}
-				}
-			}
-*/
-		}
-	}
-}