Use PropertiesParser for reading configurations.
This commit is contained in:
parent
faa853de6b
commit
dfddf3f519
@ -18,7 +18,7 @@ ChampionMaxLevel = 70
|
|||||||
ChampionHp = 8
|
ChampionHp = 8
|
||||||
|
|
||||||
# Hp Regen Multiplier.
|
# Hp Regen Multiplier.
|
||||||
ChampionRegenHp = 1.
|
ChampionHpRegen = 1.
|
||||||
|
|
||||||
# Rewards multiplier.
|
# Rewards multiplier.
|
||||||
ChampionRewards = 8
|
ChampionRewards = 8
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
# Teleport Function price
|
# Teleport Function price
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
|
ClanHallTeleportFunctionFeeRation = 86400000
|
||||||
# 1st level
|
# 1st level
|
||||||
ClanHallTeleportFunctionFeeLvl1 = 7000
|
ClanHallTeleportFunctionFeeLvl1 = 7000
|
||||||
# 2nd level
|
# 2nd level
|
||||||
@ -19,6 +20,7 @@ ClanHallTeleportFunctionFeeLvl2 = 14000
|
|||||||
# -------------------------------------------
|
# -------------------------------------------
|
||||||
# Support magic buff price
|
# Support magic buff price
|
||||||
# -------------------------------------------
|
# -------------------------------------------
|
||||||
|
ClanHallSupportFunctionFeeRation = 86400000
|
||||||
# 1st level
|
# 1st level
|
||||||
ClanHallSupportFeeLvl1 = 17500
|
ClanHallSupportFeeLvl1 = 17500
|
||||||
# 2nd level
|
# 2nd level
|
||||||
@ -39,6 +41,7 @@ ClanHallSupportFeeLvl8 = 364000
|
|||||||
# ---------------------------------------
|
# ---------------------------------------
|
||||||
# MpRegeneration price
|
# MpRegeneration price
|
||||||
# ---------------------------------------
|
# ---------------------------------------
|
||||||
|
ClanHallMpRegenerationFunctionFeeRation = 86400000
|
||||||
# 5% MpRegeneration
|
# 5% MpRegeneration
|
||||||
ClanHallMpRegenerationFeeLvl1 = 14000
|
ClanHallMpRegenerationFeeLvl1 = 14000
|
||||||
# 10% MpRegeneration
|
# 10% MpRegeneration
|
||||||
@ -53,6 +56,7 @@ ClanHallMpRegenerationFeeLvl5 = 140000
|
|||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
# HpRegeneration price
|
# HpRegeneration price
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
|
ClanHallHpRegenerationFunctionFeeRation = 86400000
|
||||||
# 20% HpRegeneration
|
# 20% HpRegeneration
|
||||||
ClanHallHpRegenerationFeeLvl1 = 4900
|
ClanHallHpRegenerationFeeLvl1 = 4900
|
||||||
# 40% HpRegeneration
|
# 40% HpRegeneration
|
||||||
@ -83,6 +87,7 @@ ClanHallHpRegenerationFeeLvl13 = 36166
|
|||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
# ExpRegeneration price
|
# ExpRegeneration price
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
|
ClanHallExpRegenerationFunctionFeeRation = 86400000
|
||||||
# 5% ExpRegeneration
|
# 5% ExpRegeneration
|
||||||
ClanHallExpRegenerationFeeLvl1 = 21000
|
ClanHallExpRegenerationFeeLvl1 = 21000
|
||||||
# 10% ExpRegeneration
|
# 10% ExpRegeneration
|
||||||
@ -101,6 +106,7 @@ ClanHallExpRegenerationFeeLvl7 = 210000
|
|||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
# Creation item function
|
# Creation item function
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
|
ClanHallItemCreationFunctionFeeRation = 86400000
|
||||||
# Time after count of Item is restored (in Hours)
|
# Time after count of Item is restored (in Hours)
|
||||||
# ClanHallItemCreationFunctionTaskRestore = 24
|
# ClanHallItemCreationFunctionTaskRestore = 24
|
||||||
# 1st level
|
# 1st level
|
||||||
@ -115,7 +121,9 @@ ClanHallItemCreationFunctionFeeLvl3 = 980000
|
|||||||
# --------------------------
|
# --------------------------
|
||||||
# Need core support, need more information on functions in different
|
# Need core support, need more information on functions in different
|
||||||
# Clan Hall in different Towns.
|
# Clan Hall in different Towns.
|
||||||
|
ClanHallCurtainFunctionFeeRation = 86400000
|
||||||
ClanHallCurtainFunctionFeeLvl1 = 2002
|
ClanHallCurtainFunctionFeeLvl1 = 2002
|
||||||
ClanHallCurtainFunctionFeeLvl2 = 2625
|
ClanHallCurtainFunctionFeeLvl2 = 2625
|
||||||
|
ClanHallFrontPlatformFunctionFeeRation = 86400000
|
||||||
ClanHallFrontPlatformFunctionFeeLvl1 = 3031
|
ClanHallFrontPlatformFunctionFeeLvl1 = 3031
|
||||||
ClanHallFrontPlatformFunctionFeeLvl2 = 9331
|
ClanHallFrontPlatformFunctionFeeLvl2 = 9331
|
@ -5,16 +5,16 @@
|
|||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Debug
|
# Debug
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Don't load quests
|
# Do not load quests
|
||||||
AltDevNoQuests = False
|
AltDevNoQuests = False
|
||||||
|
|
||||||
# Don't load spawntable
|
# Do not load spawntable
|
||||||
AltDevNoSpawns = False
|
AltDevNoSpawns = False
|
||||||
|
|
||||||
# Don't load Script's
|
# Do not load Scripts
|
||||||
AltDevNoScript = False
|
AltDevNoScript = False
|
||||||
|
|
||||||
# Don't load RaidBoss
|
# Do not load RaidBoss
|
||||||
AltDevNoRB = False
|
AltDevNoRB = False
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,5 +55,4 @@ AltFestivalSecondSwarm = 720000
|
|||||||
|
|
||||||
# Spawn Chests.
|
# Spawn Chests.
|
||||||
# Default: 15 minutes
|
# Default: 15 minutes
|
||||||
AltFestivalChestspawn = 900000
|
AltFestivalChestSpawn = 900000
|
||||||
|
|
||||||
|
@ -141,6 +141,13 @@ FloodProtectorMoveActionPunishmentLimit = 0
|
|||||||
FloodProtectorMoveActionPunishmentType = none
|
FloodProtectorMoveActionPunishmentType = none
|
||||||
FloodProtectorMoveActionPunishmentTime = 0
|
FloodProtectorMoveActionPunishmentTime = 0
|
||||||
|
|
||||||
|
# Generic Action
|
||||||
|
FloodProtectorGenericActionInterval = 5
|
||||||
|
FloodProtectorGenericActionLogFlooding = false
|
||||||
|
FloodProtectorGenericActionPunishmentLimit = 0
|
||||||
|
FloodProtectorGenericActionPunishmentType = none
|
||||||
|
FloodProtectorGenericActionPunishmentTime = 0
|
||||||
|
|
||||||
# Macro - attempts to Macro system
|
# Macro - attempts to Macro system
|
||||||
FloodProtectorMacroInterval = 8
|
FloodProtectorMacroInterval = 8
|
||||||
FloodProtectorMacroLogFlooding = True
|
FloodProtectorMacroLogFlooding = True
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -26,58 +26,52 @@ public class ClassMasterSettings
|
|||||||
private final Map<Integer, Map<Integer, Integer>> _rewardItems;
|
private final Map<Integer, Map<Integer, Integer>> _rewardItems;
|
||||||
private final Map<Integer, Boolean> _allowedClassChange;
|
private final Map<Integer, Boolean> _allowedClassChange;
|
||||||
|
|
||||||
public ClassMasterSettings(String _configLine)
|
public ClassMasterSettings(String configLine)
|
||||||
{
|
{
|
||||||
_claimItems = new HashMap<>();
|
_claimItems = new HashMap<>();
|
||||||
_rewardItems = new HashMap<>();
|
_rewardItems = new HashMap<>();
|
||||||
_allowedClassChange = new HashMap<>();
|
_allowedClassChange = new HashMap<>();
|
||||||
if (_configLine != null)
|
if (configLine != null)
|
||||||
{
|
{
|
||||||
parseConfigLine(_configLine.trim());
|
parseConfigLine(configLine.trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseConfigLine(String _configLine)
|
private void parseConfigLine(String configLine)
|
||||||
{
|
{
|
||||||
final StringTokenizer st = new StringTokenizer(_configLine, ";");
|
final StringTokenizer st = new StringTokenizer(configLine, ";");
|
||||||
|
|
||||||
while (st.hasMoreTokens())
|
while (st.hasMoreTokens())
|
||||||
{
|
{
|
||||||
final int job = Integer.parseInt(st.nextToken());
|
final int job = Integer.parseInt(st.nextToken());
|
||||||
|
|
||||||
_allowedClassChange.put(job, true);
|
_allowedClassChange.put(job, true);
|
||||||
|
Map<Integer, Integer> items = new HashMap<>();
|
||||||
Map<Integer, Integer> _items = new HashMap<>();
|
|
||||||
|
|
||||||
if (st.hasMoreTokens())
|
if (st.hasMoreTokens())
|
||||||
{
|
{
|
||||||
final StringTokenizer st2 = new StringTokenizer(st.nextToken(), "[],");
|
final StringTokenizer st2 = new StringTokenizer(st.nextToken(), "[],");
|
||||||
|
|
||||||
while (st2.hasMoreTokens())
|
while (st2.hasMoreTokens())
|
||||||
{
|
{
|
||||||
final StringTokenizer st3 = new StringTokenizer(st2.nextToken(), "()");
|
final StringTokenizer st3 = new StringTokenizer(st2.nextToken(), "()");
|
||||||
final int _itemId = Integer.parseInt(st3.nextToken());
|
final int itemId = Integer.parseInt(st3.nextToken());
|
||||||
final int _quantity = Integer.parseInt(st3.nextToken());
|
final int quantity = Integer.parseInt(st3.nextToken());
|
||||||
_items.put(_itemId, _quantity);
|
items.put(itemId, quantity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_claimItems.put(job, items);
|
||||||
|
|
||||||
_claimItems.put(job, _items);
|
items = new HashMap<>();
|
||||||
_items = new HashMap<>();
|
|
||||||
|
|
||||||
if (st.hasMoreTokens())
|
if (st.hasMoreTokens())
|
||||||
{
|
{
|
||||||
final StringTokenizer st2 = new StringTokenizer(st.nextToken(), "[],");
|
final StringTokenizer st2 = new StringTokenizer(st.nextToken(), "[],");
|
||||||
|
|
||||||
while (st2.hasMoreTokens())
|
while (st2.hasMoreTokens())
|
||||||
{
|
{
|
||||||
final StringTokenizer st3 = new StringTokenizer(st2.nextToken(), "()");
|
final StringTokenizer st3 = new StringTokenizer(st2.nextToken(), "()");
|
||||||
final int _itemId = Integer.parseInt(st3.nextToken());
|
final int itemId = Integer.parseInt(st3.nextToken());
|
||||||
final int _quantity = Integer.parseInt(st3.nextToken());
|
final int quantity = Integer.parseInt(st3.nextToken());
|
||||||
_items.put(_itemId, _quantity);
|
items.put(itemId, quantity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_rewardItems.put(job, _items);
|
_rewardItems.put(job, items);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,161 +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.commons.util;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.Reader;
|
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
import org.l2jmobius.Config;
|
|
||||||
|
|
||||||
public class L2Properties extends Properties
|
|
||||||
{
|
|
||||||
protected static final Logger LOGGER = Logger.getLogger(Config.class.getName());
|
|
||||||
|
|
||||||
private boolean _warn = false;
|
|
||||||
|
|
||||||
public L2Properties()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public L2Properties setLog(boolean warn)
|
|
||||||
{
|
|
||||||
_warn = warn;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public L2Properties(String name) throws IOException
|
|
||||||
{
|
|
||||||
load(new FileInputStream(name));
|
|
||||||
}
|
|
||||||
|
|
||||||
public L2Properties(File file) throws IOException
|
|
||||||
{
|
|
||||||
load(new FileInputStream(file));
|
|
||||||
}
|
|
||||||
|
|
||||||
public L2Properties(InputStream inStream)
|
|
||||||
{
|
|
||||||
load(inStream);
|
|
||||||
}
|
|
||||||
|
|
||||||
public L2Properties(Reader reader)
|
|
||||||
{
|
|
||||||
load(reader);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void load(String name) throws IOException
|
|
||||||
{
|
|
||||||
load(new FileInputStream(name));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void load(File file) throws IOException
|
|
||||||
{
|
|
||||||
load(new FileInputStream(file));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized void load(InputStream inStream)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
super.load(inStream);
|
|
||||||
}
|
|
||||||
catch (IOException e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (inStream != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
inStream.close();
|
|
||||||
}
|
|
||||||
catch (IOException e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized void load(Reader reader)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
super.load(reader);
|
|
||||||
}
|
|
||||||
catch (IOException e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (reader != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
reader.close();
|
|
||||||
}
|
|
||||||
catch (IOException e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getProperty(String key)
|
|
||||||
{
|
|
||||||
final String property = super.getProperty(key);
|
|
||||||
|
|
||||||
if (property == null)
|
|
||||||
{
|
|
||||||
if (_warn)
|
|
||||||
{
|
|
||||||
LOGGER.warning("L2Properties: Missing property for key - " + key);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return property.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getProperty(String key, String defaultValue)
|
|
||||||
{
|
|
||||||
final String property = super.getProperty(key, defaultValue);
|
|
||||||
|
|
||||||
if (property == null)
|
|
||||||
{
|
|
||||||
if (_warn)
|
|
||||||
{
|
|
||||||
LOGGER.warning("L2Properties: Missing defaultValue for key - " + key);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return property.trim();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,381 @@
|
|||||||
|
/*
|
||||||
|
* 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.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.lang.reflect.Array;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simplifies loading of property files and adds logging if a non existing property is requested.
|
||||||
|
* @author NosBit
|
||||||
|
*/
|
||||||
|
public class PropertiesParser
|
||||||
|
{
|
||||||
|
private static final Logger LOGGER = Logger.getLogger(PropertiesParser.class.getName());
|
||||||
|
|
||||||
|
private final Properties _properties = new Properties();
|
||||||
|
private final File _file;
|
||||||
|
|
||||||
|
public PropertiesParser(String name)
|
||||||
|
{
|
||||||
|
this(new File(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
public PropertiesParser(File file)
|
||||||
|
{
|
||||||
|
_file = file;
|
||||||
|
try (FileInputStream fileInputStream = new FileInputStream(file))
|
||||||
|
{
|
||||||
|
try (InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, Charset.defaultCharset()))
|
||||||
|
{
|
||||||
|
_properties.load(inputStreamReader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] There was an error loading config reason: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean containskey(String key)
|
||||||
|
{
|
||||||
|
return _properties.containsKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getValue(String key)
|
||||||
|
{
|
||||||
|
final String value = _properties.getProperty(key);
|
||||||
|
return value != null ? value.trim() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getBoolean(String key, boolean defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value.equalsIgnoreCase("true"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (value.equalsIgnoreCase("false"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"boolean\" using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getByte(String key, byte defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Byte.parseByte(value);
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"byte\" using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getShort(String key, short defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Short.parseShort(value);
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"short\" using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInt(String key, int defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Integer.parseInt(value);
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"int\" using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLong(String key, long defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Long.parseLong(value);
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"long\" using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getFloat(String key, float defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Float.parseFloat(value);
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"float\" using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getDouble(String key, double defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Double.parseDouble(value);
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be \"double\" using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getString(String key, String defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T extends Enum<T>> T getEnum(String key, Class<T> clazz, T defaultValue)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Enum.valueOf(clazz, value);
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be enum value of \"" + clazz.getSimpleName() + "\" using default value: " + defaultValue);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param durationPattern
|
||||||
|
* @param defaultValue
|
||||||
|
* @return {@link Duration} object by the durationPattern specified, {@code null} in case of malformed pattern.
|
||||||
|
*/
|
||||||
|
public Duration getDuration(String durationPattern, String defaultValue)
|
||||||
|
{
|
||||||
|
return getDuration(durationPattern, defaultValue, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param durationPattern
|
||||||
|
* @param defaultValue
|
||||||
|
* @param defaultDuration
|
||||||
|
* @return {@link Duration} object by the durationPattern specified, the defaultDuration in case of malformed pattern.
|
||||||
|
*/
|
||||||
|
public Duration getDuration(String durationPattern, String defaultValue, Duration defaultDuration)
|
||||||
|
{
|
||||||
|
final String value = getString(durationPattern, defaultValue);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return TimeUtil.parseDuration(value);
|
||||||
|
}
|
||||||
|
catch (IllegalStateException e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + durationPattern + " specified value: " + value + " should be time patttern using default value: " + defaultValue);
|
||||||
|
}
|
||||||
|
return defaultDuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param key
|
||||||
|
* @param separator
|
||||||
|
* @param defaultValues
|
||||||
|
* @return int array
|
||||||
|
*/
|
||||||
|
public int[] getIntArray(String key, String separator, int... defaultValues)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValues);
|
||||||
|
return defaultValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
final String[] data = value.trim().split(separator);
|
||||||
|
final int[] result = new int[data.length];
|
||||||
|
for (int i = 0; i < data.length; i++)
|
||||||
|
{
|
||||||
|
result[i] = Integer.decode(data[i].trim());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[+_file.getName()+] Invalid value specified for key: " + key + " specified value: " + value + " should be array using default value: " + defaultValues);
|
||||||
|
return defaultValues;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param <T>
|
||||||
|
* @param key
|
||||||
|
* @param separator
|
||||||
|
* @param clazz
|
||||||
|
* @param defaultValues
|
||||||
|
* @return enum array
|
||||||
|
*/
|
||||||
|
@SafeVarargs
|
||||||
|
public final <T extends Enum<T>> T[] getEnumArray(String key, String separator, Class<T> clazz, T... defaultValues)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValues);
|
||||||
|
return defaultValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
final String[] data = value.trim().split(separator);
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
final T[] result = (T[]) Array.newInstance(clazz, data.length);
|
||||||
|
for (int i = 0; i < data.length; i++)
|
||||||
|
{
|
||||||
|
result[i] = Enum.valueOf(clazz, data[i]);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be array using default value: " + defaultValues);
|
||||||
|
return defaultValues;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param <T>
|
||||||
|
* @param key
|
||||||
|
* @param separator
|
||||||
|
* @param clazz
|
||||||
|
* @param defaultValues
|
||||||
|
* @return list
|
||||||
|
*/
|
||||||
|
@SafeVarargs
|
||||||
|
public final <T extends Enum<T>> List<T> getEnumList(String key, String separator, Class<T> clazz, T... defaultValues)
|
||||||
|
{
|
||||||
|
final String value = getValue(key);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] missing property for key: " + key + " using default value: " + defaultValues);
|
||||||
|
return Arrays.asList(defaultValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
final String[] data = value.trim().split(separator);
|
||||||
|
final List<T> result = new ArrayList<>(data.length);
|
||||||
|
for (String element : data)
|
||||||
|
{
|
||||||
|
result.add(Enum.valueOf(clazz, element));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.warning("[" + _file.getName() + "] Invalid value specified for key: " + key + " specified value: " + value + " should be array using default value: " + defaultValues);
|
||||||
|
return Arrays.asList(defaultValues);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -407,7 +407,7 @@ public class GameServer
|
|||||||
|
|
||||||
LOGGER.info("IdFactory: Free ObjectID's remaining: " + IdFactory.size());
|
LOGGER.info("IdFactory: Free ObjectID's remaining: " + IdFactory.size());
|
||||||
|
|
||||||
if (Config.L2JMOD_ALLOW_WEDDING)
|
if (Config.ALLOW_WEDDING)
|
||||||
{
|
{
|
||||||
CoupleManager.getInstance();
|
CoupleManager.getInstance();
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ public class ManorSeedData implements IXmlReader
|
|||||||
final SeedDataHolder seed = _seeds.get(seedId);
|
final SeedDataHolder seed = _seeds.get(seedId);
|
||||||
if (seed != null)
|
if (seed != null)
|
||||||
{
|
{
|
||||||
return seed.getSeedLimit();
|
return (int) seed.getSeedLimit();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -303,7 +303,7 @@ public class ManorSeedData implements IXmlReader
|
|||||||
{
|
{
|
||||||
if (seed.getCropId() == cropId)
|
if (seed.getCropId() == cropId)
|
||||||
{
|
{
|
||||||
return seed.getCropLimit();
|
return (int) seed.getCropLimit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -61,7 +61,7 @@ public class VoicedCommandHandler
|
|||||||
registerVoicedCommandHandler(new DMCmd());
|
registerVoicedCommandHandler(new DMCmd());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.L2JMOD_ALLOW_WEDDING)
|
if (Config.ALLOW_WEDDING)
|
||||||
{
|
{
|
||||||
registerVoicedCommandHandler(new Wedding());
|
registerVoicedCommandHandler(new Wedding());
|
||||||
}
|
}
|
||||||
|
@ -141,9 +141,9 @@ public class AdminKill implements IAdminCommandHandler
|
|||||||
|
|
||||||
target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar);
|
target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar);
|
||||||
}
|
}
|
||||||
else if (Config.L2JMOD_CHAMPION_ENABLE && target.isChampion())
|
else if (Config.CHAMPION_ENABLE && target.isChampion())
|
||||||
{
|
{
|
||||||
target.reduceCurrentHp((target.getMaxHp() * Config.L2JMOD_CHAMPION_HP) + 1, activeChar);
|
target.reduceCurrentHp((target.getMaxHp() * Config.CHAMPION_HP) + 1, activeChar);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -269,9 +269,9 @@ public class AdminMenu implements IAdminCommandHandler
|
|||||||
target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar);
|
target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar);
|
||||||
filename = "charmanage.htm";
|
filename = "charmanage.htm";
|
||||||
}
|
}
|
||||||
else if (Config.L2JMOD_CHAMPION_ENABLE && target.isChampion())
|
else if (Config.CHAMPION_ENABLE && target.isChampion())
|
||||||
{
|
{
|
||||||
target.reduceCurrentHp((target.getMaxHp() * Config.L2JMOD_CHAMPION_HP) + 1, activeChar);
|
target.reduceCurrentHp((target.getMaxHp() * Config.CHAMPION_HP) + 1, activeChar);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -93,7 +93,7 @@ public class Wedding implements IVoicedCommandHandler
|
|||||||
if (activeChar.isMarried())
|
if (activeChar.isMarried())
|
||||||
{
|
{
|
||||||
activeChar.sendMessage("You are now divorced.");
|
activeChar.sendMessage("You are now divorced.");
|
||||||
adenaAmount = (activeChar.getAdena() / 100) * Config.L2JMOD_WEDDING_DIVORCE_COSTS;
|
adenaAmount = (activeChar.getAdena() / 100) * Config.WEDDING_DIVORCE_COSTS;
|
||||||
activeChar.getInventory().reduceAdena("Wedding", adenaAmount, activeChar, null);
|
activeChar.getInventory().reduceAdena("Wedding", adenaAmount, activeChar, null);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -150,7 +150,7 @@ public class Wedding implements IVoicedCommandHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendMessage("You are already engaged.");
|
activeChar.sendMessage("You are already engaged.");
|
||||||
|
|
||||||
if (Config.L2JMOD_WEDDING_PUNISH_INFIDELITY)
|
if (Config.WEDDING_PUNISH_INFIDELITY)
|
||||||
{
|
{
|
||||||
activeChar.startAbnormalEffect((short) 0x2000); // give player a Big Head
|
activeChar.startAbnormalEffect((short) 0x2000); // give player a Big Head
|
||||||
// lets recycle the sevensigns debuffs
|
// lets recycle the sevensigns debuffs
|
||||||
@ -208,7 +208,7 @@ public class Wedding implements IVoicedCommandHandler
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ptarget.getAppearance().isFemale() == activeChar.getAppearance().isFemale()) && !Config.L2JMOD_WEDDING_SAMESEX)
|
if ((ptarget.getAppearance().isFemale() == activeChar.getAppearance().isFemale()) && !Config.WEDDING_SAMESEX)
|
||||||
{
|
{
|
||||||
activeChar.sendMessage("Gay marriage is not allowed on this server!");
|
activeChar.sendMessage("Gay marriage is not allowed on this server!");
|
||||||
return false;
|
return false;
|
||||||
@ -379,10 +379,10 @@ public class Wedding implements IVoicedCommandHandler
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int teleportTimer = Config.L2JMOD_WEDDING_TELEPORT_DURATION * 1000;
|
final int teleportTimer = Config.WEDDING_TELEPORT_DURATION * 1000;
|
||||||
|
|
||||||
activeChar.sendMessage("After " + (teleportTimer / 60000) + " min. you will be teleported to your fiance.");
|
activeChar.sendMessage("After " + (teleportTimer / 60000) + " min. you will be teleported to your fiance.");
|
||||||
activeChar.getInventory().reduceAdena("Wedding", Config.L2JMOD_WEDDING_TELEPORT_PRICE, activeChar, null);
|
activeChar.getInventory().reduceAdena("Wedding", Config.WEDDING_TELEPORT_PRICE, activeChar, null);
|
||||||
|
|
||||||
activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||||
// SoE Animation section
|
// SoE Animation section
|
||||||
|
@ -565,10 +565,10 @@ public class Attackable extends NpcInstance
|
|||||||
}
|
}
|
||||||
|
|
||||||
setChampion(false);
|
setChampion(false);
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE)
|
if (Config.CHAMPION_ENABLE)
|
||||||
{
|
{
|
||||||
// Set champion on next spawn.
|
// Set champion on next spawn.
|
||||||
if (!(this instanceof GrandBossInstance) && !(this instanceof RaidBossInstance) && (this instanceof MonsterInstance) /* && !getTemplate().isQuestMonster */ && (Config.L2JMOD_CHAMPION_FREQUENCY > 0) && (getLevel() >= Config.L2JMOD_CHAMP_MIN_LVL) && (getLevel() <= Config.L2JMOD_CHAMP_MAX_LVL) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_FREQUENCY))
|
if (!(this instanceof GrandBossInstance) && !(this instanceof RaidBossInstance) && (this instanceof MonsterInstance) /* && !getTemplate().isQuestMonster */ && (Config.CHAMPION_FREQUENCY > 0) && (getLevel() >= Config.CHAMP_MIN_LVL) && (getLevel() <= Config.CHAMP_MAX_LVL) && (Rnd.get(100) < Config.CHAMPION_FREQUENCY))
|
||||||
{
|
{
|
||||||
setChampion(true);
|
setChampion(true);
|
||||||
}
|
}
|
||||||
@ -773,10 +773,10 @@ public class Attackable extends NpcInstance
|
|||||||
exp *= 1 - penalty;
|
exp *= 1 - penalty;
|
||||||
sp = tmp[1];
|
sp = tmp[1];
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
|
if (Config.CHAMPION_ENABLE && isChampion())
|
||||||
{
|
{
|
||||||
exp *= Config.L2JMOD_CHAMPION_REWARDS;
|
exp *= Config.CHAMPION_REWARDS;
|
||||||
sp *= Config.L2JMOD_CHAMPION_REWARDS;
|
sp *= Config.CHAMPION_REWARDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for an over-hit enabled strike and Donator options
|
// Check for an over-hit enabled strike and Donator options
|
||||||
@ -917,10 +917,10 @@ public class Attackable extends NpcInstance
|
|||||||
exp = tmp[0];
|
exp = tmp[0];
|
||||||
sp = tmp[1];
|
sp = tmp[1];
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
|
if (Config.CHAMPION_ENABLE && isChampion())
|
||||||
{
|
{
|
||||||
exp *= Config.L2JMOD_CHAMPION_REWARDS;
|
exp *= Config.CHAMPION_REWARDS;
|
||||||
sp *= Config.L2JMOD_CHAMPION_REWARDS;
|
sp *= Config.CHAMPION_REWARDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
exp *= partyMul;
|
exp *= partyMul;
|
||||||
@ -1395,9 +1395,9 @@ public class Attackable extends NpcInstance
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
|
if (Config.CHAMPION_ENABLE && isChampion())
|
||||||
{
|
{
|
||||||
dropChance *= Config.L2JMOD_CHAMPION_REWARDS;
|
dropChance *= Config.CHAMPION_REWARDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Round drop chance
|
// Round drop chance
|
||||||
@ -1457,9 +1457,9 @@ public class Attackable extends NpcInstance
|
|||||||
// Prepare for next iteration if dropChance > DropData.MAX_CHANCE
|
// Prepare for next iteration if dropChance > DropData.MAX_CHANCE
|
||||||
dropChance -= DropData.MAX_CHANCE;
|
dropChance -= DropData.MAX_CHANCE;
|
||||||
}
|
}
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))))
|
if (Config.CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))))
|
||||||
{
|
{
|
||||||
itemCount *= Config.L2JMOD_CHAMPION_ADENAS_REWARDS;
|
itemCount *= Config.CHAMPION_ADENAS_REWARDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))
|
if ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))
|
||||||
@ -1555,9 +1555,9 @@ public class Attackable extends NpcInstance
|
|||||||
categoryDropChance *= Config.RATE_DROP_ITEMS;
|
categoryDropChance *= Config.RATE_DROP_ITEMS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
|
if (Config.CHAMPION_ENABLE && isChampion())
|
||||||
{
|
{
|
||||||
categoryDropChance *= Config.L2JMOD_CHAMPION_REWARDS;
|
categoryDropChance *= Config.CHAMPION_REWARDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set our limits for chance of drop
|
// Set our limits for chance of drop
|
||||||
@ -1690,9 +1690,9 @@ public class Attackable extends NpcInstance
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion())
|
if (Config.CHAMPION_ENABLE && isChampion())
|
||||||
{
|
{
|
||||||
dropChance *= Config.L2JMOD_CHAMPION_REWARDS;
|
dropChance *= Config.CHAMPION_REWARDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dropChance < DropData.MAX_CHANCE)
|
if (dropChance < DropData.MAX_CHANCE)
|
||||||
@ -1750,9 +1750,9 @@ public class Attackable extends NpcInstance
|
|||||||
// Prepare for next iteration if dropChance > DropData.MAX_CHANCE
|
// Prepare for next iteration if dropChance > DropData.MAX_CHANCE
|
||||||
dropChance -= DropData.MAX_CHANCE;
|
dropChance -= DropData.MAX_CHANCE;
|
||||||
}
|
}
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))))
|
if (Config.CHAMPION_ENABLE && isChampion() && ((drop.getItemId() == 57) || ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))))
|
||||||
{
|
{
|
||||||
itemCount *= Config.L2JMOD_CHAMPION_ADENAS_REWARDS;
|
itemCount *= Config.CHAMPION_ADENAS_REWARDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))
|
if ((drop.getItemId() >= 6360) && (drop.getItemId() <= 6362))
|
||||||
@ -1937,13 +1937,13 @@ public class Attackable extends NpcInstance
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Apply Special Item drop with rnd qty for champions
|
// Apply Special Item drop with rnd qty for champions
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && isChampion() && (player.getLevel() <= (getLevel() + 3)) && (Config.L2JMOD_CHAMPION_REWARD > 0) && (Rnd.get(100) < Config.L2JMOD_CHAMPION_REWARD))
|
if (Config.CHAMPION_ENABLE && isChampion() && (player.getLevel() <= (getLevel() + 3)) && (Config.CHAMPION_REWARD > 0) && (Rnd.get(100) < Config.CHAMPION_REWARD))
|
||||||
{
|
{
|
||||||
int champqty = Rnd.get(Config.L2JMOD_CHAMPION_REWARD_QTY);
|
int champqty = Rnd.get(Config.CHAMPION_REWARD_QTY);
|
||||||
champqty++; // quantity should actually vary between 1 and whatever admin specified as max, inclusive.
|
champqty++; // quantity should actually vary between 1 and whatever admin specified as max, inclusive.
|
||||||
|
|
||||||
// Give this or these Item(s) to the PlayerInstance that has killed the Attackable
|
// Give this or these Item(s) to the PlayerInstance that has killed the Attackable
|
||||||
final RewardItem item = new RewardItem(Config.L2JMOD_CHAMPION_REWARD_ID, champqty);
|
final RewardItem item = new RewardItem(Config.CHAMPION_REWARD_ID, champqty);
|
||||||
if (Config.AUTO_LOOT)
|
if (Config.AUTO_LOOT)
|
||||||
{
|
{
|
||||||
final Item itemTemplate = ItemTable.getInstance().getTemplate(item.getItemId());
|
final Item itemTemplate = ItemTable.getInstance().getTemplate(item.getItemId());
|
||||||
@ -3166,7 +3166,7 @@ public class Attackable extends NpcInstance
|
|||||||
|
|
||||||
final List<RewardItem> harvested = new ArrayList<>();
|
final List<RewardItem> harvested = new ArrayList<>();
|
||||||
|
|
||||||
harvested.add(new RewardItem(ManorSeedData.getInstance().getCropType(_seedType), count * Config.RATE_DROP_MANOR));
|
harvested.add(new RewardItem(ManorSeedData.getInstance().getCropType(_seedType), (int) (count * Config.RATE_DROP_MANOR)));
|
||||||
|
|
||||||
_harvestItems = harvested.toArray(new RewardItem[harvested.size()]);
|
_harvestItems = harvested.toArray(new RewardItem[harvested.size()]);
|
||||||
}
|
}
|
||||||
|
@ -9460,9 +9460,9 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && _champion && (Config.L2JMOD_CHAMPION_HP != 0))
|
if (Config.CHAMPION_ENABLE && _champion && (Config.CHAMPION_HP != 0))
|
||||||
{
|
{
|
||||||
getStatus().reduceHp(i / Config.L2JMOD_CHAMPION_HP, attacker, awake);
|
getStatus().reduceHp(i / Config.CHAMPION_HP, attacker, awake);
|
||||||
}
|
}
|
||||||
else if (_advanceFlag)
|
else if (_advanceFlag)
|
||||||
{
|
{
|
||||||
|
@ -11751,15 +11751,15 @@ public class PlayerInstance extends Playable
|
|||||||
{
|
{
|
||||||
if (marriedType() == 1)
|
if (marriedType() == 1)
|
||||||
{
|
{
|
||||||
getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_LESBO);
|
getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_LESBO);
|
||||||
}
|
}
|
||||||
else if (marriedType() == 2)
|
else if (marriedType() == 2)
|
||||||
{
|
{
|
||||||
getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_GEY);
|
getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_GEY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_NORMAL);
|
getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ public class WeddingManagerInstance extends NpcInstance
|
|||||||
private void showMessageWindow(PlayerInstance player)
|
private void showMessageWindow(PlayerInstance player)
|
||||||
{
|
{
|
||||||
final String filename = "data/html/mods/Wedding_start.htm";
|
final String filename = "data/html/mods/Wedding_start.htm";
|
||||||
final String replace = String.valueOf(Config.L2JMOD_WEDDING_PRICE);
|
final String replace = String.valueOf(Config.WEDDING_PRICE);
|
||||||
|
|
||||||
final NpcHtmlMessage html = new NpcHtmlMessage(1);
|
final NpcHtmlMessage html = new NpcHtmlMessage(1);
|
||||||
html.setFile(filename);
|
html.setFile(filename);
|
||||||
@ -141,20 +141,20 @@ public class WeddingManagerInstance extends NpcInstance
|
|||||||
int type;
|
int type;
|
||||||
if (player.getAppearance().isFemale() && ptarget.getAppearance().isFemale())
|
if (player.getAppearance().isFemale() && ptarget.getAppearance().isFemale())
|
||||||
{
|
{
|
||||||
player.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_LESBO);
|
player.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_LESBO);
|
||||||
ptarget.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_LESBO);
|
ptarget.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_LESBO);
|
||||||
type = 1;
|
type = 1;
|
||||||
}
|
}
|
||||||
else if (!player.getAppearance().isFemale() && !ptarget.getAppearance().isFemale())
|
else if (!player.getAppearance().isFemale() && !ptarget.getAppearance().isFemale())
|
||||||
{
|
{
|
||||||
player.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_GEY);
|
player.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_GEY);
|
||||||
ptarget.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_GEY);
|
ptarget.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_GEY);
|
||||||
type = 2;
|
type = 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_NORMAL);
|
player.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_NORMAL);
|
||||||
ptarget.getAppearance().setNameColor(Config.L2JMOD_WEDDING_NAME_COLOR_NORMAL);
|
ptarget.getAppearance().setNameColor(Config.WEDDING_NAME_COLOR_NORMAL);
|
||||||
type = 0;
|
type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ public class WeddingManagerInstance extends NpcInstance
|
|||||||
ptarget.setMaryRequest(false);
|
ptarget.setMaryRequest(false);
|
||||||
ptarget.setmarriedType(type);
|
ptarget.setmarriedType(type);
|
||||||
|
|
||||||
if (Config.WEDDING_GIVE_CUPID_BOW)
|
if (Config.GIVE_CUPID_BOW)
|
||||||
{
|
{
|
||||||
player.addItem("Cupids Bow", 9140, 1, player, true);
|
player.addItem("Cupids Bow", 9140, 1, player, true);
|
||||||
player.getInventory().updateDatabase();
|
player.getInventory().updateDatabase();
|
||||||
@ -230,7 +230,7 @@ public class WeddingManagerInstance extends NpcInstance
|
|||||||
else if (player.isMaryRequest())
|
else if (player.isMaryRequest())
|
||||||
{
|
{
|
||||||
// check for formalwear
|
// check for formalwear
|
||||||
if (Config.L2JMOD_WEDDING_FORMALWEAR)
|
if (Config.WEDDING_FORMALWEAR)
|
||||||
{
|
{
|
||||||
final Inventory inv3 = player.getInventory();
|
final Inventory inv3 = player.getInventory();
|
||||||
final ItemInstance item3 = inv3.getPaperdollItem(10);
|
final ItemInstance item3 = inv3.getPaperdollItem(10);
|
||||||
@ -247,7 +247,7 @@ public class WeddingManagerInstance extends NpcInstance
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.L2JMOD_WEDDING_FORMALWEAR && !player.isWearingFormalWear())
|
if (Config.WEDDING_FORMALWEAR && !player.isWearingFormalWear())
|
||||||
{
|
{
|
||||||
filename = "data/html/mods/Wedding_noformal.htm";
|
filename = "data/html/mods/Wedding_noformal.htm";
|
||||||
sendHtmlMessage(player, filename, replace);
|
sendHtmlMessage(player, filename, replace);
|
||||||
@ -264,7 +264,7 @@ public class WeddingManagerInstance extends NpcInstance
|
|||||||
else if (command.startsWith("AskWedding"))
|
else if (command.startsWith("AskWedding"))
|
||||||
{
|
{
|
||||||
// check for formalwear
|
// check for formalwear
|
||||||
if (Config.L2JMOD_WEDDING_FORMALWEAR)
|
if (Config.WEDDING_FORMALWEAR)
|
||||||
{
|
{
|
||||||
final Inventory inv3 = player.getInventory();
|
final Inventory inv3 = player.getInventory();
|
||||||
final ItemInstance item3 = inv3.getPaperdollItem(10);
|
final ItemInstance item3 = inv3.getPaperdollItem(10);
|
||||||
@ -282,16 +282,16 @@ public class WeddingManagerInstance extends NpcInstance
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.L2JMOD_WEDDING_FORMALWEAR && !player.isWearingFormalWear())
|
if (Config.WEDDING_FORMALWEAR && !player.isWearingFormalWear())
|
||||||
{
|
{
|
||||||
filename = "data/html/mods/Wedding_noformal.htm";
|
filename = "data/html/mods/Wedding_noformal.htm";
|
||||||
sendHtmlMessage(player, filename, replace);
|
sendHtmlMessage(player, filename, replace);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.getAdena() < Config.L2JMOD_WEDDING_PRICE)
|
else if (player.getAdena() < Config.WEDDING_PRICE)
|
||||||
{
|
{
|
||||||
filename = "data/html/mods/Wedding_adena.htm";
|
filename = "data/html/mods/Wedding_adena.htm";
|
||||||
replace = String.valueOf(Config.L2JMOD_WEDDING_PRICE);
|
replace = String.valueOf(Config.WEDDING_PRICE);
|
||||||
sendHtmlMessage(player, filename, replace);
|
sendHtmlMessage(player, filename, replace);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -301,7 +301,7 @@ public class WeddingManagerInstance extends NpcInstance
|
|||||||
ptarget.setMaryRequest(true);
|
ptarget.setMaryRequest(true);
|
||||||
replace = ptarget.getName();
|
replace = ptarget.getName();
|
||||||
filename = "data/html/mods/Wedding_requested.htm";
|
filename = "data/html/mods/Wedding_requested.htm";
|
||||||
player.getInventory().reduceAdena("Wedding", Config.L2JMOD_WEDDING_PRICE, player, player.getLastFolkNPC());
|
player.getInventory().reduceAdena("Wedding", Config.WEDDING_PRICE, player, player.getLastFolkNPC());
|
||||||
sendHtmlMessage(player, filename, replace);
|
sendHtmlMessage(player, filename, replace);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -368,9 +368,9 @@ public class CreatureStat
|
|||||||
|
|
||||||
float bonusAtk = 1;
|
float bonusAtk = 1;
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && _creature.isChampion())
|
if (Config.CHAMPION_ENABLE && _creature.isChampion())
|
||||||
{
|
{
|
||||||
bonusAtk = Config.L2JMOD_CHAMPION_ATK;
|
bonusAtk = Config.CHAMPION_ATK;
|
||||||
}
|
}
|
||||||
|
|
||||||
double attack = _creature.getTemplate().getBaseMAtk() * bonusAtk;
|
double attack = _creature.getTemplate().getBaseMAtk() * bonusAtk;
|
||||||
@ -478,9 +478,9 @@ public class CreatureStat
|
|||||||
|
|
||||||
float bonusSpdAtk = 1;
|
float bonusSpdAtk = 1;
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && _creature.isChampion())
|
if (Config.CHAMPION_ENABLE && _creature.isChampion())
|
||||||
{
|
{
|
||||||
bonusSpdAtk = Config.L2JMOD_CHAMPION_SPD_ATK;
|
bonusSpdAtk = Config.CHAMPION_SPD_ATK;
|
||||||
}
|
}
|
||||||
|
|
||||||
double val = calcStat(Stat.MAGIC_ATTACK_SPEED, _creature.getTemplate().getBaseMAtkSpd() * bonusSpdAtk, null, null);
|
double val = calcStat(Stat.MAGIC_ATTACK_SPEED, _creature.getTemplate().getBaseMAtkSpd() * bonusSpdAtk, null, null);
|
||||||
@ -644,9 +644,9 @@ public class CreatureStat
|
|||||||
|
|
||||||
float bonusAtk = 1;
|
float bonusAtk = 1;
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && _creature.isChampion())
|
if (Config.CHAMPION_ENABLE && _creature.isChampion())
|
||||||
{
|
{
|
||||||
bonusAtk = Config.L2JMOD_CHAMPION_ATK;
|
bonusAtk = Config.CHAMPION_ATK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (int) calcStat(Stat.POWER_ATTACK, _creature.getTemplate().getBasePAtk() * bonusAtk, target, null);
|
return (int) calcStat(Stat.POWER_ATTACK, _creature.getTemplate().getBasePAtk() * bonusAtk, target, null);
|
||||||
@ -725,9 +725,9 @@ public class CreatureStat
|
|||||||
|
|
||||||
float bonusAtk = 1;
|
float bonusAtk = 1;
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && _creature.isChampion())
|
if (Config.CHAMPION_ENABLE && _creature.isChampion())
|
||||||
{
|
{
|
||||||
bonusAtk = Config.L2JMOD_CHAMPION_SPD_ATK;
|
bonusAtk = Config.CHAMPION_SPD_ATK;
|
||||||
}
|
}
|
||||||
|
|
||||||
double val = calcStat(Stat.POWER_ATTACK_SPEED, _creature.getTemplate().getBasePAtkSpd() * bonusAtk, null, null);
|
double val = calcStat(Stat.POWER_ATTACK_SPEED, _creature.getTemplate().getBasePAtkSpd() * bonusAtk, null, null);
|
||||||
|
@ -83,12 +83,12 @@ public class SeedDataHolder
|
|||||||
return _isAlternative;
|
return _isAlternative;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSeedLimit()
|
public float getSeedLimit()
|
||||||
{
|
{
|
||||||
return _seedLimit * Config.RATE_DROP_MANOR;
|
return _seedLimit * Config.RATE_DROP_MANOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCropLimit()
|
public float getCropLimit()
|
||||||
{
|
{
|
||||||
return _cropLimit * Config.RATE_DROP_MANOR;
|
return _cropLimit * Config.RATE_DROP_MANOR;
|
||||||
}
|
}
|
||||||
|
@ -1003,9 +1003,9 @@ public class Formulas
|
|||||||
double hpRegenMultiplier = creature.isRaid() ? Config.RAID_HP_REGEN_MULTIPLIER : Config.HP_REGEN_MULTIPLIER;
|
double hpRegenMultiplier = creature.isRaid() ? Config.RAID_HP_REGEN_MULTIPLIER : Config.HP_REGEN_MULTIPLIER;
|
||||||
double hpRegenBonus = 0;
|
double hpRegenBonus = 0;
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && creature.isChampion())
|
if (Config.CHAMPION_ENABLE && creature.isChampion())
|
||||||
{
|
{
|
||||||
hpRegenMultiplier *= Config.L2JMOD_CHAMPION_HP_REGEN;
|
hpRegenMultiplier *= Config.CHAMPION_HP_REGEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (creature instanceof PlayerInstance)
|
if (creature instanceof PlayerInstance)
|
||||||
|
@ -69,7 +69,7 @@ public class DlgAnswer extends GameClientPacket
|
|||||||
{
|
{
|
||||||
player.gatesAnswer(_answer, 0);
|
player.gatesAnswer(_answer, 0);
|
||||||
}
|
}
|
||||||
else if ((_messageId == 614) && Config.L2JMOD_ALLOW_WEDDING)
|
else if ((_messageId == 614) && Config.ALLOW_WEDDING)
|
||||||
{
|
{
|
||||||
player.EngageAnswer(_answer);
|
player.EngageAnswer(_answer);
|
||||||
}
|
}
|
||||||
|
@ -144,7 +144,7 @@ public class EnterWorld extends GameClientPacket
|
|||||||
player.broadcastKarma(); // include UserInfo
|
player.broadcastKarma(); // include UserInfo
|
||||||
|
|
||||||
// Engage and notify Partner
|
// Engage and notify Partner
|
||||||
if (Config.L2JMOD_ALLOW_WEDDING)
|
if (Config.ALLOW_WEDDING)
|
||||||
{
|
{
|
||||||
engage(player);
|
engage(player);
|
||||||
notifyPartner(player);
|
notifyPartner(player);
|
||||||
|
@ -83,9 +83,9 @@ public class NpcInfo extends GameServerPacket
|
|||||||
_name = cha.getTemplate().getName();
|
_name = cha.getTemplate().getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.L2JMOD_CHAMPION_ENABLE && cha.isChampion())
|
if (Config.CHAMPION_ENABLE && cha.isChampion())
|
||||||
{
|
{
|
||||||
_title = Config.L2JMOD_CHAMP_TITLE;
|
_title = Config.CHAMP_TITLE;
|
||||||
}
|
}
|
||||||
else if (cha.getTemplate().isServerSideTitle())
|
else if (cha.getTemplate().isServerSideTitle())
|
||||||
{
|
{
|
||||||
@ -122,7 +122,7 @@ public class NpcInfo extends GameServerPacket
|
|||||||
{
|
{
|
||||||
t1 += " " + _title;
|
t1 += " " + _title;
|
||||||
}
|
}
|
||||||
_title = cha.isChampion() ? Config.L2JMOD_CHAMP_TITLE + " " + t1 : t1;
|
_title = cha.isChampion() ? Config.CHAMP_TITLE + " " + t1 : t1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_x = _creature.getX();
|
_x = _creature.getX();
|
||||||
|
Loading…
Reference in New Issue
Block a user