Sync with L2jServer HighFive Sep 8th 2015.
This commit is contained in:
@@ -78,10 +78,10 @@ public class L2NpcActionShift implements IActionShiftHandler
|
||||
html.replace("%mp%", String.valueOf((int) ((L2Character) target).getCurrentMp()));
|
||||
html.replace("%mpmax%", String.valueOf(((L2Character) target).getMaxMp()));
|
||||
|
||||
html.replace("%patk%", String.valueOf(((L2Character) target).getPAtk(null)));
|
||||
html.replace("%matk%", String.valueOf(((L2Character) target).getMAtk(null, null)));
|
||||
html.replace("%pdef%", String.valueOf(((L2Character) target).getPDef(null)));
|
||||
html.replace("%mdef%", String.valueOf(((L2Character) target).getMDef(null, null)));
|
||||
html.replace("%patk%", String.valueOf((int) ((L2Character) target).getPAtk(null)));
|
||||
html.replace("%matk%", String.valueOf((int) ((L2Character) target).getMAtk(null, null)));
|
||||
html.replace("%pdef%", String.valueOf((int) ((L2Character) target).getPDef(null)));
|
||||
html.replace("%mdef%", String.valueOf((int) ((L2Character) target).getMDef(null, null)));
|
||||
html.replace("%accu%", String.valueOf(((L2Character) target).getAccuracy()));
|
||||
html.replace("%evas%", String.valueOf(((L2Character) target).getEvasionRate(null)));
|
||||
html.replace("%crit%", String.valueOf(((L2Character) target).getCriticalHit(null, null)));
|
||||
@@ -126,8 +126,8 @@ public class L2NpcActionShift implements IActionShiftHandler
|
||||
html.replace("%spawntype%", "Fixed");
|
||||
html.replace("%spawn%", ((L2Npc) target).getSpawn().getX() + " " + ((L2Npc) target).getSpawn().getY() + " " + ((L2Npc) target).getSpawn().getZ());
|
||||
}
|
||||
html.replace("%loc2d%", String.valueOf((int) target.calculateDistance(((L2Npc) target).getSpawn().getLocation(target), false, false)));
|
||||
html.replace("%loc3d%", String.valueOf((int) target.calculateDistance(((L2Npc) target).getSpawn().getLocation(target), true, false)));
|
||||
html.replace("%loc2d%", String.valueOf((int) activeChar.calculateDistance(((L2Npc) target).getSpawn().getLocation(target), false, false)));
|
||||
html.replace("%loc3d%", String.valueOf((int) activeChar.calculateDistance(((L2Npc) target).getSpawn().getLocation(target), true, false)));
|
||||
if (((L2Npc) target).getSpawn().getRespawnMinDelay() == 0)
|
||||
{
|
||||
html.replace("%resp%", "None");
|
||||
|
@@ -1000,10 +1000,10 @@ public class AdminEditChar implements IAdminCommandHandler
|
||||
adminReply.replace("%currentload%", String.valueOf(player.getCurrentLoad()));
|
||||
adminReply.replace("%maxload%", String.valueOf(player.getMaxLoad()));
|
||||
adminReply.replace("%percent%", String.valueOf(Util.roundTo(((float) player.getCurrentLoad() / (float) player.getMaxLoad()) * 100, 2)));
|
||||
adminReply.replace("%patk%", String.valueOf(player.getPAtk(null)));
|
||||
adminReply.replace("%matk%", String.valueOf(player.getMAtk(null, null)));
|
||||
adminReply.replace("%pdef%", String.valueOf(player.getPDef(null)));
|
||||
adminReply.replace("%mdef%", String.valueOf(player.getMDef(null, null)));
|
||||
adminReply.replace("%patk%", String.valueOf((int) player.getPAtk(null)));
|
||||
adminReply.replace("%matk%", String.valueOf((int) player.getMAtk(null, null)));
|
||||
adminReply.replace("%pdef%", String.valueOf((int) player.getPDef(null)));
|
||||
adminReply.replace("%mdef%", String.valueOf((int) player.getMDef(null, null)));
|
||||
adminReply.replace("%accuracy%", String.valueOf(player.getAccuracy()));
|
||||
adminReply.replace("%evasion%", String.valueOf(player.getEvasionRate(null)));
|
||||
adminReply.replace("%critical%", String.valueOf(player.getCriticalHit(null, null)));
|
||||
|
@@ -222,7 +222,7 @@ public class AdminFightCalculator implements IAdminCommandHandler
|
||||
{
|
||||
shld1++;
|
||||
}
|
||||
boolean _crit1 = Formulas.calcCrit(npc1.getCriticalHit(npc2, null), false, npc2);
|
||||
boolean _crit1 = Formulas.calcCrit(npc1, npc2);
|
||||
if (_crit1)
|
||||
{
|
||||
crit1++;
|
||||
@@ -255,7 +255,7 @@ public class AdminFightCalculator implements IAdminCommandHandler
|
||||
{
|
||||
shld2++;
|
||||
}
|
||||
boolean _crit2 = Formulas.calcCrit(npc2.getCriticalHit(npc1, null), false, npc1);
|
||||
boolean _crit2 = Formulas.calcCrit(npc2, npc1);
|
||||
if (_crit2)
|
||||
{
|
||||
crit2++;
|
||||
|
@@ -44,7 +44,6 @@ public class AdminHeal implements IAdminCommandHandler
|
||||
@Override
|
||||
public boolean useAdminCommand(String command, L2PcInstance activeChar)
|
||||
{
|
||||
|
||||
if (command.equals("admin_heal"))
|
||||
{
|
||||
handleHeal(activeChar);
|
||||
|
@@ -187,11 +187,11 @@ public class NpcViewMod implements IBypassHandler
|
||||
html.replace("%atktype%", Util.capitalizeFirst(npc.getAttackType().name().toLowerCase()));
|
||||
html.replace("%atkrange%", npc.getStat().getPhysicalAttackRange());
|
||||
|
||||
html.replace("%patk%", npc.getPAtk(activeChar));
|
||||
html.replace("%pdef%", npc.getPDef(activeChar));
|
||||
html.replace("%patk%", (int) npc.getPAtk(activeChar));
|
||||
html.replace("%pdef%", (int) npc.getPDef(activeChar));
|
||||
|
||||
html.replace("%matk%", npc.getMAtk(activeChar, null));
|
||||
html.replace("%mdef%", npc.getMDef(activeChar, null));
|
||||
html.replace("%matk%", (int) npc.getMAtk(activeChar, null));
|
||||
html.replace("%mdef%", (int) npc.getMDef(activeChar, null));
|
||||
|
||||
html.replace("%atkspd%", npc.getPAtkSpd());
|
||||
html.replace("%castspd%", npc.getMAtkSpd());
|
||||
|
@@ -84,6 +84,10 @@ public class QuestLink implements IBypassHandler
|
||||
private static void showQuestChooseWindow(L2PcInstance player, L2Npc npc, Collection<Quest> quests)
|
||||
{
|
||||
final StringBuilder sb = StringUtil.startAppend(150, "<html><body>");
|
||||
final StringBuilder qStarted = StringUtil.startAppend(150, "");
|
||||
final StringBuilder qCanStart = StringUtil.startAppend(150, "");
|
||||
final StringBuilder qCannotstart = StringUtil.startAppend(150, "");
|
||||
final StringBuilder qComplete = StringUtil.startAppend(150, "");
|
||||
String state = "";
|
||||
String color = "";
|
||||
|
||||
@@ -121,35 +125,72 @@ public class QuestLink implements IBypassHandler
|
||||
state = quest.isCustomQuest() ? " (Done)" : "03";
|
||||
color = "787878";
|
||||
}
|
||||
StringUtil.append(sb, "<font color=\"" + color + "\">");
|
||||
StringUtil.append(sb, "<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_", String.valueOf(npc.getObjectId()), "_Quest ", quest.getName(), "\">");
|
||||
|
||||
if (quest.isCustomQuest())
|
||||
switch (color)
|
||||
{
|
||||
StringUtil.append(sb, quest.getDescr(), state);
|
||||
}
|
||||
else
|
||||
{
|
||||
int questId = quest.getId();
|
||||
if (questId > 10000)
|
||||
case "ffdd66": // started
|
||||
{
|
||||
questId -= 5000;
|
||||
StringUtil.append(qStarted, "<font color=\"" + color + "\">");
|
||||
StringUtil.append(qStarted, "<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_", String.valueOf(npc.getObjectId()), "_Quest ", quest.getName(), "\">");
|
||||
appendToText(quest, qStarted, state);
|
||||
break;
|
||||
}
|
||||
else if (questId == 146)
|
||||
case "bbaa88": // can start
|
||||
{
|
||||
questId = 640;
|
||||
StringUtil.append(qCanStart, "<font color=\"" + color + "\">");
|
||||
StringUtil.append(qCanStart, "<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_", String.valueOf(npc.getObjectId()), "_Quest ", quest.getName(), "\">");
|
||||
appendToText(quest, qCanStart, state);
|
||||
break;
|
||||
}
|
||||
case "a62f31": // cannot start
|
||||
{
|
||||
StringUtil.append(qCannotstart, "<font color=\"" + color + "\">");
|
||||
StringUtil.append(qCannotstart, "<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_", String.valueOf(npc.getObjectId()), "_Quest ", quest.getName(), "\">");
|
||||
appendToText(quest, qCannotstart, state);
|
||||
break;
|
||||
}
|
||||
case "787878": // complete
|
||||
{
|
||||
StringUtil.append(qComplete, "<font color=\"" + color + "\">");
|
||||
StringUtil.append(qComplete, "<button icon=\"quest\" align=\"left\" action=\"bypass -h npc_", String.valueOf(npc.getObjectId()), "_Quest ", quest.getName(), "\">");
|
||||
appendToText(quest, qComplete, state);
|
||||
break;
|
||||
}
|
||||
|
||||
StringUtil.append(sb, "<fstring>", String.valueOf(questId), state, "</fstring>");
|
||||
}
|
||||
sb.append("</button></font>");
|
||||
}
|
||||
sb.append(qStarted);
|
||||
sb.append(qCanStart);
|
||||
sb.append(qCannotstart);
|
||||
sb.append(qComplete);
|
||||
sb.append("</body></html>");
|
||||
|
||||
// Send a Server->Client packet NpcHtmlMessage to the L2PcInstance in order to display the message of the L2NpcInstance
|
||||
npc.insertObjectIdAndShowChatWindow(player, sb.toString());
|
||||
}
|
||||
|
||||
private static void appendToText(Quest quest, StringBuilder sb, String state)
|
||||
{
|
||||
if (quest.isCustomQuest())
|
||||
{
|
||||
StringUtil.append(sb, quest.getDescr(), state);
|
||||
}
|
||||
else
|
||||
{
|
||||
int questId = quest.getId();
|
||||
if (questId > 10000)
|
||||
{
|
||||
questId -= 5000;
|
||||
}
|
||||
else if (questId == 146)
|
||||
{
|
||||
questId = 640;
|
||||
}
|
||||
|
||||
StringUtil.append(sb, "<fstring>", String.valueOf(questId), state, "</fstring>");
|
||||
}
|
||||
sb.append("</button></font>");
|
||||
}
|
||||
|
||||
/**
|
||||
* Open a quest window on client with the text of the L2NpcInstance.<br>
|
||||
* <b><u>Actions</u>:</b><br>
|
||||
|
@@ -26,7 +26,7 @@ import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.stats.BaseStats;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
|
||||
/**
|
||||
@@ -43,7 +43,7 @@ public final class Backstab extends AbstractEffect
|
||||
@Override
|
||||
public boolean calcSuccess(BuffInfo info)
|
||||
{
|
||||
return info.getEffector().isBehindTarget() && !Formulas.calcPhysicalSkillEvasion(info.getEffector(), info.getEffected(), info.getSkill()) && Formulas.calcBlowSuccess(info.getEffector(), info.getEffected(), info.getSkill());
|
||||
return !info.getEffector().isInFrontOf(info.getEffected()) && !Formulas.calcPhysicalSkillEvasion(info.getEffector(), info.getEffected(), info.getSkill()) && Formulas.calcBlowSuccess(info.getEffector(), info.getEffected(), info.getSkill());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -68,18 +68,19 @@ public final class Backstab extends AbstractEffect
|
||||
|
||||
L2Character target = info.getEffected();
|
||||
L2Character activeChar = info.getEffector();
|
||||
boolean ss = info.getSkill().useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
byte shld = Formulas.calcShldUse(activeChar, target, info.getSkill());
|
||||
double damage = Formulas.calcBackstabDamage(activeChar, target, info.getSkill(), shld, ss);
|
||||
Skill skill = info.getSkill();
|
||||
boolean ss = skill.useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
byte shld = Formulas.calcShldUse(activeChar, target, skill);
|
||||
double damage = Formulas.calcBackstabDamage(activeChar, target, skill, shld, ss);
|
||||
|
||||
// Crit rate base crit rate for skill, modified with STR bonus
|
||||
if (Formulas.calcCrit(info.getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target))
|
||||
if (Formulas.calcCrit(activeChar, target, skill))
|
||||
{
|
||||
damage *= 2;
|
||||
}
|
||||
|
||||
target.reduceCurrentHp(damage, activeChar, info.getSkill());
|
||||
target.notifyDamageReceived(damage, activeChar, info.getSkill(), true, false);
|
||||
target.reduceCurrentHp(damage, activeChar, skill);
|
||||
target.notifyDamageReceived(damage, activeChar, skill, true, false);
|
||||
|
||||
// Manage attack or cast break of the target (calculating rate, sending message...)
|
||||
if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
|
||||
@@ -95,6 +96,6 @@ public final class Backstab extends AbstractEffect
|
||||
}
|
||||
|
||||
// Check if damage should be reflected
|
||||
Formulas.calcDamageReflected(activeChar, target, info.getSkill(), true);
|
||||
Formulas.calcDamageReflected(activeChar, target, skill, true);
|
||||
}
|
||||
}
|
@@ -28,6 +28,7 @@ import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExSubjobInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||
|
||||
@@ -80,8 +81,8 @@ public class ClassChange extends AbstractEffect
|
||||
msg.addClassId(activeClass);
|
||||
msg.addClassId(player.getClassId().getId());
|
||||
player.sendPacket(msg);
|
||||
|
||||
player.broadcastUserInfo();
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
|
||||
}, 1000);
|
||||
}
|
||||
|
@@ -32,6 +32,7 @@ public final class DamOverTime extends AbstractEffect
|
||||
{
|
||||
private final boolean _canKill;
|
||||
private final double _power;
|
||||
private final int _charge;
|
||||
|
||||
public DamOverTime(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
|
||||
{
|
||||
@@ -39,6 +40,7 @@ public final class DamOverTime extends AbstractEffect
|
||||
|
||||
_canKill = params.getBoolean("canKill", false);
|
||||
_power = params.getDouble("power", 0);
|
||||
_charge = params.getInt("charge", 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -76,6 +78,16 @@ public final class DamOverTime extends AbstractEffect
|
||||
}
|
||||
}
|
||||
|
||||
if ((_charge != 0) && (info.getEffected().getActingPlayer().getCharges() >= _charge))
|
||||
{
|
||||
info.getEffected().sendPacket(SystemMessageId.YOUR_FORCE_HAS_REACHED_MAXIMUM_CAPACITY);
|
||||
return false;
|
||||
}
|
||||
else if (_charge != 0)
|
||||
{
|
||||
info.getEffected().getActingPlayer().increaseCharges(1, _charge);
|
||||
}
|
||||
|
||||
info.getEffected().reduceCurrentHpByDOT(damage, info.getEffector(), info.getSkill());
|
||||
info.getEffected().notifyDamageReceived(damage, info.getEffector(), info.getSkill(), false, true);
|
||||
return info.getSkill().isToggle();
|
||||
|
@@ -85,7 +85,7 @@ public final class EnergyAttack extends AbstractEffect
|
||||
final Skill skill = info.getSkill();
|
||||
|
||||
double attack = attacker.getPAtk(target);
|
||||
int defence = target.getPDef(attacker);
|
||||
double defence = target.getPDef(attacker);
|
||||
|
||||
if (!_ignoreShieldDefence)
|
||||
{
|
||||
@@ -130,11 +130,27 @@ public final class EnergyAttack extends AbstractEffect
|
||||
weaponTypeBoost = 77;
|
||||
}
|
||||
|
||||
// charge count should be the count before casting the skill but since its reduced before calling effects
|
||||
// we add skill consume charges to current charges
|
||||
double energyChargesBoost = (((attacker.getCharges() + skill.getChargeConsume()) - 1) * 0.2) + 1;
|
||||
double energyChargesBoost = 1;
|
||||
if (attacker.getCharges() == 1)
|
||||
{
|
||||
energyChargesBoost = 1.1;
|
||||
attacker.decreaseCharges(1);
|
||||
}
|
||||
else if (attacker.getCharges() == 2)
|
||||
{
|
||||
energyChargesBoost = 1.2;
|
||||
attacker.decreaseCharges(2);
|
||||
}
|
||||
else if (attacker.getCharges() >= 3)
|
||||
{
|
||||
energyChargesBoost = 1.3;
|
||||
attacker.decreaseCharges(3);
|
||||
}
|
||||
|
||||
double addPower = (attacker.getStat().calcStat(Stats.MOMENTUM_SKILL_POWER, 1, null, null));
|
||||
|
||||
attack += _power;
|
||||
attack *= addPower;
|
||||
attack *= ssBoost;
|
||||
attack *= energyChargesBoost;
|
||||
attack *= weaponTypeBoost;
|
||||
@@ -157,6 +173,13 @@ public final class EnergyAttack extends AbstractEffect
|
||||
|
||||
if (damage > 0)
|
||||
{
|
||||
// reduce damage if target has maxdamage buff
|
||||
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
damage = (int) maxDamage;
|
||||
}
|
||||
|
||||
attacker.sendDamageMessage(target, (int) damage, false, critical, false);
|
||||
target.reduceCurrentHp(damage, attacker, skill);
|
||||
target.notifyDamageReceived(damage, attacker, skill, critical, false);
|
||||
|
@@ -18,6 +18,8 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import com.l2jserver.gameserver.enums.ShotType;
|
||||
import com.l2jserver.gameserver.model.StatsSet;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
@@ -25,9 +27,11 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jserver.gameserver.model.skills.AbnormalType;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.stats.BaseStats;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
import com.l2jserver.gameserver.model.stats.Stats;
|
||||
|
||||
/**
|
||||
* Fatal Blow effect implementation.
|
||||
@@ -35,9 +39,15 @@ import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
*/
|
||||
public final class FatalBlow extends AbstractEffect
|
||||
{
|
||||
private final String _targetAbnormalType;
|
||||
private final double _skillAddPower;
|
||||
|
||||
public FatalBlow(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
|
||||
{
|
||||
super(attachCond, applyCond, set, params);
|
||||
|
||||
_targetAbnormalType = params.getString("targetAbnormalType", "NULL");
|
||||
_skillAddPower = params.getDouble("skillAddPower", 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -63,25 +73,46 @@ public final class FatalBlow extends AbstractEffect
|
||||
{
|
||||
L2Character target = info.getEffected();
|
||||
L2Character activeChar = info.getEffector();
|
||||
Skill skill = info.getSkill();
|
||||
|
||||
if (activeChar.isAlikeDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
boolean ss = info.getSkill().useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
byte shld = Formulas.calcShldUse(activeChar, target, info.getSkill());
|
||||
double damage = Formulas.calcBlowDamage(activeChar, target, info.getSkill(), shld, ss);
|
||||
boolean ss = skill.useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
byte shld = Formulas.calcShldUse(activeChar, target, skill);
|
||||
double damage = Formulas.calcBlowDamage(activeChar, target, skill, shld, ss);
|
||||
|
||||
// Crit rate base crit rate for skill, modified with STR bonus
|
||||
boolean crit = Formulas.calcCrit(info.getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target);
|
||||
if (_targetAbnormalType != "NULL")
|
||||
{
|
||||
StringTokenizer st = new StringTokenizer(_targetAbnormalType, ",");
|
||||
while (st.hasMoreTokens())
|
||||
{
|
||||
String abnormal = st.nextToken().trim();
|
||||
if (target.getEffectList().getBuffInfoByAbnormalType(AbnormalType.valueOf(abnormal)) != null)
|
||||
{
|
||||
damage *= _skillAddPower;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
boolean crit = Formulas.calcCrit(activeChar, target, skill);
|
||||
if (crit)
|
||||
{
|
||||
damage *= 2;
|
||||
}
|
||||
|
||||
target.reduceCurrentHp(damage, activeChar, info.getSkill());
|
||||
target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false);
|
||||
// reduce damage if target has maxdamage buff
|
||||
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
damage = (int) maxDamage;
|
||||
}
|
||||
|
||||
target.reduceCurrentHp(damage, activeChar, skill);
|
||||
target.notifyDamageReceived(damage, activeChar, skill, crit, false);
|
||||
|
||||
// Manage attack or cast break of the target (calculating rate, sending message...)
|
||||
if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
|
||||
@@ -97,6 +128,6 @@ public final class FatalBlow extends AbstractEffect
|
||||
}
|
||||
|
||||
// Check if damage should be reflected
|
||||
Formulas.calcDamageReflected(activeChar, target, info.getSkill(), true);
|
||||
Formulas.calcDamageReflected(activeChar, target, skill, true);
|
||||
}
|
||||
}
|
@@ -48,7 +48,8 @@ public final class FocusMaxEnergy extends AbstractEffect
|
||||
{
|
||||
final Skill sonicMastery = info.getEffected().getSkills().get(992);
|
||||
final Skill focusMastery = info.getEffected().getSkills().get(993);
|
||||
int maxCharge = (sonicMastery != null) ? sonicMastery.getLevel() : (focusMastery != null) ? focusMastery.getLevel() : 0;
|
||||
final Skill maximumForceMastery = info.getEffected().getSkills().get(10301);
|
||||
int maxCharge = (sonicMastery != null) ? sonicMastery.getLevel() : (focusMastery != null) ? focusMastery.getLevel() : (maximumForceMastery != null) ? 15 : 0;
|
||||
if (maxCharge != 0)
|
||||
{
|
||||
int count = maxCharge - info.getEffected().getActingPlayer().getCharges();
|
||||
|
@@ -130,7 +130,7 @@ public final class HpCpHeal extends AbstractEffect
|
||||
{
|
||||
target.sendPacket(SystemMessageId.REJUVENATING_HP);
|
||||
}
|
||||
else
|
||||
else if (healAmount != 0)
|
||||
{
|
||||
if (activeChar.isPlayer() && (activeChar != target))
|
||||
{
|
||||
@@ -152,20 +152,20 @@ public final class HpCpHeal extends AbstractEffect
|
||||
if (amount != 0)
|
||||
{
|
||||
target.setCurrentCp(amount + target.getCurrentCp());
|
||||
}
|
||||
|
||||
if (activeChar.isPlayer() && (activeChar != target))
|
||||
{
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
|
||||
sm.addString(activeChar.getName());
|
||||
sm.addInt((int) amount);
|
||||
target.sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
|
||||
sm.addInt((int) healAmount);
|
||||
target.sendPacket(sm);
|
||||
|
||||
if (activeChar.isPlayer() && (activeChar != target))
|
||||
{
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
|
||||
sm.addString(activeChar.getName());
|
||||
sm.addInt((int) amount);
|
||||
target.sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
|
||||
sm.addInt((int) amount);
|
||||
target.sendPacket(sm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -25,6 +25,8 @@ import com.l2jserver.gameserver.model.StatsSet;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.effects.EffectFlag;
|
||||
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.FlyToLocation;
|
||||
import com.l2jserver.gameserver.network.serverpackets.FlyToLocation.FlyType;
|
||||
@@ -53,6 +55,18 @@ public final class KnockDown extends AbstractEffect
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEffectFlags()
|
||||
{
|
||||
return EffectFlag.STUNNED.getMask();
|
||||
}
|
||||
|
||||
@Override
|
||||
public L2EffectType getEffectType()
|
||||
{
|
||||
return L2EffectType.STUN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(BuffInfo info)
|
||||
{
|
||||
|
@@ -79,6 +79,13 @@ public final class MagicalAttackByAbnormal extends AbstractEffect
|
||||
|
||||
if (damage > 0)
|
||||
{
|
||||
// reduce damage if target has maxdamage buff
|
||||
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
damage = (int) maxDamage;
|
||||
}
|
||||
|
||||
// Manage attack or cast break of the target (calculating rate, sending message...)
|
||||
if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
|
||||
{
|
||||
|
@@ -83,6 +83,13 @@ public final class MagicalSoulAttack extends AbstractEffect
|
||||
|
||||
if (damage > 0)
|
||||
{
|
||||
// reduce damage if target has maxdamage buff
|
||||
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
damage = (int) maxDamage;
|
||||
}
|
||||
|
||||
// Manage attack or cast break of the target (calculating rate, sending message...)
|
||||
if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
|
||||
{
|
||||
|
@@ -18,15 +18,19 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import com.l2jserver.gameserver.enums.ShotType;
|
||||
import com.l2jserver.gameserver.model.StatsSet;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jserver.gameserver.model.items.type.WeaponType;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.stats.BaseStats;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
import com.l2jserver.gameserver.model.stats.Stats;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||
|
||||
@@ -36,9 +40,21 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||
*/
|
||||
public final class PhysicalAttack extends AbstractEffect
|
||||
{
|
||||
private final String _type1;
|
||||
private final double _valueReduce;
|
||||
private final String _type2;
|
||||
private final double _valueIncrease;
|
||||
private final boolean _isLastAttack;
|
||||
|
||||
public PhysicalAttack(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
|
||||
{
|
||||
super(attachCond, applyCond, set, params);
|
||||
|
||||
_type1 = params.getString("weaponTypeDec", "NONE");
|
||||
_valueReduce = params.getDouble("valueDec", 1);
|
||||
_type2 = params.getString("weaponTypeInc", "NONE");
|
||||
_valueIncrease = params.getDouble("valueInc", 1);
|
||||
_isLastAttack = params.getBoolean("isLastAttack", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,16 +80,17 @@ public final class PhysicalAttack extends AbstractEffect
|
||||
{
|
||||
L2Character target = info.getEffected();
|
||||
L2Character activeChar = info.getEffector();
|
||||
Skill skill = info.getSkill();
|
||||
|
||||
if (activeChar.isAlikeDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (((info.getSkill().getFlyRadius() > 0) || (info.getSkill().getFlyType() != null)) && activeChar.isMovementDisabled())
|
||||
if (((info.getSkill().getFlyRadius() > 0) || (skill.getFlyType() != null)) && activeChar.isMovementDisabled())
|
||||
{
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||
sm.addSkillName(info.getSkill());
|
||||
sm.addSkillName(skill);
|
||||
activeChar.sendPacket(sm);
|
||||
return;
|
||||
}
|
||||
@@ -84,37 +101,82 @@ public final class PhysicalAttack extends AbstractEffect
|
||||
}
|
||||
|
||||
int damage = 0;
|
||||
boolean ss = info.getSkill().isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
final byte shld = Formulas.calcShldUse(activeChar, target, info.getSkill());
|
||||
boolean ss = skill.isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
final byte shld = Formulas.calcShldUse(activeChar, target, skill);
|
||||
// Physical damage critical rate is only affected by STR.
|
||||
boolean crit = false;
|
||||
if (info.getSkill().getBaseCritRate() > 0)
|
||||
if (skill.getBaseCritRate() > 0)
|
||||
{
|
||||
crit = Formulas.calcCrit(info.getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target);
|
||||
crit = Formulas.calcCrit(activeChar, target, skill);
|
||||
}
|
||||
|
||||
damage = (int) Formulas.calcPhysDam(activeChar, target, info.getSkill(), shld, false, ss);
|
||||
damage = (int) Formulas.calcPhysDam(activeChar, target, skill, shld, false, ss);
|
||||
|
||||
if (crit)
|
||||
{
|
||||
damage *= 2;
|
||||
}
|
||||
|
||||
if ((activeChar.getActiveWeaponItem() != null) && (_type1 != "NONE") && (_type2 != "NONE"))
|
||||
{
|
||||
StringTokenizer st = new StringTokenizer(_type1, ",");
|
||||
while (st.hasMoreTokens())
|
||||
{
|
||||
String item = st.nextToken().trim();
|
||||
if (activeChar.getActiveWeaponItem().getItemType() == WeaponType.valueOf(item))
|
||||
{
|
||||
damage *= _valueReduce;
|
||||
break;
|
||||
}
|
||||
}
|
||||
st = new StringTokenizer(_type2, ",");
|
||||
while (st.hasMoreTokens())
|
||||
{
|
||||
String item = st.nextToken().trim();
|
||||
if (activeChar.getActiveWeaponItem().getItemType() == WeaponType.valueOf(item))
|
||||
{
|
||||
damage *= _valueIncrease;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (damage > 0)
|
||||
{
|
||||
// reduce damage if target has maxdamage buff
|
||||
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
damage = (int) maxDamage;
|
||||
}
|
||||
|
||||
activeChar.sendDamageMessage(target, damage, false, crit, false);
|
||||
target.reduceCurrentHp(damage, activeChar, info.getSkill());
|
||||
target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false);
|
||||
if (_isLastAttack && !target.isPlayer() && !target.isRaid())
|
||||
{
|
||||
if (damage < target.getCurrentHp())
|
||||
{
|
||||
target.setCurrentHp(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
target.reduceCurrentHp(damage, activeChar, skill);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
target.reduceCurrentHp(damage, activeChar, skill);
|
||||
target.notifyDamageReceived(damage, activeChar, skill, crit, false);
|
||||
}
|
||||
|
||||
// Check if damage should be reflected
|
||||
Formulas.calcDamageReflected(activeChar, target, info.getSkill(), crit);
|
||||
Formulas.calcDamageReflected(activeChar, target, skill, crit);
|
||||
}
|
||||
else
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.YOUR_ATTACK_HAS_FAILED);
|
||||
}
|
||||
|
||||
if (info.getSkill().isSuicideAttack())
|
||||
if (skill.isSuicideAttack())
|
||||
{
|
||||
activeChar.doDie(activeChar);
|
||||
}
|
||||
|
@@ -25,8 +25,9 @@ import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.stats.BaseStats;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
import com.l2jserver.gameserver.model.stats.Stats;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||
|
||||
@@ -64,6 +65,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
||||
{
|
||||
L2Character target = info.getEffected();
|
||||
L2Character activeChar = info.getEffector();
|
||||
Skill skill = info.getSkill();
|
||||
|
||||
if (activeChar.isAlikeDead())
|
||||
{
|
||||
@@ -73,31 +75,38 @@ public final class PhysicalAttackHpLink extends AbstractEffect
|
||||
if (activeChar.isMovementDisabled())
|
||||
{
|
||||
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||
sm.addSkillName(info.getSkill());
|
||||
sm.addSkillName(skill);
|
||||
activeChar.sendPacket(sm);
|
||||
return;
|
||||
}
|
||||
|
||||
final byte shld = Formulas.calcShldUse(activeChar, target, info.getSkill());
|
||||
final byte shld = Formulas.calcShldUse(activeChar, target, skill);
|
||||
// Physical damage critical rate is only affected by STR.
|
||||
boolean crit = false;
|
||||
if (info.getSkill().getBaseCritRate() > 0)
|
||||
if (skill.getBaseCritRate() > 0)
|
||||
{
|
||||
crit = Formulas.calcCrit(info.getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target);
|
||||
crit = Formulas.calcCrit(activeChar, target, skill);
|
||||
}
|
||||
|
||||
int damage = 0;
|
||||
boolean ss = info.getSkill().isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
damage = (int) Formulas.calcPhysDam(activeChar, target, info.getSkill(), shld, false, ss);
|
||||
boolean ss = skill.isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
damage = (int) Formulas.calcPhysDam(activeChar, target, skill, shld, false, ss);
|
||||
|
||||
if (damage > 0)
|
||||
{
|
||||
// reduce damage if target has maxdamage buff
|
||||
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
damage = (int) maxDamage;
|
||||
}
|
||||
|
||||
activeChar.sendDamageMessage(target, damage, false, crit, false);
|
||||
target.reduceCurrentHp(damage, activeChar, info.getSkill());
|
||||
target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false);
|
||||
target.reduceCurrentHp(damage, activeChar, skill);
|
||||
target.notifyDamageReceived(damage, activeChar, skill, crit, false);
|
||||
|
||||
// Check if damage should be reflected.
|
||||
Formulas.calcDamageReflected(activeChar, target, info.getSkill(), crit);
|
||||
Formulas.calcDamageReflected(activeChar, target, skill, crit);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -25,8 +25,9 @@ import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.effects.L2EffectType;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.stats.BaseStats;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
import com.l2jserver.gameserver.model.stats.Stats;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||
|
||||
@@ -64,16 +65,17 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
||||
{
|
||||
L2Character target = info.getEffected();
|
||||
L2Character activeChar = info.getEffector();
|
||||
Skill skill = info.getSkill();
|
||||
|
||||
if (activeChar.isAlikeDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (((info.getSkill().getFlyRadius() > 0) || (info.getSkill().getFlyType() != null)) && activeChar.isMovementDisabled())
|
||||
if (((skill.getFlyRadius() > 0) || (skill.getFlyType() != null)) && activeChar.isMovementDisabled())
|
||||
{
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||
sm.addSkillName(info.getSkill());
|
||||
sm.addSkillName(skill);
|
||||
activeChar.sendPacket(sm);
|
||||
return;
|
||||
}
|
||||
@@ -84,21 +86,21 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
||||
}
|
||||
|
||||
int damage = 0;
|
||||
boolean ss = info.getSkill().isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
final byte shld = Formulas.calcShldUse(activeChar, target, info.getSkill());
|
||||
boolean ss = skill.isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
|
||||
final byte shld = Formulas.calcShldUse(activeChar, target, skill);
|
||||
// Physical damage critical rate is only affected by STR.
|
||||
boolean crit = false;
|
||||
if (info.getSkill().getBaseCritRate() > 0)
|
||||
if (skill.getBaseCritRate() > 0)
|
||||
{
|
||||
crit = Formulas.calcCrit(info.getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target);
|
||||
crit = Formulas.calcCrit(activeChar, target, skill);
|
||||
}
|
||||
|
||||
damage = (int) Formulas.calcPhysDam(activeChar, target, info.getSkill(), shld, false, ss);
|
||||
damage = (int) Formulas.calcPhysDam(activeChar, target, skill, shld, false, ss);
|
||||
|
||||
if ((info.getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
|
||||
if ((skill.getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
|
||||
{
|
||||
// Souls Formula (each soul increase +4%)
|
||||
int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= info.getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : info.getSkill().getMaxSoulConsumeCount();
|
||||
int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= skill.getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : skill.getMaxSoulConsumeCount();
|
||||
damage *= 1 + (chargedSouls * 0.04);
|
||||
}
|
||||
if (crit)
|
||||
@@ -108,19 +110,26 @@ public final class PhysicalSoulAttack extends AbstractEffect
|
||||
|
||||
if (damage > 0)
|
||||
{
|
||||
// reduce damage if target has maxdamage buff
|
||||
double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
damage = (int) maxDamage;
|
||||
}
|
||||
|
||||
activeChar.sendDamageMessage(target, damage, false, crit, false);
|
||||
target.reduceCurrentHp(damage, activeChar, info.getSkill());
|
||||
target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false);
|
||||
target.reduceCurrentHp(damage, activeChar, skill);
|
||||
target.notifyDamageReceived(damage, activeChar, skill, crit, false);
|
||||
|
||||
// Check if damage should be reflected
|
||||
Formulas.calcDamageReflected(activeChar, target, info.getSkill(), crit);
|
||||
Formulas.calcDamageReflected(activeChar, target, skill, crit);
|
||||
}
|
||||
else
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.YOUR_ATTACK_HAS_FAILED);
|
||||
}
|
||||
|
||||
if (info.getSkill().isSuicideAttack())
|
||||
if (skill.isSuicideAttack())
|
||||
{
|
||||
activeChar.doDie(activeChar);
|
||||
}
|
||||
|
@@ -22,6 +22,7 @@ import com.l2jserver.gameserver.model.StatsSet;
|
||||
import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.stats.Stats;
|
||||
|
||||
/**
|
||||
* Static Damage effect implementation.
|
||||
@@ -29,7 +30,7 @@ import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
*/
|
||||
public final class StaticDamage extends AbstractEffect
|
||||
{
|
||||
private final int _power;
|
||||
private int _power;
|
||||
|
||||
public StaticDamage(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
|
||||
{
|
||||
@@ -52,6 +53,13 @@ public final class StaticDamage extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
// reduce damage if target has maxdamage buff
|
||||
double maxDamage = (info.getEffected().getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null));
|
||||
if (maxDamage > 0)
|
||||
{
|
||||
_power = (int) maxDamage;
|
||||
}
|
||||
|
||||
info.getEffected().reduceCurrentHp(_power, info.getEffector(), info.getSkill());
|
||||
info.getEffected().notifyDamageReceived(_power, info.getEffector(), info.getSkill(), false, false);
|
||||
|
||||
|
@@ -28,6 +28,7 @@ import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
||||
import com.l2jserver.gameserver.model.conditions.Condition;
|
||||
import com.l2jserver.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
|
||||
/**
|
||||
@@ -42,6 +43,7 @@ public final class Summon extends AbstractEffect
|
||||
private final int _lifeTime;
|
||||
private final int _consumeItemInterval;
|
||||
private final int _summonPoints;
|
||||
private final SkillHolder _debuff;
|
||||
|
||||
public Summon(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
|
||||
{
|
||||
@@ -58,6 +60,7 @@ public final class Summon extends AbstractEffect
|
||||
_consumeItemInterval = params.getInt("consumeItemInterval", 0);
|
||||
_lifeTime = params.getInt("lifeTime", 3600) * 1000;
|
||||
_summonPoints = params.getInt("summonPoints", 0);
|
||||
_debuff = new SkillHolder(params.getInt("debuffId", 0), 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,5 +118,9 @@ public final class Summon extends AbstractEffect
|
||||
summon.setShowSummonAnimation(true);
|
||||
summon.setRunning();
|
||||
summon.spawnMe();
|
||||
if (_debuff.getSkillId() != 0)
|
||||
{
|
||||
_debuff.getSkill().applyEffects(player, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -44,6 +44,7 @@ public final class TriggerSkillBySkill extends AbstractEffect
|
||||
private final int _chance;
|
||||
private final SkillHolder _skill;
|
||||
private final L2TargetType _targetType;
|
||||
private final int AQUAMARINE = 17822;
|
||||
|
||||
/**
|
||||
* @param attachCond
|
||||
@@ -64,12 +65,12 @@ public final class TriggerSkillBySkill extends AbstractEffect
|
||||
|
||||
public void onSkillUseEvent(OnCreatureSkillUse event)
|
||||
{
|
||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0) || (_castSkillId == 0)))
|
||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0) || ((_castSkillId == 0) && (_skill.getSkillId() != AQUAMARINE))))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_castSkillId != event.getSkill().getId())
|
||||
if ((_castSkillId != event.getSkill().getId()) && (_skill.getSkillId() != AQUAMARINE))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@@ -175,9 +175,9 @@ public class PlayerHandler implements ITelnetHandler
|
||||
itemType = 0;
|
||||
}
|
||||
|
||||
if (enchant > 65535)
|
||||
if (enchant > 127)
|
||||
{
|
||||
enchant = 65535;
|
||||
enchant = 127;
|
||||
}
|
||||
else if (enchant < 0)
|
||||
{
|
||||
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-01.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-01.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
You are limited to two occupational changes.<br>
|
||||
You would be better served training yourself. Remember that strength flows from your mind, not your weapon.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-02.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-02.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
An occupational change occurs when one is promoted to a higher-level occupation. A Warrior like yourself may advance to a <font color="LEVEL">Warlord</font> or a <font color="LEVEL">Gladiator</font>. Which occupation would you like to learn about?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-03.htm">Gladiator</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-06.htm">Warlord</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-03.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-03.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
Gladiators specialize in individual duels, especially with two swords.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-04.htm">Description of the Gladiator</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 2">Change occupation to Gladiator.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-02.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-04.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-04.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
Gladiators typically shun heavy armor and excel in hand-to-hand combat. They are among the strongest non-magical characters, carrying blades in both hands and having the capability of strong, repeated slashings.<br>
|
||||
To become a Gladiator your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Trust, and the Mark of the Duelist.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-05.htm">Ask about marks</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-03.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-05.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-05.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
To become a Gladiator you must collect three marks.<br>
|
||||
The <font color="LEVEL">Mark of the Challenger</font> is reserved for those who pass the Trial of the Challenger. You must be above <font color="LEVEL">level 35</font> to qualify. To take this test visit <font color="LEVEL">Kash of the Town of Dion</font>.<br>
|
||||
The <font color="LEVEL">Mark of Trust</font> is only given to those who pass the Testimony of Trust. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">High Priest Hollint at the Town of Oren</font>.<br>
|
||||
And last, <font color="LEVEL">Mark of the Duelist</font> is reserved for those who pass the Test of the Duelist. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test meet <font color="LEVEL">Duelist Kaien of the Town of Oren</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-04.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-06.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-06.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
Warlords specialize in fighting mulitiple opponents at once. A Warlord prefers large weapons such as polearms.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-07.htm">Description of the Warlord</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 3">Change occupation to Warlord.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-02.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-07.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-07.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
Warlords specialize in fighting multiple opponents and excel in siege battles. They prefer pole-type weapons.<br>
|
||||
To become a Warlord your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Trust, and the Mark of the Champion.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-08.htm">Ask about marks</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-06.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-08.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-08.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Each mark requires its own trial.<br>
|
||||
The <font color="LEVEL">Mark of the Challenger</font> is reserved for those who pass the Trial of the Challenger. You must be above <font color="LEVEL">level 35</font> to qualify. To take this test visit <font color="LEVEL">Kash of the Town of Dion</font>.<br>
|
||||
The <font color="LEVEL">Mark of Trust</font> is only given to those who pass the Testimony of Trust. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">High Priest Hollint at the Town of Oren</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of the Champion</font> is reserved for those who pass the Test of the Champion. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test visit <font color="LEVEL">Veteran Ascalon of the Town of Giran</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-06.htm">Return</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-09.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-09.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
An occupational change occurs when one is promoted to a higher-level occupation. A Knight like yourself can advance to a <font color="LEVEL">Paladin</font> or an <font color="LEVEL">Dark Avenger</font>. Which occupation would you like to learn about?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-10.htm">Paladin</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-13.htm">Dark Avenger</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-10.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-10.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
Paladins are above all else loyal to the King and faithful to Einhasad. They are superior swordsmen and are capable of high-level magic attacks.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-11.htm">Description of the Paladin</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 5">Change occupation to Paladin.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-09.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-11.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-11.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
With a style of combat similar to a knight, Paladins mainly serve a support role in parties. Capable of strong white magic attacks, their strongest attribute is guarding gates or doors, and blocking strongholds during a siege. Excellent at causing diversions.<br>
|
||||
To be a Paladin, your level must be over 40 and you must collect the Mark of Duty, the Mark of Trust, and the Mark of the Healer.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-12.htm">Ask about marks.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-10.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-12.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-12.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Each mark requires its own test.<br>
|
||||
The <font color="LEVEL">Mark of Duty</font> is reserved for those who pass the Trial of Duty. You must be above <font color="LEVEL">level 35</font> to take the test. To take this test visit <font color="LEVEL">Grand Master Hannavalt of the Town of Giran</font>.<br>
|
||||
The <font color="LEVEL">Mark of Trust</font> is reserved for those who pass the Testimony of Trust. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">High Priest Hollint at the Town of Oren</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of the Healer</font> is reserved for those who pass the Test of the Healer. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test, visit <font color="LEVEL">Priest Bandellos at the temple of the Town of Giran</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-10.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-13.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-13.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
A Dark Avenger worships the God of Darkness and is capable of Black Magic attacks.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-14.htm">Get description of the Dark Avenger.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 6">Change occupation to Dark Avenger.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-09.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-14.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-14.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
A Dark Avenger's combat style, party play and role during a siege are similar to the Paladin's. However, Dark Avengers tend to be selfish and evil, and users of Black Magic.<br>
|
||||
To become a Dark Avenger your level must be over 40 and you must collect the Mark of Duty, the Mark of Trust, and the Mark of Witchcraft.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-15.htm">Ask about marks.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-13.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-15.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-15.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
To become a Dark Avenger you must collect three marks.<br>
|
||||
The <font color="LEVEL">Mark of Duty</font> is reserved for those who pass the Trial of Duty. You must be above <font color="LEVEL">level 35</font> to qualify. To take this test visit <font color="LEVEL">Grand Master Hannavalt of the Town of Giran</font>.<br>
|
||||
The <font color="LEVEL">Mark of Trust</font> is reserved for those who pass the Testimony of Trust. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">High Priest Hollint at the Town of Oren</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of Witchcraft</font> is reserved for those who pass the Test of Witchcraft. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test go to the <font color="LEVEL">Death Pass and visit Orim of the Shadow</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-14.htm">Return</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-16.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-16.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
An occupational change occurs when one is promoted to a higher-level occupation. A Rogue like yourself may advance to a <font color="LEVEL">Treasure Hunter</font> or a <font color="LEVEL">Hawkeye</font>. Which occupation would you like to learn about?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-17.htm">Treasure Hunter</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-20.htm">Hawkeye</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-17.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-17.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
A Treasure Hunter is an expert with the dagger. He is a profiteer and tends to run away from dangerous situations.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-18.htm">Description of the Treasure Hunter</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 8">Change occupation to Treasure Hunter.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-16.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-18.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-18.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Generally, from a fighter's point of view, a Treasure Hunter is designated as a special "Dagger Wielding" Rogue. The Treasure Hunter's battle style or role in party play is thus identical to that of a Rogue equipped with a dagger. During a siege, Treasure Hunters basically act as assassins in special situations. When a targeted opponent appears, the Rogue can raise his evasion and speed levels to dispose of a fleeing enemy.<br>
|
||||
He possesses dagger skills, skills to strengthen the use of armor and a chance attack skill that inflicts enormous damage.<br>
|
||||
To become a Treasure Hunter, you must at least be at level 40, and you must obtain the Mark of Seeker, the Mark of Trust and Mark of the Searcher.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-19.htm">Ask about the marks.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-17.htm">Go back.</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-19.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-19.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Each mark requires its own trial.<br>
|
||||
The <font color="LEVEL">Mark of the Seeker</font> is reserved for those who pass the Trial of the Seeker. You must be above <font color="LEVEL">level 35</font> to qualify. To take this test visit <font color="LEVEL">Master Dufner of the Town of Giran</font>.<br>
|
||||
The <font color="LEVEL">Mark of Trust</font> is reserved for those who pass the Testimony of Trust. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">High Priest Hollint at the Town of Oren</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of the Searcher</font> is reserved for those who pass the Test of the Searcher. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test visit <font color="LEVEL">Master Luther at the Hunters Village</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-17.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-20.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-20.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
A Hawkeye is deadly with the Long Bow. He specializes in long range attack. Only those who have come under fire from a group of them realize how dangerous they can be.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-21.htm">Description of the Hawkeye</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 9">Change occupations to a Hawkeye.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-16.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-21.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-21.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
The Hawkeye is a special occupation that is often called the "Bow Carrying Rogue." He has a natural battle style and is truly frightening during a siege, particularly if several Hawkeyes work together to eliminate enemies from long range.<br>
|
||||
A Hawkeye possesses the ability to strengthen archery skills, the ability to shoot multiple shots in a row, and the ability to inflict damage in each arrow's area.<br>
|
||||
In order to become a Hawkeye, you must be at least level 40, and you must obtain the Mark of the Seeker, the Mark of Trust and the Mark of Sagittarius.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-22.htm">Ask about the marks.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-20.htm">Go back.</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-22.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-22.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
To advance to Hawkeye, you must collect 3 marks.<br>
|
||||
The <font color="LEVEL">Mark of the Seeker</font> is reserved for those who pass the Trial of the Seeker. You must be above <font color="LEVEL">level 35</font> to qualify. To take this trial visit <font color="LEVEL">Master Dufner of the Town of Giran</font>.<br>
|
||||
The <font color="LEVEL">Mark of Trust</font> is reserved for those who pass the Testimony of Trust. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">High Priest Hollint at the Town of Oren</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of the Sagittarius</font> is reserved for those who pass the Test of the Sagittarius. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test visit <font color="LEVEL">Guild President Bernard at the Hunters Village</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-21.htm">Return</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-23.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-23.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
An occupational change occurs when one is promoted to a higher-level occupation. An Elven Knight like yourself may advance to a <font color="LEVEL">Temple Knight</font> or a <font color="LEVEL">Sword Singer</font>. Which occupation would you like to learn about?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-24.htm">Temple Knight</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-27.htm">Sword Singer</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-24.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-24.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
The Temple Knights are Elven knights of the highest order, expert swordsmen who guard the forest and the headwaters of the river. They serve Eva, the goddess of water, and the Mother Tree Glade.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-25.htm">Description of the Temple Knight</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 20">Change occupation to Temple Knight.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-23.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-25.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-25.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
The Temple Knight uses strategy and white, supplementary and healing magic to defeat his foes. Capable of strengthening heavy equipment and summoning Cubics.<br>
|
||||
To be a Temple Knight, your level must be over 40 and you must collect the Mark of Duty, the Mark of Life, and the Mark of the Healer.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-26.htm">Ask about marks</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-24.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-26.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-26.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Each mark requires its own test.<br>
|
||||
The <font color="LEVEL">Mark of Duty</font> is reserved for those who pass the Trial of Duty. You must be above <font color="LEVEL">level 35</font> to qualify. To take this test visit <font color="LEVEL">Grand Master Hannavalt of the Town of Giran</font>.<br>
|
||||
The <font color="LEVEL">Mark of Life</font> is reserved for those who pass the Testimony of Life. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">Master Cardien of the Town of Dion</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of the Healer</font> is only given to those who pass the Test of the Healer. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test visit <font color="LEVEL">Priest Bandellos at the Temple of the Town of Giran</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-25.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-27.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-27.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
Sword Singers are swordsmen who increase the attack power of their allies on the battlefield.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-28.htm">Description of the Sword Singer</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 21">Change occupation to Sword Singer.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-23.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-28.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-28.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
Sword Singers use their skill of dance and supplementary magic to assist their parties during siege or clan war. Weak defensively, their "Sword Singing" restores party members' HP, recreases evasion and speed of movement.<br>
|
||||
To be a Sword Singer, your level must be over 40 and you need to collect the Mark of the Challenger, the Mark of Life, and the Mark of the Duelist.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-29.htm">Ask about marks.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-27.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-29.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-29.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Each mark requires its own trial.<br>
|
||||
The <font color="LEVEL">Mark of the Challenger</font> is reserved for those who pass the Trial of the Challenger. You must be above <font color="LEVEL">level 35</font> to qualify. To take this test you must visit <font color="LEVEL">Kash of the Town of Dion</font>.<br>
|
||||
The <font color="LEVEL">Mark of Life</font> is reserved for those who pass the Testimony of Life. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">Master Cardien of the Town of Dion</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of the Duelist</font> is reserved for those who pass the Test of the Duelist. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test you must meet <font color="LEVEL">Duelist Kaien of the Town of Oren</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-28.htm">Return</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-30.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-30.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
An occupational change occurs when one is promoted to a higher-level occupation. An Elven Scout like yourself may advance to a <font color="LEVEL">Plainswalker</font> or a <font color="LEVEL">Silver Ranger</font>. Which occupation would you like to learn about?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-31.htm">Plainswalker</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-34.htm">Silver Ranger</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-31.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-31.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
The Plainswalker is a lithe, dextrous adventurer.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-32.htm">Description of the Plainswalker</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 23">Change occupation to Plainswalker.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-30.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-32.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-32.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
The Plainswalker relies on dexterity. Can act as an Assassin during siege, capable of inflicting great damage with sudden blows, and can feign death in emergencies.<br>
|
||||
To become a Plainswalker your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Life, and the Mark of the Searcher.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-33.htm">Ask about marks</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-31.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-33.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-33.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Each mark requires its own test.<br>
|
||||
The <font color="LEVEL">Mark of the Seeker</font> is reserved for those who pass the Trial of the Seeker. You must be above <font color="LEVEL">level 35</font> to qualify. To take this test visit <font color="LEVEL">Master Dufner of the Town of Giran</font>.<br>
|
||||
The <font color="LEVEL">Mark of Life</font> is reserved for those who pass the Testimony of Life. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">Master Cardien of the Town of Dion</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of the Searcher</font> is reserved for those who pass the Test of the Searcher. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test visit <font color="LEVEL">Master Luther at the Hunters Village</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-31.htm">Return</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-34.htm
vendored
Normal file
6
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-34.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>
|
||||
A Silver Ranger is the highest form of Elven archer. A worthy opponent for Human Hawkeyes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-35.htm">Description of the Silver Ranger</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 24">Change occupation to Silver Ranger.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-30.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-35.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-35.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
A Silver Ranger is similar to a Human Hawkeye, But his evasion and hit rate are superior. He is most dreaded during Siege Battle. Even a Paladin cannot outlast an attack by a group of them.<br>
|
||||
Their archery skills include strengthening their bows and shooting several arrows simultaneously.<br>
|
||||
To become a Silver Ranger your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Life, and the Mark of the Sagittarius.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-36.htm">Ask about marks</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-34.htm">Return</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-36.htm
vendored
Normal file
7
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-36.htm
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<html><body>
|
||||
Each mark requires its own test.<br>
|
||||
The <font color="LEVEL">Mark of the Seeker</font> is reserved for those who pass the Trial of the Seeker. You must be above <font color="LEVEL">level 35</font> to qualify. To take this test visit <font color="LEVEL">Master Dufner of the Town of Giran</font>.<br>
|
||||
The <font color="LEVEL">Mark of Life</font> is reserved for those who pass the Testimony of Life. You must be above <font color="LEVEL">level 37</font> to qualify. To take this test visit <font color="LEVEL">Master Cardien of the Town of Dion</font>.<br>
|
||||
And last, the <font color="LEVEL">Mark of the Sagittarius</font> is reserved for those who pass the Test of the Sagittarius. You must be above <font color="LEVEL">level 39</font> to qualify. To take this test visit <font color="LEVEL">Guild President Bernard at the Hunters Village</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ElfHumanFighterChange2 30109-34.htm">Return</Button>
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-37.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-37.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
You must change occupations before I can train you.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-38.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-38.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
I only teach higher level Human and Elven Fighters, I have nothing to teach you. If you wish to change occupations, you must go to a guild which suits you.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-39.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-39.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
You are limited to two occupational changes.<br>
|
||||
You would be better served training yourself. Remember that strength flows from your mind, not your weapon.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-40.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-40.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Gladiator your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Trust, and the Mark of the Duelist.<br>
|
||||
I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Gladiator.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-41.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-41.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
To become a Gladiator your level must be over 40 and you need to collect the Mark of the Challenger, the Mark of Trust, and the Mark of the Duelist.<br>
|
||||
Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Gladiator.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-42.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-42.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You have now become a Gladiator. You can learn your skills from the masters nearby. You may not yet know much about being a Gladiator, but by learning it one step at a time it will soon be second nature to you.<br>
|
||||
Dedicate yourself to becoming a powerful and cunning warrior and you will win much glory.<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-43.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-43.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Gladiator your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Trust, and the Mark of the Duelist. Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Gladiator.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-44.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-44.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Warlord your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Trust, and the Mark of the Champion.<br>
|
||||
I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Warlord.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-45.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-45.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
To become a Warlord your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Trust and the Mark of the Champion.<br>
|
||||
Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Warlord.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-46.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-46.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You have now become a Warlord. You can learn your skills from the masters nearby. You may not yet know much about being a Warlord, but by learning it one step at a time it will soon be second nature to you.<br>
|
||||
Dedicate yourself to becoming a powerful and cunning warrior and you will win much glory.<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-47.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-47.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Warlord your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Trust, and the Mark of the Champion. Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Warlord.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-48.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-48.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Paladin your level must be over 40 and you must collect the Mark of Duty, the Mark of Trust, and the Mark of the Healer. I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Paladin.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-49.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-49.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
To become a Paladin your level must be over 40 and you must collect the Mark of Duty, the Mark of Trust, and the Mark of the Healer.<br>
|
||||
Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Paladin.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-50.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-50.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You are now a Paladin. Life as a Paladin may seem unfamiliar to you at first, but you can learn skills one by one from the masters nearby.<br>
|
||||
Dedicate yourself to fulfilling your knightly vows, upholding honor and defending the powerless!<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-51.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-51.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Paladin your level must be over 40 and you must collect the Mark of Duty, the Mark of Trust, and the Mark of the Healer. Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Paladin.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-52.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-52.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Dark Avenger your level must be over 40 and you must collect the Mark of Duty, the Mark of Trust, and the Mark of Witchcraft. I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Dark Avenger.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-53.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-53.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
To become a Dark Avenger your level must be over 40 and you must collect the Mark of Duty, the Mark of Trust, and the Mark of Witchcraft.<br>
|
||||
Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Dark Avenger.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-54.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-54.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You are now a Dark Avenger. Life as a Dark Avenger may seem unfamiliar to you at first, but you can learn skills one by one from the masters nearby.<br>
|
||||
Dedicate yourself to fulfilling your knightly vows, upholding honor and defending the powerless!<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-55.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-55.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Dark Avenger your level must be over 40 and you must collect the Mark of Duty, the Mark of Trust, and the Mark of Witchcraft. Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Dark Avenger.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-56.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-56.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Treasure Hunter your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Trust, and the Mark of the Searcher. I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Treasure Hunter.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-57.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-57.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
To become a Treasure Hunter your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Trust, and the Mark of the Searcher.<br>
|
||||
Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Treasure Hunter.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-58.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-58.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You are now a Treasure Hunter. Life as a Treasure Hunter may seem unfamiliar to you at first, but you can learn skills one by one from the masters nearby.<br>
|
||||
Dedicate yourself to your new vocation, becoming both wise and powerful.<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-59.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-59.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Treasure Hunter your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Trust, and the Mark of the Searcher. Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Treasure Hunter.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-60.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-60.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Hawkeye your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Trust, and the Mark of the Sagittarius. I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Hawkeye.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-61.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-61.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
To become a Hawkeye your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Trust, and the Mark of the Sagittarius.<br>
|
||||
Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Hawkeye.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-62.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-62.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You are now a Hawkeye. Life as a Hawkeye may seem unfamiliar to you at first, but you can learn skills one by one from the masters nearby.<br>
|
||||
Dedicate yourself to your new vocation, becoming a master of the bow whose arrows strike terror into our enemies.<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-63.htm
vendored
Normal file
3
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-63.htm
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>
|
||||
To become a Hawkeye your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Trust, and the Mark of the Sagittarius. Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Hawkeye.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-64.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-64.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Temple Knight your level must be over 40 and you must collect the Mark of Duty, the Mark of Life, and the Mark of the Healer.<br>
|
||||
I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Temple Knight.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-65.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-65.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Temple Knight your level must be over 40 and you must collect the Mark of Duty, the Mark of Life, and the Mark of the Healer. Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Temple Knight.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-66.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-66.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You have become a magnificent Temple Knight. Life as a Temple Knight may seem unfamiliar to you at first, but you can learn more skills from the masters nearby.<br>
|
||||
I pray that you will become a great Temple Knight whose actions reflect glory on the name of Eva, the goddess of water. Never forget your dignity and integrity as an Elf, and always remain steadfast in your vows. Congratulations once again!<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-67.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-67.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Temple Knight your level must be over 40 and you must collect the Mark of Duty, the Mark of Life, and the Mark of the Healer.<br>
|
||||
Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Temple Knight.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-68.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-68.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Sword Singer your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Life, and the Mark of the Duelist.<br>
|
||||
I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Sword Singer.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-69.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-69.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Sword Singer your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Life, and the Mark of the Duelist. Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Sword Singer.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-70.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-70.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You have become a magnificent Swordsinger. Life as a Swordsinger may seem unfamiliar to you at first, but you can learn more skills from the masters nearby.<br>
|
||||
I pray that you will become a great Swordsinger whose actions reflect glory on the name of Eva, the goddess of water. Never forget your dignity and integrity as an Elf, and always remain steadfast in your vows. Congratulations once again!<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-71.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-71.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Sword Singer your level must be over 40 and you must collect the Mark of the Challenger, the Mark of Life, and the Mark of the Duelist.<br>
|
||||
Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Sword Singer.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-72.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-72.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Plainswalker your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Life, and the Mark of the Searcher.<br>
|
||||
I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Plainswalker.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-73.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-73.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Plainswalker your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Life and the Mark of the Searcher. Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Plainswalker.
|
||||
</body></html>
|
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-74.htm
vendored
Normal file
5
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-74.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>
|
||||
Congratulations! You have now become a magnificent Plains Walker. Life as a Plains Walker may seem unfamiliar to you at first, but you can learn new skills from the masters nearby.<br>
|
||||
I pray that you will become a great Plains Walker whose actions bring glory to the name of Eva, the goddess of water. Never forget your dignity and integrity as an Elf, and always remain steadfast in our faith. Congratulations once again!<br>
|
||||
Our guild has prepared this small gift to assist you in your journey. Take this to <font color="LEVEL">the Grand Master, Grand Magister, Master Trainer or High Priest who permits transfers in any major town</font> and you will be able to exchange it for a usable Shadow Weapon.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-75.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-75.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Plainswalker your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Life, and the Mark of the Searcher.<br>
|
||||
Your skill level is good but you have not yet brought all the required marks to me. Bring all 3 marks requested and I will change your occupation to Plainswalker.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-76.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-76.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Silver Ranger your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Life, and the Mark of the Sagittarius.<br>
|
||||
I see that you have all the marks but your skill level is still insufficient. Come back after more training and I shall change your occupation to Silver Ranger.
|
||||
</body></html>
|
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-77.htm
vendored
Normal file
4
trunk/dist/game/data_classic/scripts/village_master/ElfHumanFighterChange2/30109-77.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>
|
||||
To become a Silver Ranger your level must be over 40 and you must collect the Mark of the Seeker, the Mark of Life and the Mark of the Sagittarius. Obviously your skills need improvement and you have not collected the necessary marks.<br>
|
||||
Didn't I make myself clear on the requirements for this occupation earlier? Come back after collecting the marks and increasing your level above 40. Then I shall change your occupation to Silver Ranger.
|
||||
</body></html>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user