/*
 * Copyright (c) 2013 L2jMobius
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
 * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package org.l2jmobius.gameserver.config.custom;

import org.l2jmobius.commons.util.ConfigReader;

/**
 * This class loads all the custom fake player related configurations.
 * @author Mobius
 */
public class FakePlayersConfig
{
	// File
	private static final String FAKE_PLAYERS_CONFIG_FILE = "./config/Custom/FakePlayers.ini";
	
	// Constants
	public static boolean FAKE_PLAYERS_ENABLED;
	public static boolean FAKE_PLAYER_CHAT;
	public static boolean FAKE_PLAYER_USE_SHOTS;
	public static boolean FAKE_PLAYER_KILL_PVP;
	public static boolean FAKE_PLAYER_KILL_KARMA;
	public static boolean FAKE_PLAYER_AUTO_ATTACKABLE;
	public static boolean FAKE_PLAYER_AGGRO_MONSTERS;
	public static boolean FAKE_PLAYER_AGGRO_PLAYERS;
	public static boolean FAKE_PLAYER_AGGRO_FPC;
	public static boolean FAKE_PLAYER_CAN_DROP_ITEMS;
	public static boolean FAKE_PLAYER_CAN_PICKUP;
	public static boolean FAKE_PLAYER_LLM_CHAT;
	public static String FAKE_PLAYER_LLM_URL;
	public static String FAKE_PLAYER_LLM_MODEL;
	public static String FAKE_PLAYER_LLM_LANGUAGE;
	public static int FAKE_PLAYER_LLM_TIMEOUT;
	public static int FAKE_PLAYER_AMBIENT_CHAT_CHANCE;
	public static int FAKE_PLAYER_COMBAT_CHAT_CHANCE;
	public static int FAKE_PLAYER_LOCAL_CHAT_REPLY_CHANCE;
	public static int FAKE_PLAYER_AI_TICK;
	public static boolean FAKE_PLAYER_PROGRESSION;
	public static double FAKE_PLAYER_XP_RATE;
	public static int FAKE_PLAYER_HEADLESS_COUNT;
	public static boolean FAKE_PLAYER_TRADING;
	public static int FAKE_PLAYER_TRADE_DURATION;
	public static int FAKE_PLAYER_TRADE_COOLDOWN;
	public static int FAKE_PLAYER_TRADE_SHOUT_INTERVAL;
	public static int FAKE_PLAYER_TRADE_CHANCE;
	public static String FAKE_PLAYER_LLM_PRIORITY;
	public static boolean FAKE_PLAYER_BOT_DIALOGUES;
	public static boolean FAKE_PLAYER_ECONOMY;
	public static boolean FAKE_PLAYER_PROFESSION_CHANGE;
	public static boolean FAKE_PLAYER_SIEGES;
	public static int FAKE_PLAYER_SIEGE_ATTACKER_CLANS;
	public static boolean FAKE_PLAYER_SIEGE_ATTACK_PLAYER_CASTLES;
	public static int FAKE_PLAYER_STATS_LOG_MINUTES;
	public static boolean FAKE_PLAYER_CHAT_LOG;
	
	public static void load()
	{
		final ConfigReader config = new ConfigReader(FAKE_PLAYERS_CONFIG_FILE);
		FAKE_PLAYERS_ENABLED = config.getBoolean("EnableFakePlayers", false);
		FAKE_PLAYER_CHAT = config.getBoolean("FakePlayerChat", false);
		FAKE_PLAYER_USE_SHOTS = config.getBoolean("FakePlayerUseShots", false);
		FAKE_PLAYER_KILL_PVP = config.getBoolean("FakePlayerKillsRewardPvP", false);
		FAKE_PLAYER_KILL_KARMA = config.getBoolean("FakePlayerUnflaggedKillsKarma", false);
		FAKE_PLAYER_AUTO_ATTACKABLE = config.getBoolean("FakePlayerAutoAttackable", false);
		FAKE_PLAYER_AGGRO_MONSTERS = config.getBoolean("FakePlayerAggroMonsters", false);
		FAKE_PLAYER_AGGRO_PLAYERS = config.getBoolean("FakePlayerAggroPlayers", false);
		FAKE_PLAYER_AGGRO_FPC = config.getBoolean("FakePlayerAggroFPC", false);
		FAKE_PLAYER_CAN_DROP_ITEMS = config.getBoolean("FakePlayerCanDropItems", false);
		FAKE_PLAYER_CAN_PICKUP = config.getBoolean("FakePlayerCanPickup", false);
		FAKE_PLAYER_LLM_CHAT = config.getBoolean("FakePlayerLlmChat", false);
		FAKE_PLAYER_LLM_URL = config.getString("FakePlayerLlmUrl", "http://127.0.0.1:11434/api/generate");
		FAKE_PLAYER_LLM_MODEL = config.getString("FakePlayerLlmModel", "gemma3");
		FAKE_PLAYER_LLM_LANGUAGE = config.getString("FakePlayerLlmLanguage", "русский");
		FAKE_PLAYER_LLM_TIMEOUT = config.getInt("FakePlayerLlmTimeout", 15000);
		FAKE_PLAYER_AMBIENT_CHAT_CHANCE = config.getInt("FakePlayerAmbientChatChance", 30);
		FAKE_PLAYER_COMBAT_CHAT_CHANCE = config.getInt("FakePlayerCombatChatChance", 60);
		FAKE_PLAYER_LOCAL_CHAT_REPLY_CHANCE = config.getInt("FakePlayerLocalChatReplyChance", 40);
		FAKE_PLAYER_AI_TICK = config.getInt("FakePlayerAiTick", 5);
		FAKE_PLAYER_PROGRESSION = config.getBoolean("FakePlayerProgression", false);
		FAKE_PLAYER_XP_RATE = config.getDouble("FakePlayerXpRate", 3);
		FAKE_PLAYER_HEADLESS_COUNT = config.getInt("FakePlayerHeadlessCount", 20);
		FAKE_PLAYER_TRADING = config.getBoolean("FakePlayerTrading", false);
		FAKE_PLAYER_TRADE_DURATION = config.getInt("FakePlayerTradeDuration", 60);
		FAKE_PLAYER_TRADE_COOLDOWN = config.getInt("FakePlayerTradeCooldown", 120);
		FAKE_PLAYER_TRADE_SHOUT_INTERVAL = config.getInt("FakePlayerTradeShoutInterval", 180);
		FAKE_PLAYER_TRADE_CHANCE = config.getInt("FakePlayerTradeChance", 30);
		FAKE_PLAYER_LLM_PRIORITY = config.getString("FakePlayerLlmPriority", "seams").trim().toLowerCase();
		FAKE_PLAYER_BOT_DIALOGUES = config.getBoolean("FakePlayerBotDialogues", true);
		FAKE_PLAYER_ECONOMY = config.getBoolean("FakePlayerEconomy", true);
		FAKE_PLAYER_PROFESSION_CHANGE = config.getBoolean("FakePlayerProfessionChange", true);
		FAKE_PLAYER_SIEGES = config.getBoolean("FakePlayerSieges", true);
		FAKE_PLAYER_SIEGE_ATTACKER_CLANS = config.getInt("FakePlayerSiegeAttackerClans", 2);
		FAKE_PLAYER_SIEGE_ATTACK_PLAYER_CASTLES = config.getBoolean("FakePlayerSiegeAttackPlayerCastles", false);
		FAKE_PLAYER_STATS_LOG_MINUTES = config.getInt("FakePlayerStatsLogMinutes", 10);
		FAKE_PLAYER_CHAT_LOG = config.getBoolean("FakePlayerChatLog", false);
	}
}
