package l2p.gameserver.ai;
import l2p.util.Rnd;
import l2p.gameserver.ai.Guard;
import l2p.gameserver.model.L2Character;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.base.Sex;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.extensions.scripts.Functions;
public class ChattyGuard extends Guard
{
private static final int _chattyChance = 100; // Шанс того, что гвард после его респавна будет болтливым
private static final int _sayNormalChance = 100; // Шанс произнесения фразы, адресуемой проходящим мимо игрокам
private static final long _sayNormalPeriod = 120000; // Минимальный период (в мс), с которым гвард произносит фразы, адресуемые проходящим мимо игрокам
private static final long _sayAggroPeriod = 10000; // Минимальный период (в мс), с которым гвард произносит фразы, при начале атаки ПК
// Фразы, которые может произнести гвард, когда начинает атаковать ПК
private static final String[] _aggroText = {
"{name}, никуда не уходи, сейчас я тебя чуть-чуть убью!",
"{name}, я тебя зарэжу, мамой клянусь!",
"Ля-ля-ля, я сошел с ума. Сейчас всех буду убивать!",
"Сколько я зарезал, сколько перерезал, сколько я народу загубил! Будешь ты, {name}, еще одним в этом списке!",
"Я ужас, летящий на крыльях ночи! Я жвачка, прилипшая к вашей подошве! Я... Короче, {name}, сейчас я тебя буду убивать!",
"Я страх, трепещущий в ночи! Я хитроумный замок от подвала правосудия! Я любимец удачи! Я Чёрный Гвард!",
"Ух ты, моя будущая жертва. Это я к тебе обращаюсь, {name}! Не делай вид что ты не при делах!",
"Ура! За родину, за всех моих собратьев! Готовься к смерти, {name}!",
"{name}, кошелек или жизнь?",
"{name}, просто умри, не осложняй мне жизнь!",
"{name}, как ты предпочитаешь умереть? Быстро и легко или же медленно и мучительно?",
"{name}, пвп или засцал?",
"{name}, я убью тебя нежно.",
"{name}, я тебя порву как Тузик грелку!",
"Готовься к смерти, {name}!",
"{name}, ты дерешся как девчонка!",
"{name}, помолись перед смертью! Хотя... уже не успеешь!" };
// Фразы, которые может произнести гвард, адресуя их проходящим мимо игрокам мужского пола
private static final String[] _normalTextM = {
"{name}, есть чо?",
"{name}, превед!",
"{name}, привет!",
"{name}, привет пративный.",
"{name}, дай оружие на минутку, хочу скрин сделать.",
"{name}, удачной охоты.",
"{name}, в чем сила, брат?",
"{name}, больше фрагов тебе.",
"{name}, ты мне в кошмарах снился.",
"{name}, я тебя знаю - тебя давно разыскивают за убийства невинных монстров.",
"{name}, пвп или засцал?",
"{name}, у тебя кошелек выпал.",
"{name}, не пойду я с тобой на свидание, даже не проси.",
"Всем чмоке в этом чате." };
// Фразы, которые может произнести гвард, адресуя их проходящим мимо игрокам женского пола
private static final String[] _normalTextF = {
"{name}, привет красавица.",
"{name}, ух ты, какие у тебя... э... глаза.",
"{name}, не хочешь погулять с настоящим мачо?",
"{name}, привет!",
"{name}, дай потрогать... э... ну вобщем дай чего нибудь потрогать.",
"{name}, не женское это дело - врагов убивать.",
"{name}, у тебя верх порвался, не свети... глазками.",
"{name}, ах какие булочки...",
"{name}, ах какие ножки...",
"{name}, да ты красотка однако.",
"{name}, вах, какая женщина, мне бы такую.",
"{name}, а что вы делаете сегодня вечером?",
"{name}, вы согласны что с точки зрения банальной эрудиции, не всякий локально селектированный индивидуум способен игнорировать тенденции потенциальных эмоций и паритетно аллоцировать амбивалентные кванты логистики, экстрагируемой с учетом антропоморфности эвристического генезиса?",
"{name}, предлагаю руку и сердце. И кошелек после свадьбы." };
private boolean _chattyGuard;
private long _lastAggroSay;
private long _lastNormalSay;
public ChattyGuard(L2NpcInstance actor)
{
super(actor);
_chattyGuard = false;
_lastAggroSay = 0;
_lastNormalSay = 0;
}
@Override
protected void onEvtSpawn()
{
_lastAggroSay = 0;
_lastNormalSay = 0;
_chattyGuard = Rnd.chance(_chattyChance) ? true : false;
super.onEvtSpawn();
}
@Override
public void checkAggression(L2Character target)
{
if (_chattyGuard && target.getPlayer() != null)
{
L2NpcInstance actor = getActor();
L2Player player = target.getPlayer();
if (actor == null || actor.isDead())
return;
if (player.getKarma() == 0)
{
if (Rnd.chance(_sayNormalChance) && _lastNormalSay + _sayNormalPeriod < System.currentTimeMillis() && actor.isInRange(player, 250L))
{
Functions.npcSay(actor, player.getSex() == 0 ? _normalTextM[Rnd.get(_normalTextM.length)].replace("{name}", player.getName()) : _normalTextF[Rnd.get(_normalTextF.length)].replace("{name}", player.getName()));
_lastNormalSay = System.currentTimeMillis();
}
}
else if (player.getKarma() > 0)//if (super.checkAggression(target) != 0)
{
if (_lastAggroSay + _sayAggroPeriod < System.currentTimeMillis())
{
Functions.npcSay(actor, _aggroText[Rnd.get(_aggroText.length)].replace("{name}", player.getName()));
_lastAggroSay = System.currentTimeMillis();
}
}
}
super.checkAggression(target);
}
}