فهرست منبع

'''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 سال پیش
والد
کامیت
9f4a1f648c
19فایلهای تغییر یافته به همراه143 افزوده شده و 342 حذف شده
  1. 1 1
      L2_GameServer_T1/.project
  2. 1 1
      L2_GameServer_T1/build.xml
  3. 2 2
      L2_GameServer_T1/java/config/Character.properties
  4. 2 2
      L2_GameServer_T1/java/config/server.properties
  5. 3 3
      L2_GameServer_T1/java/net/sf/l2j/gameserver/Olympiad.java
  6. 1 1
      L2_GameServer_T1/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java
  7. 7 2
      L2_GameServer_T1/java/net/sf/l2j/gameserver/model/L2Character.java
  8. 1 1
      L2_GameServer_T1/java/net/sf/l2j/gameserver/model/L2Clan.java
  9. 1 3
      L2_GameServer_T1/java/net/sf/l2j/gameserver/model/L2Skill.java
  10. 8 0
      L2_GameServer_T1/java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java
  11. 8 3
      L2_GameServer_T1/java/net/sf/l2j/gameserver/model/base/Experience.java
  12. 5 5
      L2_GameServer_T1/java/net/sf/l2j/gameserver/model/base/SubClass.java
  13. 0 38
      L2_GameServer_T1/java/net/sf/l2j/gameserver/model/entity/Siege.java
  14. 97 48
      L2_GameServer_T1/java/net/sf/l2j/gameserver/network/SystemMessageId.java
  15. 6 1
      L2_GameServer_T1/java/net/sf/l2j/gameserver/serverpackets/KeyPacket.java
  16. 0 32
      L2_GameServer_T1/java/net/sf/l2j/gameserver/skills/DocumentBase.java
  17. 0 85
      L2_GameServer_T1/java/net/sf/l2j/gameserver/skills/conditions/ConditionElementSeed.java
  18. 0 52
      L2_GameServer_T1/java/net/sf/l2j/gameserver/skills/effects/EffectSeed.java
  19. 0 62
      L2_GameServer_T1/java/net/sf/l2j/gameserver/skills/l2skills/L2SkillSeed.java

+ 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();
-					}
-				}
-			}
-*/
-		}
-	}
-}