Updated StatsSet to match newer branches.

This commit is contained in:
MobiusDevelopment 2019-08-23 11:44:27 +00:00
parent 2bd3168bb2
commit aef227ea6c
111 changed files with 2271 additions and 1199 deletions

View File

@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.geoengine.GeoEngine;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
@ -46,7 +47,6 @@ import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
/**
@ -259,12 +259,12 @@ public class Antharas extends Quest
}
else if (status == FIGHTING)
{
final int loc_x = info.getInteger("loc_x");
final int loc_y = info.getInteger("loc_y");
final int loc_z = info.getInteger("loc_z");
final int heading = info.getInteger("heading");
final int hp = info.getInteger("currentHP");
final int mp = info.getInteger("currentMP");
final int loc_x = info.getInt("loc_x");
final int loc_y = info.getInt("loc_y");
final int loc_z = info.getInt("loc_z");
final int heading = info.getInt("heading");
final int hp = info.getInt("currentHP");
final int mp = info.getInt("currentMP");
_antharas = (GrandBossInstance) addSpawn(ANTHARASOLDID, loc_x, loc_y, loc_z, heading, false, 0);
GrandBossManager.getInstance().addBoss(_antharas);
_antharas.setCurrentHpMp(hp, mp);
@ -312,12 +312,12 @@ public class Antharas extends Quest
if ((antharasId != 0) && (status == FIGHTING))
{
final StatsSet info = GrandBossManager.getInstance().getStatsSet(antharasId);
final int loc_x = info.getInteger("loc_x");
final int loc_y = info.getInteger("loc_y");
final int loc_z = info.getInteger("loc_z");
final int heading = info.getInteger("heading");
final int hp = info.getInteger("currentHP");
final int mp = info.getInteger("currentMP");
final int loc_x = info.getInt("loc_x");
final int loc_y = info.getInt("loc_y");
final int loc_z = info.getInt("loc_z");
final int heading = info.getInt("heading");
final int hp = info.getInt("currentHP");
final int mp = info.getInt("currentMP");
_antharas = (GrandBossInstance) addSpawn(antharasId, loc_x, loc_y, loc_z, heading, false, 0);
GrandBossManager.getInstance().addBoss(_antharas);
_antharas.setCurrentHpMp(hp, mp);

View File

@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.geoengine.GeoEngine;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
@ -48,7 +49,6 @@ import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.util.Util;
/**
@ -139,12 +139,12 @@ public class Baium extends Quest
}
else if (status == AWAKE)
{
final int loc_x = info.getInteger("loc_x");
final int loc_y = info.getInteger("loc_y");
final int loc_z = info.getInteger("loc_z");
final int heading = info.getInteger("heading");
final int hp = info.getInteger("currentHP");
final int mp = info.getInteger("currentMP");
final int loc_x = info.getInt("loc_x");
final int loc_y = info.getInt("loc_y");
final int loc_z = info.getInt("loc_z");
final int heading = info.getInt("heading");
final int hp = info.getInt("currentHP");
final int mp = info.getInt("currentMP");
final GrandBossInstance baium = (GrandBossInstance) addSpawn(LIVE_BAIUM, loc_x, loc_y, loc_z, heading, false, 0);
if (Config.ANNOUNCE_TO_ALL_SPAWN_RB)
{

View File

@ -26,6 +26,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Attackable;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
@ -34,7 +35,6 @@ import org.l2jmobius.gameserver.model.entity.Announcements;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.network.serverpackets.CreatureSay;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* Core AI

View File

@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.CommandChannel;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Attackable;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
@ -47,7 +48,6 @@ import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* Frintezza AI

View File

@ -21,13 +21,13 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.datatables.SkillTable;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.entity.Announcements;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* @author Shyla
@ -94,8 +94,8 @@ public class Orfen extends Quest
final int loc_y = 17368;
final int loc_z = -5412;
final int heading = 0;
final int hp = info.getInteger("currentHP");
final int mp = info.getInteger("currentMP");
final int hp = info.getInt("currentHP");
final int mp = info.getInt("currentMP");
_orfen = (GrandBossInstance) addSpawn(ORFEN, loc_x, loc_y, loc_z, heading, false, 0);
if (Config.ANNOUNCE_TO_ALL_SPAWN_RB)
{

View File

@ -24,6 +24,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.datatables.SkillTable;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Attackable;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
@ -34,7 +35,6 @@ import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.zone.type.BossZone;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.templates.StatsSet;
public class QueenAnt extends Quest
{
@ -121,8 +121,8 @@ public class QueenAnt extends Quest
/*
* int loc_x = info.getInteger("loc_x"); int loc_y = info.getInteger("loc_y"); int loc_z = info.getInteger("loc_z"); int heading = info.getInteger("heading");
*/
final int hp = info.getInteger("currentHP");
final int mp = info.getInteger("currentMP");
final int hp = info.getInt("currentHP");
final int mp = info.getInt("currentMP");
final GrandBossInstance queen = (GrandBossInstance) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0);
if (Config.ANNOUNCE_TO_ALL_SPAWN_RB)
{

View File

@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.datatables.SkillTable;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
@ -40,7 +41,6 @@ import org.l2jmobius.gameserver.model.zone.type.BossZone;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.util.Util;
/**
@ -122,8 +122,8 @@ public class Valakas extends Quest
final int loc_z = -1595;
final int heading = 0;
final int hp = info.getInteger("currentHP");
final int mp = info.getInteger("currentMP");
final int hp = info.getInt("currentHP");
final int mp = info.getInt("currentMP");
final GrandBossInstance valakas = (GrandBossInstance) addSpawn(VALAKAS, loc_x, loc_y, loc_z, heading, false, 0);
GrandBossManager.getInstance().addBoss(valakas);
final NpcInstance _valakas = valakas;

View File

@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.instance.DoorInstance;
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -49,7 +50,6 @@ import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.spawn.Spawn;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
/**

View File

@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.datatables.csv.DoorTable;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Attackable;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
@ -36,7 +37,6 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.zone.type.BossZone;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* Zaken AI
@ -185,12 +185,12 @@ public class Zaken extends Quest
}
else
{
final int loc_x = info.getInteger("loc_x");
final int loc_y = info.getInteger("loc_y");
final int loc_z = info.getInteger("loc_z");
final int heading = info.getInteger("heading");
final int hp = info.getInteger("currentHP");
final int mp = info.getInteger("currentMP");
final int loc_x = info.getInt("loc_x");
final int loc_y = info.getInt("loc_y");
final int loc_z = info.getInt("loc_z");
final int heading = info.getInt("heading");
final int hp = info.getInt("currentHP");
final int mp = info.getInt("currentMP");
final GrandBossInstance zaken = (GrandBossInstance) addSpawn(ZAKEN, loc_x, loc_y, loc_z, heading, false, 0);
zaken.setCurrentHpMp(hp, mp);
spawnBoss(zaken);

View File

@ -89,7 +89,7 @@ public class Q211_TrialOfTheChallenger extends Quest
st.set("cond", "1");
st.playSound(QuestState.SOUND_ACCEPT);
if (!player.getVariables().getBool("secondClassChange35", false))
if (!player.getVariables().getBoolean("secondClassChange35", false))
{
htmltext = "30644-05a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId()));

View File

@ -85,7 +85,7 @@ public class Q212_TrialOfDuty extends Quest
st.set("cond", "1");
st.playSound(QuestState.SOUND_ACCEPT);
if (!player.getVariables().getBool("secondClassChange35", false))
if (!player.getVariables().getBoolean("secondClassChange35", false))
{
htmltext = "30109-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId()));

View File

@ -107,7 +107,7 @@ public class Q213_TrialOfTheSeeker extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(DUFNER_LETTER, 1);
if (!player.getVariables().getBool("secondClassChange35", false))
if (!player.getVariables().getBoolean("secondClassChange35", false))
{
htmltext = "30106-05a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId()));

View File

@ -135,7 +135,7 @@ public class Q214_TrialOfTheScholar extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(MIRIEN_SIGIL_1, 1);
if (!player.getVariables().getBool("secondClassChange35", false))
if (!player.getVariables().getBoolean("secondClassChange35", false))
{
htmltext = "30461-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId()));

View File

@ -93,7 +93,7 @@ public class Q215_TrialOfThePilgrim extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(VOUCHER_OF_TRIAL, 1);
if (!player.getVariables().getBool("secondClassChange35", false))
if (!player.getVariables().getBoolean("secondClassChange35", false))
{
htmltext = "30648-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId()));

View File

@ -110,7 +110,7 @@ public class Q216_TrialOfTheGuildsman extends Quest
st.takeItems(57, 2000);
st.giveItems(VALKON_RECOMMENDATION, 1);
if (!player.getVariables().getBool("secondClassChange35", false))
if (!player.getVariables().getBoolean("secondClassChange35", false))
{
htmltext = "30103-06d.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId()));

View File

@ -123,7 +123,7 @@ public class Q217_TestimonyOfTrust extends Quest
st.giveItems(LETTER_TO_ELF, 1);
st.giveItems(LETTER_TO_DARK_ELF, 1);
if (!player.getVariables().getBool("secondClassChange37", false))
if (!player.getVariables().getBoolean("secondClassChange37", false))
{
htmltext = "30191-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal()));

View File

@ -108,7 +108,7 @@ public class Q218_TestimonyOfLife extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(CARDIEN_LETTER, 1);
if (!player.getVariables().getBool("secondClassChange37", false))
if (!player.getVariables().getBoolean("secondClassChange37", false))
{
htmltext = "30460-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal()));

View File

@ -138,7 +138,7 @@ public class Q219_TestimonyOfFate extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(KAIRA_LETTER, 1);
if (!player.getVariables().getBool("secondClassChange37", false))
if (!player.getVariables().getBoolean("secondClassChange37", false))
{
htmltext = "30476-05a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal()));

View File

@ -136,7 +136,7 @@ public class Q220_TestimonyOfGlory extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(VOKIAN_ORDER_1, 1);
if (!player.getVariables().getBool("secondClassChange37", false))
if (!player.getVariables().getBoolean("secondClassChange37", false))
{
htmltext = "30514-05a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal()));

View File

@ -140,7 +140,7 @@ public class Q221_TestimonyOfProsperity extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(RING_OF_TESTIMONY_1, 1);
if (!player.getVariables().getBool("secondClassChange37", false))
if (!player.getVariables().getBoolean("secondClassChange37", false))
{
htmltext = "30104-04e.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal()));

View File

@ -114,7 +114,7 @@ public class Q222_TestOfTheDuelist extends Quest
st.giveItems(ORDER_OREN, 1);
st.giveItems(ORDER_ADEN, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30623-07a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -103,7 +103,7 @@ public class Q223_TestOfTheChampion extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(ASCALON_LETTER_1, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30624-06a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -112,7 +112,7 @@ public class Q224_TestOfSagittarius extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(BERNARD_INTRODUCTION, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30702-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -108,7 +108,7 @@ public class Q225_TestOfTheSearcher extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(LUTHER_LETTER, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30690-05a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -99,7 +99,7 @@ public class Q226_TestOfTheHealer extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(REPORT_OF_PERRIN, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30473-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -122,7 +122,7 @@ public class Q227_TestOfTheReformer extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(BOOK_OF_REFORM, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30118-04b.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -111,7 +111,7 @@ public class Q228_TestOfMagus extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(RUKAL_LETTER, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30629-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -125,7 +125,7 @@ public class Q229_TestOfWitchcraft extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(ORIM_DIAGRAM, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30630-08a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -202,7 +202,7 @@ public class Q230_TestOfTheSummoner extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(GALATEA_LETTER, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30634-08a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -96,7 +96,7 @@ public class Q231_TestOfTheMaestro extends Quest
st.set("cond", "1");
st.playSound(QuestState.SOUND_ACCEPT);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30531-04a.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -105,7 +105,7 @@ public class Q232_TestOfTheLord extends Quest
st.playSound(QuestState.SOUND_ACCEPT);
st.giveItems(ORDEAL_NECKLACE, 1);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30565-05b.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -120,7 +120,7 @@ public class Q233_TestOfTheWarSpirit extends Quest
st.set("cond", "1");
st.playSound(QuestState.SOUND_ACCEPT);
if (!player.getVariables().getBool("secondClassChange39", false))
if (!player.getVariables().getBoolean("secondClassChange39", false))
{
htmltext = "30510-05e.htm";
st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId()));

View File

@ -0,0 +1,125 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.commons.util;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
/**
* @author UnAfraid
*/
public class TimeUtil
{
private static int findIndexOfNonDigit(CharSequence text)
{
for (int i = 0; i < text.length(); i++)
{
if (Character.isDigit(text.charAt(i)))
{
continue;
}
return i;
}
return -1;
}
/**
* Parses patterns like:
* <ul>
* <li>1min or 10mins</li>
* <li>1day or 10days</li>
* <li>1week or 4weeks</li>
* <li>1month or 12months</li>
* <li>1year or 5years</li>
* </ul>
* @param datePattern
* @return {@link Duration} object converted by the date pattern specified.
* @throws IllegalStateException when malformed pattern specified.
*/
public static Duration parseDuration(String datePattern)
{
final int index = findIndexOfNonDigit(datePattern);
if (index == -1)
{
throw new IllegalStateException("Incorrect time format given: " + datePattern);
}
try
{
final int val = Integer.parseInt(datePattern.substring(0, index));
final String type = datePattern.substring(index);
final ChronoUnit unit;
switch (type.toLowerCase())
{
case "sec":
case "secs":
{
unit = ChronoUnit.SECONDS;
break;
}
case "min":
case "mins":
{
unit = ChronoUnit.MINUTES;
break;
}
case "hour":
case "hours":
{
unit = ChronoUnit.HOURS;
break;
}
case "day":
case "days":
{
unit = ChronoUnit.DAYS;
break;
}
case "week":
case "weeks":
{
unit = ChronoUnit.WEEKS;
break;
}
case "month":
case "months":
{
unit = ChronoUnit.MONTHS;
break;
}
case "year":
case "years":
{
unit = ChronoUnit.YEARS;
break;
}
default:
{
unit = ChronoUnit.valueOf(type);
if (unit == null)
{
throw new IllegalStateException("Incorrect format: " + type + " !!");
}
}
}
return Duration.of(val, unit);
}
catch (Exception e)
{
throw new IllegalStateException("Incorrect time format given: " + datePattern + " val: " + datePattern.substring(0, index));
}
}
}

View File

@ -41,7 +41,6 @@ import org.l2jmobius.gameserver.cache.CrestCache;
import org.l2jmobius.gameserver.cache.HtmCache;
import org.l2jmobius.gameserver.communitybbs.Manager.ForumsBBSManager;
import org.l2jmobius.gameserver.datatables.BufferTable;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.HeroSkillTable;
import org.l2jmobius.gameserver.datatables.NobleSkillTable;
import org.l2jmobius.gameserver.datatables.OfflineTradeTable;
@ -55,8 +54,6 @@ import org.l2jmobius.gameserver.datatables.csv.NpcWalkerRoutesTable;
import org.l2jmobius.gameserver.datatables.csv.RecipeTable;
import org.l2jmobius.gameserver.datatables.csv.StaticObjects;
import org.l2jmobius.gameserver.datatables.csv.SummonItemsData;
import org.l2jmobius.gameserver.datatables.sql.AccessLevels;
import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights;
import org.l2jmobius.gameserver.datatables.sql.ArmorSetsTable;
import org.l2jmobius.gameserver.datatables.sql.CharNameTable;
import org.l2jmobius.gameserver.datatables.sql.CharTemplateTable;
@ -71,6 +68,7 @@ import org.l2jmobius.gameserver.datatables.sql.SkillSpellbookTable;
import org.l2jmobius.gameserver.datatables.sql.SkillTreeTable;
import org.l2jmobius.gameserver.datatables.sql.SpawnTable;
import org.l2jmobius.gameserver.datatables.sql.TeleportLocationTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.datatables.xml.AugmentationData;
import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
import org.l2jmobius.gameserver.datatables.xml.FenceData;
@ -387,9 +385,7 @@ public class GameServer
Hero.getInstance();
Util.printSection("Access Levels");
AccessLevels.getInstance();
AdminCommandAccessRights.getInstance();
GmListTable.getInstance();
AdminData.getInstance();
Util.printSection("Handlers");
ItemHandler.getInstance();

View File

@ -31,9 +31,9 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.idfactory.IdFactory;
import org.l2jmobius.gameserver.instancemanager.ClanHallManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.instance.DoorInstance;
import org.l2jmobius.gameserver.model.entity.ClanHall;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.CreatureTemplate;
public class DoorTable

View File

@ -28,7 +28,7 @@ import java.util.StringTokenizer;
import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.templates.item.Henna;
/**

View File

@ -25,8 +25,8 @@ import java.util.Map;
import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.PlayerTemplate;
/**

View File

@ -25,8 +25,8 @@ import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.datatables.csv.HennaTable;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.templates.HelperBuff;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* This class represents the Newbie Helper Buff list. Author: Ayor

View File

@ -33,10 +33,10 @@ import org.l2jmobius.gameserver.model.DropCategory;
import org.l2jmobius.gameserver.model.DropData;
import org.l2jmobius.gameserver.model.MinionData;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.skills.BaseStats;
import org.l2jmobius.gameserver.skills.Stats;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
/**
@ -623,7 +623,7 @@ public class NpcTable
String name = "";
String values = "";
final NpcTemplate old = getTemplate(npc.getInteger("npcId"));
final NpcTemplate old = getTemplate(npc.getInt("npcId"));
for (Object obj : set.keySet())
{
@ -649,7 +649,7 @@ public class NpcTable
{
statement = con.prepareStatement("UPDATE npc SET " + values + " WHERE id = ?");
}
statement.setInt(1, npc.getInteger("npcId"));
statement.setInt(1, npc.getInt("npcId"));
statement.execute();
statement.close();
}

View File

@ -34,6 +34,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.datatables.SkillTable;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.base.Race;
import org.l2jmobius.gameserver.skills.Env;
@ -71,7 +72,6 @@ import org.l2jmobius.gameserver.skills.funcs.Lambda;
import org.l2jmobius.gameserver.skills.funcs.LambdaCalc;
import org.l2jmobius.gameserver.skills.funcs.LambdaConst;
import org.l2jmobius.gameserver.skills.funcs.LambdaStats;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.item.ArmorType;
import org.l2jmobius.gameserver.templates.item.Item;
import org.l2jmobius.gameserver.templates.item.Weapon;

View File

@ -26,7 +26,7 @@ import java.util.logging.Level;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.templates.item.Armor;
import org.l2jmobius.gameserver.templates.item.ArmorType;
import org.l2jmobius.gameserver.templates.item.EtcItem;
@ -408,7 +408,7 @@ final class DocumentItem extends DocumentBase
}
else
{
throw new Error("Unknown item type for " + _currentItem.set.getInteger("item_id") + " " + _currentItem.type);
throw new Error("Unknown item type for " + _currentItem.set.getInt("item_id") + " " + _currentItem.type);
}
}

View File

@ -26,8 +26,8 @@ import org.w3c.dom.Node;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.skills.conditions.Condition;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* @author mkizub

View File

@ -16,7 +16,7 @@
*/
package org.l2jmobius.gameserver.engines;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.templates.item.Item;
/**

View File

@ -20,7 +20,7 @@ import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.model.StatsSet;
/**
* @author Mobius

View File

@ -28,8 +28,8 @@ import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.idfactory.IdFactory;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.instance.BoatInstance;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.CreatureTemplate;
public class BoatManager

View File

@ -16,11 +16,9 @@
*/
package org.l2jmobius.gameserver.instancemanager;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.sql.AccessLevels;
import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights;
import org.l2jmobius.gameserver.datatables.sql.ClanTable;
import org.l2jmobius.gameserver.datatables.sql.HelperBuffTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.datatables.xml.AugmentationData;
import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
@ -28,9 +26,7 @@ public class DatatablesManager
{
public static void reloadAll()
{
AccessLevels.reload();
AdminCommandAccessRights.reload();
GmListTable.reload();
AdminData.getInstance().load();
AugmentationData.reload();
ClanTable.reload();
HelperBuffTable.reload();

View File

@ -61,14 +61,14 @@ public class GlobalVariablesManager extends AbstractVariables
}
catch (SQLException e)
{
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore global variables");
LOGGER.warning(getClass().getSimpleName() + ": Couldn't restore global variables.");
return false;
}
finally
{
compareAndSetChanges(true, false);
}
LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + getSet().size() + " variables.");
LOGGER.info(getClass().getSimpleName() + ": Loaded " + getSet().size() + " variables.");
return true;
}
@ -106,7 +106,23 @@ public class GlobalVariablesManager extends AbstractVariables
{
compareAndSetChanges(true, false);
}
LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Stored " + getSet().size() + " variables.");
LOGGER.info(getClass().getSimpleName() + ": Stored " + getSet().size() + " variables.");
return true;
}
@Override
public boolean deleteMe()
{
try (Connection con = DatabaseFactory.getConnection();
Statement del = con.createStatement())
{
del.execute(DELETE_QUERY);
}
catch (Exception e)
{
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete global variables to database.", e);
return false;
}
return true;
}

View File

@ -29,11 +29,11 @@ import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
import org.l2jmobius.gameserver.model.zone.type.BossZone;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
/**

View File

@ -25,7 +25,7 @@ import java.util.Map;
import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.idfactory.IdFactory;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -592,7 +592,7 @@ public class PetitionManager
// Notify all GMs that a new petition has been submitted.
String msgContent = petitioner.getName() + " has submitted a new petition."; // (ID: " + newPetitionId + ").";
GmListTable.broadcastToGMs(new CreatureSay(petitioner.getObjectId(), 17, "Petition System", msgContent));
AdminData.broadcastToGMs(new CreatureSay(petitioner.getObjectId(), 17, "Petition System", msgContent));
return newPetitionId;
}

View File

@ -31,15 +31,15 @@ import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.datatables.sql.SpawnTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.enums.RaidBossStatus;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.instance.RaidBossInstance;
import org.l2jmobius.gameserver.model.entity.Announcements;
import org.l2jmobius.gameserver.model.spawn.Spawn;
import org.l2jmobius.gameserver.skills.Stats;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
/**
@ -150,7 +150,7 @@ public class RaidBossSpawnManager
_storedInfo.put(bossId, info);
GmListTable.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName() + ".");
AdminData.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName() + ".");
if (Config.ANNOUNCE_TO_ALL_SPAWN_RB)
{
Announcements.getInstance().announceToAll("Raid boss " + raidboss.getName() + " spawned in world.");
@ -509,7 +509,7 @@ public class RaidBossSpawnManager
_storedInfo.put(raidboss.getNpcId(), info);
GmListTable.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName());
AdminData.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName());
_bosses.put(raidboss.getNpcId(), raidboss);
}

View File

@ -17,7 +17,6 @@
package org.l2jmobius.gameserver.model;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* @author kombat
@ -95,7 +94,7 @@ public class ChanceCondition
try
{
final TriggerType trigger = set.getEnum("chanceType", TriggerType.class);
final int chance = set.getInteger("activationChance", 0);
final int chance = set.getInt("activationChance", 0);
if ((trigger != null) && (chance > 0))
{
return new ChanceCondition(trigger, chance);

View File

@ -16,8 +16,6 @@
*/
package org.l2jmobius.gameserver.model;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* @author Rayan RPG
* @since 927
@ -139,12 +137,12 @@ public class NpcWalkerNode
*/
public NpcWalkerNode(StatsSet set)
{
_npcId = set.getInteger("npc_id");
_npcId = set.getInt("npc_id");
_movePoint = set.getString("move_point");
_chatText = set.getString("chatText");
_moveX = set.getInteger("move_x");
_moveX = set.getInteger("move_y");
_moveX = set.getInteger("move_z");
_delay = set.getInteger("delay");
_moveX = set.getInt("move_x");
_moveX = set.getInt("move_y");
_moveX = set.getInt("move_z");
_delay = set.getInt("delay");
}
}

View File

@ -72,7 +72,6 @@ import org.l2jmobius.gameserver.skills.handlers.SkillSeed;
import org.l2jmobius.gameserver.skills.handlers.SkillSignet;
import org.l2jmobius.gameserver.skills.handlers.SkillSignetCasttime;
import org.l2jmobius.gameserver.skills.handlers.SkillSummon;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.util.Util;
public abstract class Skill
@ -515,84 +514,84 @@ public abstract class Skill
protected Skill(StatsSet set)
{
_id = set.getInteger("skill_id", 0);
_level = set.getInteger("level", 1);
_id = set.getInt("skill_id", 0);
_level = set.getInt("level", 1);
_advancedFlag = set.getBool("advancedFlag", false);
_advancedMultiplier = set.getInteger("advancedMultiplier", 1);
_advancedFlag = set.getBoolean("advancedFlag", false);
_advancedMultiplier = set.getInt("advancedMultiplier", 1);
_displayId = set.getInteger("displayId", _id);
_displayId = set.getInt("displayId", _id);
_name = set.getString("name");
_operateType = set.getEnum("operateType", SkillOpType.class);
_magic = set.getBool("isMagic", false);
_staticReuse = set.getBool("staticReuse", false);
_staticHitTime = set.getBool("staticHitTime", false);
_ispotion = set.getBool("isPotion", false);
_mpConsume = set.getInteger("mpConsume", 0);
_mpInitialConsume = set.getInteger("mpInitialConsume", 0);
_hpConsume = set.getInteger("hpConsume", 0);
_itemConsume = set.getInteger("itemConsumeCount", 0);
_itemConsumeId = set.getInteger("itemConsumeId", 0);
_itemConsumeOT = set.getInteger("itemConsumeCountOT", 0);
_itemConsumeIdOT = set.getInteger("itemConsumeIdOT", 0);
_itemConsumeTime = set.getInteger("itemConsumeTime", 0);
_itemConsumeSteps = set.getInteger("itemConsumeSteps", 0);
_summonTotalLifeTime = set.getInteger("summonTotalLifeTime", 1200000); // 20 minutes default
_summonTimeLostIdle = set.getInteger("summonTimeLostIdle", 0);
_summonTimeLostActive = set.getInteger("summonTimeLostActive", 0);
_magic = set.getBoolean("isMagic", false);
_staticReuse = set.getBoolean("staticReuse", false);
_staticHitTime = set.getBoolean("staticHitTime", false);
_ispotion = set.getBoolean("isPotion", false);
_mpConsume = set.getInt("mpConsume", 0);
_mpInitialConsume = set.getInt("mpInitialConsume", 0);
_hpConsume = set.getInt("hpConsume", 0);
_itemConsume = set.getInt("itemConsumeCount", 0);
_itemConsumeId = set.getInt("itemConsumeId", 0);
_itemConsumeOT = set.getInt("itemConsumeCountOT", 0);
_itemConsumeIdOT = set.getInt("itemConsumeIdOT", 0);
_itemConsumeTime = set.getInt("itemConsumeTime", 0);
_itemConsumeSteps = set.getInt("itemConsumeSteps", 0);
_summonTotalLifeTime = set.getInt("summonTotalLifeTime", 1200000); // 20 minutes default
_summonTimeLostIdle = set.getInt("summonTimeLostIdle", 0);
_summonTimeLostActive = set.getInt("summonTimeLostActive", 0);
_castRange = set.getInteger("castRange", 0);
_effectRange = set.getInteger("effectRange", -1);
_castRange = set.getInt("castRange", 0);
_effectRange = set.getInt("effectRange", -1);
_hitTime = set.getInteger("hitTime", 0);
_coolTime = set.getInteger("coolTime", 0);
_hitTime = set.getInt("hitTime", 0);
_coolTime = set.getInt("coolTime", 0);
// _skillInterruptTime = set.getInteger("hitTime", _hitTime / 2);
_reuseDelay = set.getInteger("reuseDelay", 0);
_buffDuration = set.getInteger("buffDuration", 0);
_reuseDelay = set.getInt("reuseDelay", 0);
_buffDuration = set.getInt("buffDuration", 0);
_skillRadius = set.getInteger("skillRadius", 80);
_skillRadius = set.getInt("skillRadius", 80);
_targetType = set.getEnum("target", SkillTargetType.class);
_power = set.getFloat("power", 0.f);
_effectPoints = set.getInteger("effectPoints", 0);
_effectPoints = set.getInt("effectPoints", 0);
_negateSkillTypes = set.getString("negateSkillTypes", "").split(" ");
_negateEffectTypes = set.getString("negateEffectTypes", "").split(" ");
_negatePower = set.getFloat("negatePower", 0.f);
_negateId = set.getInteger("negateId", 0);
_magicLevel = set.getInteger("magicLvl", SkillTreeTable.getInstance().getMinSkillLevel(_id, _level));
_levelDepend = set.getInteger("lvlDepend", 0);
_negateId = set.getInt("negateId", 0);
_magicLevel = set.getInt("magicLvl", SkillTreeTable.getInstance().getMinSkillLevel(_id, _level));
_levelDepend = set.getInt("lvlDepend", 0);
_stat = set.getEnum("stat", Stats.class, null);
_skillType = set.getEnum("skillType", SkillType.class);
_effectType = set.getEnum("effectType", SkillType.class, null);
_effectPower = set.getInteger("effectPower", 0);
_effectId = set.getInteger("effectId", 0);
_effectLvl = set.getInteger("effectLevel", 0);
_effectPower = set.getInt("effectPower", 0);
_effectId = set.getInt("effectId", 0);
_effectLvl = set.getInt("effectLevel", 0);
_element = set.getInteger("element", 0);
_element = set.getInt("element", 0);
_saveVs = set.getEnum("saveVs", BaseStats.class, null);
_condition = set.getInteger("condition", 0);
_conditionValue = set.getInteger("conditionValue", 0);
_overhit = set.getBool("overHit", false);
_isSuicideAttack = set.getBool("isSuicideAttack", false);
_weaponsAllowed = set.getInteger("weaponsAllowed", 0);
_armorsAllowed = set.getInteger("armorsAllowed", 0);
_condition = set.getInt("condition", 0);
_conditionValue = set.getInt("conditionValue", 0);
_overhit = set.getBoolean("overHit", false);
_isSuicideAttack = set.getBoolean("isSuicideAttack", false);
_weaponsAllowed = set.getInt("weaponsAllowed", 0);
_armorsAllowed = set.getInt("armorsAllowed", 0);
_addCrossLearn = set.getInteger("addCrossLearn", 1000);
_addCrossLearn = set.getInt("addCrossLearn", 1000);
_mulCrossLearn = set.getFloat("mulCrossLearn", 2.f);
_mulCrossLearnRace = set.getFloat("mulCrossLearnRace", 2.f);
_mulCrossLearnProf = set.getFloat("mulCrossLearnProf", 3.f);
_minPledgeClass = set.getInteger("minPledgeClass", 0);
_isOffensive = set.getBool("offensive", isSkillTypeOffensive());
_numCharges = set.getInteger("num_charges", 0);
_triggeredId = set.getInteger("triggeredId", 0);
_triggeredLevel = set.getInteger("triggeredLevel", 0);
_minPledgeClass = set.getInt("minPledgeClass", 0);
_isOffensive = set.getBoolean("offensive", isSkillTypeOffensive());
_numCharges = set.getInt("num_charges", 0);
_triggeredId = set.getInt("triggeredId", 0);
_triggeredLevel = set.getInt("triggeredLevel", 0);
_bestowed = set.getBool("bestowed", false);
_bestowed = set.getBoolean("bestowed", false);
_targetConsume = set.getInteger("targetConsumeCount", 0);
_targetConsumeId = set.getInteger("targetConsumeId", 0);
_targetConsume = set.getInt("targetConsumeCount", 0);
_targetConsumeId = set.getInt("targetConsumeId", 0);
if (_operateType == SkillOpType.OP_CHANCE)
{
@ -601,22 +600,22 @@ public abstract class Skill
_isHeroSkill = HeroSkillTable.isHeroSkill(_id);
_baseCritRate = set.getInteger("baseCritRate", (_skillType == SkillType.PDAM) || (_skillType == SkillType.BLOW) ? 0 : -1);
_lethalEffect1 = set.getInteger("lethal1", 0);
_lethalEffect2 = set.getInteger("lethal2", 0);
_baseCritRate = set.getInt("baseCritRate", (_skillType == SkillType.PDAM) || (_skillType == SkillType.BLOW) ? 0 : -1);
_lethalEffect1 = set.getInt("lethal1", 0);
_lethalEffect2 = set.getInt("lethal2", 0);
_directHpDmg = set.getBool("dmgDirectlyToHp", false);
_isDance = set.getBool("isDance", false);
_nextDanceCost = set.getInteger("nextDanceCost", 0);
_directHpDmg = set.getBoolean("dmgDirectlyToHp", false);
_isDance = set.getBoolean("isDance", false);
_nextDanceCost = set.getInt("nextDanceCost", 0);
_sSBoost = set.getFloat("SSBoost", 0.f);
_aggroPoints = set.getInteger("aggroPoints", 0);
_aggroPoints = set.getInt("aggroPoints", 0);
_pvpMulti = set.getFloat("pvpMulti", 1.f);
_nextActionIsAttack = set.getBool("nextActionAttack", false);
_nextActionIsAttack = set.getBoolean("nextActionAttack", false);
_minChance = set.getInteger("minChance", 1);
_maxChance = set.getInteger("maxChance", 99);
_minChance = set.getInt("minChance", 1);
_maxChance = set.getInt("maxChance", 99);
String canLearn = set.getString("canLearn", null);
if (canLearn == null)
@ -665,9 +664,9 @@ public abstract class Skill
}
}
_singleEffect = set.getBool("singleEffect", false);
_singleEffect = set.getBoolean("singleEffect", false);
_isDebuff = set.getBool("isDebuff", false);
_isDebuff = set.getBoolean("isDebuff", false);
}
public abstract void useSkill(Creature caster, WorldObject[] targets);

View File

@ -0,0 +1,978 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.model;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.commons.util.TimeUtil;
import org.l2jmobius.gameserver.model.interfaces.IParserAdvUtils;
import org.l2jmobius.gameserver.skills.holders.SkillHolder;
import org.l2jmobius.gameserver.util.Util;
/**
* This class is meant to hold a set of (key,value) pairs.<br>
* They are stored as object but can be retrieved in any type wanted. As long as cast is available.<br>
* @author mkizub
*/
public class StatsSet implements IParserAdvUtils
{
private static final Logger LOGGER = Logger.getLogger(StatsSet.class.getName());
/** Static empty immutable map, used to avoid multiple null checks over the source. */
public static final StatsSet EMPTY_STATSET = new StatsSet(Collections.emptyMap());
private final Map<String, Object> _set;
public StatsSet()
{
this(ConcurrentHashMap::new);
}
public StatsSet(Supplier<Map<String, Object>> mapFactory)
{
this(mapFactory.get());
}
public StatsSet(Map<String, Object> map)
{
_set = map;
}
/**
* Returns the set of values
* @return HashMap
*/
public Map<String, Object> getSet()
{
return _set;
}
/**
* Add a set of couple values in the current set
* @param newSet : StatsSet pointing out the list of couples to add in the current set
*/
public void merge(StatsSet newSet)
{
_set.putAll(newSet.getSet());
}
/**
* Verifies if the stat set is empty.
* @return {@code true} if the stat set is empty, {@code false} otherwise
*/
public boolean isEmpty()
{
return _set.isEmpty();
}
/**
* Return the boolean value associated with key.
* @param key : String designating the key in the set
* @return boolean : value associated to the key
* @throws IllegalArgumentException : If value is not set or value is not boolean
*/
@Override
public boolean getBoolean(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Boolean value required, but not specified");
}
if (val instanceof Boolean)
{
return ((Boolean) val).booleanValue();
}
try
{
return Boolean.parseBoolean((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Boolean value required, but found: " + val);
}
}
/**
* Return the boolean value associated with key.<br>
* If no value is associated with key, or type of value is wrong, returns defaultValue.
* @param key : String designating the key in the entry set
* @return boolean : value associated to the key
*/
@Override
public boolean getBoolean(String key, boolean defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
if (val instanceof Boolean)
{
return ((Boolean) val).booleanValue();
}
try
{
return Boolean.parseBoolean((String) val);
}
catch (Exception e)
{
return defaultValue;
}
}
@Override
public byte getByte(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Byte value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).byteValue();
}
try
{
return Byte.parseByte((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Byte value required, but found: " + val);
}
}
@Override
public byte getByte(String key, byte defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
if (val instanceof Number)
{
return ((Number) val).byteValue();
}
try
{
return Byte.parseByte((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Byte value required, but found: " + val);
}
}
public short increaseByte(String key, byte increaseWith)
{
final byte newValue = (byte) (getByte(key) + increaseWith);
set(key, newValue);
return newValue;
}
public short increaseByte(String key, byte defaultValue, byte increaseWith)
{
final byte newValue = (byte) (getByte(key, defaultValue) + increaseWith);
set(key, newValue);
return newValue;
}
public byte[] getByteArray(String key, String splitOn)
{
Objects.requireNonNull(key);
Objects.requireNonNull(splitOn);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Byte value required, but not specified");
}
if (val instanceof Number)
{
return new byte[]
{
((Number) val).byteValue()
};
}
int c = 0;
final String[] vals = ((String) val).split(splitOn);
final byte[] result = new byte[vals.length];
for (String v : vals)
{
try
{
result[c++] = Byte.parseByte(v);
}
catch (Exception e)
{
throw new IllegalArgumentException("Byte value required, but found: " + val);
}
}
return result;
}
public List<Byte> getByteList(String key, String splitOn)
{
Objects.requireNonNull(key);
Objects.requireNonNull(splitOn);
final List<Byte> result = new ArrayList<>();
for (Byte i : getByteArray(key, splitOn))
{
result.add(i);
}
return result;
}
@Override
public short getShort(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Short value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).shortValue();
}
try
{
return Short.parseShort((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Short value required, but found: " + val);
}
}
@Override
public short getShort(String key, short defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
if (val instanceof Number)
{
return ((Number) val).shortValue();
}
try
{
return Short.parseShort((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Short value required, but found: " + val);
}
}
public short increaseShort(String key, short increaseWith)
{
final short newValue = (short) (getShort(key) + increaseWith);
set(key, newValue);
return newValue;
}
public short increaseShort(String key, short defaultValue, short increaseWith)
{
final short newValue = (short) (getShort(key, defaultValue) + increaseWith);
set(key, newValue);
return newValue;
}
@Override
public int getInt(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Integer value required, but not specified: " + key + "!");
}
if (val instanceof Number)
{
return ((Number) val).intValue();
}
try
{
return Integer.parseInt((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Integer value required, but found: " + val + "!");
}
}
@Override
public int getInt(String key, int defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
if (val instanceof Number)
{
return ((Number) val).intValue();
}
try
{
return Integer.parseInt((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Integer value required, but found: " + val);
}
}
public int increaseInt(String key, int increaseWith)
{
final int newValue = getInt(key) + increaseWith;
set(key, newValue);
return newValue;
}
public int increaseInt(String key, int defaultValue, int increaseWith)
{
final int newValue = getInt(key, defaultValue) + increaseWith;
set(key, newValue);
return newValue;
}
public int[] getIntArray(String key, String splitOn)
{
Objects.requireNonNull(key);
Objects.requireNonNull(splitOn);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Integer value required, but not specified");
}
if (val instanceof Number)
{
return new int[]
{
((Number) val).intValue()
};
}
int c = 0;
final String[] vals = ((String) val).split(splitOn);
final int[] result = new int[vals.length];
for (String v : vals)
{
try
{
result[c++] = Integer.parseInt(v);
}
catch (Exception e)
{
throw new IllegalArgumentException("Integer value required, but found: " + val);
}
}
return result;
}
public List<Integer> getIntegerList(String key, String splitOn)
{
Objects.requireNonNull(key);
Objects.requireNonNull(splitOn);
final List<Integer> result = new ArrayList<>();
for (int i : getIntArray(key, splitOn))
{
result.add(i);
}
return result;
}
@Override
public long getLong(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Long value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).longValue();
}
try
{
return Long.parseLong((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Long value required, but found: " + val);
}
}
@Override
public long getLong(String key, long defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
if (val instanceof Number)
{
return ((Number) val).longValue();
}
try
{
return Long.parseLong((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Long value required, but found: " + val);
}
}
public long increaseLong(String key, long increaseWith)
{
final long newValue = getLong(key) + increaseWith;
set(key, newValue);
return newValue;
}
public long increaseLong(String key, long defaultValue, long increaseWith)
{
final long newValue = getLong(key, defaultValue) + increaseWith;
set(key, newValue);
return newValue;
}
@Override
public float getFloat(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Float value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).floatValue();
}
try
{
return Float.parseFloat((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Float value required, but found: " + val);
}
}
@Override
public float getFloat(String key, float defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
if (val instanceof Number)
{
return ((Number) val).floatValue();
}
try
{
return Float.parseFloat((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Float value required, but found: " + val);
}
}
public float increaseFloat(String key, float increaseWith)
{
final float newValue = getFloat(key) + increaseWith;
set(key, newValue);
return newValue;
}
public float increaseFloat(String key, float defaultValue, float increaseWith)
{
final float newValue = getFloat(key, defaultValue) + increaseWith;
set(key, newValue);
return newValue;
}
@Override
public double getDouble(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Double value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).doubleValue();
}
try
{
return Double.parseDouble((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Double value required, but found: " + val);
}
}
@Override
public double getDouble(String key, double defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
if (val instanceof Number)
{
return ((Number) val).doubleValue();
}
try
{
return Double.parseDouble((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Double value required, but found: " + val);
}
}
public double increaseDouble(String key, double increaseWith)
{
final double newValue = getDouble(key) + increaseWith;
set(key, newValue);
return newValue;
}
public double increaseDouble(String key, double defaultValue, double increaseWith)
{
final double newValue = getDouble(key, defaultValue) + increaseWith;
set(key, newValue);
return newValue;
}
@Override
public String getString(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("String value required, but not specified");
}
return String.valueOf(val);
}
@Override
public String getString(String key, String defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
return String.valueOf(val);
}
@Override
public Duration getDuration(String key)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("String value required, but not specified");
}
return TimeUtil.parseDuration(String.valueOf(val));
}
@Override
public Duration getDuration(String key, Duration defaultValue)
{
Objects.requireNonNull(key);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
return TimeUtil.parseDuration(String.valueOf(val));
}
@Override
@SuppressWarnings("unchecked")
public <T extends Enum<T>> T getEnum(String key, Class<T> enumClass)
{
Objects.requireNonNull(key);
Objects.requireNonNull(enumClass);
final Object val = _set.get(key);
if (val == null)
{
throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + " required, but not specified");
}
if (enumClass.isInstance(val))
{
return (T) val;
}
try
{
return Enum.valueOf(enumClass, String.valueOf(val));
}
catch (Exception e)
{
throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + " required, but found: " + val);
}
}
@Override
@SuppressWarnings("unchecked")
public <T extends Enum<T>> T getEnum(String key, Class<T> enumClass, T defaultValue)
{
Objects.requireNonNull(key);
Objects.requireNonNull(enumClass);
final Object val = _set.get(key);
if (val == null)
{
return defaultValue;
}
if (enumClass.isInstance(val))
{
return (T) val;
}
try
{
return Enum.valueOf(enumClass, String.valueOf(val));
}
catch (Exception e)
{
throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + " required, but found: " + val);
}
}
@SuppressWarnings("unchecked")
public <A> A getObject(String name, Class<A> type)
{
Objects.requireNonNull(name);
Objects.requireNonNull(type);
final Object obj = _set.get(name);
if ((obj == null) || !type.isAssignableFrom(obj.getClass()))
{
return null;
}
return (A) obj;
}
@SuppressWarnings("unchecked")
public <A> A getObject(String name, Class<A> type, A defaultValue)
{
Objects.requireNonNull(name);
Objects.requireNonNull(type);
final Object obj = _set.get(name);
if ((obj == null) || !type.isAssignableFrom(obj.getClass()))
{
return defaultValue;
}
return (A) obj;
}
public SkillHolder getSkillHolder(String key)
{
Objects.requireNonNull(key);
final Object obj = _set.get(key);
if ((obj == null) || !(obj instanceof SkillHolder))
{
return null;
}
return (SkillHolder) obj;
}
public Location getLocation(String key)
{
Objects.requireNonNull(key);
final Object obj = _set.get(key);
if ((obj == null) || !(obj instanceof Location))
{
return null;
}
return (Location) obj;
}
@SuppressWarnings("unchecked")
public <T> List<T> getList(String key, Class<T> clazz)
{
Objects.requireNonNull(key);
Objects.requireNonNull(clazz);
final Object obj = _set.get(key);
if ((obj == null) || !(obj instanceof List<?>))
{
return null;
}
final List<Object> originalList = (List<Object>) obj;
if (!originalList.isEmpty() && !originalList.stream().allMatch(clazz::isInstance))
{
if (clazz.getSuperclass() == Enum.class)
{
throw new IllegalAccessError("Please use getEnumList if you want to get list of Enums!");
}
// Attempt to convert the list
final List<T> convertedList = convertList(originalList, clazz);
if (convertedList == null)
{
LOGGER.log(Level.WARNING, "getList(\"" + key + "\", " + clazz.getSimpleName() + ") requested with wrong generic type: " + obj.getClass().getGenericInterfaces()[0] + "!", new ClassNotFoundException());
return null;
}
// Overwrite the existing list with proper generic type
_set.put(key, convertedList);
return convertedList;
}
return (List<T>) obj;
}
public <T> List<T> getList(String key, Class<T> clazz, List<T> defaultValue)
{
final List<T> list = getList(key, clazz);
return list == null ? defaultValue : list;
}
@SuppressWarnings("unchecked")
public <T extends Enum<T>> List<T> getEnumList(String key, Class<T> clazz)
{
final Object obj = _set.get(key);
if ((obj == null) || !(obj instanceof List<?>))
{
return null;
}
final List<Object> originalList = (List<Object>) obj;
if (!originalList.isEmpty() && (obj.getClass().getGenericInterfaces()[0] != clazz) && originalList.stream().allMatch(name -> Util.isEnum(name.toString(), clazz)))
{
final List<T> convertedList = originalList.stream().map(Object::toString).map(name -> Enum.valueOf(clazz, name)).map(clazz::cast).collect(Collectors.toList());
// Overwrite the existing list with proper generic type
_set.put(key, convertedList);
return convertedList;
}
return (List<T>) obj;
}
/**
* @param <T>
* @param originalList
* @param clazz
* @return
*/
private <T> List<T> convertList(List<Object> originalList, Class<T> clazz)
{
if (clazz == Integer.class)
{
if (originalList.stream().map(Object::toString).allMatch(Util::isInteger))
{
return originalList.stream().map(Object::toString).map(Integer::valueOf).map(clazz::cast).collect(Collectors.toList());
}
}
else if (clazz == Float.class)
{
if (originalList.stream().map(Object::toString).allMatch(Util::isFloat))
{
return originalList.stream().map(Object::toString).map(Float::valueOf).map(clazz::cast).collect(Collectors.toList());
}
}
else if (clazz == Double.class)
{
if (originalList.stream().map(Object::toString).allMatch(Util::isDouble))
{
return originalList.stream().map(Object::toString).map(Double::valueOf).map(clazz::cast).collect(Collectors.toList());
}
}
return null;
}
@SuppressWarnings("unchecked")
public <K, V> Map<K, V> getMap(String key, Class<K> keyClass, Class<V> valueClass)
{
final Object obj = _set.get(key);
if ((obj == null) || !(obj instanceof Map<?, ?>))
{
return null;
}
final Map<?, ?> originalList = (Map<?, ?>) obj;
if (!originalList.isEmpty())
{
if ((!originalList.keySet().stream().allMatch(keyClass::isInstance)) || (!originalList.values().stream().allMatch(valueClass::isInstance)))
{
LOGGER.log(Level.WARNING, "getMap(\"" + key + "\", " + keyClass.getSimpleName() + ", " + valueClass.getSimpleName() + ") requested with wrong generic type: " + obj.getClass().getGenericInterfaces()[0] + "!", new ClassNotFoundException());
}
}
return (Map<K, V>) obj;
}
public StatsSet set(String name, Object value)
{
if (value == null)
{
return this;
}
_set.put(name, value);
return this;
}
public StatsSet set(String key, boolean value)
{
_set.put(key, value);
return this;
}
public StatsSet set(String key, byte value)
{
_set.put(key, value);
return this;
}
public StatsSet set(String key, short value)
{
_set.put(key, value);
return this;
}
public StatsSet set(String key, int value)
{
_set.put(key, value);
return this;
}
public StatsSet set(String key, long value)
{
_set.put(key, value);
return this;
}
public StatsSet set(String key, float value)
{
_set.put(key, value);
return this;
}
public StatsSet set(String key, double value)
{
_set.put(key, value);
return this;
}
public StatsSet set(String key, String value)
{
if (value == null)
{
return this;
}
_set.put(key, value);
return this;
}
public StatsSet set(String key, Enum<?> value)
{
if (value == null)
{
return this;
}
_set.put(key, value);
return this;
}
/**
* Safe version of "set". Expected values are within [min, max[<br>
* Add the int hold in param "value" for the key "name".
* @param name : String designating the key in the set
* @param value : int corresponding to the value associated with the key
* @param min
* @param max
* @param reference
*/
public synchronized void safeSet(String name, int value, int min, int max, String reference)
{
assert ((min > max) || ((value >= min) && (value < max)));
if ((min <= max) && ((value < min) || (value >= max)))
{
LOGGER.info("[StatsSet][safeSet] Incorrect value: " + value + "for: " + name + "Ref: " + reference);
}
set(name, value);
}
public static StatsSet valueOf(String key, Object value)
{
final StatsSet set = new StatsSet();
set.set(key, value);
return set;
}
public void remove(String key)
{
_set.remove(key);
}
public boolean contains(String name)
{
return _set.containsKey(name);
}
@Override
public String toString()
{
return "StatsSet{_set=" + _set + '}';
}
}

View File

@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillTargetType;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.WorldRegion;
@ -131,7 +132,6 @@ import org.l2jmobius.gameserver.skills.Stats;
import org.l2jmobius.gameserver.skills.effects.EffectCharge;
import org.l2jmobius.gameserver.skills.funcs.Func;
import org.l2jmobius.gameserver.skills.holders.ISkillsHolder;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.CreatureTemplate;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
import org.l2jmobius.gameserver.templates.item.Weapon;

View File

@ -21,13 +21,13 @@ import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.entity.sevensigns.SevenSigns;
import org.l2jmobius.gameserver.model.entity.sevensigns.SevenSignsFestival;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
/**
@ -324,13 +324,13 @@ public class FestivalGuideInstance extends FolkInstance
final StatsSet dawnData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DAWN, _festivalType);
final StatsSet duskData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DUSK, _festivalType);
final StatsSet overallData = SevenSignsFestival.getInstance().getOverallHighestScoreData(_festivalType);
final int dawnScore = dawnData.getInteger("score");
final int duskScore = duskData.getInteger("score");
final int dawnScore = dawnData.getInt("score");
final int duskScore = duskData.getInt("score");
int overallScore = 0;
// If no data is returned, assume there is no record, or all scores are 0.
if (overallData != null)
{
overallScore = overallData.getInteger("score");
overallScore = overallData.getInt("score");
}
strBuffer.append(SevenSignsFestival.getFestivalName(_festivalType) + " festival.<br>");
if (dawnScore > 0)

View File

@ -50,7 +50,6 @@ import org.l2jmobius.gameserver.cache.WarehouseCacheManager;
import org.l2jmobius.gameserver.communitybbs.BB.Forum;
import org.l2jmobius.gameserver.communitybbs.Manager.ForumsBBSManager;
import org.l2jmobius.gameserver.datatables.AccessLevel;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.HeroSkillTable;
import org.l2jmobius.gameserver.datatables.NobleSkillTable;
import org.l2jmobius.gameserver.datatables.SkillTable;
@ -58,12 +57,11 @@ import org.l2jmobius.gameserver.datatables.csv.FishTable;
import org.l2jmobius.gameserver.datatables.csv.HennaTable;
import org.l2jmobius.gameserver.datatables.csv.MapRegionTable;
import org.l2jmobius.gameserver.datatables.csv.RecipeTable;
import org.l2jmobius.gameserver.datatables.sql.AccessLevels;
import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights;
import org.l2jmobius.gameserver.datatables.sql.CharTemplateTable;
import org.l2jmobius.gameserver.datatables.sql.ClanTable;
import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.datatables.sql.SkillTreeTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
import org.l2jmobius.gameserver.datatables.xml.ItemTable;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
@ -8614,11 +8612,11 @@ public class PlayerInstance extends Playable
if (level == Config.MASTERACCESS_LEVEL)
{
LOGGER.warning("Access level " + level + " set for character " + getName() + "! Just a warning ;)");
_accessLevel = AccessLevels.getInstance()._masterAccessLevel;
_accessLevel = AdminData.getInstance()._masterAccessLevel;
}
else if (level == Config.USERACCESS_LEVEL)
{
_accessLevel = AccessLevels.getInstance()._userAccessLevel;
_accessLevel = AdminData.getInstance()._userAccessLevel;
}
else
{
@ -8626,19 +8624,19 @@ public class PlayerInstance extends Playable
{
LOGGER.warning("Access level " + level + " set for character " + getName() + "! Just a warning ;)");
}
AccessLevel accessLevel = AccessLevels.getInstance().getAccessLevel(level);
AccessLevel accessLevel = AdminData.getInstance().getAccessLevel(level);
if (accessLevel == null)
{
if (level < 0)
{
AccessLevels.getInstance().addBanAccessLevel(level);
_accessLevel = AccessLevels.getInstance().getAccessLevel(level);
AdminData.getInstance().addBanAccessLevel(level);
_accessLevel = AdminData.getInstance().getAccessLevel(level);
}
else
{
LOGGER.warning("Tried to set unregistered access level " + level + " to character " + getName() + ". Setting access level without privileges!");
_accessLevel = AccessLevels.getInstance()._userAccessLevel;
_accessLevel = AdminData.getInstance()._userAccessLevel;
}
}
else
@ -8647,7 +8645,7 @@ public class PlayerInstance extends Playable
}
}
if (_accessLevel != AccessLevels.getInstance()._userAccessLevel)
if (_accessLevel != AdminData.getInstance()._userAccessLevel)
{
if (getAccessLevel().useNameColor())
{
@ -8679,7 +8677,7 @@ public class PlayerInstance extends Playable
{
if (Config.EVERYBODY_HAS_ADMIN_RIGHTS)
{
return AccessLevels.getInstance()._masterAccessLevel;
return AdminData.getInstance()._masterAccessLevel;
}
else if (_accessLevel == null)
{
@ -15050,7 +15048,7 @@ public class PlayerInstance extends Playable
{
try
{
GmListTable.getInstance().deleteGm(this);
AdminData.getInstance().deleteGm(this);
}
catch (Throwable t)
{
@ -17920,11 +17918,11 @@ public class PlayerInstance extends Playable
setTarget(null);
sendPacket(new ExOlympiadMode(0, this));
teleToLocation(_obsX, _obsY, _obsZ, true);
if (!AdminCommandAccessRights.getInstance().hasAccess("admin_invis", getAccessLevel()))
if (!AdminData.getInstance().hasAccess("admin_invis", getAccessLevel()))
{
getAppearance().setVisible();
}
if (!AdminCommandAccessRights.getInstance().hasAccess("admin_invul", getAccessLevel()))
if (!AdminData.getInstance().hasAccess("admin_invul", getAccessLevel()))
{
setIsInvul(false);
}

View File

@ -28,6 +28,7 @@ import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.datatables.sql.ClanTable;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -38,7 +39,6 @@ import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.item.Item;
/**
@ -320,11 +320,11 @@ public class Hero
final Map<Integer, StatsSet> heroes = new HashMap<>();
for (StatsSet hero : newHeroes)
{
final int charId = hero.getInteger(Olympiad.CHAR_ID);
final int charId = hero.getInt(Olympiad.CHAR_ID);
if ((_completeHeroes != null) && _completeHeroes.containsKey(charId))
{
final StatsSet oldHero = _completeHeroes.get(charId);
final int count = oldHero.getInteger(COUNT);
final int count = oldHero.getInt(COUNT);
oldHero.set(COUNT, count + 1);
oldHero.set(PLAYED, 1);
heroes.put(charId, oldHero);
@ -333,7 +333,7 @@ public class Hero
{
final StatsSet newHero = new StatsSet();
newHero.set(Olympiad.CHAR_NAME, hero.getString(Olympiad.CHAR_NAME));
newHero.set(Olympiad.CLASS_ID, hero.getInteger(Olympiad.CLASS_ID));
newHero.set(Olympiad.CLASS_ID, hero.getInt(Olympiad.CLASS_ID));
newHero.set(COUNT, 1);
newHero.set(PLAYED, 1);
heroes.put(charId, newHero);
@ -424,9 +424,9 @@ public class Hero
statement = con.prepareStatement(INSERT_HERO);
statement.setInt(1, heroId);
statement.setString(2, hero.getString(Olympiad.CHAR_NAME));
statement.setInt(3, hero.getInteger(Olympiad.CLASS_ID));
statement.setInt(4, hero.getInteger(COUNT));
statement.setInt(5, hero.getInteger(PLAYED));
statement.setInt(3, hero.getInt(Olympiad.CLASS_ID));
statement.setInt(4, hero.getInt(COUNT));
statement.setInt(5, hero.getInt(PLAYED));
statement.execute();
statement2 = con.prepareStatement(GET_CLAN_ALLY);
statement2.setInt(1, heroId);
@ -463,8 +463,8 @@ public class Hero
else
{
statement = con.prepareStatement(UPDATE_HERO);
statement.setInt(1, hero.getInteger(COUNT));
statement.setInt(2, hero.getInteger(PLAYED));
statement.setInt(1, hero.getInt(COUNT));
statement.setInt(2, hero.getInt(PLAYED));
statement.setInt(3, heroId);
statement.execute();
}

View File

@ -44,6 +44,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.instancemanager.OlympiadStadiaManager;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.entity.Announcements;
@ -52,7 +53,6 @@ import org.l2jmobius.gameserver.model.spawn.Spawn;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
public class Olympiad
{
@ -1006,7 +1006,7 @@ public class Olympiad
for (Integer nobleId : _nobles.keySet())
{
final StatsSet nobleInfo = _nobles.get(nobleId);
int currentPoints = nobleInfo.getInteger(POINTS);
int currentPoints = nobleInfo.getInt(POINTS);
currentPoints += WEEKLY_POINTS;
nobleInfo.set(POINTS, currentPoints);
@ -1138,14 +1138,14 @@ public class Olympiad
}
final int charId = nobleId;
final int classId = nobleInfo.getInteger(CLASS_ID);
final int classId = nobleInfo.getInt(CLASS_ID);
final String charName = nobleInfo.getString(CHAR_NAME);
final int points = nobleInfo.getInteger(POINTS);
final int compDone = nobleInfo.getInteger(COMP_DONE);
final int compWon = nobleInfo.getInteger(COMP_WON);
final int compLost = nobleInfo.getInteger(COMP_LOST);
final int compDrawn = nobleInfo.getInteger(COMP_DRAWN);
final boolean toSave = nobleInfo.getBool("to_save");
final int points = nobleInfo.getInt(POINTS);
final int compDone = nobleInfo.getInt(COMP_DONE);
final int compWon = nobleInfo.getInt(COMP_WON);
final int compLost = nobleInfo.getInt(COMP_LOST);
final int compDrawn = nobleInfo.getInt(COMP_DRAWN);
final boolean toSave = nobleInfo.getBoolean("to_save");
if (toSave)
{
@ -1200,11 +1200,11 @@ public class Olympiad
}
final int charId = nobleId;
final int points = nobleInfo.getInteger(POINTS);
final int compDone = nobleInfo.getInteger(COMP_DONE);
final int compWon = nobleInfo.getInteger(COMP_WON);
final int compLost = nobleInfo.getInteger(COMP_LOST);
final int compDrawn = nobleInfo.getInteger(COMP_DRAWN);
final int points = nobleInfo.getInt(POINTS);
final int compDone = nobleInfo.getInt(COMP_DONE);
final int compWon = nobleInfo.getInt(COMP_WON);
final int compLost = nobleInfo.getInt(COMP_LOST);
final int compDrawn = nobleInfo.getInt(COMP_DRAWN);
statement = con.prepareStatement(OLYMPIAD_UPDATE_OLD_NOBLES);
statement.setInt(1, points);
@ -1310,10 +1310,10 @@ public class Olympiad
}
final int charId = nobleId;
final int classId = nobleInfo.getInteger(CLASS_ID);
final int classId = nobleInfo.getInt(CLASS_ID);
final String charName = nobleInfo.getString(CHAR_NAME);
final int points = nobleInfo.getInteger(POINTS);
final int compDone = nobleInfo.getInteger(COMP_DONE);
final int points = nobleInfo.getInt(POINTS);
final int compDone = nobleInfo.getInt(COMP_DONE);
logResult(charName, "", Double.valueOf(charId), Double.valueOf(classId), compDone, points, "noble-charId-classId-compdone-points", 0, "");
}
@ -1395,10 +1395,10 @@ public class Olympiad
for (StatsSet hero : _heroesToBe)
{
final int charId = hero.getInteger(CHAR_ID);
final int charId = hero.getInt(CHAR_ID);
final StatsSet noble = _nobles.get(charId);
int currentPoints = noble.getInteger(POINTS);
int currentPoints = noble.getInt(POINTS);
currentPoints += Config.ALT_OLY_HERO_POINTS;
noble.set(POINTS, currentPoints);
@ -1420,7 +1420,7 @@ public class Olympiad
{
return 0;
}
int points = noble.getInteger(POINTS);
int points = noble.getInt(POINTS);
if (points <= Config.ALT_OLY_MIN_POINT_FOR_EXCH)
{
return 0;
@ -1444,7 +1444,7 @@ public class Olympiad
{
return 0;
}
int points = noble.getInteger(POINTS);
int points = noble.getInt(POINTS);
if (points <= Config.ALT_OLY_MIN_POINT_FOR_EXCH)
{
return 0;
@ -1489,7 +1489,7 @@ public class Olympiad
{
return 0;
}
final int points = noble.getInteger(POINTS);
final int points = noble.getInt(POINTS);
return points;
}
@ -1506,7 +1506,7 @@ public class Olympiad
{
return 0;
}
final int points = noble.getInteger(COMP_DONE);
final int points = noble.getInt(COMP_DONE);
return points;
}
@ -1523,7 +1523,7 @@ public class Olympiad
{
return 0;
}
final int points = noble.getInteger(COMP_WON);
final int points = noble.getInt(COMP_WON);
return points;
}
@ -1540,7 +1540,7 @@ public class Olympiad
{
return 0;
}
final int points = noble.getInteger(COMP_LOST);
final int points = noble.getInt(COMP_LOST);
return points;
}

View File

@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.datatables.HeroSkillTable;
import org.l2jmobius.gameserver.datatables.SkillTable;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.CubicInstance;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
@ -45,7 +46,6 @@ import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadUserInfo;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* @author GodKratos
@ -652,17 +652,17 @@ class OlympiadGame
final StatsSet playerOneStat = Olympiad.getNobleStats(_playerOne.getObjectId());
final StatsSet playerTwoStat = Olympiad.getNobleStats(_playerTwo.getObjectId());
final int playerOnePlayed = playerOneStat.getInteger(COMP_DONE);
final int playerTwoPlayed = playerTwoStat.getInteger(COMP_DONE);
final int playerOneWon = playerOneStat.getInteger(COMP_WON);
final int playerTwoWon = playerTwoStat.getInteger(COMP_WON);
final int playerOneLost = playerOneStat.getInteger(COMP_LOST);
final int playerTwoLost = playerTwoStat.getInteger(COMP_LOST);
final int playerOneDrawn = playerOneStat.getInteger(COMP_DRAWN);
final int playerTwoDrawn = playerTwoStat.getInteger(COMP_DRAWN);
final int playerOnePlayed = playerOneStat.getInt(COMP_DONE);
final int playerTwoPlayed = playerTwoStat.getInt(COMP_DONE);
final int playerOneWon = playerOneStat.getInt(COMP_WON);
final int playerTwoWon = playerTwoStat.getInt(COMP_WON);
final int playerOneLost = playerOneStat.getInt(COMP_LOST);
final int playerTwoLost = playerTwoStat.getInt(COMP_LOST);
final int playerOneDrawn = playerOneStat.getInt(COMP_DRAWN);
final int playerTwoDrawn = playerTwoStat.getInt(COMP_DRAWN);
final int playerOnePoints = playerOneStat.getInteger(POINTS);
final int playerTwoPoints = playerTwoStat.getInteger(POINTS);
final int playerOnePoints = playerOneStat.getInt(POINTS);
final int playerTwoPoints = playerTwoStat.getInt(POINTS);
final int pointDiff = Math.min(playerOnePoints, playerTwoPoints) / _div;
// Check for if a player defaulted before battle started

View File

@ -31,6 +31,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.datatables.csv.MapRegionTable;
import org.l2jmobius.gameserver.handler.AutoChatHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.spawn.AutoSpawn;
@ -38,7 +39,6 @@ import org.l2jmobius.gameserver.model.spawn.AutoSpawn.AutoSpawnInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.SignsSky;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* Seven Signs Engine TODO: - Implementation of the Seal of Strife for sieges.
@ -796,9 +796,9 @@ public class SevenSigns
StatsSet currPlayer = getPlayerData(player);
stoneCount += currPlayer.getInteger("red_stones");
stoneCount += currPlayer.getInteger("green_stones");
stoneCount += currPlayer.getInteger("blue_stones");
stoneCount += currPlayer.getInt("red_stones");
stoneCount += currPlayer.getInt("green_stones");
stoneCount += currPlayer.getInt("blue_stones");
return stoneCount;
}
@ -817,7 +817,7 @@ public class SevenSigns
final StatsSet currPlayer = getPlayerData(player);
return currPlayer.getInteger("contribution_score");
return currPlayer.getInt("contribution_score");
}
/**
@ -832,7 +832,7 @@ public class SevenSigns
return 0;
}
return _signsPlayerData.get(player.getObjectId()).getInteger("ancient_adena_amount");
return _signsPlayerData.get(player.getObjectId()).getInt("ancient_adena_amount");
}
/**
@ -847,7 +847,7 @@ public class SevenSigns
return SEAL_NULL;
}
return getPlayerData(player).getInteger("seal");
return getPlayerData(player).getInt("seal");
}
/**
@ -968,7 +968,7 @@ public class SevenSigns
{
if (player != null)
{
if (sevenDat.getInteger("char_obj_id") != player.getObjectId())
if (sevenDat.getInt("char_obj_id") != player.getObjectId())
{
continue;
}
@ -976,13 +976,13 @@ public class SevenSigns
statement = con.prepareStatement("UPDATE seven_signs SET cabal=?, seal=?, red_stones=?, green_stones=?, blue_stones=?, ancient_adena_amount=?, contribution_score=? WHERE char_obj_id=?");
statement.setString(1, sevenDat.getString("cabal"));
statement.setInt(2, sevenDat.getInteger("seal"));
statement.setInt(3, sevenDat.getInteger("red_stones"));
statement.setInt(4, sevenDat.getInteger("green_stones"));
statement.setInt(5, sevenDat.getInteger("blue_stones"));
statement.setInt(2, sevenDat.getInt("seal"));
statement.setInt(3, sevenDat.getInt("red_stones"));
statement.setInt(4, sevenDat.getInt("green_stones"));
statement.setInt(5, sevenDat.getInt("blue_stones"));
statement.setDouble(6, sevenDat.getDouble("ancient_adena_amount"));
statement.setDouble(7, sevenDat.getDouble("contribution_score"));
statement.setInt(8, sevenDat.getInteger("char_obj_id"));
statement.setInt(8, sevenDat.getInt("char_obj_id"));
statement.execute();
statement.close();
@ -1044,7 +1044,7 @@ public class SevenSigns
// Reset each player's contribution data as well as seal and cabal.
for (StatsSet sevenDat : _signsPlayerData.values())
{
final int charObjId = sevenDat.getInteger("char_obj_id");
final int charObjId = sevenDat.getInt("char_obj_id");
// Reset the player's cabal and seal information
sevenDat.set("cabal", "");
@ -1142,7 +1142,7 @@ public class SevenSigns
public int getAncientAdenaReward(PlayerInstance player, boolean removeReward)
{
StatsSet currPlayer = getPlayerData(player);
final int rewardAmount = currPlayer.getInteger("ancient_adena_amount");
final int rewardAmount = currPlayer.getInt("ancient_adena_amount");
currPlayer.set("red_stones", 0);
currPlayer.set("green_stones", 0);
@ -1171,17 +1171,17 @@ public class SevenSigns
StatsSet currPlayer = getPlayerData(player);
final int contribScore = calcContributionScore(blueCount, greenCount, redCount);
final int totalAncientAdena = currPlayer.getInteger("ancient_adena_amount") + calcAncientAdenaReward(blueCount, greenCount, redCount);
final int totalContribScore = currPlayer.getInteger("contribution_score") + contribScore;
final int totalAncientAdena = currPlayer.getInt("ancient_adena_amount") + calcAncientAdenaReward(blueCount, greenCount, redCount);
final int totalContribScore = currPlayer.getInt("contribution_score") + contribScore;
if (totalContribScore > Config.ALT_MAXIMUM_PLAYER_CONTRIB)
{
return -1;
}
currPlayer.set("red_stones", currPlayer.getInteger("red_stones") + redCount);
currPlayer.set("green_stones", currPlayer.getInteger("green_stones") + greenCount);
currPlayer.set("blue_stones", currPlayer.getInteger("blue_stones") + blueCount);
currPlayer.set("red_stones", currPlayer.getInt("red_stones") + redCount);
currPlayer.set("green_stones", currPlayer.getInt("green_stones") + greenCount);
currPlayer.set("blue_stones", currPlayer.getInt("blue_stones") + blueCount);
currPlayer.set("ancient_adena_amount", totalAncientAdena);
currPlayer.set("contribution_score", totalContribScore);
_signsPlayerData.put(player.getObjectId(), currPlayer);

View File

@ -39,6 +39,7 @@ import org.l2jmobius.gameserver.datatables.sql.SpawnTable;
import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.instance.FestivalMonsterInstance;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
@ -52,7 +53,6 @@ import org.l2jmobius.gameserver.network.serverpackets.CreatureSay;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
import org.l2jmobius.gameserver.util.Util;
@ -3404,14 +3404,14 @@ public class SevenSignsFestival implements SpawnListener
{
for (StatsSet festivalDat : currCycleData.values())
{
final int festivalCycle = festivalDat.getInteger("cycle");
final int festivalId = festivalDat.getInteger("festivalId");
final int festivalCycle = festivalDat.getInt("cycle");
final int festivalId = festivalDat.getInt("festivalId");
String cabal = festivalDat.getString("cabal");
// Try to update an existing record.
statement = con.prepareStatement("UPDATE seven_signs_festival SET date=?, score=?, members=? WHERE cycle=? AND cabal=? AND festivalId=?");
statement.setLong(1, Long.valueOf(festivalDat.getString("date")));
statement.setInt(2, festivalDat.getInteger("score"));
statement.setInt(2, festivalDat.getInt("score"));
statement.setString(3, festivalDat.getString("members"));
statement.setInt(4, festivalCycle);
statement.setString(5, cabal);
@ -3431,7 +3431,7 @@ public class SevenSignsFestival implements SpawnListener
statement.setString(2, cabal);
statement.setInt(3, festivalCycle);
statement.setLong(4, Long.valueOf(festivalDat.getString("date")));
statement.setInt(5, festivalDat.getInteger("score"));
statement.setInt(5, festivalDat.getInt("score"));
statement.setString(6, festivalDat.getString("members"));
statement.execute();
statement.close();
@ -3929,7 +3929,7 @@ public class SevenSignsFestival implements SpawnListener
*/
public int getHighestScore(int oracle, int festivalId)
{
return getHighestScoreData(oracle, festivalId).getInteger("score");
return getHighestScoreData(oracle, festivalId).getInt("score");
}
/**
@ -3978,8 +3978,8 @@ public class SevenSignsFestival implements SpawnListener
{
for (StatsSet currFestData : currCycleData.values())
{
final int currFestID = currFestData.getInteger("festivalId");
final int festivalScore = currFestData.getInteger("score");
final int currFestID = currFestData.getInt("festivalId");
final int festivalScore = currFestData.getInt("score");
if (currFestID != festivalId)
{
@ -4161,7 +4161,7 @@ public class SevenSignsFestival implements SpawnListener
{
if (festivalData.getString("members").contains(playerName))
{
final int festivalId = festivalData.getInteger("festivalId");
final int festivalId = festivalData.getInt("festivalId");
final int numPartyMembers = festivalData.getString("members").split(",").length;
final int totalAccumBonus = _accumulatedBonuses.get(festivalId);

View File

@ -0,0 +1,25 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.model.interfaces;
/**
* @author UnAfraid
*/
public interface IDeletable
{
boolean deleteMe();
}

View File

@ -0,0 +1,48 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.model.interfaces;
import java.time.Duration;
/**
* More advanced interface for parsers.<br>
* Allows usage of get methods without fall back value.<br>
* @author xban1x
*/
public interface IParserAdvUtils extends IParserUtils
{
boolean getBoolean(String key);
byte getByte(String key);
short getShort(String key);
int getInt(String key);
long getLong(String key);
float getFloat(String key);
double getDouble(String key);
String getString(String key);
Duration getDuration(String key);
<T extends Enum<T>> T getEnum(String key, Class<T> clazz);
}

View File

@ -0,0 +1,47 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.model.interfaces;
import java.time.Duration;
/**
* Simple interface for parser, enforces of a fall back value.<br>
* More suitable for developers not sure about their data.<br>
* @author xban1x
*/
public interface IParserUtils
{
boolean getBoolean(String key, boolean defaultValue);
byte getByte(String key, byte defaultValue);
short getShort(String key, short defaultValue);
int getInt(String key, int defaultValue);
long getLong(String key, long defaultValue);
float getFloat(String key, float defaultValue);
double getDouble(String key, double defaultValue);
String getString(String key, String defaultValue);
Duration getDuration(String key, Duration defaultValue);
<T extends Enum<T>> T getEnum(String key, Class<T> clazz, T defaultValue);
}

View File

@ -16,63 +16,70 @@
*/
package org.l2jmobius.gameserver.model.variables;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.interfaces.IDeletable;
import org.l2jmobius.gameserver.model.interfaces.IRestorable;
import org.l2jmobius.gameserver.model.interfaces.IStorable;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* @author UnAfraid
*/
public abstract class AbstractVariables extends StatsSet implements IRestorable, IStorable
public abstract class AbstractVariables extends StatsSet implements IRestorable, IStorable, IDeletable
{
private final AtomicBoolean _hasChanges = new AtomicBoolean(false);
public AbstractVariables()
{
super(new ConcurrentHashMap<>());
}
/**
* Overriding following methods to prevent from doing useless database operations if there is no changes since player's login.
*/
@Override
public void set(String name, boolean value)
public StatsSet set(String name, boolean value)
{
_hasChanges.compareAndSet(false, true);
super.set(name, value);
return super.set(name, value);
}
@Override
public void set(String name, double value)
public StatsSet set(String name, double value)
{
_hasChanges.compareAndSet(false, true);
super.set(name, value);
return super.set(name, value);
}
@Override
public void set(String name, Enum<?> value)
public StatsSet set(String name, Enum<?> value)
{
_hasChanges.compareAndSet(false, true);
super.set(name, value);
return super.set(name, value);
}
@Override
public void set(String name, int value)
public StatsSet set(String name, int value)
{
_hasChanges.compareAndSet(false, true);
super.set(name, value);
return super.set(name, value);
}
@Override
public void set(String name, long value)
public StatsSet set(String name, long value)
{
_hasChanges.compareAndSet(false, true);
super.set(name, value);
return super.set(name, value);
}
@Override
public void set(String name, String value)
public StatsSet set(String name, String value)
{
_hasChanges.compareAndSet(false, true);
super.set(name, value);
return super.set(name, value);
}
/**
@ -108,6 +115,7 @@ public abstract class AbstractVariables extends StatsSet implements IRestorable,
* Removes variable
* @param name
*/
@Override
public void remove(String name)
{
_hasChanges.compareAndSet(false, true);

View File

@ -116,4 +116,27 @@ public class AccountVariables extends AbstractVariables
}
return true;
}
@Override
public boolean deleteMe()
{
try (Connection con = DatabaseFactory.getConnection())
{
// Clear previous entries.
try (PreparedStatement st = con.prepareStatement(DELETE_QUERY))
{
st.setString(1, _accountName);
st.execute();
}
// Clear all entries
getSet().clear();
}
catch (Exception e)
{
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _accountName, e);
return false;
}
return true;
}
}

View File

@ -119,6 +119,29 @@ public class PlayerVariables extends AbstractVariables
return true;
}
@Override
public boolean deleteMe()
{
try (Connection con = DatabaseFactory.getConnection())
{
// Clear previous entries.
try (PreparedStatement st = con.prepareStatement(DELETE_QUERY))
{
st.setInt(1, _objectId);
st.execute();
}
// Clear all entries
getSet().clear();
}
catch (Exception e)
{
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e);
return false;
}
return true;
}
public PlayerInstance getPlayer()
{
return World.getInstance().getPlayer(_objectId);

View File

@ -31,10 +31,9 @@ import org.l2jmobius.commons.crypt.nProtect;
import org.l2jmobius.commons.crypt.nProtect.RestrictionType;
import org.l2jmobius.gameserver.GameTimeController;
import org.l2jmobius.gameserver.communitybbs.Manager.MailBBSManager;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.SkillTable;
import org.l2jmobius.gameserver.datatables.csv.MapRegionTable;
import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.handler.custom.CustomWorldHandler;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.ClanHallManager;
@ -588,7 +587,7 @@ public class EnterWorld extends GameClientPacket
{
gmStartupProcess:
{
if (Config.GM_STARTUP_BUILDER_HIDE && AdminCommandAccessRights.getInstance().hasAccess("admin_hide", player.getAccessLevel()))
if (Config.GM_STARTUP_BUILDER_HIDE && AdminData.getInstance().hasAccess("admin_hide", player.getAccessLevel()))
{
player.setInRefusalMode(true);
player.setIsInvul(true);
@ -602,28 +601,28 @@ public class EnterWorld extends GameClientPacket
break gmStartupProcess;
}
if (Config.GM_STARTUP_INVULNERABLE && AdminCommandAccessRights.getInstance().hasAccess("admin_invul", player.getAccessLevel()))
if (Config.GM_STARTUP_INVULNERABLE && AdminData.getInstance().hasAccess("admin_invul", player.getAccessLevel()))
{
player.setIsInvul(true);
}
if (Config.GM_STARTUP_INVISIBLE && AdminCommandAccessRights.getInstance().hasAccess("admin_invisible", player.getAccessLevel()))
if (Config.GM_STARTUP_INVISIBLE && AdminData.getInstance().hasAccess("admin_invisible", player.getAccessLevel()))
{
player.getAppearance().setInvisible();
}
if (Config.GM_STARTUP_SILENCE && AdminCommandAccessRights.getInstance().hasAccess("admin_silence", player.getAccessLevel()))
if (Config.GM_STARTUP_SILENCE && AdminData.getInstance().hasAccess("admin_silence", player.getAccessLevel()))
{
player.setInRefusalMode(true);
}
if (Config.GM_STARTUP_AUTO_LIST && AdminCommandAccessRights.getInstance().hasAccess("admin_gmliston", player.getAccessLevel()))
if (Config.GM_STARTUP_AUTO_LIST && AdminData.getInstance().hasAccess("admin_gmliston", player.getAccessLevel()))
{
GmListTable.getInstance().addGm(player, false);
AdminData.getInstance().addGm(player, false);
}
else
{
GmListTable.getInstance().addGm(player, true);
AdminData.getInstance().addGm(player, true);
}
}

View File

@ -21,7 +21,7 @@ import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.communitybbs.CommunityBoard;
import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.handler.AdminCommandHandler;
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.handler.custom.CustomBypassHandler;
@ -97,7 +97,7 @@ public class RequestBypassToServer extends GameClientPacket
return;
}
if (!AdminCommandAccessRights.getInstance().hasAccess(command, player.getAccessLevel()))
if (!AdminData.getInstance().hasAccess(command, player.getAccessLevel()))
{
player.sendMessage("You don't have the access right to use this command!");
return;

View File

@ -19,7 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets;
import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -221,7 +221,7 @@ public class RequestDropItem extends GameClientPacket
{
final String msg = "Character (" + player.getName() + ") has dropped (" + dropedItem.getCount() + ")adena at (" + _x + "," + _y + "," + _z + ")";
LOGGER.warning(msg);
GmListTable.broadcastMessageToGMs(msg);
AdminData.broadcastMessageToGMs(msg);
}
}
}

View File

@ -16,7 +16,7 @@
*/
package org.l2jmobius.gameserver.network.clientpackets;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
/**
* This class handles RequestGmLista packet triggered by /gmlist command
@ -36,6 +36,6 @@ public class RequestGmList extends GameClientPacket
return;
}
GmListTable.getInstance().sendListToPlayer(getClient().getPlayer());
AdminData.getInstance().sendListToPlayer(getClient().getPlayer());
}
}

View File

@ -17,7 +17,7 @@
package org.l2jmobius.gameserver.network.clientpackets;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.instancemanager.PetitionManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -48,7 +48,7 @@ public class RequestPetition extends GameClientPacket
return;
}
if (!GmListTable.getInstance().isGmOnline(false))
if (!AdminData.getInstance().isGmOnline(false))
{
player.sendPacket(SystemMessageId.NO_GM_PROVIDING_SERVICE_NOW);
return;

View File

@ -17,7 +17,7 @@
package org.l2jmobius.gameserver.network.clientpackets;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.instancemanager.PetitionManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -70,7 +70,7 @@ public class RequestPetitionCancel extends GameClientPacket
// Notify all GMs that the player's pending petition has been cancelled.
final String msgContent = player.getName() + " has canceled a pending petition.";
GmListTable.broadcastToGMs(new CreatureSay(player.getObjectId(), 17, "Petition System", msgContent));
AdminData.broadcastToGMs(new CreatureSay(player.getObjectId(), 17, "Petition System", msgContent));
}
else
{

View File

@ -19,7 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets;
import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.handler.AdminCommandHandler;
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -52,7 +52,7 @@ public class SendBypassBuildCmd extends GameClientPacket
}
// Checks The Access and notify requester if requester access it not allowed for that command
if (!AdminCommandAccessRights.getInstance().hasAccess(_command, player.getAccessLevel()))
if (!AdminData.getInstance().hasAccess(_command, player.getAccessLevel()))
{
player.sendMessage("You don't have the access right to use this command!");
LOGGER.warning("Character " + player.getName() + " tried to use admin command " + _command + ", but doesn't have access to it!");

View File

@ -17,7 +17,7 @@
package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.datatables.AccessLevel;
import org.l2jmobius.gameserver.datatables.sql.AccessLevels;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.FortManager;
import org.l2jmobius.gameserver.model.SiegeClan;
@ -40,7 +40,7 @@ public class Die extends GameServerPacket
private final boolean _fake;
private boolean _sweepable;
private boolean _canTeleport;
private AccessLevel _access = AccessLevels.getInstance()._userAccessLevel;
private AccessLevel _access = AdminData.getInstance()._userAccessLevel;
private org.l2jmobius.gameserver.model.clan.Clan _clan;
Creature _creature;

View File

@ -18,9 +18,9 @@ package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Map;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.olympiad.Olympiad;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* Format: (ch) d [SdSdSdd] d: size [ S: hero name d: hero class ID S: hero clan name d: hero clan crest id S: hero ally name d: hero Ally id d: count ]
@ -50,12 +50,12 @@ public class ExHeroList extends GameServerPacket
{
final StatsSet hero = _heroList.get(heroId);
writeS(hero.getString(Olympiad.CHAR_NAME));
writeD(hero.getInteger(Olympiad.CLASS_ID));
writeD(hero.getInt(Olympiad.CLASS_ID));
writeS(hero.getString(Hero.CLAN_NAME, ""));
writeD(hero.getInteger(Hero.CLAN_CREST, 0));
writeD(hero.getInt(Hero.CLAN_CREST, 0));
writeS(hero.getString(Hero.ALLY_NAME, ""));
writeD(hero.getInteger(Hero.ALLY_CREST, 0));
writeD(hero.getInteger(Hero.COUNT));
writeD(hero.getInt(Hero.ALLY_CREST, 0));
writeD(hero.getInt(Hero.COUNT));
}
}
}

View File

@ -16,11 +16,11 @@
*/
package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.entity.sevensigns.SevenSigns;
import org.l2jmobius.gameserver.model.entity.sevensigns.SevenSignsFestival;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* Seven Signs Record Update packet type id 0xf5 format: c cc (Page Num = 1 -> 4, period) 1: [ddd cc dd ddd c ddd c] 2: [hc [cd (dc (S))] 3: [ccc (cccc)] 4: [(cchh)]

View File

@ -17,6 +17,7 @@
package org.l2jmobius.gameserver.skills.handlers;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -24,7 +25,6 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.EtcStatusUpdate;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.skills.effects.EffectCharge;
import org.l2jmobius.gameserver.templates.StatsSet;
public class SkillCharge extends Skill
{

View File

@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.skills.handlers;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
@ -28,7 +29,6 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.skills.BaseStats;
import org.l2jmobius.gameserver.skills.Formulas;
import org.l2jmobius.gameserver.skills.effects.EffectCharge;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.item.WeaponType;
public class SkillChargeDmg extends Skill
@ -39,7 +39,7 @@ public class SkillChargeDmg extends Skill
public SkillChargeDmg(StatsSet set)
{
super(set);
chargeSkillId = set.getInteger("charge_skill_id");
chargeSkillId = set.getInt("charge_skill_id");
}
@Override

View File

@ -17,6 +17,7 @@
package org.l2jmobius.gameserver.skills.handlers;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@ -24,7 +25,6 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.EtcStatusUpdate;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.skills.effects.EffectCharge;
import org.l2jmobius.gameserver.templates.StatsSet;
public class SkillChargeEffect extends Skill
{
@ -33,7 +33,7 @@ public class SkillChargeEffect extends Skill
public SkillChargeEffect(StatsSet set)
{
super(set);
chargeSkillId = set.getInteger("charge_skill_id");
chargeSkillId = set.getInt("charge_skill_id");
}
@Override

View File

@ -16,9 +16,12 @@
*/
package org.l2jmobius.gameserver.skills.handlers;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.idfactory.IdFactory;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
@ -26,23 +29,22 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ItemList;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* @author Nemesiss
*/
public class SkillCreateItem extends Skill
{
private final int[] _createItemId;
private final List<Integer> _createItemId;
private final int _createItemCount;
private final int _randomCount;
public SkillCreateItem(StatsSet set)
{
super(set);
_createItemId = set.getIntegerArray("create_item_id");
_createItemCount = set.getInteger("create_item_count", 0);
_randomCount = set.getInteger("random_count", 1);
_createItemId = set.getList("create_item_id", Integer.class);
_createItemCount = set.getInt("create_item_count", 0);
_randomCount = set.getInt("random_count", 1);
}
@Override
@ -61,8 +63,8 @@ public class SkillCreateItem extends Skill
if (creature instanceof PlayerInstance)
{
final int count = _createItemCount * (Rnd.get(_randomCount) + 1);
final int rndid = Rnd.get(_createItemId.length);
giveItems(player, _createItemId[rndid], count);
final int rndId = Rnd.get(_createItemId.size());
giveItems(player, _createItemId.get(rndId), count);
}
}

View File

@ -17,12 +17,12 @@
package org.l2jmobius.gameserver.skills.handlers;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
public class SkillDefault extends Skill
{

View File

@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.skills.handlers;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.CubicInstance;
@ -27,7 +28,6 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.skills.Formulas;
import org.l2jmobius.gameserver.templates.StatsSet;
public class SkillDrain extends Skill
{
@ -40,7 +40,7 @@ public class SkillDrain extends Skill
super(set);
_absorbPart = set.getFloat("absorbPart", 0.f);
_absorbAbs = set.getInteger("absorbAbs", 0);
_absorbAbs = set.getInt("absorbAbs", 0);
}
@Override

View File

@ -18,12 +18,12 @@ package org.l2jmobius.gameserver.skills.handlers;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.skills.Formulas;
import org.l2jmobius.gameserver.templates.StatsSet;
public class SkillElemental extends Skill
{
@ -35,11 +35,11 @@ public class SkillElemental extends Skill
super(set);
_seeds = new int[3];
_seeds[0] = set.getInteger("seed1", 0);
_seeds[1] = set.getInteger("seed2", 0);
_seeds[2] = set.getInteger("seed3", 0);
_seeds[0] = set.getInt("seed1", 0);
_seeds[1] = set.getInt("seed2", 0);
_seeds[2] = set.getInt("seed3", 0);
if (set.getInteger("seed_any", 0) == 1)
if (set.getInt("seed_any", 0) == 1)
{
_seedAny = true;
}

View File

@ -18,10 +18,10 @@ package org.l2jmobius.gameserver.skills.handlers;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.skills.effects.EffectSeed;
import org.l2jmobius.gameserver.templates.StatsSet;
public class SkillSeed extends Skill
{

View File

@ -20,12 +20,12 @@ import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.idfactory.IdFactory;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.EffectPointInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
public class SkillSignet extends Skill
@ -36,8 +36,8 @@ public class SkillSignet extends Skill
public SkillSignet(StatsSet set)
{
super(set);
_effectNpcId = set.getInteger("effectNpcId", -1);
effectId = set.getInteger("effectId", -1);
_effectNpcId = set.getInt("effectNpcId", -1);
effectId = set.getInt("effectId", -1);
}
@Override

View File

@ -17,9 +17,9 @@
package org.l2jmobius.gameserver.skills.handlers;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.templates.StatsSet;
public class SkillSignetCasttime extends Skill
{
@ -29,8 +29,8 @@ public class SkillSignetCasttime extends Skill
public SkillSignetCasttime(StatsSet set)
{
super(set);
_effectNpcId = set.getInteger("effectNpcId", -1);
effectId = set.getInteger("effectId", -1);
_effectNpcId = set.getInt("effectNpcId", -1);
effectId = set.getInt("effectId", -1);
}
@Override

View File

@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.datatables.sql.NpcTable;
import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
import org.l2jmobius.gameserver.idfactory.IdFactory;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -32,7 +33,6 @@ import org.l2jmobius.gameserver.model.actor.instance.SummonInstance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.PetInfo;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
public class SkillSummon extends Skill
@ -56,21 +56,21 @@ public class SkillSummon extends Skill
{
super(set);
_npcId = set.getInteger("npcId", 0); // default for undescribed skills
_npcId = set.getInt("npcId", 0); // default for undescribed skills
_expPenalty = set.getFloat("expPenalty", 0.f);
_isCubic = set.getBool("isCubic", false);
_isCubic = set.getBoolean("isCubic", false);
_activationtime = set.getInteger("activationtime", 8);
_activationchance = set.getInteger("activationchance", 30);
_activationtime = set.getInt("activationtime", 8);
_activationchance = set.getInt("activationchance", 30);
_summonTotalLifeTime = set.getInteger("summonTotalLifeTime", 1200000); // 20 minutes default
_summonTimeLostIdle = set.getInteger("summonTimeLostIdle", 0);
_summonTimeLostActive = set.getInteger("summonTimeLostActive", 0);
_summonTotalLifeTime = set.getInt("summonTotalLifeTime", 1200000); // 20 minutes default
_summonTimeLostIdle = set.getInt("summonTimeLostIdle", 0);
_summonTimeLostActive = set.getInt("summonTimeLostActive", 0);
_itemConsumeOT = set.getInteger("itemConsumeCountOT", 0);
_itemConsumeIdOT = set.getInteger("itemConsumeIdOT", 0);
_itemConsumeTime = set.getInteger("itemConsumeTime", 0);
_itemConsumeSteps = set.getInteger("itemConsumeSteps", 0);
_itemConsumeOT = set.getInt("itemConsumeCountOT", 0);
_itemConsumeIdOT = set.getInt("itemConsumeIdOT", 0);
_itemConsumeTime = set.getInt("itemConsumeTime", 0);
_itemConsumeSteps = set.getInt("itemConsumeSteps", 0);
}
public boolean checkCondition(Creature creature)

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.templates;
import org.l2jmobius.gameserver.model.StatsSet;
/**
* This class represents a Newbie Helper Buff Author: Ayor
*/
@ -46,10 +48,10 @@ public class HelperBuff
*/
public HelperBuff(StatsSet set)
{
_lowerLevel = set.getInteger("lowerLevel");
_upperLevel = set.getInteger("upperLevel");
_skillID = set.getInteger("skillID");
_skillLevel = set.getInteger("skillLevel");
_lowerLevel = set.getInt("lowerLevel");
_upperLevel = set.getInt("upperLevel");
_skillID = set.getInt("skillID");
_skillLevel = set.getInt("skillLevel");
if ("false".equals(set.getString("isMagicClass")))
{

View File

@ -1,641 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.templates;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
/**
* @author mkizub <BR>
* This class is used in order to have a set of couples (key,value).<BR>
* Methods deployed are accessors to the set (add/get value from its key) and addition of a whole set in the current one.
*/
public class StatsSet
{
private final Logger LOGGER = Logger.getLogger(StatsSet.class.getName());
private final Map<String, Object> _set = new HashMap<>();
/**
* Returns the set of values
* @return HashMap
*/
public Map<String, Object> getSet()
{
return _set;
}
/**
* Add a set of couple values in the current set
* @param newSet : StatsSet pointing out the list of couples to add in the current set
*/
public synchronized void add(StatsSet newSet)
{
final Map<String, Object> newMap = newSet.getSet();
for (String key : newMap.keySet())
{
final Object value = newMap.get(key);
_set.put(key, value);
}
}
/**
* Return the boolean associated to the key put in parameter ("name")
* @param name : String designating the key in the set
* @return boolean : value associated to the key
*/
public synchronized boolean getBool(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new IllegalArgumentException("Boolean value required, but not specified");
}
if (val instanceof Boolean)
{
return ((Boolean) val).booleanValue();
}
try
{
return Boolean.parseBoolean((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Boolean value required, but found: " + val);
}
}
/**
* Return the boolean associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @param deflt : boolean designating the default value if value associated with the key is null
* @return boolean : value of the key
*/
public synchronized boolean getBool(String name, boolean deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
if (val instanceof Boolean)
{
return ((Boolean) val).booleanValue();
}
try
{
return Boolean.parseBoolean((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Boolean value required, but found: " + val);
}
}
/**
* Returns the int associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @param deflt : byte designating the default value if value associated with the key is null
* @return byte : value associated to the key
*/
public synchronized byte getByte(String name, byte deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
if (val instanceof Number)
{
return ((Number) val).byteValue();
}
try
{
return Byte.parseByte((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Byte value required, but found: " + val);
}
}
/**
* Returns the byte associated to the key put in parameter ("name").
* @param name : String designating the key in the set
* @return byte : value associated to the key
*/
public synchronized byte getByte(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new IllegalArgumentException("Byte value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).byteValue();
}
try
{
return Byte.parseByte((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Byte value required, but found: " + val);
}
}
/**
* Returns the short associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @param deflt : short designating the default value if value associated with the key is null
* @return short : value associated to the key
*/
public synchronized short getShort(String name, short deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
if (val instanceof Number)
{
return ((Number) val).shortValue();
}
try
{
return Short.parseShort((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Short value required, but found: " + val);
}
}
/**
* Returns the short associated to the key put in parameter ("name").
* @param name : String designating the key in the set
* @return short : value associated to the key
*/
public synchronized short getShort(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new IllegalArgumentException("Short value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).shortValue();
}
try
{
return Short.parseShort((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Short value required, but found: " + val);
}
}
/**
* Returns the int associated to the key put in parameter ("name").
* @param name : String designating the key in the set
* @return int : value associated to the key
*/
public synchronized int getInteger(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new IllegalArgumentException("Integer value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).intValue();
}
try
{
return Integer.parseInt((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Integer value required, but found: " + val);
}
}
/**
* Returns the int associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @param deflt : int designating the default value if value associated with the key is null
* @return int : value associated to the key
*/
public synchronized int getInteger(String name, int deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
if (val instanceof Number)
{
return ((Number) val).intValue();
}
try
{
return Integer.parseInt((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Integer value required, but found: " + val);
}
}
/**
* Returns the int[] associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @return int[] : value associated to the key
*/
public synchronized int[] getIntegerArray(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new RuntimeException();
}
if (val instanceof Number)
{
final int[] result =
{
((Number) val).intValue()
};
return result;
}
int c = 0;
final String[] vals = ((String) val).split(";");
final int[] result = new int[vals.length];
for (String v : vals)
{
try
{
result[c] = Integer.parseInt(v);
c++;
}
catch (Exception e)
{
throw new IllegalArgumentException("Integer value required, but found: " + val);
}
}
return result;
}
/**
* Returns the long associated to the key put in parameter ("name").
* @param name : String designating the key in the set
* @return long : value associated to the key
*/
public synchronized long getLong(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new RuntimeException();
}
if (val instanceof Number)
{
return ((Number) val).longValue();
}
try
{
return Long.parseLong((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Integer value required, but found: " + val);
}
}
/**
* Returns the long associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @param deflt : long designating the default value if value associated with the key is null
* @return long : value associated to the key
*/
public synchronized long getLong(String name, int deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
if (val instanceof Number)
{
return ((Number) val).longValue();
}
try
{
return Long.parseLong((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Integer value required, but found: " + val);
}
}
/**
* Returns the float associated to the key put in parameter ("name").
* @param name : String designating the key in the set
* @return float : value associated to the key
*/
public synchronized float getFloat(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new IllegalArgumentException("Float value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).floatValue();
}
try
{
return (float) Double.parseDouble((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Float value required, but found: " + val);
}
}
/**
* Returns the float associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @param deflt : float designating the default value if value associated with the key is null
* @return float : value associated to the key
*/
public synchronized float getFloat(String name, float deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
if (val instanceof Number)
{
return ((Number) val).floatValue();
}
try
{
return (float) Double.parseDouble((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Float value required, but found: " + val);
}
}
/**
* Returns the double associated to the key put in parameter ("name").
* @param name : String designating the key in the set
* @return double : value associated to the key
*/
public synchronized double getDouble(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new IllegalArgumentException("Float value required, but not specified");
}
if (val instanceof Number)
{
return ((Number) val).doubleValue();
}
try
{
return Double.parseDouble((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Float value required, but found: " + val);
}
}
/**
* Returns the double associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @param deflt : float designating the default value if value associated with the key is null
* @return double : value associated to the key
*/
public synchronized double getDouble(String name, float deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
if (val instanceof Number)
{
return ((Number) val).doubleValue();
}
try
{
return Double.parseDouble((String) val);
}
catch (Exception e)
{
throw new IllegalArgumentException("Float value required, but found: " + val);
}
}
/**
* Returns the String associated to the key put in parameter ("name").
* @param name : String designating the key in the set
* @return String : value associated to the key
*/
public synchronized String getString(String name)
{
final Object val = _set.get(name);
if (val == null)
{
throw new IllegalArgumentException("String value required, but not specified");
}
return String.valueOf(val);
}
/**
* Returns the String associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt.
* @param name : String designating the key in the set
* @param deflt : String designating the default value if value associated with the key is null
* @return String : value associated to the key
*/
public synchronized String getString(String name, String deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
return String.valueOf(val);
}
/**
* Returns an enumeration of &lt;T&gt; from the set
* @param <T> : Class of the enumeration returned
* @param name : String designating the key in the set
* @param enumClass : Class designating the class of the value associated with the key in the set
* @return Enum<T>
*/
@SuppressWarnings("unchecked")
public synchronized <T extends Enum<T>> T getEnum(String name, Class<T> enumClass)
{
final Object val = _set.get(name);
if (val == null)
{
throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + " required, but not specified");
}
if (enumClass.isInstance(val))
{
return (T) val;
}
try
{
return Enum.valueOf(enumClass, String.valueOf(val));
}
catch (Exception e)
{
throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + "required, but found: " + val);
}
}
/**
* Returns an enumeration of &lt;T&gt; from the set. If the enumeration is empty, the method returns the value of the parameter "deflt".
* @param <T> : Class of the enumeration returned
* @param name : String designating the key in the set
* @param enumClass : Class designating the class of the value associated with the key in the set
* @param deflt : <T> designating the value by default
* @return Enum<T>
*/
@SuppressWarnings("unchecked")
public synchronized <T extends Enum<T>> T getEnum(String name, Class<T> enumClass, T deflt)
{
final Object val = _set.get(name);
if (val == null)
{
return deflt;
}
if (enumClass.isInstance(val))
{
return (T) val;
}
try
{
return Enum.valueOf(enumClass, String.valueOf(val));
}
catch (Exception e)
{
throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + "required, but found: " + val);
}
}
/**
* Add the String hold in param "value" for the key "name"
* @param name : String designating the key in the set
* @param value : String corresponding to the value associated with the key
*/
public synchronized void set(String name, String value)
{
_set.put(name, value);
}
/**
* Add the boolean hold in param "value" for the key "name"
* @param name : String designating the key in the set
* @param value : boolean corresponding to the value associated with the key
*/
public synchronized void set(String name, boolean value)
{
_set.put(name, value);
}
/**
* Add the int hold in param "value" for the key "name"
* @param name : String designating the key in the set
* @param value : int corresponding to the value associated with the key
*/
public synchronized void set(String name, int value)
{
_set.put(name, value);
}
/**
* Add the double hold in param "value" for the key "name"
* @param name : String designating the key in the set
* @param value : double corresponding to the value associated with the key
*/
public synchronized void set(String name, double value)
{
_set.put(name, value);
}
/**
* Add the long hold in param "value" for the key "name"
* @param name : String designating the key in the set
* @param value : double corresponding to the value associated with the key
*/
public synchronized void set(String name, long value)
{
_set.put(name, value);
}
/**
* Add the Enum hold in param "value" for the key "name"
* @param name : String designating the key in the set
* @param value : Enum corresponding to the value associated with the key
*/
public synchronized void set(String name, Enum<?> value)
{
_set.put(name, value);
}
/**
* Safe version of "set". Expected values are within [min, max[<br>
* Add the int hold in param "value" for the key "name".
* @param name : String designating the key in the set
* @param value : int corresponding to the value associated with the key
* @param min
* @param max
* @param reference
*/
public synchronized void safeSet(String name, int value, int min, int max, String reference)
{
assert ((min > max) || ((value >= min) && (value < max)));
if ((min <= max) && ((value < min) || (value >= max)))
{
LOGGER.info("[StatsSet][safeSet] Incorrect value: " + value + "for: " + name + "Ref: " + reference);
}
set(name, value);
}
@Override
public String toString()
{
return "StatsSet [_set=" + _set + "]";
}
}

View File

@ -16,7 +16,7 @@
*/
package org.l2jmobius.gameserver.templates.creatures;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.model.StatsSet;
/**
* @version $Revision: 1.2.4.6 $ $Date: 2005/04/02 15:57:51 $
@ -99,72 +99,72 @@ public class CreatureTemplate
public CreatureTemplate(StatsSet set)
{
// Base stats
baseSTR = set.getInteger("baseSTR");
baseCON = set.getInteger("baseCON");
baseDEX = set.getInteger("baseDEX");
baseINT = set.getInteger("baseINT");
baseWIT = set.getInteger("baseWIT");
baseMEN = set.getInteger("baseMEN");
baseSTR = set.getInt("baseSTR");
baseCON = set.getInt("baseCON");
baseDEX = set.getInt("baseDEX");
baseINT = set.getInt("baseINT");
baseWIT = set.getInt("baseWIT");
baseMEN = set.getInt("baseMEN");
baseHpMax = set.getFloat("baseHpMax");
baseCpMax = set.getFloat("baseCpMax");
baseMpMax = set.getFloat("baseMpMax");
baseHpReg = set.getFloat("baseHpReg");
baseMpReg = set.getFloat("baseMpReg");
basePAtk = set.getInteger("basePAtk");
baseMAtk = set.getInteger("baseMAtk");
basePDef = set.getInteger("basePDef");
baseMDef = set.getInteger("baseMDef");
basePAtkSpd = set.getInteger("basePAtkSpd");
baseMAtkSpd = set.getInteger("baseMAtkSpd");
basePAtk = set.getInt("basePAtk");
baseMAtk = set.getInt("baseMAtk");
basePDef = set.getInt("basePDef");
baseMDef = set.getInt("baseMDef");
basePAtkSpd = set.getInt("basePAtkSpd");
baseMAtkSpd = set.getInt("baseMAtkSpd");
baseMReuseRate = set.getFloat("baseMReuseDelay", 1.f);
baseShldDef = set.getInteger("baseShldDef");
baseAtkRange = set.getInteger("baseAtkRange");
baseShldRate = set.getInteger("baseShldRate");
baseCritRate = set.getInteger("baseCritRate");
baseMCritRate = set.getInteger("baseMCritRate", 5);
baseWalkSpd = set.getInteger("baseWalkSpd");
baseRunSpd = set.getInteger("baseRunSpd");
baseShldDef = set.getInt("baseShldDef");
baseAtkRange = set.getInt("baseAtkRange");
baseShldRate = set.getInt("baseShldRate");
baseCritRate = set.getInt("baseCritRate");
baseMCritRate = set.getInt("baseMCritRate", 5);
baseWalkSpd = set.getInt("baseWalkSpd");
baseRunSpd = set.getInt("baseRunSpd");
// SpecialStats
baseBreath = set.getInteger("baseBreath", 100);
baseAggression = set.getInteger("baseAggression", 0);
baseBleed = set.getInteger("baseBleed", 0);
basePoison = set.getInteger("basePoison", 0);
baseStun = set.getInteger("baseStun", 0);
baseRoot = set.getInteger("baseRoot", 0);
baseMovement = set.getInteger("baseMovement", 0);
baseConfusion = set.getInteger("baseConfusion", 0);
baseSleep = set.getInteger("baseSleep", 0);
baseFire = set.getInteger("baseFire", 0);
baseWind = set.getInteger("baseWind", 0);
baseWater = set.getInteger("baseWater", 0);
baseEarth = set.getInteger("baseEarth", 0);
baseHoly = set.getInteger("baseHoly", 0);
baseDark = set.getInteger("baseDark", 0);
baseAggressionVuln = set.getInteger("baseAaggressionVuln", 1);
baseBleedVuln = set.getInteger("baseBleedVuln", 1);
basePoisonVuln = set.getInteger("basePoisonVuln", 1);
baseStunVuln = set.getInteger("baseStunVuln", 1);
baseRootVuln = set.getInteger("baseRootVuln", 1);
baseMovementVuln = set.getInteger("baseMovementVuln", 1);
baseConfusionVuln = set.getInteger("baseConfusionVuln", 1);
baseSleepVuln = set.getInteger("baseSleepVuln", 1);
baseFireVuln = set.getInteger("baseFireVuln", 1);
baseWindVuln = set.getInteger("baseWindVuln", 1);
baseWaterVuln = set.getInteger("baseWaterVuln", 1);
baseEarthVuln = set.getInteger("baseEarthVuln", 1);
baseHolyVuln = set.getInteger("baseHolyVuln", 1);
baseDarkVuln = set.getInteger("baseDarkVuln", 1);
baseCritVuln = set.getInteger("baseCritVuln", 1);
baseBreath = set.getInt("baseBreath", 100);
baseAggression = set.getInt("baseAggression", 0);
baseBleed = set.getInt("baseBleed", 0);
basePoison = set.getInt("basePoison", 0);
baseStun = set.getInt("baseStun", 0);
baseRoot = set.getInt("baseRoot", 0);
baseMovement = set.getInt("baseMovement", 0);
baseConfusion = set.getInt("baseConfusion", 0);
baseSleep = set.getInt("baseSleep", 0);
baseFire = set.getInt("baseFire", 0);
baseWind = set.getInt("baseWind", 0);
baseWater = set.getInt("baseWater", 0);
baseEarth = set.getInt("baseEarth", 0);
baseHoly = set.getInt("baseHoly", 0);
baseDark = set.getInt("baseDark", 0);
baseAggressionVuln = set.getInt("baseAaggressionVuln", 1);
baseBleedVuln = set.getInt("baseBleedVuln", 1);
basePoisonVuln = set.getInt("basePoisonVuln", 1);
baseStunVuln = set.getInt("baseStunVuln", 1);
baseRootVuln = set.getInt("baseRootVuln", 1);
baseMovementVuln = set.getInt("baseMovementVuln", 1);
baseConfusionVuln = set.getInt("baseConfusionVuln", 1);
baseSleepVuln = set.getInt("baseSleepVuln", 1);
baseFireVuln = set.getInt("baseFireVuln", 1);
baseWindVuln = set.getInt("baseWindVuln", 1);
baseWaterVuln = set.getInt("baseWaterVuln", 1);
baseEarthVuln = set.getInt("baseEarthVuln", 1);
baseHolyVuln = set.getInt("baseHolyVuln", 1);
baseDarkVuln = set.getInt("baseDarkVuln", 1);
baseCritVuln = set.getInt("baseCritVuln", 1);
isUndead = set.getInteger("isUndead", 0) == 1;
isUndead = set.getInt("isUndead", 0) == 1;
// C4 Stats
baseMpConsumeRate = set.getInteger("baseMpConsumeRate", 0);
baseHpConsumeRate = set.getInteger("baseHpConsumeRate", 0);
baseMpConsumeRate = set.getInt("baseMpConsumeRate", 0);
baseHpConsumeRate = set.getInt("baseHpConsumeRate", 0);
// Geometry
collisionRadius = set.getInteger("collision_radius");
collisionHeight = set.getInteger("collision_height");
collisionRadius = set.getInt("collision_radius");
collisionHeight = set.getInt("collision_height");
}
}

View File

@ -26,10 +26,10 @@ import org.l2jmobius.gameserver.model.DropCategory;
import org.l2jmobius.gameserver.model.DropData;
import org.l2jmobius.gameserver.model.MinionData;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.skills.Stats;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* This cl contains all generic data of a Spawn object.<BR>
@ -134,21 +134,21 @@ public class NpcTemplate extends CreatureTemplate
public NpcTemplate(StatsSet set, boolean custom)
{
super(set);
npcId = set.getInteger("npcId");
idTemplate = set.getInteger("idTemplate");
npcId = set.getInt("npcId");
idTemplate = set.getInt("idTemplate");
type = set.getString("type");
name = set.getString("name");
serverSideName = set.getBool("serverSideName");
serverSideName = set.getBoolean("serverSideName");
title = set.getString("title");
serverSideTitle = set.getBool("serverSideTitle");
serverSideTitle = set.getBoolean("serverSideTitle");
sex = set.getString("sex");
level = set.getByte("level");
rewardExp = set.getInteger("rewardExp");
rewardSp = set.getInteger("rewardSp");
aggroRange = set.getInteger("aggroRange");
rhand = set.getInteger("rhand");
lhand = set.getInteger("lhand");
armor = set.getInteger("armor");
rewardExp = set.getInt("rewardExp");
rewardSp = set.getInt("rewardSp");
aggroRange = set.getInt("aggroRange");
rhand = set.getInt("rhand");
lhand = set.getInt("lhand");
armor = set.getInt("armor");
final String f = set.getString("factionId", null);
if (f == null)
{
@ -158,8 +158,8 @@ public class NpcTemplate extends CreatureTemplate
{
factionId = f.intern();
}
factionRange = set.getInteger("factionRange", 0);
absorbLevel = set.getInteger("absorb_level", 0);
factionRange = set.getInt("factionRange", 0);
absorbLevel = set.getInt("absorb_level", 0);
absorbType = AbsorbCrystalType.valueOf(set.getString("absorb_type"));
_npcStatsSet = set;
_custom = custom;

View File

@ -20,9 +20,9 @@ import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.gameserver.datatables.xml.ItemTable;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.Race;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.templates.item.Item;
/**
@ -55,17 +55,17 @@ public class PlayerTemplate extends CreatureTemplate
public PlayerTemplate(StatsSet set)
{
super(set);
classId = ClassId.values()[set.getInteger("classId")];
race = Race.values()[set.getInteger("raceId")];
classId = ClassId.values()[set.getInt("classId")];
race = Race.values()[set.getInt("raceId")];
className = set.getString("className");
_currentCollisionRadius = set.getInteger("collision_radius");
_currentCollisionHeight = set.getInteger("collision_height");
_currentCollisionRadius = set.getInt("collision_radius");
_currentCollisionHeight = set.getInt("collision_height");
spawnX = set.getInteger("spawnX");
spawnY = set.getInteger("spawnY");
spawnZ = set.getInteger("spawnZ");
spawnX = set.getInt("spawnX");
spawnY = set.getInt("spawnY");
spawnZ = set.getInt("spawnZ");
classBaseLevel = set.getInteger("classBaseLevel");
classBaseLevel = set.getInt("classBaseLevel");
lvlHpAdd = set.getFloat("lvlHpAdd");
lvlHpMod = set.getFloat("lvlHpMod");
lvlCpAdd = set.getFloat("lvlCpAdd");

View File

@ -21,12 +21,12 @@ import java.util.List;
import org.l2jmobius.gameserver.datatables.SkillTable;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
import org.l2jmobius.gameserver.skills.Env;
import org.l2jmobius.gameserver.skills.funcs.Func;
import org.l2jmobius.gameserver.skills.funcs.FuncTemplate;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* This class is dedicated to the management of armors.
@ -55,14 +55,14 @@ public class Armor extends Item
public Armor(ArmorType type, StatsSet set)
{
super(type, set);
_avoidModifier = set.getInteger("avoid_modify");
_pDef = set.getInteger("p_def");
_mDef = set.getInteger("m_def");
_mpBonus = set.getInteger("mp_bonus", 0);
_hpBonus = set.getInteger("hp_bonus", 0);
_avoidModifier = set.getInt("avoid_modify");
_pDef = set.getInt("p_def");
_mDef = set.getInt("m_def");
_mpBonus = set.getInt("mp_bonus", 0);
_hpBonus = set.getInt("hp_bonus", 0);
final int sId = set.getInteger("item_skill_id");
final int sLv = set.getInteger("item_skill_lvl");
final int sId = set.getInt("item_skill_id");
final int sLv = set.getInt("item_skill_lvl");
if ((sId > 0) && (sLv > 0))
{
_itemSkill = SkillTable.getInstance().getInfo(sId, sLv);

View File

@ -16,7 +16,7 @@
*/
package org.l2jmobius.gameserver.templates.item;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.model.StatsSet;
/**
* This class is dedicated to the management of EtcItem.

View File

@ -16,7 +16,7 @@
*/
package org.l2jmobius.gameserver.templates.item;
import org.l2jmobius.gameserver.templates.StatsSet;
import org.l2jmobius.gameserver.model.StatsSet;
public class Henna
{
@ -34,17 +34,17 @@ public class Henna
public Henna(StatsSet set)
{
symbolId = set.getInteger("symbol_id");
symbolId = set.getInt("symbol_id");
symbolName = ""; // set.getString("symbol_name");
dye = set.getInteger("dye");
price = set.getInteger("price");
amount = set.getInteger("amount");
statINT = set.getInteger("stat_INT");
statSTR = set.getInteger("stat_STR");
statCON = set.getInteger("stat_CON");
statMEM = set.getInteger("stat_MEM");
statDEX = set.getInteger("stat_DEX");
statWIT = set.getInteger("stat_WIT");
dye = set.getInt("dye");
price = set.getInt("price");
amount = set.getInt("amount");
statINT = set.getInt("stat_INT");
statSTR = set.getInt("stat_STR");
statCON = set.getInt("stat_CON");
statMEM = set.getInt("stat_MEM");
statDEX = set.getInt("stat_DEX");
statWIT = set.getInt("stat_WIT");
}
public int getSymbolId()

View File

@ -22,13 +22,13 @@ import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
import org.l2jmobius.gameserver.skills.Env;
import org.l2jmobius.gameserver.skills.effects.EffectTemplate;
import org.l2jmobius.gameserver.skills.funcs.Func;
import org.l2jmobius.gameserver.skills.funcs.FuncTemplate;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* This class contains all informations concerning the item (weapon, armor, etc).<BR>
@ -163,13 +163,13 @@ public abstract class Item
protected Item(Enum<?> type, StatsSet set)
{
_type = type;
_itemId = set.getInteger("item_id");
_itemId = set.getInt("item_id");
_name = set.getString("name");
_type1 = set.getInteger("type1"); // needed for item list (inventory)
_type2 = set.getInteger("type2"); // different lists for armor, weapon, etc
_weight = set.getInteger("weight");
_crystallizable = set.getBool("crystallizable");
_stackable = set.getBool("stackable", false);
_type1 = set.getInt("type1"); // needed for item list (inventory)
_type2 = set.getInt("type2"); // different lists for armor, weapon, etc
_weight = set.getInt("weight");
_crystallizable = set.getBoolean("crystallizable");
_stackable = set.getBoolean("stackable", false);
switch (set.getString("crystal_type", ""))
{
case "d":
@ -203,7 +203,7 @@ public abstract class Item
break;
}
}
_duration = set.getInteger("duration");
_duration = set.getInt("duration");
switch (set.getString("bodypart", ""))
{
case "chest":
@ -330,12 +330,12 @@ public abstract class Item
}
}
_referencePrice = set.getInteger("price");
_crystalCount = set.getInteger("crystal_count", 0);
_sellable = set.getBool("sellable", true);
_dropable = set.getBool("dropable", true);
_destroyable = set.getBool("destroyable", true);
_tradeable = set.getBool("tradeable", true);
_referencePrice = set.getInt("price");
_crystalCount = set.getInt("crystal_count", 0);
_sellable = set.getBoolean("sellable", true);
_dropable = set.getBoolean("dropable", true);
_destroyable = set.getBoolean("destroyable", true);
_tradeable = set.getBoolean("tradeable", true);
}
/**

View File

@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.SkillHandler;
import org.l2jmobius.gameserver.model.Effect;
import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.Skill.SkillType;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
@ -35,7 +36,6 @@ import org.l2jmobius.gameserver.skills.Env;
import org.l2jmobius.gameserver.skills.conditions.ConditionGameChance;
import org.l2jmobius.gameserver.skills.funcs.Func;
import org.l2jmobius.gameserver.skills.funcs.FuncTemplate;
import org.l2jmobius.gameserver.templates.StatsSet;
/**
* This class is dedicated to the management of weapons.
@ -82,37 +82,37 @@ public class Weapon extends Item
public Weapon(WeaponType type, StatsSet set)
{
super(type, set);
_soulShotCount = set.getInteger("soulshots");
_spiritShotCount = set.getInteger("spiritshots");
_pDam = set.getInteger("p_dam");
_rndDam = set.getInteger("rnd_dam");
_critical = set.getInteger("critical");
_soulShotCount = set.getInt("soulshots");
_spiritShotCount = set.getInt("spiritshots");
_pDam = set.getInt("p_dam");
_rndDam = set.getInt("rnd_dam");
_critical = set.getInt("critical");
_hitModifier = set.getDouble("hit_modify");
_avoidModifier = set.getInteger("avoid_modify");
_shieldDef = set.getInteger("shield_def");
_avoidModifier = set.getInt("avoid_modify");
_shieldDef = set.getInt("shield_def");
_shieldDefRate = set.getDouble("shield_def_rate");
_atkSpeed = set.getInteger("atk_speed");
_atkReuse = set.getInteger("atk_reuse", type == WeaponType.BOW ? 1500 : 0);
_mpConsume = set.getInteger("mp_consume");
_mDam = set.getInteger("m_dam");
_atkSpeed = set.getInt("atk_speed");
_atkReuse = set.getInt("atk_reuse", type == WeaponType.BOW ? 1500 : 0);
_mpConsume = set.getInt("mp_consume");
_mDam = set.getInt("m_dam");
int sId = set.getInteger("item_skill_id");
int sLv = set.getInteger("item_skill_lvl");
int sId = set.getInt("item_skill_id");
int sLv = set.getInt("item_skill_lvl");
if ((sId > 0) && (sLv > 0))
{
_itemSkill = SkillTable.getInstance().getInfo(sId, sLv);
}
sId = set.getInteger("enchant4_skill_id");
sLv = set.getInteger("enchant4_skill_lvl");
sId = set.getInt("enchant4_skill_id");
sLv = set.getInt("enchant4_skill_lvl");
if ((sId > 0) && (sLv > 0))
{
_enchant4Skill = SkillTable.getInstance().getInfo(sId, sLv);
}
sId = set.getInteger("onCast_skill_id");
sLv = set.getInteger("onCast_skill_lvl");
int sCh = set.getInteger("onCast_skill_chance");
sId = set.getInt("onCast_skill_id");
sLv = set.getInt("onCast_skill_lvl");
int sCh = set.getInt("onCast_skill_chance");
if ((sId > 0) && (sLv > 0) && (sCh > 0))
{
final Skill skill = SkillTable.getInstance().getInfo(sId, sLv);
@ -120,9 +120,9 @@ public class Weapon extends Item
attachOnCast(skill);
}
sId = set.getInteger("onCrit_skill_id");
sLv = set.getInteger("onCrit_skill_lvl");
sCh = set.getInteger("onCrit_skill_chance");
sId = set.getInt("onCrit_skill_id");
sLv = set.getInt("onCrit_skill_lvl");
sCh = set.getInt("onCrit_skill_chance");
if ((sId > 0) && (sLv > 0) && (sCh > 0))
{
final Skill skill = SkillTable.getInstance().getInfo(sId, sLv);

View File

@ -21,7 +21,7 @@ import java.util.logging.LogRecord;
import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.datatables.GmListTable;
import org.l2jmobius.gameserver.datatables.xml.AdminData;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
/**
@ -48,23 +48,23 @@ public class IllegalPlayerAction implements Runnable
switch (punishment)
{
case PUNISH_KICK:
case PUNISH_KICK:
{
_actor.sendMessage("You will be kicked for illegal action, GM informed.");
break;
break;
}
case PUNISH_KICKBAN:
case PUNISH_KICKBAN:
{
_actor.setAccessLevel(-100);
_actor.setAccountAccesslevel(-100);
_actor.sendMessage("You are banned for illegal action, GM informed.");
break;
break;
}
case PUNISH_JAIL:
case PUNISH_JAIL:
{
_actor.sendMessage("Illegal action performed!");
_actor.sendMessage("You will be teleported to GM Consultation Service area and jailed.");
break;
break;
}
}
}
@ -81,28 +81,28 @@ public class IllegalPlayerAction implements Runnable
});
_logAudit.log(record);
GmListTable.broadcastMessageToGMs(_message);
AdminData.broadcastMessageToGMs(_message);
switch (_punishment)
{
case PUNISH_BROADCAST:
case PUNISH_BROADCAST:
{
return;
return;
}
case PUNISH_KICK:
case PUNISH_KICK:
{
_actor.logout(true);
break;
break;
}
case PUNISH_KICKBAN:
case PUNISH_KICKBAN:
{
_actor.logout(true);
break;
break;
}
case PUNISH_JAIL:
case PUNISH_JAIL:
{
_actor.setPunishLevel(PlayerInstance.PunishLevel.JAIL, Config.DEFAULT_PUNISH_PARAM);
break;
break;
}
}
}

Some files were not shown because too many files have changed in this diff Show More