Jump to content

Recommended Posts

Posted
Index: java/config/Character.properties
===================================================================
--- java/config/Character.properties	(revision 2638)
+++ java/config/Character.properties	(working copy)
@@ -287,7 +287,7 @@
CastleCircletsRestriction = True

# This controls the chance an item has to break if it is enchanted.
@@ -323,6 +323,30 @@
EnchantSafeMax = 3
EnchantSafeMaxFull = 4

+# These controls the chance to get a skill in the augmentation process
+# Retail: 15, 30, 45, 60
+AugmentationNGSkillChance = 15
+AugmentationMidSkillChance = 30
+AugmentationHighSkillChance = 45
+AugmentationTopSkillChance = 60
+
+# These controls the chance to get a Base Stat Modifier in the augmentation process
+# Note:
+#       No dependancy on LS grade
+# Retail: 1
+AugmentationBaseStatChance = 1
+
+# These controls the chance to get a glow effect in the augmentation process
+# Note:
+#       No/Mid Grade Life Stone can not have glow effect
+#       if you do not get a skill or Base Stat Modifier
+#       On Retail you can not get glow effect with NoGrade LS
+# Retail: 0, 40, 70, 100
+AugmentationNGGlowChance = 0
+AugmentationMidGlowChance = 40
+AugmentationHighGlowChance = 70
+AugmentationTopGlowChance = 100
+
#============================================================#
#                          Karma                             #
#============================================================#
Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java	(revision 2638)
+++ java/net/sf/l2j/Config.java	(working copy)
@@ -860,6 +860,33 @@
    /** maximum level of safe enchantment for full body armor*/
    public static int ENCHANT_SAFE_MAX_FULL;

+    /** Chance to get a skill while using a NoGrade Life Stone*/
+    public static int AUGMENTATION_NG_SKILL_CHANCE;
+
+    /** Chance to get a Glow effect while using a NoGrade Life Stone(only if you get a skill)*/
+    public static int AUGMENTATION_NG_GLOW_CHANCE;
+
+    /** Chance to get a skill while using a MidGrade Life Stone*/
+    public static int AUGMENTATION_MID_SKILL_CHANCE;
+
+    /** Chance to get a Glow effect while using a MidGrade Life Stone(only if you get a skill)*/
+    public static int AUGMENTATION_MID_GLOW_CHANCE;
+
+    /** Chance to get a skill while using a HighGrade Life Stone*/
+    public static int AUGMENTATION_HIGH_SKILL_CHANCE;
+
+    /** Chance to get a Glow effect while using a HighGrade Life Stone*/
+    public static int AUGMENTATION_HIGH_GLOW_CHANCE;
+
+    /** Chance to get a skill while using a TopGrade Life Stone*/
+    public static int AUGMENTATION_TOP_SKILL_CHANCE;
+
+    /** Chance to get a Glow effect while using a TopGrade Life Stone*/
+    public static int AUGMENTATION_TOP_GLOW_CHANCE;
+
+    /** Chance to get a BaseStatModifier in the augmentation process*/
+    public static int AUGMENTATION_BASESTAT_CHANCE;
+
    // Character multipliers
    /** Multiplier for character HP regeneration */
    public static double  HP_REGEN_MULTIPLIER;
@@ -1246,6 +1273,15 @@
	                ENCHANT_MAX_JEWELRY					= Integer.parseInt(Character.getProperty("EnchantMaxJewelry", "255"));
	                ENCHANT_SAFE_MAX					= Integer.parseInt(Character.getProperty("EnchantSafeMax", "3"));
	                ENCHANT_SAFE_MAX_FULL				= Integer.parseInt(Character.getProperty("EnchantSafeMaxFull", "4"));
+	                AUGMENTATION_NG_SKILL_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationNGSkillChance", "15"));
+	                AUGMENTATION_NG_GLOW_CHANCE			= Integer.parseInt(Character.getProperty("AugmentationNGGlowChance", "0"));
+	                AUGMENTATION_MID_SKILL_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationMidSkillChance", "30"));
+	                AUGMENTATION_MID_GLOW_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationMidGlowChance", "40"));
+	                AUGMENTATION_HIGH_SKILL_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationHighSkillChance", "45"));
+	                AUGMENTATION_HIGH_GLOW_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationHighGlowChance", "70"));
+	                AUGMENTATION_TOP_SKILL_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationTopSkillChance", "60"));
+	                AUGMENTATION_TOP_GLOW_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationTopGlowChance", "100"));
+	                AUGMENTATION_BASESTAT_CHANCE		= Integer.parseInt(Character.getProperty("AugmentationBaseStatChance", "1"));
	                ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE	= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanBeKilledInPeaceZone", "false"));
	                ALT_GAME_KARMA_PLAYER_CAN_SHOP		= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanShop", "true"));
	                ALT_GAME_KARMA_PLAYER_CAN_TELEPORT	= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanTeleport", "true"));
@@ -2099,6 +2135,16 @@
        else if (pName.equalsIgnoreCase("EnchantSafeMax")) ENCHANT_SAFE_MAX = Integer.parseInt(pValue);
        else if (pName.equalsIgnoreCase("EnchantSafeMaxFull")) ENCHANT_SAFE_MAX_FULL = Integer.parseInt(pValue);

+        else if (pName.equalsIgnoreCase("AugmentationNGSkillChance")) AUGMENTATION_NG_SKILL_CHANCE = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("AugmentationNGGlowChance")) AUGMENTATION_NG_GLOW_CHANCE = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("AugmentationMidSkillChance")) AUGMENTATION_MID_SKILL_CHANCE = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("AugmentationMidGlowChance")) AUGMENTATION_MID_GLOW_CHANCE = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("AugmentationHighSkillChance")) AUGMENTATION_HIGH_SKILL_CHANCE = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("AugmentationHighGlowChance")) AUGMENTATION_HIGH_GLOW_CHANCE = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("AugmentationTopSkillChance")) AUGMENTATION_TOP_SKILL_CHANCE = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("AugmentationTopGlowChance")) AUGMENTATION_TOP_GLOW_CHANCE = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("AugmentationBaseStatChance")) AUGMENTATION_BASESTAT_CHANCE = Integer.parseInt(pValue);
+
        else if (pName.equalsIgnoreCase("HpRegenMultiplier")) HP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
        else if (pName.equalsIgnoreCase("MpRegenMultiplier")) MP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
        else if (pName.equalsIgnoreCase("CpRegenMultiplier")) CP_REGEN_MULTIPLIER = Double.parseDouble(pValue);
Index: java/net/sf/l2j/gameserver/datatables/AugmentationData.java
===================================================================
--- java/net/sf/l2j/gameserver/datatables/AugmentationData.java	(revision 2638)
+++ java/net/sf/l2j/gameserver/datatables/AugmentationData.java	(working copy)
@@ -35,7 +35,8 @@
/**
 * This class manages the augmentation data and can also create new augmentations.
 *
- * @author  durgus
+ * @author  durgus 
+ * edited by xAddytzu
 */
public class AugmentationData
{
@@ -56,11 +57,6 @@
	// =========================================================
	// Data Field

-	// chances
-	//private static final int CHANCE_STAT = 88;
-	private static final int CHANCE_SKILL = 11;
-	private static final int CHANCE_BASESTAT = 1;
-	
	// stats
	private static final int STAT_START = 1;
	private static final int STAT_END = 14560;
@@ -68,6 +64,11 @@
	//private static final int STAT_NUMBEROF_BLOCKS = 4;
	private static final int STAT_SUBBLOCKSIZE = 91;
	//private static final int STAT_NUMBEROF_SUBBLOCKS = 40;
+
+	// skills
+	// private static final int BLUE_START = 14561;
+	private static final int PURPLE_START = 14578;
+	private static final int RED_START = 14685;

	// basestats
	private static final int BASESTAT_STR = 16341;
@@ -76,9 +77,10 @@
	private static final int BASESTAT_MEN = 16344;

	private FastList<?> _augmentationStats[];
-	private FastList<augmentationSkill> _activeSkills;
-	private FastList<augmentationSkill> _passiveSkills;
-	private FastList<augmentationSkill> _chanceSkills;
+	private FastList<augmentationSkill> _blueSkills;
+	private FastList<augmentationSkill> _purpleSkills;
+	private FastList<augmentationSkill> _redSkills;
+	private int _skillsCount;

	// =========================================================
	// Constructor
@@ -92,15 +94,17 @@
		_augmentationStats[2] = new FastList<augmentationStat>();
		_augmentationStats[3] = new FastList<augmentationStat>();

-		_activeSkills = new FastList<augmentationSkill>();
-		_passiveSkills = new FastList<augmentationSkill>();
-		_chanceSkills = new FastList<augmentationSkill>();
+		_blueSkills = new FastList<augmentationSkill>();
+		_purpleSkills = new FastList<augmentationSkill>();
+		_redSkills = new FastList<augmentationSkill>();

		load();

+		_skillsCount = _blueSkills.size() + _purpleSkills.size() + _redSkills.size();
+		
		// Use size*4: since theres 4 blocks of stat-data with equivalent size
		_log.info("AugmentationData: Loaded: " + (_augmentationStats[0].size() * 4) + " augmentation stats.");
-		_log.info("AugmentationData: Loaded: " + _activeSkills.size() + " active, " + _passiveSkills.size() + " passive and " + _chanceSkills.size() + " chance skills");
+		_log.info("AugmentationData: Loaded: " + _blueSkills.size() + " blue, " + _purpleSkills.size() + " purple and " + _redSkills.size() + " red skills");
	}

	// =========================================================
@@ -216,7 +220,9 @@
						{
							NamedNodeMap attrs = d.getAttributes();
							int skillId = 0, augmentationId = Integer.parseInt(attrs.getNamedItem("id").getNodeValue());
-							String type = "passive";
+							// type of the skill is not needed anymore but I do not erase the code.
+							// maybe someone can use it for something
+							// String type = "passive";

							for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
							{
@@ -225,19 +231,19 @@
									attrs = cd.getAttributes();
									skillId = Integer.parseInt(attrs.getNamedItem("val").getNodeValue());
								}
-								else if ("type".equalsIgnoreCase(cd.getNodeName()))
+								/* else if ("type".equalsIgnoreCase(cd.getNodeName()))
								{
									attrs = cd.getAttributes();
									type = attrs.getNamedItem("val").getNodeValue();
-								}
+								}*/
							}

-							if (type.equalsIgnoreCase("active"))
-								_activeSkills.add(new augmentationSkill(skillId, st.getMaxLevel(skillId, 1), augmentationId));
-							else if (type.equalsIgnoreCase("passive"))
-								_passiveSkills.add(new augmentationSkill(skillId, st.getMaxLevel(skillId, 1), augmentationId));
+							if (augmentationId < PURPLE_START)
+								_blueSkills.add(new augmentationSkill(skillId, st.getMaxLevel(skillId, 1), augmentationId));
+							else if (augmentationId < RED_START)
+								_purpleSkills.add(new augmentationSkill(skillId, st.getMaxLevel(skillId, 1), augmentationId));
							else
-								_chanceSkills.add(new augmentationSkill(skillId, st.getMaxLevel(skillId, 1), augmentationId));
+								_redSkills.add(new augmentationSkill(skillId, st.getMaxLevel(skillId, 1), augmentationId));
						}
					}
				}
@@ -325,7 +331,7 @@

	// =========================================================
	// Properties - Public
-	
+
	/**
	 * Generate a new random augmentation
	 * @param item
@@ -339,76 +345,139 @@
		// this is because a value can contain up to 2 stat modifications
		// (there are two short values packed in one integer value, meaning 4 stat modifications at max)
		// for more info take a look at getAugStatsById(...)
-		
+
		// Note: lifeStoneGrade: (0 means low grade, 3 top grade)
-		// First: decide which grade the augmentation result is going to have:
+		// First: determine whether we will add a skill/baseStatModifier or not
+		//        because this determine which color could be the result 
+		int skill_Chance = 0;
+		int stat34 = 0;
+		boolean generateSkill = false;
+		int resultColor = 0;
+		boolean generateGlow = false;
+		switch (lifeStoneGrade)
+		{
+			case 0:
+				skill_Chance = Config.AUGMENTATION_NG_SKILL_CHANCE;
+				if (Rnd.get(1,100) <= Config.AUGMENTATION_NG_GLOW_CHANCE)
+					generateGlow = true;
+				break;
+			case 1:
+				skill_Chance = Config.AUGMENTATION_MID_SKILL_CHANCE;
+				if (Rnd.get(1,100) <= Config.AUGMENTATION_MID_GLOW_CHANCE)
+					generateGlow = true;
+				break;
+			case 2:
+				skill_Chance = Config.AUGMENTATION_HIGH_SKILL_CHANCE;
+				if (Rnd.get(1,100) <= Config.AUGMENTATION_HIGH_GLOW_CHANCE)
+					generateGlow = true;
+				break;
+			case 3:
+				skill_Chance = Config.AUGMENTATION_TOP_SKILL_CHANCE;
+				if (Rnd.get(1,100) <= Config.AUGMENTATION_TOP_GLOW_CHANCE)
+					generateGlow = true;
+		}
+
+		if (Rnd.get(1, 100) <= skill_Chance)
+			generateSkill = true;
+		else if (Rnd.get(1, 100) <= Config.AUGMENTATION_BASESTAT_CHANCE)
+			stat34 = Rnd.get(BASESTAT_STR, BASESTAT_MEN);
+
+		// Second: decide which grade the augmentation result is going to have:
		// 0:yellow, 1:blue, 2:purple, 3:red
-		int resultColor = 0;
		// The chances used here are most likely custom,
-		// whats known is: u can also get a red result from a normal grade lifeStone
-		// however I will make it so that a higher grade lifeStone will more likely result in a
-		// higher grade augmentation... and the augmentation result will at least have the grade
-		// of the life stone
-		resultColor = Rnd.get(0, 100);
-		if (lifeStoneGrade == 3 || resultColor <= (15 * lifeStoneGrade) + 10)
-			resultColor = 3;
-		else if (lifeStoneGrade == 2 || resultColor <= (15 * lifeStoneGrade) + 20)
-			resultColor = 2;
-		else if (lifeStoneGrade == 1 || resultColor <= (15 * lifeStoneGrade) + 30)
-			resultColor = 1;
+		// whats known is: you cant have yellow with skill(or baseStatModifier)
+		//                 noGrade stone can not have glow, mid only with skill, high has a chance(custom), top allways glow
+		if (stat34 == 0 && !generateSkill)
+		{
+			resultColor = Rnd.get(0, 100);
+			if (resultColor <= (15 * lifeStoneGrade) + 40)
+				resultColor = 1;
+			else
+				resultColor = 0;
+		}
		else
-			resultColor = 0;
+		{
+			resultColor = Rnd.get(0, 100);
+			if (resultColor <= (10 * lifeStoneGrade) + 5 || stat34 != 0)
+				resultColor = 3;
+			else if (resultColor <= (10 * lifeStoneGrade) + 10)
+				resultColor = 1;
+			else
+				resultColor = 2;
+		}

-		// Second: Calculate the subblock offset for the choosen color,
+		// Third: Calculate the subblock offset for the choosen color,
		// and the level of the lifeStone
-		int colorOffset = (resultColor * (STAT_SUBBLOCKSIZE * 10)) + ((lifeStoneLevel - 1) * STAT_SUBBLOCKSIZE);
+		// from large number of retail augmentations:
+		// no skill part
+		// Id for stat12:
+		// A:1-910 B:911-1820 C:1821-2730 D:2731-3640 E:3641-4550 F:4551-5460 G:5461-6370 H:6371-7280
+		// Id for stat34(this defines the color):
+		// I:7281-8190(yellow) K:8191-9100(blue) L:10921-11830(yellow) M:11831-12740(blue)
+		// you can combine I-K with A-D and L-M with E-H
+		// using C-D or G-H Id you will get a glow effect
+		// there seems no correlation in which grade use which Id except for the glowing restriction
+		// skill part
+		// Id for stat12:
+		// same for no skill part
+		// A same as E, B same as F, C same as G, D same as H
+		// A - no glow, no grade LS
+		// B - weak glow, mid grade LS?
+		// C - glow, high grade LS?
+		// D - strong glow, top grade LS?

-		int offset = ((3 - lifeStoneGrade) * STAT_BLOCKSIZE) + colorOffset;
-		
-		int stat12 = Rnd.get(offset, offset + STAT_SUBBLOCKSIZE);
-		int stat34 = 0;
-		boolean generateSkill = false;
-		
-		// use a chance to determine whether we will add a skill or not
-		if (Rnd.get(1, 100) <= CHANCE_SKILL)
-			generateSkill = true;
-		// only if no skill is going to be applyed
-		else if (Rnd.get(1, 100) <= CHANCE_BASESTAT)
-			stat34 = Rnd.get(BASESTAT_STR, BASESTAT_MEN);
-		
		// is neither a skill nor basestat used for stat34? then generate a normal stat
+		int stat12 = 0;
		if (stat34 == 0 && !generateSkill)
		{
-			offset = (lifeStoneGrade * STAT_BLOCKSIZE) + colorOffset;
+			int temp = Rnd.get(2,3);
+			int colorOffset = resultColor * (10 * STAT_SUBBLOCKSIZE) + temp * STAT_BLOCKSIZE + 1;
+			int offset = ((lifeStoneLevel - 1) * STAT_SUBBLOCKSIZE) + colorOffset;

-			stat34 = Rnd.get(offset, offset + STAT_SUBBLOCKSIZE);
+			stat34 = Rnd.get(offset, offset + STAT_SUBBLOCKSIZE - 1);
+			if (generateGlow && lifeStoneGrade >= 2)
+				offset = ((lifeStoneLevel - 1) * STAT_SUBBLOCKSIZE) + (temp - 2) * STAT_BLOCKSIZE + lifeStoneGrade * (10 * STAT_SUBBLOCKSIZE) + 1;
+			else
+				offset = ((lifeStoneLevel - 1) * STAT_SUBBLOCKSIZE) + (temp - 2) * STAT_BLOCKSIZE + Rnd.get(0, 1) * (10 * STAT_SUBBLOCKSIZE) + 1;
+			stat12 = Rnd.get(offset, offset + STAT_SUBBLOCKSIZE - 1);
		}
+		else
+		{
+			int offset;
+			if (!generateGlow)
+				offset = ((lifeStoneLevel - 1) * STAT_SUBBLOCKSIZE) + Rnd.get(0, 1) * STAT_BLOCKSIZE + 1;
+			else
+				offset = ((lifeStoneLevel - 1) * STAT_SUBBLOCKSIZE) + Rnd.get(0, 1) * STAT_BLOCKSIZE + (lifeStoneGrade + resultColor) / 2 * (10 * STAT_SUBBLOCKSIZE) + 1;
+			stat12 = Rnd.get(offset, offset + STAT_SUBBLOCKSIZE - 1);
+		}

		// generate a skill if neccessary
		L2Skill skill = null;
		if (generateSkill)
		{
			augmentationSkill temp = null;
-			switch (Rnd.get(1, 3))
+			switch (resultColor)
			{
-				case 1: // chance skill
-					temp = _chanceSkills.get(Rnd.get(0, _chanceSkills.size() - 1));
+				case 1: // blue skill
+					temp = _blueSkills.get(Rnd.get(0, _blueSkills.size() - 1));
					skill = temp.getSkill(lifeStoneLevel);
-					stat34 = temp.getAugmentationSkillId();
+					stat34 = temp.getAugmentationSkillId() + (lifeStoneLevel - 1) * _skillsCount;
					break;
-				case 2: // active skill
-					temp = _activeSkills.get(Rnd.get(0, _activeSkills.size() - 1));
+				case 2: // purple skill
+					temp = _purpleSkills.get(Rnd.get(0, _purpleSkills.size() - 1));
					skill = temp.getSkill(lifeStoneLevel);
-					stat34 = temp.getAugmentationSkillId();
+					stat34 = temp.getAugmentationSkillId() + (lifeStoneLevel - 1) * _skillsCount;
					break;
-				case 3: // passive skill
-					temp = _passiveSkills.get(Rnd.get(0, _passiveSkills.size() - 1));
+				case 3: // red skill
+					temp = _redSkills.get(Rnd.get(0, _redSkills.size() - 1));
					skill = temp.getSkill(lifeStoneLevel);
-					stat34 = temp.getAugmentationSkillId();
+					stat34 = temp.getAugmentationSkillId() + (lifeStoneLevel - 1) * _skillsCount;
					break;
			}
		}

+		if (Config.DEBUG)
+			_log.info("Augmentation success: stat12=" + stat12 + "; stat34=" + stat34 + "; resultColor=" + resultColor + "; level=" + lifeStoneLevel + "; grade=" + lifeStoneGrade);
		return new L2Augmentation(((stat34 << 16) + stat12), skill);
	}

Posted

+                  AUGMENTATION_NG_SKILL_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationNGSkillChance", "15"));

+                  AUGMENTATION_NG_GLOW_CHANCE        = Integer.parseInt(Character.getProperty("AugmentationNGGlowChance", "0"));

+                  AUGMENTATION_MID_SKILL_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationMidSkillChance", "30"));

+                  AUGMENTATION_MID_GLOW_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationMidGlowChance", "40"));

+                  AUGMENTATION_HIGH_SKILL_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationHighSkillChance", "45"));

+                  AUGMENTATION_HIGH_GLOW_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationHighGlowChance", "70"));

+                  AUGMENTATION_TOP_SKILL_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationTopSkillChance", "60"));

+                  AUGMENTATION_TOP_GLOW_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationTopGlowChance", "100"));

+                  AUGMENTATION_BASESTAT_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationBaseStatChance", "1"));

 

skill chance=15  adit "15" to have what u want :)  the others are for glow/ base stats (dex,witmwint etc)

  • 1 month later...
Posted

This code is for augument skill and glow chance retail-like ..

Augument glow have chance to appear on own weapon

 

 

+                  AUGMENTATION_NG_GLOW_CHANCE        = Integer.parseInt(Character.getProperty("AugmentationNGGlowChance", "0"));

+                  AUGMENTATION_MID_GLOW_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationMidGlowChance", "40"));

+                  AUGMENTATION_HIGH_GLOW_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationHighGlowChance", "70"));

+                  AUGMENTATION_TOP_GLOW_CHANCE      = Integer.parseInt(Character.getProperty("AugmentationTopGlowChance", "100"));

 

 

NoGrade have 0 chance to apper glow

Mid 40

High 70

and Top 100

  • 2 months later...
  • 4 weeks later...
  • 7 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



  • Posts

    • the forum says you are known as #1 scammer here,not this random guy 
    • VAELOR Lineage II Interlude · L2OFF · x12   GRAND OPENING 23 October 2026 · 17:00 UTC   Website: https://l2vaelor.com/ Discord: https://discord.gg/qMgPxH2fd4   ━━━━━━━━━━━━━━━━━━━━━━   WHAT VAELOR AIMS TO BE   Vaelor is an international L2OFF Interlude x12 server built to preserve the original Interlude experience. Combat, classes, crafting, sieges, Olympiad and progression remain close to retail. The changes are limited to the pace and convenience features that make sense on an x12 server.   RATES   EXP and SP: x12 Party EXP and SP: x13.2 Adena: x10 Drop: x5 Spoil: x9 Quest EXP and SP: x3 Quest Adena: x3 Raid Boss Drop: x3   SERVER INFORMATION   Server location: France Main language: English Level cap: 80 Safe enchant: +3, or +4 for full body armor Maximum enchant: +16 Enchant through +15: 70% physical weapons, 40% magic weapons, 66% armor Final step to +16: 35% physical weapons, 20% magic weapons, 66% armor Buff slots: 20 First and second class changes: free Third class change: original quest Game windows: 3   GAMEPLAY   No auto-farm or custom equipment. Level-scaled buffer with presets, custom schemes and support for both players and pets. The available buffs are gradually reduced as the character levels, helping early progression without replacing support classes later in the game. The Global Gatekeeper only connects towns and villages. Travel is free below level 40, then uses level-based Adena fees, with half-price travel between 18:00 and 06:00 UTC. There are no direct teleports to farming zones. The Alt+B Market is a centralized convenience shop containing only consumables and utility items already sold without limits by regular town merchants. Its prices are deliberately higher, so visiting the original NPC merchants remains the economical choice. It does not sell equipment, crafting materials, enchant scrolls or Life Stones. Drop Search finds either an item or a monster and shows where items drop or can be spoiled, including the server rates and the viewing character's level penalty. Player Shop Search and Offline Shop make it easier to find and trade with actual player-run stores while keeping the economy in players' hands. Offline shops remain active for up to 48 hours. Rankings and live Raid Boss and Grand Boss status are available through Alt+B. Character PIN and Computer Lock provide additional account and character protection. Restored and corrected Interlude content includes the Frozen Labyrinth and Ice Queen quest chain, Primeval Isle and Sailren, Wild Beast Reserve, Rainbow Springs Hall, Pagan Temple, and quests around Pavel Ruins and the Plunderous Plains. Auto learn and auto loot are enabled. Castle sieges every two weeks Olympiad daily from 18:00 to 00:00 UTC   PREMIUM AND STORE   Premium grants +15% EXP and SP, +5% Adena, Drop and Spoil, one additional game window and convenience features. The store is limited to Premium, cosmetic accessories and character services. Equipment, enchants, combat stats and access to content are not sold.   ━━━━━━━━━━━━━━━━━━━━━━   Create account: https://l2vaelor.com/register Download: https://l2vaelor.com/#download Discord: https://discord.gg/qMgPxH2fd4
    • Of these guy's like Williams, dont use a new version of L2JMobius in CENTURIES...  People sure know how to badmouth others, but when is someone actually going to do something "BETTER"? And before you claim yours is better, prove it with benchmarks—or else shove your opinion, you know where.
    • Hello everyone! We are proud to present L2 Talkaas, a High Five mid-rate server. Rates Exp x15 | Adena x10 | Drop x10 | Spoil x10 Main features Autofarm system Autoloot and auto-learn skills GM Shop, Buffer and Teleport in Community Board Offline shop Max 2 boxes per player Vote rewards with an exclusive item for full voters Dates Beta: START NOW 2026 Grand Opening: November 2026 Website: https://l2talkaas.com Discord: https://discord.gg/zcVE9kuHQv See you in game!
    • -50% on ALL SERVICES CHARTSMM.COM ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ WHY US? • Own Soft - We complete all orders threw our own soft • Speed 300.000/hour ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ TELEGRAM  Subs *All prices are already discounted ➥ 0.35$ — Lifetime ➥ 0.3$ — 90 Days ➥ 0.25$— 60 Days ➥ 0.2$ — 30 Days ➥ 0.12$ — 7 Days Premium Subs *All prices are already discounted ➥ 2.6$ — 15 Days ➥ 5$ — 30 Days ➥ 9.6$ — 60 Days ➥ 14$— 90 Days SUBS for SEO *All prices are already discounted ➥ 0.75$ — FROM SEARCH ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ WEBSITE: CHARTSMM.COM Telegram: CHARTSMM
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..