Jump to content

Recommended Posts

Posted

# Enable/Disable progressive enchanting system (experimental / default: false).
EnchantStepEnabled = False

# Progressive enchanting mode. Values allowed = static, dynamic (default: static).
EnchantStepMode = static

# If EnchantStepMode = static:
# Value in percent (%). Reduced from enchant rate on each next enchant.
# Example: +3 safe enchant. EnchantChanceWeapon = 66. EnchantStep = 3
#+4 = 66%, +5 = 63%, +7 = 60%, +8 = 57% etc.
#default: 3
EnchantStepStatic = 3

# If EnchantStepMode = dynamic:
# enchant chance is multiplied by (EnchantStep^(item enchant level)-safe enchant)
# for example, if enchant step is 0.95
# +10 = 66*(0.95^(10-4))
#default: 0,95
EnchantStepDynamic = 0.95

 

I dont understand what is this?

Posted

after Safe for example 66% with +4

 

stap of 3% on +5 only 63% chance, on +6 only 60% chance ...........

 

dynamic of 0.95%

e.g. if safe is 4 and

- item is 5 -> 0.95

- item is 6 -> 0.95 * 0.95 = 0.9025

- item is 7 -> 0.95 * 0.95 * 0.95 = 0.857375

............

 

Sorry bad English

Posted

New Dwarf enchant system ? Cant explain what different between 2 enchant dwarf and normal enchant?

 

Note : when you build any features plz explain clearly. More information just waste you some sentence but very helpful with us.

 

I got idea about chance reduce: after safe chance rate reduce from 100% with any rate (0.3% or 2% or else).

 

And i wonder we have 3 type of enchant scroll (crystal, bless, normal), why we dont modify chance all of them? Each type has other rate, it make more fun and more risk. And last one i can think right now, crystal enchant scroll fail and destroy item... make it not be.

 

PS: Thanks 4 share.

Posted

That is another verson from enchant the system.

here after safe enchant the per cent would decrease finalagain static, dynamic would decrease.

the break of the weapons was out switched

 

sorry bad englisch

 

### Eclipse Workspace Patch 1.0
#P L2_GameServer
Index: java/com/l2jserver/gameserver/network/clientpackets/AbstractEnchantPacket.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/AbstractEnchantPacket.java	(revision 4477)
+++ java/com/l2jserver/gameserver/network/clientpackets/AbstractEnchantPacket.java	(working copy)
@@ -22,8 +22,9 @@
import com.l2jserver.gameserver.model.L2ItemInstance;
import com.l2jserver.gameserver.templates.item.L2Item;
import com.l2jserver.gameserver.templates.item.L2WeaponType;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.base.Race;

-
public abstract class AbstractEnchantPacket extends L2GameClientPacket
{

@@ -152,7 +153,7 @@
			return isValid(enchantItem);
		}

-		public final int getChance(L2ItemInstance enchantItem, EnchantItem supportItem)
+		public final int getChance(L2ItemInstance enchantItem, EnchantItem supportItem, L2PcInstance activeChar)
		{
			if (!isValid(enchantItem, supportItem))
				return -1;
@@ -181,13 +182,80 @@
			else
			{
				if (_isWeapon)
-					chance = Config.ENCHANT_CHANCE_WEAPON;
+					if (Config.ENCHANT_SYSTEM)
+						{
+							if (Config.ENCHANT_STEP_MODE == "static")
+								chance = Config.ENCHANT_CHANCE_WEAPON-(Config.ENCHANT_STEP_STATIC*(enchantItem.getEnchantLevel()-Config.ENCHANT_SAFE_MAX));
+							else if (Config.ENCHANT_STEP_MODE == "dynamic")
+								chance = (int) Math.round(Config.ENCHANT_CHANCE_WEAPON*Math.pow(Config.ENCHANT_STEP_DYNAMIC,(enchantItem.getEnchantLevel()-Config.ENCHANT_SAFE_MAX)));
+						}
+						else
+								chance = Config.ENCHANT_CHANCE_WEAPON;
+				
				else if (isAccessory)
-					chance = Config.ENCHANT_CHANCE_JEWELRY;
+					if (Config.ENCHANT_SYSTEM)
+						{
+							if (Config.ENCHANT_STEP_MODE == "static")
+								chance = Config.ENCHANT_CHANCE_JEWELRY-(Config.ENCHANT_STEP_STATIC*(enchantItem.getEnchantLevel()-Config.ENCHANT_SAFE_MAX));
+							else if (Config.ENCHANT_STEP_MODE == "dynamic")
+								chance = (int) Math.round(Config.ENCHANT_CHANCE_JEWELRY*Math.pow(Config.ENCHANT_STEP_DYNAMIC,(enchantItem.getEnchantLevel()-Config.ENCHANT_SAFE_MAX)));
+						}
+						else
+								chance = Config.ENCHANT_CHANCE_JEWELRY;
				else
-					chance = Config.ENCHANT_CHANCE_ARMOR;
+					if (Config.ENCHANT_SYSTEM)
+						{
+							if (Config.ENCHANT_STEP_MODE == "static")
+								chance = Config.ENCHANT_CHANCE_ARMOR-(Config.ENCHANT_STEP_STATIC*(enchantItem.getEnchantLevel()-Config.ENCHANT_SAFE_MAX));
+							else if (Config.ENCHANT_STEP_MODE == "dynamic")
+								chance = (int) Math.round(Config.ENCHANT_CHANCE_ARMOR*Math.pow(Config.ENCHANT_STEP_DYNAMIC,(enchantItem.getEnchantLevel()-Config.ENCHANT_SAFE_MAX)));
+						}
+						else
+								chance = Config.ENCHANT_CHANCE_ARMOR;
			}

+			if (activeChar.getRace() == Race.Dwarf && Config.ENCHANT_SYSTEM)		
+				{
+				int _charlevel = activeChar.getLevel();
+				int _itemlevel = enchantItem.getEnchantLevel();
+				
+						if (_charlevel >= 20 && _charlevel <= 39 && _itemlevel >= Config.ENCHANT_DWARF_1_ENCHANTLEVEL && Config.ENCHANT_STEP_MODE == "static")
+							chance = Config.ENCHANT_DWARF_CHANCE-(Config.ENCHANT_STEP_STATIC*(_itemlevel-Config.ENCHANT_DWARF_1_ENCHANTLEVEL));
+					
+						else if (_charlevel >= 40 && _charlevel <= 75 && _itemlevel >= Config.ENCHANT_DWARF_2_ENCHANTLEVEL && Config.ENCHANT_STEP_MODE == "static")
+							chance = Config.ENCHANT_DWARF_CHANCE-(Config.ENCHANT_STEP_STATIC*(_itemlevel-Config.ENCHANT_DWARF_2_ENCHANTLEVEL));
+						
+						else if (_charlevel >= 76 && _charlevel <= 83 && _itemlevel >= Config.ENCHANT_DWARF_3_ENCHANTLEVEL && Config.ENCHANT_STEP_MODE == "static")
+							chance = Config.ENCHANT_DWARF_CHANCE-(Config.ENCHANT_STEP_STATIC*(_itemlevel-Config.ENCHANT_DWARF_3_ENCHANTLEVEL));
+						
+						else if (_charlevel >= 84 && _itemlevel >= Config.ENCHANT_DWARF_4_ENCHANTLEVEL && Config.ENCHANT_STEP_MODE == "static")
+							chance = Config.ENCHANT_DWARF_CHANCE-(Config.ENCHANT_STEP_STATIC*(_itemlevel-Config.ENCHANT_DWARF_4_ENCHANTLEVEL));
+						
+						else if (_charlevel >= 20 && _charlevel <= 39 && _itemlevel >= Config.ENCHANT_DWARF_1_ENCHANTLEVEL && Config.ENCHANT_STEP_MODE == "dynamic")
+							chance = (int) Math.round(Config.ENCHANT_DWARF_CHANCE*Math.pow(Config.ENCHANT_STEP_DYNAMIC,(_itemlevel-Config.ENCHANT_DWARF_1_ENCHANTLEVEL)));
+						
+						else if (_charlevel >= 40 && _charlevel <= 75 && _itemlevel >= Config.ENCHANT_DWARF_2_ENCHANTLEVEL && Config.ENCHANT_STEP_MODE == "dynamic")
+							chance = (int) Math.round(Config.ENCHANT_DWARF_CHANCE*Math.pow(Config.ENCHANT_STEP_DYNAMIC,(_itemlevel-Config.ENCHANT_DWARF_2_ENCHANTLEVEL)));
+						
+						else if (_charlevel >= 76 && _charlevel <= 83 && _itemlevel >= Config.ENCHANT_DWARF_3_ENCHANTLEVEL && Config.ENCHANT_STEP_MODE == "dynamic")
+							chance = (int) Math.round(Config.ENCHANT_DWARF_CHANCE*Math.pow(Config.ENCHANT_STEP_DYNAMIC,(_itemlevel-Config.ENCHANT_DWARF_3_ENCHANTLEVEL)));
+						
+						else if (_charlevel >= 84 && _itemlevel >= Config.ENCHANT_DWARF_4_ENCHANTLEVEL && Config.ENCHANT_STEP_MODE == "dynamic")
+							chance = (int) Math.round(Config.ENCHANT_DWARF_CHANCE*Math.pow(Config.ENCHANT_STEP_DYNAMIC,(_itemlevel-Config.ENCHANT_DWARF_4_ENCHANTLEVEL)));
+						
+						else if (_charlevel >= 20 && _itemlevel <= Config.ENCHANT_DWARF_1_ENCHANTLEVEL)
+							chance = Config.ENCHANT_DWARF_1_CHANCE;
+				
+						else if (_charlevel >= 40 && _itemlevel <= Config.ENCHANT_DWARF_2_ENCHANTLEVEL)
+							chance = Config.ENCHANT_DWARF_2_CHANCE;
+				
+						else if (_charlevel >= 76 && _itemlevel <= Config.ENCHANT_DWARF_3_ENCHANTLEVEL)
+							chance = Config.ENCHANT_DWARF_3_CHANCE;
+				
+						else if (_charlevel >= 84 && _itemlevel <= Config.ENCHANT_DWARF_4_ENCHANTLEVEL)
+							chance = Config.ENCHANT_DWARF_4_CHANCE;	
+				}
+					
			chance += _chanceAdd;

			if (supportItem != null)
@@ -239,10 +307,11 @@
		_scrolls.put(22011, new EnchantScroll(false, false, false, false, L2Item.CRYSTAL_C, 0, 10, null));
		_scrolls.put(22012, new EnchantScroll(false, false, false, false, L2Item.CRYSTAL_B, 0, 10, null));
		_scrolls.put(22013, new EnchantScroll(false, false, false, false, L2Item.CRYSTAL_A, 0, 10, null));
-		_scrolls.put(22014, new EnchantScroll(true, false, false, true, L2Item.CRYSTAL_B, 16, 10, null));
-		_scrolls.put(22015, new EnchantScroll(true, false, false, true, L2Item.CRYSTAL_A, 16, 10, null));
-		_scrolls.put(22016, new EnchantScroll(false, false, false, true, L2Item.CRYSTAL_B, 16, 10, null));
-		_scrolls.put(22017, new EnchantScroll(false, false, false, true, L2Item.CRYSTAL_A, 16, 10, null));
+		_scrolls.put(22014, new EnchantScroll(true, false, false, true, L2Item.CRYSTAL_B, 0, 10, null));
+		_scrolls.put(22015, new EnchantScroll(true, false, false, true, L2Item.CRYSTAL_A, 0, 10, null));
+		_scrolls.put(22016, new EnchantScroll(false, false, false, true, L2Item.CRYSTAL_B, 0, 10, null));
+		_scrolls.put(22017, new EnchantScroll(false, false, false, true, L2Item.CRYSTAL_A, 0, 10, null));
+		_scrolls.put(20519, new EnchantScroll(true, false, false, true, L2Item.CRYSTAL_S, 0, 10, null));
		_scrolls.put(22018, new EnchantScroll(true, false, false, false, L2Item.CRYSTAL_B, 0, 100, null));
		_scrolls.put(22019, new EnchantScroll(true, false, false, false, L2Item.CRYSTAL_A, 0, 100, null));
		_scrolls.put(22020, new EnchantScroll(false, false, false, false, L2Item.CRYSTAL_B, 0, 100, null));
Index: java/com/l2jserver/gameserver/network/clientpackets/RequestEnchantItem.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/RequestEnchantItem.java	(revision 4477)
+++ java/com/l2jserver/gameserver/network/clientpackets/RequestEnchantItem.java	(working copy)
@@ -22,7 +22,6 @@
import com.l2jserver.gameserver.datatables.SkillTable;
import com.l2jserver.gameserver.model.L2ItemInstance;
import com.l2jserver.gameserver.model.L2Skill;
-import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.EnchantResult;
@@ -148,7 +147,7 @@

		synchronized (item)
		{
-			int chance = scrollTemplate.getChance(item, supportTemplate);
+			int chance = scrollTemplate.getChance(item, supportTemplate, activeChar);

			L2Skill enchant4Skill = null;
			L2Item it = item.getItem();
@@ -253,9 +252,9 @@
					if (scrollTemplate.isBlessed())
					{
						// blessed enchant - clear enchant value
-						activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED));
+						activeChar.sendMessage("Blessed Enchant Fail on half");

-						item.setEnchantLevel(0);
+						item.setEnchantLevel(item.getEnchantLevel()/2);
						item.updateDatabase();
						activeChar.sendPacket(new EnchantResult(3, 0, 0));

@@ -269,64 +268,13 @@
					}
					else
					{
-						// enchant failed, destroy item
-						int crystalId = item.getItem().getCrystalItemId();
-						int count = item.getCrystalCount() - (item.getItem().getCrystalCount() + 1) / 2;
-						if (count < 1)
-							count = 1;
+						// enchant - clear enchant value
+						activeChar.sendMessage("Enchant Fail up 0");

-						L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);
-						if (destroyItem == null)
-						{
-							// unable to destroy item, cheater ?
-							Util.handleIllegalPlayerAction(activeChar, "Unable to delete item on enchant failure from player " + activeChar.getName() + ", possible cheater !", Config.DEFAULT_PUNISH);
-							activeChar.setActiveEnchantItem(null);
-							activeChar.sendPacket(new EnchantResult(2, 0, 0));
-							
-							if (Config.LOG_ITEM_ENCHANTS)
-							{
-								LogRecord record = new LogRecord(Level.INFO, "Unable to destroy");
-								record.setParameters(new Object[]{activeChar, item, scroll, support, chance});
-								record.setLoggerName("item");
-								_logEnchant.log(record);
-							}
-							return;
-						}
+						item.setEnchantLevel(0);
+						item.updateDatabase();
+						activeChar.sendPacket(new EnchantResult(3, 0, 0));

-						L2ItemInstance crystals = null;
-						if (crystalId != 0)
-						{
-							crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);
-							
-							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S);
-							sm.addItemName(crystals);
-							sm.addItemNumber(count);
-							activeChar.sendPacket(sm);
-						}
-						
-						if (!Config.FORCE_INVENTORY_UPDATE)
-						{
-							InventoryUpdate iu = new InventoryUpdate();
-							if (destroyItem.getCount() == 0)
-								iu.addRemovedItem(destroyItem);
-							else
-								iu.addModifiedItem(destroyItem);
-							
-							if (crystals != null)
-								iu.addItem(crystals);
-							
-							activeChar.sendPacket(iu);
-						}
-						else
-							activeChar.sendPacket(new ItemList(activeChar, true));
-						
-						L2World world = L2World.getInstance();
-						world.removeObject(destroyItem);
-						if (crystalId == 0)
-							activeChar.sendPacket(new EnchantResult(4, 0, 0));
-						else
-							activeChar.sendPacket(new EnchantResult(1, crystalId, count));
-						
						if (Config.LOG_ITEM_ENCHANTS)
						{
							LogRecord record = new LogRecord(Level.INFO, "Fail");
Index: java/config/Pandora.properties
===================================================================
--- java/config/Pandora.properties	(revision 0)
+++ java/config/Pandora.properties	(revision 0)
@@ -0,0 +1,58 @@
+#============================================================================#
+#                       Pandora custom Settings                              #
+#============================================================================#
+#
+# -Dwarfen Enchantsystem + Enchant Step
+
+
+# ---------------------------------------------------------------------------
+# Enchant system
+# ---------------------------------------------------------------------------
+
+# Enable/Disable enchanting system (default: false).
+EnchantSystemEnabled = False
+
+# Progressive enchanting mode. Values allowed = static, dynamic (default: static).
+EnchantStepMode = static
+
+#default: 3
+EnchantStepStatic = 3
+
+#default: 0,95
+EnchantStepDynamic = 0.95
+
+#for Dwarf enchant
+#
+#Safe with level of the dwarf:
+#Dwarf1 20 = default 6
+#Dwarf2 40 = default 8
+#Dwarf3 76 = default 10
+#Dwarf4 84 = default 12
+EnchantDwarf1Enchantlevel = 6
+EnchantDwarf2Enchantlevel = 8
+EnchantDwarf3Enchantlevel = 10
+EnchantDwarf4Enchantlevel = 12
+
+# Dwarf Chance Dwarf Safe enchant 
+EnchantDwarf1Chance = 100
+EnchantDwarf2Chance = 100
+EnchantDwarf3Chance = 100
+EnchantDwarf4Chance = 100
+
+# Dwarf Chance after Dwarf Safe enchant 
+EnchantDwarfChance = 66
+
+
+# If EnchantStepMode = static:
+# Value in percent (%). Reduced from enchant rate on each next enchant.
+# Example: +3 safe enchant. EnchantChanceWeapon = 66. EnchantStep = 3
+#+4 = 66%, +5 = 63%, +7 = 60%, +8 = 57% etc.
+# If EnchantStepMode = dynamic:
+# enchant chance is multiplied by (EnchantStep^(item enchant level)-safe enchant)
+# for example, if enchant step is 0.95
+# +10 = 66*(0.95^(10-4))
+# it only starts to make a real difference after +10, 
+# so it's useful for servers with high max enchant.
+
+
+# ---------------------------------------------------------------------------
Index: java/com/l2jserver/Config.java
===================================================================
--- java/com/l2jserver/Config.java	(revision 4477)
+++ java/com/l2jserver/Config.java	(working copy)
@@ -80,6 +80,7 @@
	public static final String COMMUNITY_CONFIGURATION_FILE = "./config/CommunityServer.properties";
	public static final String GRANDBOSS_CONFIG_FILE = "./config/Grandboss.properties";
	public static final String GRACIASEEDS_CONFIG_FILE = "./config/GraciaSeeds.properties";
+	public static final String PANDORA_CUSTOM_FILE = "./config/Pandora.properties";
	public static final String CHAT_FILTER_FILE = "./config/chatfilter.txt";


@@ -759,6 +760,23 @@


	//--------------------------------------------------
+	//Pandora.properties Custom
+	//--------------------------------------------------
+	public static boolean ENCHANT_SYSTEM;    
+	public static String ENCHANT_STEP_MODE;         
+	public static int ENCHANT_STEP_STATIC;          
+	public static double ENCHANT_STEP_DYNAMIC; 
+	public static int ENCHANT_DWARF_1_ENCHANTLEVEL; 
+	public static int ENCHANT_DWARF_2_ENCHANTLEVEL; 
+	public static int ENCHANT_DWARF_3_ENCHANTLEVEL; 
+	public static int ENCHANT_DWARF_4_ENCHANTLEVEL; 
+	public static int ENCHANT_DWARF_1_CHANCE;       
+	public static int ENCHANT_DWARF_2_CHANCE;       
+	public static int ENCHANT_DWARF_3_CHANCE;       
+	public static int ENCHANT_DWARF_4_CHANCE;   
+	public static int ENCHANT_DWARF_CHANCE;        
+	
+	//--------------------------------------------------
	// PvP Settings
	//--------------------------------------------------
	public static int KARMA_MIN_KARMA;
@@ -2479,6 +2497,35 @@
					throw new Error("Failed to Load "+L2JMOD_CONFIG_FILE+" File.");
				}

+				
+				// Load Pandora Custom Properties file (if exists)
+				try
+				{
+				    L2Properties pandoracustomSettings = new L2Properties();
+					is = new FileInputStream(new File(PANDORA_CUSTOM_FILE));
+					pandoracustomSettings.load(is);
+				
+				    ENCHANT_SYSTEM = Boolean.parseBoolean(pandoracustomSettings.getProperty("EnchantSystemEnabled", "False"));
+				    ENCHANT_DWARF_1_ENCHANTLEVEL = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarf1Enchantlevel", "6"));
+					ENCHANT_DWARF_2_ENCHANTLEVEL = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarf2Enchantlevel", "8"));
+					ENCHANT_DWARF_3_ENCHANTLEVEL = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarf3Enchantlevel", "10"));
+				    ENCHANT_DWARF_4_ENCHANTLEVEL = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarf4Enchantlevel", "12"));
+					ENCHANT_DWARF_1_CHANCE = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarf1Chance", "100"));
+					ENCHANT_DWARF_2_CHANCE = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarf2Chance", "100"));
+					ENCHANT_DWARF_3_CHANCE = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarf3Chance", "100"));
+					ENCHANT_DWARF_4_CHANCE = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarf4Chance", "100"));
+					ENCHANT_DWARF_CHANCE = Integer.parseInt(pandoracustomSettings.getProperty("EnchantDwarfChance", "66"));
+					ENCHANT_STEP_MODE = pandoracustomSettings.getProperty("EnchantStepMode", "static");
+					ENCHANT_STEP_STATIC = Integer.parseInt(pandoracustomSettings.getProperty("EnchantStepStatic", "3"));
+					ENCHANT_STEP_DYNAMIC = Double.parseDouble(pandoracustomSettings.getProperty("EnchantStepDynamic", "0.95"));
+				}
+				catch (Exception e)
+				{
+					e.printStackTrace();
+					throw new Error("Failed to Load " + PANDORA_CUSTOM_FILE + " File.");
+				}	
+				
+				
				// Load PvP L2Properties file (if exists)
				try
				{

Posted

Read section rules.

 

Edit your thread and add proper [TAG] in your topic title.

 

Otherwise I will lock it.

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

    • [Share]korean protocol 606 new lobby collection   kr 606 new lobby assassin     kr 606 new lobby bartz       kr 606 new lobby basic       Instructions: Place the files into the 'Video' folder within your game client. (Remember to create backups of your files before replacing them.)   Supported game protocols: 110,140,152,166,196,228,235,245,272,286,306,311,338,362,388,390,393,395,413,414,415,417,418,419,422, 424,425,426,430,437,438,439,444,446,447,449,450,458,459,460,462,464,465,470,474,480,481,482,487, 493,495,502,507,509,511,513,516,520   Download link > https://drive.usercontent.google.com/download?id=1hZy-CcerRDy49gC0VWN_1jxPyHAcd0SU&export <  7zip compression; password  RED-TEAM-REVERSECODE             
    • GRAND OPENING TODAY! 30/10/2026, FRIDAY, 20:00 +3 GMT 
    • Hey everyone! Just a quick update from the WARFRONT team. After months of development, testing and plenty of changes based on player feedback, we're finally opening tomorrow, 30 October at 18:00 UTC. For anyone who hasn't heard about the project, WARFRONT is a heavily customised Interlude GvE server focused on Angels vs Demons faction PvP. The main difference is our battlefield system. Instead of fighting endlessly over random kills, factions capture Outposts, unlock the Main Outpost and eventually push into enemy territory to destroy the opposing Headquarters. We've also spent a considerable amount of time working on class balance, progression, faction balancing and giving traditionally overlooked classes a useful role in PvP. Some of the main features: Level 80 start with free B Grade equipment Rotating faction battlefields with objectives 31 rebalanced classes Daily faction siege Grand Boss faction events Chaos, TvT, CTF, Deathmatch and King of the Hill Gear Battle XP and character progression Free and Premium Battle Pass Custom faction balancing and mercenary system We had 110 participants during Closed Beta and made numerous improvements following their feedback. If you enjoy Interlude faction PvP, feel free to give us a try. Grand Opening: Friday, 30 October 2026 at 18:00 UTC Website: https://l2warfront.com/ See you tomorrow!
    • OPEN BETA STARTS ON FRIDAY, OCTOBER 30, AT 18:00 EASTERN EUROPEAN TIME - don't forget to join!
    • 🤝 Team and agency packs available: Bulk discounts across ChatGPT Plus, Claude Pro, and YouTube Premium subscriptions.     FINAL CALL: Google is Shutting This Down After October 2026! Google will NEVER bring back this window of opportunity again. Once this month ends, this massive backdoor upgrade is gone permanently!  BUY 2, GET 1 FREE IS STILL LIVE! Stock up now for yourself, your family, your business, and your friends! Think about it: Every single person you know uses a Gmail account, and everyone is running out of storage. Don't let your loved ones get trapped paying $20–$30 every single month when you can set them up with 5TB Cloud Storage + Gemini Advanced (12–18 Months) right now for only $15! Why Buy Bulk Activations Today? Instant Gift Value: Perfect lifetime-style gift for clients, family, or team members. 100% Private & Safe: Activates on personal Gmails—zero passwords or logins required. Global Access: Works worldwide with zero VPN hassles. Instant Automated Delivery: Receive your activation links in seconds 24/7! ‍ Time is running out fast—secure your extra free licenses before the October deadline hits! Order Your Bundle Now on the Website
  • 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..