Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Sistema de Campeones (by St3eT)

Iniciado por Swarlog, Ago 12, 2022, 02:23 AM

Tema anterior - Siguiente tema

Swarlog




### Eclipse Workspace Patch 1.0
#P L2J_DataPack_BETA
Index: dist/game/data/scripts/handlers/admincommandhandlers/AdminKill.java
===================================================================
--- dist/game/data/scripts/handlers/admincommandhandlers/AdminKill.java (revision 10213)
+++ dist/game/data/scripts/handlers/admincommandhandlers/AdminKill.java (working copy)
@@ -22,9 +22,11 @@
import java.util.logging.Logger;
import com.l2jserver.Config;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
import com.l2jserver.gameserver.model.L2Object;
import com.l2jserver.gameserver.model.L2World;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.instance.L2ControllableMobInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -135,9 +137,9 @@
}
target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar, null);
}
- else if (Config.L2JMOD_CHAMPION_ENABLE && target.isChampion())
+ else if (ChampionData.getInstance().isEnabled() && target.isChampion())
{
- target.reduceCurrentHp((target.getMaxHp() * Config.L2JMOD_CHAMPION_HP) + 1, activeChar, null);
+ target.reduceCurrentHp((target.getMaxHp() * ChampionData.getInstance().getHpMultipler((L2Attackable) target)) + 1, activeChar, null);
}
else
{
Index: dist/game/data/scripts/handlers/admincommandhandlers/AdminMenu.java
===================================================================
--- dist/game/data/scripts/handlers/admincommandhandlers/AdminMenu.java (revision 10213)
+++ dist/game/data/scripts/handlers/admincommandhandlers/AdminMenu.java (working copy)
@@ -22,14 +22,15 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.AdminTable;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.handler.AdminCommandHandler;
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2Object;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
@@ -253,9 +254,9 @@
target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar, null);
filename = "charmanage.htm";
}
- else if (Config.L2JMOD_CHAMPION_ENABLE && target.isChampion())
+ else if (ChampionData.getInstance().isEnabled() && target.isChampion())
{
- target.reduceCurrentHp((target.getMaxHp() * Config.L2JMOD_CHAMPION_HP) + 1, activeChar, null);
+ target.reduceCurrentHp((target.getMaxHp() * ChampionData.getInstance().getHpMultipler((L2Attackable) target)) + 1, activeChar, null);
}
else
{
#P L2J_Server_BETA
Index: java/com/l2jserver/gameserver/model/actor/L2Character.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/L2Character.java (revision 6438)
+++ java/com/l2jserver/gameserver/model/actor/L2Character.java (working copy)
@@ -44,6 +44,7 @@
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.ai.L2AttackableAI;
import com.l2jserver.gameserver.ai.L2CharacterAI;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.datatables.DoorTable;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.datatables.SkillTable;
@@ -6644,9 +6645,9 @@
public void reduceCurrentHp(double i, L2Character attacker, boolean awake, boolean isDOT, L2Skill skill)
{
- if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && (Config.L2JMOD_CHAMPION_HP != 0))
+ if (ChampionData.getInstance().isEnabled() && isChampion())
{
- getStatus().reduceHp(i / Config.L2JMOD_CHAMPION_HP, attacker, awake, isDOT, false);
+ getStatus().reduceHp(i / ChampionData.getInstance().getHpMultipler((L2Attackable) this), attacker, awake, isDOT, false);
}
else
{
Index: java/com/l2jserver/gameserver/model/actor/L2Attackable.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/L2Attackable.java (revision 6438)
+++ java/com/l2jserver/gameserver/model/actor/L2Attackable.java (working copy)
@@ -33,6 +33,7 @@
import com.l2jserver.gameserver.ai.L2CharacterAI;
import com.l2jserver.gameserver.ai.L2FortSiegeGuardAI;
import com.l2jserver.gameserver.ai.L2SiegeGuardAI;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.datatables.EventDroplist;
import com.l2jserver.gameserver.datatables.EventDroplist.DateDrop;
import com.l2jserver.gameserver.datatables.ItemTable;
@@ -77,6 +78,7 @@
private boolean _isRaid = false;
private boolean _isRaidMinion = false;
private boolean _champion = false;
+ private boolean _isHardChamp = false;
private final Map<L2Character, AggroInfo> _aggroList = new ConcurrentHashMap<>();
private boolean _isReturningToSpawnPoint = false;
private boolean _canReturnToSpawnPoint = true;
@@ -515,10 +517,10 @@
long exp = expSp[0];
int sp = expSp[1];
- if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
+ if (ChampionData.getInstance().isEnabled() && isChampion())
{
- exp *= Config.L2JMOD_CHAMPION_REWARDS;
- sp *= Config.L2JMOD_CHAMPION_REWARDS;
+ exp *= ChampionData.getInstance().getRewardMultipler(this);
+ sp *= ChampionData.getInstance().getRewardMultipler(this);
}
exp *= penalty;
@@ -624,10 +626,10 @@
long exp = expSp[0];
int sp = expSp[1];
- if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
+ if (ChampionData.getInstance().isEnabled() && isChampion())
{
- exp *= Config.L2JMOD_CHAMPION_REWARDS;
- sp *= Config.L2JMOD_CHAMPION_REWARDS;
+ exp *= ChampionData.getInstance().getRewardMultipler(this);
+ sp *= ChampionData.getInstance().getRewardMultipler(this);
}
exp *= partyMul;
@@ -1061,12 +1063,11 @@
}
// Apply Special Item drop with random(rnd) quantity(qty) for champions.
- if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && ((Config.L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE > 0) || (Config.L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE > 0)))
+ if (ChampionData.getInstance().isEnabled() && isChampion() && ((ChampionData.getInstance().getLowerLvChance(this) > 0) || (ChampionData.getInstance().getHigherLvChance(this) > 0)))
{
- int champqty = Rnd.get(Config.L2JMOD_CHAMPION_REWARD_QTY);
- ItemHolder item = new ItemHolder(Config.L2JMOD_CHAMPION_REWARD_ID, ++champqty);
-
- if ((player.getLevel() <= getLevel()) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE))
+ int champqty = Rnd.get(ChampionData.getInstance().getRewardCount(this));
+ ItemHolder item = new ItemHolder(ChampionData.getInstance().getRewardId(this), ++champqty);
+ if ((player.getLevel() <= getLevel()) && (Rnd.get(100) < ChampionData.getInstance().getLowerLvChance(this)))
{
if (Config.AUTO_LOOT || isFlying())
{
@@ -1077,7 +1078,7 @@
dropItem(player, item);
}
}
- else if ((player.getLevel() > getLevel()) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE))
+ else if ((player.getLevel() > getLevel()) && (Rnd.get(100) < ChampionData.getInstance().getHigherLvChance(this)))
{
if (Config.AUTO_LOOT || isFlying())
{
@@ -1709,7 +1710,7 @@
*/
public boolean useVitalityRate()
{
- if (isChampion() && !Config.L2JMOD_CHAMPION_ENABLE_VITALITY)
+ if (isChampion() && !ChampionData.getInstance().isEnabledVitality(this))
{
return false;
}
@@ -1774,6 +1775,16 @@
return _champion;
}
+ public void setHardChampion(boolean champ)
+ {
+ _isHardChamp = champ;
+ }
+
+ public boolean isHardChampion()
+ {
+ return _isHardChamp;
+ }
+
@Override
public boolean isAttackable()
{
Index: java/com/l2jserver/gameserver/model/stats/Formulas.java
===================================================================
--- java/com/l2jserver/gameserver/model/stats/Formulas.java (revision 6438)
+++ java/com/l2jserver/gameserver/model/stats/Formulas.java (working copy)
@@ -25,6 +25,7 @@
import com.l2jserver.Config;
import com.l2jserver.gameserver.SevenSigns;
import com.l2jserver.gameserver.SevenSignsFestival;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.datatables.HitConditionBonus;
import com.l2jserver.gameserver.datatables.KarmaData;
import com.l2jserver.gameserver.instancemanager.CastleManager;
@@ -254,9 +255,9 @@
double hpRegenMultiplier = cha.isRaid() ? Config.RAID_HP_REGEN_MULTIPLIER : Config.HP_REGEN_MULTIPLIER;
double hpRegenBonus = 0;
- if (Config.L2JMOD_CHAMPION_ENABLE && cha.isChampion())
+ if (ChampionData.getInstance().isEnabled() && cha.isChampion())
{
- hpRegenMultiplier *= Config.L2JMOD_CHAMPION_HP_REGEN;
+ hpRegenMultiplier *= ChampionData.getInstance().getHpRegMultipler((L2Attackable) cha);
}
if (cha.isPlayer())
Index: java/com/l2jserver/gameserver/model/quest/Quest.java
===================================================================
--- java/com/l2jserver/gameserver/model/quest/Quest.java (revision 6438)
+++ java/com/l2jserver/gameserver/model/quest/Quest.java (working copy)
@@ -39,6 +39,7 @@
import com.l2jserver.gameserver.GameTimeController;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.cache.HtmCache;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.datatables.DoorTable;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.datatables.NpcData;
@@ -3485,18 +3486,18 @@
minAmount *= Config.RATE_QUEST_DROP;
maxAmount *= Config.RATE_QUEST_DROP;
dropChance *= Config.RATE_QUEST_DROP; // TODO separate configs for rate and amount
- if ((npc != null) && Config.L2JMOD_CHAMPION_ENABLE && npc.isChampion())
+ if ((npc != null) && ChampionData.getInstance().isEnabled() && npc.isChampion())
{
- dropChance *= Config.L2JMOD_CHAMPION_REWARDS;
+ dropChance *= ChampionData.getInstance().getRewardMultipler((L2Attackable) npc);
if ((itemId == Inventory.ADENA_ID) || (itemId == Inventory.ANCIENT_ADENA_ID))
{
- minAmount *= Config.L2JMOD_CHAMPION_ADENAS_REWARDS;
- maxAmount *= Config.L2JMOD_CHAMPION_ADENAS_REWARDS;
+ minAmount *= ChampionData.getInstance().getAdenaMultipler((L2Attackable) npc);
+ maxAmount *= ChampionData.getInstance().getAdenaMultipler((L2Attackable) npc);
}
else
{
- minAmount *= Config.L2JMOD_CHAMPION_REWARDS;
- maxAmount *= Config.L2JMOD_CHAMPION_REWARDS;
+ minAmount *= ChampionData.getInstance().getRewardMultipler((L2Attackable) npc);
+ maxAmount *= ChampionData.getInstance().getRewardMultipler((L2Attackable) npc);
}
}
Index: java/com/l2jserver/gameserver/ai/L2AttackableAI.java
===================================================================
--- java/com/l2jserver/gameserver/ai/L2AttackableAI.java (revision 6438)
+++ java/com/l2jserver/gameserver/ai/L2AttackableAI.java (working copy)
@@ -32,6 +32,7 @@
import com.l2jserver.gameserver.GameTimeController;
import com.l2jserver.gameserver.GeoData;
import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.datatables.NpcData;
import com.l2jserver.gameserver.datatables.TerritoryTable;
import com.l2jserver.gameserver.enums.AISkillScope;
@@ -292,7 +293,7 @@
return false;
}
- if (me.isChampion() && Config.L2JMOD_CHAMPION_PASSIVE)
+ if (me.isChampion() && ChampionData.getInstance().isPassive(me))
{
return false;
}
Index: java/com/l2jserver/Config.java
===================================================================
--- java/com/l2jserver/Config.java (revision 6438)
+++ java/com/l2jserver/Config.java (working copy)
@@ -104,6 +104,7 @@
public static final String CHAT_FILTER_FILE = "./config/chatfilter.txt";
public static final String EMAIL_CONFIG_FILE = "./config/Email.properties";
public static final String CH_SIEGE_FILE = "./config/ConquerableHallSiege.properties";
+ public static final String CHAMPION_MOD = "./config/ChampionMod.properties";
// --------------------------------------------------
// L2J Variable Definitions
// --------------------------------------------------
@@ -682,24 +683,6 @@
// --------------------------------------------------
// L2JMods Settings
// --------------------------------------------------
- public static boolean L2JMOD_CHAMPION_ENABLE;
- public static boolean L2JMOD_CHAMPION_PASSIVE;
- public static int L2JMOD_CHAMPION_FREQUENCY;
- public static String L2JMOD_CHAMP_TITLE;
- public static int L2JMOD_CHAMP_MIN_LVL;
- public static int L2JMOD_CHAMP_MAX_LVL;
- public static int L2JMOD_CHAMPION_HP;
- public static int L2JMOD_CHAMPION_REWARDS;
- public static float L2JMOD_CHAMPION_ADENAS_REWARDS;
- public static float L2JMOD_CHAMPION_HP_REGEN;
- public static float L2JMOD_CHAMPION_ATK;
- public static float L2JMOD_CHAMPION_SPD_ATK;
- public static int L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE;
- public static int L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE;
- public static int L2JMOD_CHAMPION_REWARD_ID;
- public static int L2JMOD_CHAMPION_REWARD_QTY;
- public static boolean L2JMOD_CHAMPION_ENABLE_VITALITY;
- public static boolean L2JMOD_CHAMPION_ENABLE_IN_INSTANCES;
public static boolean TVT_EVENT_ENABLED;
public static boolean TVT_EVENT_IN_INSTANCE;
public static String TVT_EVENT_INSTANCE_FILE;
@@ -985,6 +968,40 @@
public static int STARTING_VITALITY_POINTS;
// --------------------------------------------------
+ // Champion Mod Settings
+ // --------------------------------------------------
+ public static boolean CHAMPION_ENABLE;
+ public static boolean CHAMPION_PASSIVE;
+ public static int CHAMPION_FREQUENCY_EASY;
+ public static int CHAMPION_FREQUENCY_HARD;
+ public static String CHAMPION_TITLE_EASY;
+ public static String CHAMPION_TITLE_HARD;
+ public static int CHAMPION_MIN_LVL_EASY;
+ public static int CHAMPION_MIN_LVL_HARD;
+ public static int CHAMPION_MAX_LVL_EASY;
+ public static int CHAMPION_MAX_LVL_HARD;
+ public static int CHAMPION_HP_EASY;
+ public static int CHAMPION_HP_HARD;
+ public static int CHAMPION_REWARDS_EASY;
+ public static int CHAMPION_REWARDS_HARD;
+ public static float CHAMPION_ADENAS_REWARD_EASY;
+ public static float CHAMPION_ADENAS_REWARD_HARD;
+ public static float CHAMPION_HP_REGEN_EASY;
+ public static float CHAMPION_HP_REGEN_HARD;
+ public static float CHAMPION_ATK_EASY;
+ public static float CHAMPION_ATK_HARD;
+ public static float CHAMPION_SPD_ATK_EASY;
+ public static float CHAMPION_SPD_ATK_HARD;
+ public static int CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE;
+ public static int CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE;
+ public static int CHAMPION_REWARD_ID_EASY;
+ public static int CHAMPION_REWARD_ID_HARD;
+ public static int CHAMPION_REWARD_QTY_EASY;
+ public static int CHAMPION_REWARD_QTY_HARD;
+ public static boolean CHAMPION_ENABLE_VITALITY;
+ public static boolean CHAMPION_ENABLE_IN_INSTANCES;
+
+ // --------------------------------------------------
// No classification assigned to the following yet
// --------------------------------------------------
public static int MAX_ITEM_IN_PACKET;
@@ -2255,28 +2272,41 @@
}
}
+ // Load Champion Mod L2Properties file (if exists)
+ final PropertiesParser ChampionMod = new PropertiesParser(CHAMPION_MOD);
+ CHAMPION_ENABLE = ChampionMod.getBoolean("ChampionEnable", false);
+ CHAMPION_PASSIVE = ChampionMod.getBoolean("ChampionPassive", false);
+ CHAMPION_ENABLE_VITALITY = ChampionMod.getBoolean("ChampionEnableVitality", false);
+ CHAMPION_ENABLE_IN_INSTANCES = ChampionMod.getBoolean("ChampionEnableInInstances", false);
+ CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = ChampionMod.getInt("ChampionRewardLowerLvlItemChance", 0);
+ CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = ChampionMod.getInt("ChampionRewardHigherLvlItemChance", 0);
+ CHAMPION_FREQUENCY_EASY = ChampionMod.getInt("ChampionFrequencyEasy", 0);
+ CHAMPION_FREQUENCY_HARD = ChampionMod.getInt("ChampionFrequencyHard", 0);
+ CHAMPION_TITLE_EASY = ChampionMod.getString("ChampionTitleEasy", "Easy Champion");
+ CHAMPION_TITLE_HARD = ChampionMod.getString("ChampionTitleHard", "Hard Champion");
+ CHAMPION_MIN_LVL_EASY = ChampionMod.getInt("ChampionMinLevelEasy", 20);
+ CHAMPION_MIN_LVL_HARD = ChampionMod.getInt("ChampionMinLevelHard", 20);
+ CHAMPION_MAX_LVL_EASY = ChampionMod.getInt("ChampionMaxLevelEasy", 60);
+ CHAMPION_MAX_LVL_HARD = ChampionMod.getInt("ChampionMaxLevelHard", 60);
+ CHAMPION_HP_EASY = ChampionMod.getInt("ChampionHpEasy", 7);
+ CHAMPION_HP_HARD = ChampionMod.getInt("ChampionHpHard", 14);
+ CHAMPION_HP_REGEN_EASY = ChampionMod.getFloat("ChampionHpRegenEasy", 1);
+ CHAMPION_HP_REGEN_HARD = ChampionMod.getFloat("ChampionHpRegenHard", 1);
+ CHAMPION_REWARDS_EASY = ChampionMod.getInt("ChampionRewardsEasy", 2);
+ CHAMPION_REWARDS_HARD = ChampionMod.getInt("ChampionRewardsHard", 3);
+ CHAMPION_ADENAS_REWARD_EASY = ChampionMod.getFloat("ChampionAdenasRewardsEasy", 1);
+ CHAMPION_ADENAS_REWARD_HARD = ChampionMod.getFloat("ChampionAdenasRewardsHard", 2);
+ CHAMPION_ATK_EASY = ChampionMod.getFloat("ChampionAtkEasy", 1);
+ CHAMPION_ATK_HARD = ChampionMod.getFloat("ChampionAtkHard", 2);
+ CHAMPION_SPD_ATK_EASY = ChampionMod.getFloat("ChampionSpdAtkEasy", 1);
+ CHAMPION_SPD_ATK_HARD = ChampionMod.getFloat("ChampionSpdAtkHard", 2);
+ CHAMPION_REWARD_ID_EASY = ChampionMod.getInt("ChampionRewardItemIDEasy", 6393);
+ CHAMPION_REWARD_ID_HARD = ChampionMod.getInt("ChampionRewardItemIDHard", 6393);
+ CHAMPION_REWARD_QTY_EASY = ChampionMod.getInt("ChampionRewardItemQtyEasy", 1);
+ CHAMPION_REWARD_QTY_HARD = ChampionMod.getInt("ChampionRewardItemQtyHard", 2);
+
// Load L2JMod L2Properties file (if exists)
final PropertiesParser L2JModSettings = new PropertiesParser(L2JMOD_CONFIG_FILE);
-
- L2JMOD_CHAMPION_ENABLE = L2JModSettings.getBoolean("ChampionEnable", false);
- L2JMOD_CHAMPION_PASSIVE = L2JModSettings.getBoolean("ChampionPassive", false);
- L2JMOD_CHAMPION_FREQUENCY = L2JModSettings.getInt("ChampionFrequency", 0);
- L2JMOD_CHAMP_TITLE = L2JModSettings.getString("ChampionTitle", "Champion");
- L2JMOD_CHAMP_MIN_LVL = L2JModSettings.getInt("ChampionMinLevel", 20);
- L2JMOD_CHAMP_MAX_LVL = L2JModSettings.getInt("ChampionMaxLevel", 60);
- L2JMOD_CHAMPION_HP = L2JModSettings.getInt("ChampionHp", 7);
- L2JMOD_CHAMPION_HP_REGEN = L2JModSettings.getFloat("ChampionHpRegen", 1);
- L2JMOD_CHAMPION_REWARDS = L2JModSettings.getInt("ChampionRewards", 8);
- L2JMOD_CHAMPION_ADENAS_REWARDS = L2JModSettings.getFloat("ChampionAdenasRewards", 1);
- L2JMOD_CHAMPION_ATK = L2JModSettings.getFloat("ChampionAtk", 1);
- L2JMOD_CHAMPION_SPD_ATK = L2JModSettings.getFloat("ChampionSpdAtk", 1);
- L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = L2JModSettings.getInt("ChampionRewardLowerLvlItemChance", 0);
- L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = L2JModSettings.getInt("ChampionRewardHigherLvlItemChance", 0);
- L2JMOD_CHAMPION_REWARD_ID = L2JModSettings.getInt("ChampionRewardItemID", 6393);
- L2JMOD_CHAMPION_REWARD_QTY = L2JModSettings.getInt("ChampionRewardItemQty", 1);
- L2JMOD_CHAMPION_ENABLE_VITALITY = L2JModSettings.getBoolean("ChampionEnableVitality", false);
- L2JMOD_CHAMPION_ENABLE_IN_INSTANCES = L2JModSettings.getBoolean("ChampionEnableInInstances", false);
-
TVT_EVENT_ENABLED = L2JModSettings.getBoolean("TvTEventEnabled", false);
TVT_EVENT_IN_INSTANCE = L2JModSettings.getBoolean("TvTEventInInstance", false);
TVT_EVENT_INSTANCE_FILE = L2JModSettings.getString("TvTEventInstanceFile", "coliseum.xml");
@@ -3511,51 +3541,6 @@
case "commonrecipelimit":
COMMON_RECIPE_LIMIT = Integer.parseInt(pValue);
break;
- case "championenable":
- L2JMOD_CHAMPION_ENABLE = Boolean.parseBoolean(pValue);
- break;
- case "championfrequency":
- L2JMOD_CHAMPION_FREQUENCY = Integer.parseInt(pValue);
- break;
- case "championminlevel":
- L2JMOD_CHAMP_MIN_LVL = Integer.parseInt(pValue);
- break;
- case "championmaxlevel":
- L2JMOD_CHAMP_MAX_LVL = Integer.parseInt(pValue);
- break;
- case "championhp":
- L2JMOD_CHAMPION_HP = Integer.parseInt(pValue);
- break;
- case "championhpregen":
- L2JMOD_CHAMPION_HP_REGEN = Float.parseFloat(pValue);
- break;
- case "championrewards":
- L2JMOD_CHAMPION_REWARDS = Integer.parseInt(pValue);
- break;
- case "championadenasrewards":
- L2JMOD_CHAMPION_ADENAS_REWARDS = Float.parseFloat(pValue);
- break;
- case "championatk":
- L2JMOD_CHAMPION_ATK = Float.parseFloat(pValue);
- break;
- case "championspdatk":
- L2JMOD_CHAMPION_SPD_ATK = Float.parseFloat(pValue);
- break;
- case "championrewardlowerlvlitemchance":
- L2JMOD_CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE = Integer.parseInt(pValue);
- break;
- case "championrewardhigherlvlitemchance":
- L2JMOD_CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE = Integer.parseInt(pValue);
- break;
- case "championrewarditemid":
- L2JMOD_CHAMPION_REWARD_ID = Integer.parseInt(pValue);
- break;
- case "championrewarditemqty":
- L2JMOD_CHAMPION_REWARD_QTY = Integer.parseInt(pValue);
- break;
- case "championenableininstances":
- L2JMOD_CHAMPION_ENABLE_IN_INSTANCES = Boolean.parseBoolean(pValue);
- break;
case "allowwedding":
L2JMOD_ALLOW_WEDDING = Boolean.parseBoolean(pValue);
break;
Index: java/com/l2jserver/gameserver/datatables/ChampionData.java
===================================================================
--- java/com/l2jserver/gameserver/datatables/ChampionData.java (revision 0)
+++ java/com/l2jserver/gameserver/datatables/ChampionData.java (working copy)
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2004-2014 L2J Server
+ *
+ * This file is part of L2J Server.
+ *
+ * L2J Server 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.
+ *
+ * L2J Server 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 com.l2jserver.gameserver.datatables;
+
+import java.util.logging.Logger;
+
+import com.l2jserver.Config;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
+
+/**
+ * @author St3eT
+ */
+public class ChampionData
+{
+ private static final Logger _log = Logger.getLogger(ChampionData.class.getName());
+
+ public boolean isEnabled()
+ {
+ return Config.CHAMPION_ENABLE;
+ }
+
+ public boolean isPassive(L2Attackable champion)
+ {
+ // TODO: Implement it for both champions.
+ return Config.CHAMPION_PASSIVE;
+ }
+
+ public String getTitle(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_TITLE_HARD : Config.CHAMPION_TITLE_EASY;
+ }
+
+ public int getChance(boolean isHard)
+ {
+ return isHard ? Config.CHAMPION_FREQUENCY_HARD : Config.CHAMPION_FREQUENCY_EASY;
+ }
+
+ public int getMinLv(boolean isHard)
+ {
+ return isHard ? Config.CHAMPION_MIN_LVL_HARD : Config.CHAMPION_MIN_LVL_EASY;
+ }
+
+ public int getMaxLv(boolean isHard)
+ {
+ return isHard ? Config.CHAMPION_MAX_LVL_HARD : Config.CHAMPION_MAX_LVL_EASY;
+ }
+
+ public int getHpMultipler(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_HP_HARD : Config.CHAMPION_HP_EASY;
+ }
+
+ public int getRewardMultipler(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_REWARDS_HARD : Config.CHAMPION_REWARDS_EASY;
+ }
+
+ public float getAdenaMultipler(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_ADENAS_REWARD_HARD : Config.CHAMPION_ADENAS_REWARD_EASY;
+ }
+
+ public float getHpRegMultipler(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_HP_REGEN_HARD : Config.CHAMPION_HP_REGEN_EASY;
+ }
+
+ public float getAttackMultipler(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_ATK_HARD : Config.CHAMPION_ATK_EASY;
+ }
+
+ public float getAttacSpdkMultipler(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_SPD_ATK_HARD : Config.CHAMPION_SPD_ATK_EASY;
+ }
+
+ public int getLowerLvChance(L2Attackable champion)
+ {
+ // TODO: Implement it for both champions.
+ return Config.CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE;
+ }
+
+ public int getHigherLvChance(L2Attackable champion)
+ {
+ // TODO: Implement it for both champions.
+ return Config.CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE;
+ }
+
+ public int getRewardId(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_REWARD_ID_HARD : Config.CHAMPION_REWARD_ID_EASY;
+ }
+
+ public int getRewardCount(L2Attackable champion)
+ {
+ return champion.isHardChampion() ? Config.CHAMPION_REWARD_QTY_HARD : Config.CHAMPION_REWARD_QTY_EASY;
+ }
+
+ public boolean isEnabledVitality(L2Attackable champion)
+ {
+ // TODO: Implement it for both champions.
+ return Config.CHAMPION_ENABLE_VITALITY;
+ }
+
+ public boolean inInstanceEnabled()
+ {
+ return Config.CHAMPION_ENABLE_IN_INSTANCES;
+ }
+
+ /**
+ * Gets the single instance of ChampionData.
+ * @return single instance of ChampionData
+ */
+ public static ChampionData getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final ChampionData _instance = new ChampionData();
+ }
+}
\ No newline at end of file
Index: java/com/l2jserver/gameserver/model/L2Spawn.java
===================================================================
--- java/com/l2jserver/gameserver/model/L2Spawn.java (revision 6438)
+++ java/com/l2jserver/gameserver/model/L2Spawn.java (working copy)
@@ -30,6 +30,7 @@
import com.l2jserver.Config;
import com.l2jserver.gameserver.GeoData;
import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.datatables.NpcPersonalAIData;
import com.l2jserver.gameserver.datatables.TerritoryTable;
import com.l2jserver.gameserver.idfactory.IdFactory;
@@ -627,16 +628,26 @@
((L2Attackable) mob).setChampion(false);
}
- if (Config.L2JMOD_CHAMPION_ENABLE)
+ if (ChampionData.getInstance().isEnabled())
{
// Set champion on next spawn
- if (mob.isMonster() && !getTemplate().isUndying() && !mob.isRaid() && !mob.isRaidMinion() && (Config.L2JMOD_CHAMPION_FREQUENCY > 0) && (mob.getLevel() >= Config.L2JMOD_CHAMP_MIN_LVL) && (mob.getLevel() <= Config.L2JMOD_CHAMP_MAX_LVL) && (Config.L2JMOD_CHAMPION_ENABLE_IN_INSTANCES || (getInstanceId() == 0)))
+ if (mob.isMonster() && !getTemplate().isUndying() && !mob.isRaid() && !mob.isRaidMinion() && (mob.getLevel() >= ChampionData.getInstance().getMinLv(false)) && (mob.getLevel() <= ChampionData.getInstance().getMaxLv(false)) && (ChampionData.getInstance().inInstanceEnabled() || (getInstanceId() == 0)))
{
- if (Rnd.get(100) < Config.L2JMOD_CHAMPION_FREQUENCY)
+ if (Rnd.get(100) < ChampionData.getInstance().getChance(false))
{
((L2Attackable) mob).setChampion(true);
+ ((L2Attackable) mob).setHardChampion(false);
}
}
+
+ if (mob.isMonster() && !getTemplate().isUndying() && !mob.isRaid() && !mob.isRaidMinion() && (mob.getLevel() >= ChampionData.getInstance().getMinLv(true)) && (mob.getLevel() <= ChampionData.getInstance().getMaxLv(true)) && (ChampionData.getInstance().inInstanceEnabled() || (getInstanceId() == 0)))
+ {
+ if (Rnd.get(100) < ChampionData.getInstance().getChance(true))
+ {
+ ((L2Attackable) mob).setChampion(true);
+ ((L2Attackable) mob).setHardChampion(true);
+ }
+ }
}
// Link the L2NpcInstance to this L2Spawn
Index: java/com/l2jserver/gameserver/model/drops/GeneralDropItem.java
===================================================================
--- java/com/l2jserver/gameserver/model/drops/GeneralDropItem.java (revision 6438)
+++ java/com/l2jserver/gameserver/model/drops/GeneralDropItem.java (working copy)
@@ -22,6 +22,8 @@
import java.util.List;
import com.l2jserver.Config;
+import com.l2jserver.gameserver.datatables.ChampionData;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
@@ -80,7 +82,7 @@
double multiplier = 1;
if (victim.isChampion())
{
- multiplier *= getItemId() != Inventory.ADENA_ID ? Config.L2JMOD_CHAMPION_REWARDS : Config.L2JMOD_CHAMPION_ADENAS_REWARDS;
+ multiplier *= getItemId() != Inventory.ADENA_ID ? ChampionData.getInstance().getRewardMultipler((L2Attackable) victim) : ChampionData.getInstance().getAdenaMultipler((L2Attackable) victim);
}
Float dropChanceMultiplier = Config.RATE_DROP_AMOUNT_MULTIPLIER.get(getItemId());
if (dropChanceMultiplier != null)
@@ -110,7 +112,7 @@
double multiplier = 1;
if (victim.isChampion())
{
- multiplier *= getItemId() != Inventory.ADENA_ID ? Config.L2JMOD_CHAMPION_REWARDS : Config.L2JMOD_CHAMPION_ADENAS_REWARDS;
+ multiplier *= getItemId() != Inventory.ADENA_ID ? ChampionData.getInstance().getRewardMultipler((L2Attackable) victim) : ChampionData.getInstance().getAdenaMultipler((L2Attackable) victim);
}
Float dropChanceMultiplier = Config.RATE_DROP_AMOUNT_MULTIPLIER.get(getItemId());
if (dropChanceMultiplier != null)
Index: java/com/l2jserver/gameserver/model/actor/stat/CharStat.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/stat/CharStat.java (revision 6438)
+++ java/com/l2jserver/gameserver/model/actor/stat/CharStat.java (working copy)
@@ -21,8 +21,10 @@
import java.util.Arrays;
import com.l2jserver.Config;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.model.Elementals;
import com.l2jserver.gameserver.model.PcCondOverride;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.items.L2Weapon;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
@@ -298,9 +300,9 @@
public int getMAtk(L2Character target, L2Skill skill)
{
float bonusAtk = 1;
- if (Config.L2JMOD_CHAMPION_ENABLE && _activeChar.isChampion())
+ if (ChampionData.getInstance().isEnabled() && _activeChar.isChampion())
{
- bonusAtk = Config.L2JMOD_CHAMPION_ATK;
+ bonusAtk = ChampionData.getInstance().getAttackMultipler((L2Attackable) _activeChar);
}
if (_activeChar.isRaid())
{
@@ -317,9 +319,9 @@
public int getMAtkSpd()
{
float bonusSpdAtk = 1;
- if (Config.L2JMOD_CHAMPION_ENABLE && _activeChar.isChampion())
+ if (ChampionData.getInstance().isEnabled() && _activeChar.isChampion())
{
- bonusSpdAtk = Config.L2JMOD_CHAMPION_SPD_ATK;
+ bonusSpdAtk = ChampionData.getInstance().getAttacSpdkMultipler((L2Attackable) _activeChar);
}
double val = calcStat(Stats.MAGIC_ATTACK_SPEED, _activeChar.getTemplate().getBaseMAtkSpd() * bonusSpdAtk);
@@ -429,9 +431,9 @@
public int getPAtk(L2Character target)
{
float bonusAtk = 1;
- if (Config.L2JMOD_CHAMPION_ENABLE && _activeChar.isChampion())
+ if (ChampionData.getInstance().isEnabled() && _activeChar.isChampion())
{
- bonusAtk = Config.L2JMOD_CHAMPION_ATK;
+ bonusAtk = ChampionData.getInstance().getAttackMultipler((L2Attackable) _activeChar);
}
if (_activeChar.isRaid())
{
@@ -446,9 +448,9 @@
public int getPAtkSpd()
{
float bonusAtk = 1;
- if (Config.L2JMOD_CHAMPION_ENABLE && _activeChar.isChampion())
+ if (ChampionData.getInstance().isEnabled() && _activeChar.isChampion())
{
- bonusAtk = Config.L2JMOD_CHAMPION_SPD_ATK;
+ bonusAtk = ChampionData.getInstance().getAttacSpdkMultipler((L2Attackable) _activeChar);
}
int val = (int) Math.round(calcStat(Stats.POWER_ATTACK_SPEED, _activeChar.getTemplate().getBasePAtkSpd() * bonusAtk, null, null));
return val;
Index: java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java
===================================================================
--- java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java (revision 6438)
+++ java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java (working copy)
@@ -19,10 +19,13 @@
package com.l2jserver.gameserver.network.serverpackets;
import com.l2jserver.Config;
+import com.l2jserver.gameserver.datatables.ChampionData;
import com.l2jserver.gameserver.datatables.ClanTable;
+import com.l2jserver.gameserver.enums.Team;
import com.l2jserver.gameserver.instancemanager.TownManager;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.PcCondOverride;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.L2Summon;
@@ -99,9 +102,9 @@
_name = cha.getName();// On every subclass
}
- if (Config.L2JMOD_CHAMPION_ENABLE && cha.isChampion())
+ if (ChampionData.getInstance().isEnabled() && cha.isChampion())
{
- _title = (Config.L2JMOD_CHAMP_TITLE); // On every subclass
+ _title = ChampionData.getInstance().getTitle((L2Attackable) cha);
}
else if (cha.getTemplate().isUsingServerSideTitle())
{
@@ -189,8 +192,16 @@
writeD(_allyCrest); // all crest
writeC(_npc.isInsideZone(ZoneId.WATER) ? 1 : _npc.isFlying() ? 2 : 0); // C2
- writeC(_npc.getTeam().getId());
+ if (_npc.isChampion())
+ {
+ writeC(((L2Attackable) _npc).isHardChampion() ? Team.RED.getId() : Team.BLUE.getId());
+ }
+ else
+ {
+ writeC(_npc.getTeam().getId());
+ }
+
writeF(_collisionRadius);
writeF(_collisionHeight);
writeD(_enchantEffect); // C4

---> Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate