Raidboss changes.

Contributed by champzix1.
This commit is contained in:
MobiusDevelopment
2019-05-10 14:14:40 +00:00
parent 068aaddc0e
commit 1d4142937a
104 changed files with 3640 additions and 2770 deletions

View File

@@ -847,7 +847,7 @@ public class Trasken extends AbstractNpcAI
{
tie_trasken = addSpawn(TAIL_TRASKEN, CENTER_LOCATION, false, 0, true);
hp_tail = tie_trasken.getCurrentHp();
startQuestTimer("spawn_rnd", 30000, tie_trasken, null);
startQuestTimer("spawn_rnd", 3000000, tie_trasken, null);
break;
}
case 3:
@@ -858,7 +858,7 @@ public class Trasken extends AbstractNpcAI
trasken.doCast(SKILL_TRASKEN_UP.getSkill());
hp_trasken = trasken.getCurrentHp();
startQuestTimer("spawn_rnd", 70000, trasken, null);
startQuestTimer("spawn_rnd", 9000000, trasken, null);
for (Location loc : Spawn_Larva_1)
{
addSpawn(LAVRA_1, loc, false, 0, true);

View File

@@ -16,32 +16,23 @@
*/
package ai.bosses.Valakas;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.MountType;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.StatsSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.skills.BuffInfo;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.SkillCaster;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera;
import org.l2jmobius.gameserver.util.Util;
import ai.AbstractNpcAI;
@@ -54,36 +45,36 @@ public final class Valakas extends AbstractNpcAI
// NPC
private static final int VALAKAS = 29028;
// Skills
private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1);
// private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1);
private static final int VALAKAS_REGENERATION = 4691;
private static final SkillHolder[] VALAKAS_REGULAR_SKILLS =
{
new SkillHolder(4681, 1), // Valakas Trample
new SkillHolder(4682, 1), // Valakas Trample
new SkillHolder(4683, 1), // Valakas Dragon Breath
new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used.
};
private static final SkillHolder[] VALAKAS_LOWHP_SKILLS =
{
new SkillHolder(4681, 1), // Valakas Trample
new SkillHolder(4682, 1), // Valakas Trample
new SkillHolder(4683, 1), // Valakas Dragon Breath
new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used.
new SkillHolder(4690, 1), // Valakas Meteor Storm
};
private static final SkillHolder[] VALAKAS_AOE_SKILLS =
{
new SkillHolder(4683, 1), // Valakas Dragon Breath
new SkillHolder(4684, 1), // Valakas Dragon Breath
new SkillHolder(4685, 1), // Valakas Tail Stomp
new SkillHolder(4686, 1), // Valakas Tail Stomp
new SkillHolder(4688, 1), // Valakas Stun
new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used.
new SkillHolder(4690, 1), // Valakas Meteor Storm
};
// private static final SkillHolder[] VALAKAS_REGULAR_SKILLS =
// {
// new SkillHolder(4681, 1), // Valakas Trample
// new SkillHolder(4682, 1), // Valakas Trample
// new SkillHolder(4683, 1), // Valakas Dragon Breath
// new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used.
// };
//
// private static final SkillHolder[] VALAKAS_LOWHP_SKILLS =
// {
// new SkillHolder(4681, 1), // Valakas Trample
// new SkillHolder(4682, 1), // Valakas Trample
// new SkillHolder(4683, 1), // Valakas Dragon Breath
// new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used.
// new SkillHolder(4690, 1), // Valakas Meteor Storm
// };
//
// private static final SkillHolder[] VALAKAS_AOE_SKILLS =
// {
// new SkillHolder(4683, 1), // Valakas Dragon Breath
// new SkillHolder(4684, 1), // Valakas Dragon Breath
// new SkillHolder(4685, 1), // Valakas Tail Stomp
// new SkillHolder(4686, 1), // Valakas Tail Stomp
// new SkillHolder(4688, 1), // Valakas Stun
// new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used.
// new SkillHolder(4690, 1), // Valakas Meteor Storm
// };
// Locations
private static final Location TELEPORT_CUBE_LOCATIONS[] =
@@ -114,7 +105,7 @@ public final class Valakas extends AbstractNpcAI
private static final byte DEAD = 3; // Valakas has been killed. Entry is locked.
// Misc
private long _timeTracker = 0; // Time tracker for last attack on Valakas.
private Playable _actualVictim; // Actual target of Valakas.
// private Playable _actualVictim; // Actual target of Valakas.
private static ZoneType ZONE;
private Valakas()
@@ -355,10 +346,10 @@ public final class Valakas extends AbstractNpcAI
startQuestTimer("remove_players", 900000, null, null);
}
else if (event.equalsIgnoreCase("skill_task"))
{
callSkillAI(npc);
}
// else if (event.equalsIgnoreCase("skill_task"))
// {
// callSkillAI(npc);
// }
}
else if (event.equalsIgnoreCase("valakas_unlock"))
{
@@ -373,12 +364,12 @@ public final class Valakas extends AbstractNpcAI
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(Npc npc)
{
npc.disableCoreAI(true);
return super.onSpawn(npc);
}
// @Override
// public String onSpawn(Npc npc)
// {
// npc.disableCoreAI(true);
// return super.onSpawn(npc);
// }
@Override
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
@@ -449,105 +440,105 @@ public final class Valakas extends AbstractNpcAI
return super.onKill(npc, killer, isSummon);
}
@Override
public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon)
{
return null;
}
private void callSkillAI(Npc npc)
{
if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType))
{
return;
}
// Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target.
if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0))
{
_actualVictim = getRandomTarget(npc);
}
// If result is still null, Valakas will roam. Don't go deeper in skill AI.
if (_actualVictim == null)
{
if (getRandom(10) == 0)
{
final int posX = npc.getX() + getRandom(-1400, 1400);
final int posY = npc.getY() + getRandom(-1400, 1400);
if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld()))
{
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0));
}
}
return;
}
final Skill skill = getRandomSkill(npc).getSkill();
// Cast the skill or follow the target.
if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true))
{
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
npc.setTarget(_actualVictim);
npc.doCast(skill);
}
else
{
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null);
}
}
/**
* Pick a random skill.<br>
* Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.<br>
* Lower than 50% HPs, he will begin to use Meteor skill.
* @param npc valakas
* @return a skill holder
*/
private SkillHolder getRandomSkill(Npc npc)
{
final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100);
// Valakas Lava Skin has priority.
if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId()))
{
return VALAKAS_LAVA_SKIN;
}
// Valakas will use mass spells if he feels surrounded.
if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20)
{
return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)];
}
if (hpRatio > 50)
{
return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)];
}
return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)];
}
/**
* Pickup a random Playable from the zone, deads targets aren't included.
* @param npc
* @return a random Playable.
*/
private Playable getRandomTarget(Npc npc)
{
final List<Playable> result = new ArrayList<>();
World.getInstance().forEachVisibleObject(npc, Playable.class, obj ->
{
if (!obj.isPet() && !obj.isDead())
{
result.add(obj);
}
});
return (result.isEmpty()) ? null : result.get(getRandom(result.size()));
}
// @Override
// public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon)
// {
// return null;
// }
//
// private void callSkillAI(Npc npc)
// {
// if (npc.isInvul() || npc.isCastingNow(SkillCaster::isAnyNormalType))
// {
// return;
// }
//
// // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target.
// if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.isInSurroundingRegion(_actualVictim)) || (getRandom(10) == 0))
// {
// _actualVictim = getRandomTarget(npc);
// }
//
// // If result is still null, Valakas will roam. Don't go deeper in skill AI.
// if (_actualVictim == null)
// {
// if (getRandom(10) == 0)
// {
// final int posX = npc.getX() + getRandom(-1400, 1400);
// final int posY = npc.getY() + getRandom(-1400, 1400);
// if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, npc.getZ(), npc.getInstanceWorld()))
// {
// npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, npc.getZ(), 0));
// }
// }
// return;
// }
//
// final Skill skill = getRandomSkill(npc).getSkill();
//
// // Cast the skill or follow the target.
// if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true))
// {
// npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
// npc.setTarget(_actualVictim);
// npc.doCast(skill);
// }
// else
// {
// npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null);
// }
// }
//
// /**
// * Pick a random skill.<br>
// * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.<br>
// * Lower than 50% HPs, he will begin to use Meteor skill.
// * @param npc valakas
// * @return a skill holder
// */
// private SkillHolder getRandomSkill(Npc npc)
// {
// final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100);
//
// // Valakas Lava Skin has priority.
// if ((hpRatio < 75) && (getRandom(150) == 0) && !npc.isAffectedBySkill(VALAKAS_LAVA_SKIN.getSkillId()))
// {
// return VALAKAS_LAVA_SKIN;
// }
//
// // Valakas will use mass spells if he feels surrounded.
// if (World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 1200).size() >= 20)
// {
// return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)];
// }
//
// if (hpRatio > 50)
// {
// return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)];
// }
//
// return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)];
// }
//
// /**
// * Pickup a random Playable from the zone, deads targets aren't included.
// * @param npc
// * @return a random Playable.
// */
// private Playable getRandomTarget(Npc npc)
// {
// final List<Playable> result = new ArrayList<>();
//
// World.getInstance().forEachVisibleObject(npc, Playable.class, obj ->
// {
// if (!obj.isPet() && !obj.isDead())
// {
// result.add(obj);
// }
// });
//
// return (result.isEmpty()) ? null : result.get(getRandom(result.size()));
// }
public static void main(String[] args)
{

View File

@@ -3247,8 +3247,8 @@
<mpReward value="20" type="PER" ticks="10" affects="PARTY" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="35459535.30342" hpRegen="23103.5" mp="44856" mpRegen="30" />
<attack physical="128810.835640155" magical="7231" random="10" critical="4" accuracy="0" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="3468" magical="1981" />
<attack physical="214683.835640155" magical="34104.0387932822" random="10" critical="4" accuracy="0" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="17685" magical="10155" />
<speed>
<walk ground="60" />
<run ground="180" />
@@ -3481,8 +3481,8 @@
<mpReward value="20" type="PER" ticks="10" affects="PARTY" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="19240798.98207" hpRegen="9827.1" mp="39048" mpRegen="30" />
<attack physical="55253.562042107" magical="5006" random="10" critical="4" accuracy="0" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="2960" magical="1626" />
<attack physical="108740.05311" magical="18875.915859" random="10" critical="4" accuracy="0" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="19210.828167" magical="9370.70992" />
<speed>
<walk ground="70" />
<run ground="140" />
@@ -3589,8 +3589,8 @@
<mpReward value="53" type="DIFF" ticks="10" affects="PARTY" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="21357837.419145" hpRegen="10667.3" mp="41920" mpRegen="30" />
<attack physical="66344.3340380442" magical="6016" random="10" critical="4" accuracy="0" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="3204" magical="1795" />
<attack physical="110573.05311" magical="20640.02495" random="10" critical="4" accuracy="0" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="21005.176917" magical="10245.529071" />
<speed>
<walk ground="70" />
<run ground="140" />
@@ -3692,8 +3692,8 @@
<mpReward value="20" type="PER" ticks="10" affects="PARTY" />
<stats str="164" int="188" dex="55" wit="78" con="111" men="149">
<vitals hp="15744949.44027" hpRegen="10704.9" mp="43380" mpRegen="30" />
<attack physical="77439.5246547926" magical="6591" random="10" critical="4" accuracy="0" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="3333" magical="1886" />
<attack physical="185920.60661" magical="32950.821824" random="10" critical="4" accuracy="0" attackSpeed="253" type="FIST" range="40" distance="80" width="120" />
<defence physical="21930.340408" magical="10695.860414" />
<speed>
<walk ground="70" />
<run ground="140" />

View File

@@ -408,8 +408,8 @@
<walk ground="50" />
<run ground="300" />
</speed>
<attack physical="59025.2573487332" magical="8304.88513767892" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="3679.90243035914" magical="2133.38489847112" />
<attack physical="236100.20588" magical="41520.885138" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="24330.717385" magical="11870.210597" />
<attribute>
<defence fire="450" water="450" wind="450" earth="400" holy="450" dark="450" />
<attack type="WIND" value="450" />
@@ -489,8 +489,8 @@
<walk ground="50" />
<run ground="180" />
</speed>
<attack physical="59025.2573487332" magical="8304.88513767892" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="2943.92194428731" magical="1706.70791877689" />
<attack physical="236100.20588" magical="41520.885138" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="24330.717385" magical="11870.210597" />
<attribute>
<defence fire="450" water="450" wind="450" earth="400" holy="450" dark="450" />
<attack type="WIND" value="450" />
@@ -532,8 +532,8 @@
<walk ground="50" />
<run ground="180" />
</speed>
<attack physical="59025.2573487332" magical="8304.88513767892" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="2355.13755542985" magical="1365.36633502151" />
<attack physical="236100.20588" magical="41520.885138" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="24330.717385" magical="11870.210597" />
<attribute>
<defence fire="450" water="450" wind="450" earth="400" holy="450" dark="450" />
<attack type="WIND" value="450" />
@@ -685,8 +685,8 @@
<walk ground="34" />
<run ground="180" />
</speed>
<attack physical="45027.4086463771" magical="7933.39078546243" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="3607.74748074426" magical="2081.35112045963" />
<attack physical="236100.20588" magical="41520.885138" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="24330.717385" magical="11870.210597" />
<attribute>
<defence fire="350" water="350" wind="350" earth="350" holy="300" dark="350" />
<attack type="DARK" value="430" />
@@ -956,8 +956,8 @@
<walk ground="120" />
<run ground="240" />
</speed>
<attack physical="47220.2058789866" magical="8304.88513767892" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="3679.90243035914" magical="2133.38489847112" />
<attack physical="236100.20588" magical="41520.885138" critical="4" attackSpeed="253" range="40" type="SWORD" distance="80" width="120" random="10" accuracy="5" />
<defence physical="24330.717385" magical="11870.210597" />
<attribute>
<defence fire="350" water="350" wind="350" earth="350" holy="300" dark="350" />
<attack type="DARK" value="430" />
@@ -1806,8 +1806,8 @@
<walk ground="25" />
<run ground="100" />
</speed>
<attack physical="63485" magical="18304" critical="4" attackSpeed="253" range="80" type="SWORD" distance="80" width="120" random="5" accuracy="10" />
<defence physical="2355.13755542985" magical="1679" />
<attack physical="236100.20588" magical="41520.885138" critical="4" attackSpeed="253" range="80" type="SWORD" distance="80" width="120" random="5" accuracy="10" />
<defence physical="24330.717385" magical="11870.210597" />
<attribute>
<defence fire="450" water="450" wind="450" earth="450" holy="400" dark="450" />
<attack type="DARK" value="450" />
@@ -1914,8 +1914,8 @@
<walk ground="25" />
<run ground="100" />
</speed>
<attack physical="87548" magical="18304" critical="4" attackSpeed="253" range="80" type="SWORD" distance="80" width="120" random="5" accuracy="10" />
<defence physical="2355.13755542985" magical="1679" />
<attack physical="236100.20588" magical="41520.885138" critical="4" attackSpeed="253" range="80" type="SWORD" distance="80" width="120" random="5" accuracy="10" />
<defence physical="24330.717385" magical="11870.210597" />
<attribute>
<defence fire="450" water="450" wind="450" earth="450" holy="400" dark="450" />
<attack type="DARK" value="450" />

View File

@@ -3935,6 +3935,11 @@
<magicLvl>1</magicLvl>
<operateType>P</operateType>
<magicCriticalRate>-5</magicCriticalRate>
<effects>
<effect name="DefenceTrait">
<SHOCK>100</SHOCK>
</effect>
</effects>
</skill>
<skill id="4495" toLevel="12" name="Power Shot">
<castRange>900</castRange>

View File

@@ -3003,25 +3003,21 @@
</effects>
</skill>
<skill id="5093" toLevel="1" name="Antharas Meteor">
<affectRange>150</affectRange>
<castRange>600</castRange>
<effectPoint>-1</effectPoint>
<effectRange>1100</effectRange>
<castRange>2500</castRange>
<effectPoint>-100</effectPoint>
<effectRange>2500</effectRange>
<attributeType>EARTH</attributeType>
<attributeValue>180</attributeValue>
<attributeValue>450</attributeValue>
<hitTime>8000</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<magicLvl>99</magicLvl>
<operateType>A1</operateType>
<reuseDelay>6000</reuseDelay>
<abnormalResists>TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT</abnormalResists>
<magicCriticalRate>-5</magicCriticalRate>
<magicLvl>110</magicLvl>
<operateType>A2</operateType>
<affectRange>300</affectRange>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="MagicalAttack">
<power>1084</power>
<effect name="PhysicalAttack">
<power>34255</power>
</effect>
</effects>
</skill>

View File

@@ -1232,29 +1232,20 @@
<skill id="14247" toLevel="1" name="Black Vortex">
<icon>icon.skill0054</icon>
<operateType>A2</operateType>
<mpConsume>1</mpConsume>
<castRange>1000</castRange>
<castRange>600</castRange>
<hitTime>1500</hitTime>
<isMagic>1</isMagic>
<effectPoint>-1</effectPoint>
<effectPoint>-100</effectPoint>
<abnormalType>FLY_AWAY</abnormalType>
<basicProperty>NONE</basicProperty>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectRange>1400</effectRange>
<lvlBonusRate>1</lvlBonusRate>
<activateRate>99</activateRate>
<effectRange>600</effectRange>
<magicLvl>99</magicLvl>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>1</abnormalTime>
<affectRange>200</affectRange>
<abnormalTime>3</abnormalTime>
<isDebuff>true</isDebuff>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="MagicalAttack">
<power>2000</power>
<power>157</power>
</effect>
<effect name="FlyAway"> <!-- TODO: {i_fly_away;curve;push;200} -->
<radius>200</radius>

View File

@@ -1330,56 +1330,104 @@
<!-- Lindvior's stun -->
<icon>icon.skill0100</icon>
<operateType>A2</operateType>
<castRange>400</castRange>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<abnormalType>STUN</abnormalType>
<abnormalVisualEffect>STUN</abnormalVisualEffect>
<affectRange>600</affectRange>
<hitTime>2500</hitTime>
<coolTime>1000</coolTime>
<effectPoint>-574</effectPoint>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<attributeType>WIND</attributeType>
<attributeValue>300</attributeValue>
<magicLvl>99</magicLvl>
<isDebuff>true</isDebuff>
<trait>SHOCK</trait>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="PhysicalAttack">
<power>34255</power>
</effect>
<effect name="BlockActions" />
</effects>
</skill>
<skill id="15272" toLevel="1" name="Wind Breath">
<!-- Lindvior's Landing Breath Skill -->
<icon>icon.skill10549</icon>
<operateType>A2</operateType>
<castRange>400</castRange>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>30</abnormalTime>
<hitTime>2500</hitTime>
<coolTime>3000</coolTime>
<effectPoint>-574</effectPoint>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<attributeType>WIND</attributeType>
<attributeValue>300</attributeValue>
<magicLvl>99</magicLvl>
<isDebuff>true</isDebuff>
<fanRange>0;0;2500;900</fanRange>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<affectScope>SQUARE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="PhysicalAttack">
<power>34255</power>
</effect>
<effect name="PhysicalAttackSpeed">
<amount>-30</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalAttackSpeed">
<amount>-30</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="15273" toLevel="1" name="Tail Swipe">
<!-- Lindvior's Landing Range -->
<operateType>A1</operateType>
<hitTime>2500</hitTime>
<effectPoint>-574</effectPoint>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<magicLvl>99</magicLvl>
<coolTime>1500</coolTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<abnormalType>STUN</abnormalType>
<abnormalVisualEffect>STUN</abnormalVisualEffect>
<coolTime>1000</coolTime>
<effectPoint>-100</effectPoint>
<attributeType>WIND</attributeType>
<attributeValue>300</attributeValue>
<fanRange>0;180;1500;600</fanRange>
<hitTime>3000</hitTime>
<magicLvl>110</magicLvl>
<operateType>A2</operateType>
<trait>SHOCK</trait>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<affectScope>SQUARE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="PhysicalAttack">
<power>34255</power>
</effect>
<effect name="BlockActions" />
</effects>
</skill>
<skill id="15274" toLevel="1" name="Mighty Wind Strike">
<!-- Long-range projectile -->
<operateType>A1</operateType>
<castRange>1800</castRange>
<operateType>A2</operateType>
<affectRange>300</affectRange>
<castRange>2500</castRange>
<hitTime>2500</hitTime>
<effectPoint>-707</effectPoint>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<effectRange>2500</effectRange>
<attributeType>WIND</attributeType>
<attributeValue>300</attributeValue>
<magicLvl>99</magicLvl>
<isMagic>1</isMagic>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="MagicalAttack">
<power>157</power>
</effect>
</effects>
</skill>
<skill id="15275" toLevel="1" name="Tornado">
<!-- Lindvior's Takeoff Presentation -->

View File

@@ -444,10 +444,21 @@
<skill id="15430" toLevel="1" name="Lindvior's Jump">
<!-- Ranged attack. -->
<operateType>A2</operateType>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>5</abnormalTime>
<affectRange>600</affectRange>
<hitTime>5000</hitTime>
<coolTime>5000</coolTime>
<effectPoint>-574</effectPoint>
<isDebuff>true</isDebuff>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="PhysicalAttack">
<power>34255</power>
</effect>
</effects>
</skill>
<skill id="15431" toLevel="1" name="Supersonic Blaster">
<operateType>A1</operateType>

View File

@@ -879,21 +879,53 @@
<skill id="15590" toLevel="1" name="Fear of Lindvior">
<!-- Afflicted with Fear and moving against own will. -->
<icon>icon.skill4108</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>30</abnormalTime>
<abnormalType>TURN_FLEE</abnormalType>
<abnormalVisualEffect>TURN_FLEE</abnormalVisualEffect>
<affectRange>600</affectRange>
<operateType>A2</operateType>
<hitTime>3000</hitTime>
<coolTime>500</coolTime>
<isMagic>1</isMagic>
<effectPoint>-867</effectPoint>
<isDebuff>true</isDebuff>
<trait>DERANGEMENT</trait>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="BlockControl" />
<effect name="Fear" />
</effects>
</skill>
<skill id="15591" toLevel="1" name="Wind Pull">
<!-- Pulls target using the wind. -->
<icon>icon.skill0006</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>5</abnormalTime>
<abnormalType>STUN</abnormalType>
<affectRange>600</affectRange>
<operateType>A2</operateType>
<hitTime>2000</hitTime>
<coolTime>3000</coolTime>
<effectPoint>-867</effectPoint>
<isDebuff>true</isDebuff>
<trait>PULL</trait>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="PhysicalAttack">
<power>34255</power>
</effect>
<effect name="PullBack">
<speed>600</speed>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
</effect>
</effects>
</skill>
<skill id="15592" toLevel="1" name="Dark Wind Armor">
<!-- Reflects a part of received damage. -->

View File

@@ -28,11 +28,22 @@
<!-- Powerful magical attack on target and nearby enemies. -->
<icon>icon.skill1167</icon>
<operateType>A1</operateType>
<castRange>900</castRange>
<hitTime>2000</hitTime>
<abnormalLvl>1</abnormalLvl>
<castRange>300</castRange>
<affectLimit>40-80</affectLimit>
<affectRange>300</affectRange>
<hitTime>2500</hitTime>
<coolTime>500</coolTime>
<effectPoint>-264</effectPoint>
<isMagic>1</isMagic>
<effectPoint>-100</effectPoint>
<effectRange>300</effectRange>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<effects>
<effect name="MagicalAttack">
<power>157</power>
</effect>
</effects>
</skill>
<skill id="16103" toLevel="6" name="Death Lift">
<!-- Deals damage and cancels target. -->

View File

@@ -206,25 +206,19 @@
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<abnormalType>PARALYZE</abnormalType>
<activateRate>150</activateRate>
<abnormalVisualEffect>PARALYZE</abnormalVisualEffect>
<mpConsume>10</mpConsume>
<castRange>2500</castRange>
<effectRange>2500</effectRange>
<affectRange>200</affectRange>
<hitTime>3000</hitTime>
<coolTime>500</coolTime>
<reuseDelay>10000</reuseDelay>
<isMagic>2</isMagic> <!-- Static Skill -->
<effectPoint>-52</effectPoint>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<trait>PARALYZE</trait>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<isDebuff>true</isDebuff>
<effects>
<effect name="MagicalAttack">
<power>1500</power> <!-- TODO -->
<power>157</power> <!-- TODO -->
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516</allowedSkills>
@@ -237,20 +231,17 @@
<operateType>A1</operateType>
<staticReuse>true</staticReuse>
<affectLimit>40-80</affectLimit>
<castRange>2500</castRange>
<affectRange>900</affectRange>
<mpConsume>10</mpConsume>
<affectRange>600</affectRange>
<hitTime>1000</hitTime>
<coolTime>500</coolTime>
<effectPoint>-52</effectPoint>
<effectRange>2500</effectRange>
<effectPoint>-100</effectPoint>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<isDebuff>true</isDebuff>
<effects>
<effect name="MagicalAttack">
<power>1500</power> <!-- TODO -->
<effect name="PhysicalAttack">
<power>34255</power> <!-- TODO -->
</effect>
</effects>
</skill>
@@ -259,21 +250,14 @@
<icon>icon.skill1275</icon>
<operateType>A2</operateType>
<abnormalLvl>5</abnormalLvl>
<abnormalTime>2</abnormalTime>
<activateRate>200</activateRate>
<staticReuse>true</staticReuse>
<castRange>-1</castRange>
<abnormalTime>5</abnormalTime>
<affectLimit>40-80</affectLimit>
<affectRange>900</affectRange>
<reuseDelay>20000</reuseDelay>
<affectRange>600</affectRange>
<abnormalType>KNOCKDOWN</abnormalType>
<abnormalVisualEffect>KNOCKDOWN</abnormalVisualEffect>
<hitCancelTime>0</hitCancelTime>
<mpConsume>10</mpConsume>
<hitTime>1000</hitTime>
<coolTime>500</coolTime>
<effectPoint>-52</effectPoint>
<effectRange>2500</effectRange>
<effectPoint>-100</effectPoint>
<trait>KNOCKDOWN</trait>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
@@ -281,7 +265,7 @@
<isDebuff>true</isDebuff>
<effects>
<effect name="MagicalAttack">
<power>1500</power> <!-- TODO -->
<power>157</power> <!-- TODO -->
</effect>
<effect name="KnockBack">
<speed>600</speed>
@@ -297,18 +281,11 @@
<operateType>A2</operateType>
<abnormalLvl>5</abnormalLvl>
<abnormalTime>30</abnormalTime>
<activateRate>200</activateRate>
<staticReuse>true</staticReuse>
<castRange>-1</castRange>
<affectLimit>40-80</affectLimit>
<affectRange>900</affectRange>
<reuseDelay>20000</reuseDelay>
<hitCancelTime>0</hitCancelTime>
<mpConsume>10</mpConsume>
<affectRange>600</affectRange>
<hitTime>2000</hitTime>
<coolTime>500</coolTime>
<effectPoint>-52</effectPoint>
<effectRange>2500</effectRange>
<effectPoint>-100</effectPoint>
<trait>GIANT_WEAKNESS</trait>
<targetType>SELF</targetType>
<affectScope>POINT_BLANK</affectScope>
@@ -316,7 +293,7 @@
<isDebuff>true</isDebuff>
<effects>
<effect name="MagicalAttack">
<power>1500</power> <!-- TODO -->
<power>157</power> <!-- TODO -->
</effect>
<effect name="PAtk">
<amount>30</amount>
@@ -368,22 +345,16 @@
<!-- Deals physical damage to, and paralyzes the target and nearby enemies. -->
<icon>icon.skill1172</icon>
<operateType>A2</operateType>
<castRange>1200</castRange>
<castRange>2500</castRange>
<hitTime>2000</hitTime>
<effectPoint>-52</effectPoint>
<isMagic>1</isMagic>
<mpConsume>10</mpConsume>
<effectPoint>-100</effectPoint>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime> <!-- TODO -->
<affectLimit>40-80</affectLimit>
<abnormalType>PARALYZE</abnormalType>
<abnormalVisualEffect>PARALYZE</abnormalVisualEffect>
<activateRate>150</activateRate>
<affectRange>900</affectRange>
<effectRange>1200</effectRange>
<reuseDelay>10000</reuseDelay>
<isMagic>2</isMagic> <!-- Static Skill -->
<hitCancelTime>0</hitCancelTime>
<affectRange>300</affectRange>
<effectRange>2500</effectRange>
<trait>PARALYZE</trait>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
@@ -391,7 +362,7 @@
<isDebuff>true</isDebuff>
<effects>
<effect name="PhysicalAttack"> <!-- TODO -->
<power>100000</power>
<power>34255</power>
</effect>
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516</allowedSkills>
@@ -402,23 +373,20 @@
<skill id="16615" toLevel="1" name="Helios Plasma Wall">
<!-- A rectangular barrier or electricity is formed around a range target, dealing powerful magic damage and 25% Mana Burn. -->
<operateType>A1</operateType>
<staticReuse>true</staticReuse>
<affectLimit>45-45</affectLimit>
<activateRate>200</activateRate>
<castRange>1200</castRange>
<affectRange>400</affectRange>
<mpConsume>10</mpConsume>
<castRange>2500</castRange>
<affectRange>300</affectRange>
<hitTime>3000</hitTime>
<coolTime>500</coolTime>
<effectPoint>-1349</effectPoint>
<effectRange>1200</effectRange>
<effectPoint>-100</effectPoint>
<effectRange>2500</effectRange>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<isDebuff>true</isDebuff>
<effects>
<effect name="MagicalAttack">
<power>1500</power> <!-- TODO -->
<power>157</power> <!-- TODO -->
</effect>
<effect name="MagicalAttackMp">
<power>250</power>
@@ -431,26 +399,21 @@
<!-- Helios' overawing gaze has petrified you and made you unable to move. Additional damage is received at regular intervals. -->
<icon>icon.skill16614</icon>
<operateType>A2</operateType>
<targetType>SELF</targetType>
<castRange>1200</castRange>
<castRange>2500</castRange>
<hitTime>3000</hitTime>
<effectPoint>-52</effectPoint>
<isMagic>1</isMagic>
<mpConsume>10</mpConsume>
<reuseDelay>10000</reuseDelay>
<effectPoint>-100</effectPoint>
<effectRange>2500</effectRange>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>30</abnormalTime>
<abnormalType>PARALYZE</abnormalType>
<activateRate>150</activateRate>
<abnormalVisualEffect>PARALYZE</abnormalVisualEffect>
<isDebuff>true</isDebuff>
<hitCancelTime>0</hitCancelTime>
<trait>PARALYZE</trait>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="DamOverTime">
<power>200</power> <!-- TODO -->
<power>512</power> <!-- TODO -->
<ticks>1</ticks>
</effect>
<effect name="BlockActions">
@@ -587,19 +550,20 @@
<operateType>A1</operateType>
<castRange>2500</castRange>
<hitTime>5000</hitTime>
<effectPoint>-696</effectPoint>
<isMagic>1</isMagic>
<reuseDelay>10000</reuseDelay>
<affectRange>200</affectRange>
<mpConsume>12</mpConsume>
<effectPoint>-100</effectPoint>
<affectRange>300</affectRange>
<effectRange>2500</effectRange>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<affectScope>RANGE</affectScope>
<affectObject>NOT_FRIEND</affectObject>
<isDebuff>true</isDebuff>
<effects>
<effect name="MagicalAttack">
<power>1500</power> <!-- TODO -->
<power>157</power> <!-- TODO -->
</effect>
<effect name="DamOverTime">
<power>512</power>
<ticks>1</ticks>
</effect>
</effects>
</skill>
@@ -607,23 +571,17 @@
<!-- Lightning strikes the target and nearby enemies, dealing magic damage and paralyzing them. Also decreases P. Def. and Magic Resistance. -->
<icon>icon.skll10094</icon>
<operateType>A2</operateType>
<targetType>SELF</targetType>
<castRange>2500</castRange>
<effectRange>2500</effectRange>
<affectRange>900</affectRange>
<affectRange>300</affectRange>
<hitTime>2500</hitTime>
<affectLimit>40-80</affectLimit>
<effectPoint>-438</effectPoint>
<isMagic>1</isMagic>
<mpConsume>10</mpConsume>
<reuseDelay>10000</reuseDelay>
<effectPoint>-100</effectPoint>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>30</abnormalTime>
<abnormalType>PARALYZE</abnormalType>
<activateRate>150</activateRate>
<abnormalVisualEffect>PARALYZE</abnormalVisualEffect>
<isDebuff>true</isDebuff>
<hitCancelTime>0</hitCancelTime>
<trait>PARALYZE</trait>
<targetType>ENEMY</targetType>
<affectScope>RANGE</affectScope>
@@ -634,7 +592,7 @@
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516</allowedSkills>
</effect>
<effect name="MagicalAttack">
<power>1500</power> <!-- TODO -->
<power>157</power> <!-- TODO -->
</effect>
<effect name="MagicalDefence">
<amount>-50</amount>

View File

@@ -389,15 +389,15 @@
</skill>
<skill id="16727" toLevel="1" name="Helios Storm Fist">
<operateType>A1</operateType>
<castRange>-1</castRange>
<castRange>600</castRange>
<hitTime>1500</hitTime>
<isMagic>1</isMagic> <!-- Static Skill -->
<effectPoint>-100</effectPoint>
<effectRange>600</effectRange>
<targetType>ENEMY</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="PhysicalAttack">
<power>100000</power>
<power>34255</power>
</effect>
</effects>
</skill>