Fixed NPC Death Bomb (4614) skill.

Thanks to ver.
This commit is contained in:
MobiusDevelopment
2022-03-23 23:40:48 +00:00
parent 7bc8e2da10
commit e723bfd82d
9 changed files with 35 additions and 8 deletions

View File

@@ -296,12 +296,13 @@
<set name="target" val="ONE" /> <set name="target" val="ONE" />
<set name="reuseDelay" val="10000" /> <set name="reuseDelay" val="10000" />
<set name="hitTime" val="1500" /> <set name="hitTime" val="1500" />
<!-- test -->
<set name="skillType" val="MDAM" /> <set name="skillType" val="MDAM" />
<set name="isMagic" val="true" /> <set name="isMagic" val="true" />
<set name="operateType" val="ACTIVE" /> <set name="operateType" val="ACTIVE" />
<set name="castRange" val="600" /> <set name="castRange" val="600" />
<set name="effectRange" val="1100" /> <set name="effectRange" val="1100" />
<set name="isSuicideAttack" val="true" />
<set name="maxChance" val="30" />
</skill> </skill>
<skill id="4615" levels="12" name="Bleed"> <skill id="4615" levels="12" name="Bleed">
<!-- You suffer a wound that continually reduces HP. Effect 2. --> <!-- You suffer a wound that continually reduces HP. Effect 2. -->

View File

@@ -880,6 +880,11 @@ public class AttackableAI extends CreatureAI
if (((sk.getSkillType() == SkillType.BUFF) || (sk.getSkillType() == SkillType.HEAL) || inRange) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() >= _actor.getStat().getMpConsume(sk)) && !sk.isPassive() && (Rnd.get(100) <= 5)) if (((sk.getSkillType() == SkillType.BUFF) || (sk.getSkillType() == SkillType.HEAL) || inRange) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() >= _actor.getStat().getMpConsume(sk)) && !sk.isPassive() && (Rnd.get(100) <= 5))
{ {
if (sk.isSuicideAttack() && ((_actor.getCurrentHp() > (_actor.getMaxHp() / 3)) || (Rnd.get(100) > sk.getMaxChance())))
{
continue;
}
if ((sk.getSkillType() == SkillType.BUFF) || (sk.getSkillType() == SkillType.HEAL)) if ((sk.getSkillType() == SkillType.BUFF) || (sk.getSkillType() == SkillType.HEAL))
{ {
if ((sk.getSkillType() == SkillType.HEAL) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5))) if ((sk.getSkillType() == SkillType.HEAL) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
@@ -962,12 +967,18 @@ public class AttackableAI extends CreatureAI
_actor.setTarget(_actor); _actor.setTarget(_actor);
} }
} }
// GeoData Los Check here // GeoData Los Check here
if (!useSkillSelf && !GeoEngine.getInstance().canSeeTarget(_actor, _actor.getTarget())) if (!useSkillSelf && !GeoEngine.getInstance().canSeeTarget(_actor, _actor.getTarget()))
{ {
return; return;
} }
if (sk.isSuicideAttack() && ((_actor.getCurrentHp() > (_actor.getMaxHp() / 3)) || (Rnd.get(100) > sk.getMaxChance())))
{
continue;
}
final WorldObject oldTarget = _actor.getTarget(); final WorldObject oldTarget = _actor.getTarget();
clientStopMoving(null); clientStopMoving(null);
_accessor.doCast(sk); _accessor.doCast(sk);

View File

@@ -137,8 +137,8 @@ public class Mdam implements ISkillHandler
if (skill.isSuicideAttack()) if (skill.isSuicideAttack())
{ {
creature.doDie(null);
creature.setCurrentHp(0); creature.setCurrentHp(0);
creature.doDie(null);
} }
} }

View File

@@ -342,10 +342,10 @@ public class Pdam implements ISkillHandler
creature.removeSs(); creature.removeSs();
} }
if (skill.isSuicideAttack() && !creature.isInvul()) if (skill.isSuicideAttack())
{ {
creature.doDie(null);
creature.setCurrentHp(0); creature.setCurrentHp(0);
creature.doDie(null);
} }
} }

View File

@@ -296,12 +296,13 @@
<set name="target" val="ONE" /> <set name="target" val="ONE" />
<set name="reuseDelay" val="10000" /> <set name="reuseDelay" val="10000" />
<set name="hitTime" val="1500" /> <set name="hitTime" val="1500" />
<!-- test -->
<set name="skillType" val="MDAM" /> <set name="skillType" val="MDAM" />
<set name="isMagic" val="true" /> <set name="isMagic" val="true" />
<set name="operateType" val="ACTIVE" /> <set name="operateType" val="ACTIVE" />
<set name="castRange" val="600" /> <set name="castRange" val="600" />
<set name="effectRange" val="1100" /> <set name="effectRange" val="1100" />
<set name="isSuicideAttack" val="true" />
<set name="maxChance" val="30" />
</skill> </skill>
<skill id="4615" levels="12" name="Bleed"> <skill id="4615" levels="12" name="Bleed">
<!-- You suffer a wound that continually reduces HP. Effect 2. --> <!-- You suffer a wound that continually reduces HP. Effect 2. -->

View File

@@ -222,6 +222,7 @@
<set name="effectRange" val="120" /> <set name="effectRange" val="120" />
<set name="skillTime" val="2000" /> <set name="skillTime" val="2000" />
<set name="hitTime" val="2000" /> <set name="hitTime" val="2000" />
<set name="isSuicideAttack" val="true" />
<set name="isMagic" val="false" /> <set name="isMagic" val="false" />
</skill> </skill>
<skill id="5012" levels="1" name="Breath of Scarlet"> <skill id="5012" levels="1" name="Breath of Scarlet">
@@ -1539,6 +1540,7 @@
<set name="skillRadius" val="250" /> <set name="skillRadius" val="250" />
<set name="target" val="AREA" /> <set name="target" val="AREA" />
<set name="skillType" val="MDAM" /> <set name="skillType" val="MDAM" />
<set name="isSuicideAttack" val="true" />
<set name="operateType" val="ACTIVE" /> <set name="operateType" val="ACTIVE" />
<set name="castRange" val="-1" /> <set name="castRange" val="-1" />
</skill> </skill>
@@ -1574,6 +1576,7 @@
<set name="skillRadius" val="100" /> <set name="skillRadius" val="100" />
<set name="target" val="AREA" /> <set name="target" val="AREA" />
<set name="skillType" val="MDAM" /> <set name="skillType" val="MDAM" />
<set name="isSuicideAttack" val="true" />
<set name="operateType" val="ACTIVE" /> <set name="operateType" val="ACTIVE" />
<set name="castRange" val="-1" /> <set name="castRange" val="-1" />
</skill> </skill>

View File

@@ -880,6 +880,11 @@ public class AttackableAI extends CreatureAI
if (((sk.getSkillType() == SkillType.BUFF) || (sk.getSkillType() == SkillType.HEAL) || inRange) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() >= _actor.getStat().getMpConsume(sk)) && !sk.isPassive() && (Rnd.get(100) <= 5)) if (((sk.getSkillType() == SkillType.BUFF) || (sk.getSkillType() == SkillType.HEAL) || inRange) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() >= _actor.getStat().getMpConsume(sk)) && !sk.isPassive() && (Rnd.get(100) <= 5))
{ {
if (sk.isSuicideAttack() && ((_actor.getCurrentHp() > (_actor.getMaxHp() / 3)) || (Rnd.get(100) > sk.getMaxChance())))
{
continue;
}
if ((sk.getSkillType() == SkillType.BUFF) || (sk.getSkillType() == SkillType.HEAL)) if ((sk.getSkillType() == SkillType.BUFF) || (sk.getSkillType() == SkillType.HEAL))
{ {
if ((sk.getSkillType() == SkillType.HEAL) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5))) if ((sk.getSkillType() == SkillType.HEAL) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
@@ -962,12 +967,18 @@ public class AttackableAI extends CreatureAI
_actor.setTarget(_actor); _actor.setTarget(_actor);
} }
} }
// GeoData Los Check here // GeoData Los Check here
if (!useSkillSelf && !GeoEngine.getInstance().canSeeTarget(_actor, _actor.getTarget())) if (!useSkillSelf && !GeoEngine.getInstance().canSeeTarget(_actor, _actor.getTarget()))
{ {
return; return;
} }
if (sk.isSuicideAttack() && ((_actor.getCurrentHp() > (_actor.getMaxHp() / 3)) || (Rnd.get(100) > sk.getMaxChance())))
{
continue;
}
final WorldObject oldTarget = _actor.getTarget(); final WorldObject oldTarget = _actor.getTarget();
clientStopMoving(null); clientStopMoving(null);
_accessor.doCast(sk); _accessor.doCast(sk);

View File

@@ -137,8 +137,8 @@ public class Mdam implements ISkillHandler
if (skill.isSuicideAttack()) if (skill.isSuicideAttack())
{ {
creature.doDie(null);
creature.setCurrentHp(0); creature.setCurrentHp(0);
creature.doDie(null);
} }
} }

View File

@@ -351,10 +351,10 @@ public class Pdam implements ISkillHandler
creature.removeSs(); creature.removeSs();
} }
if (skill.isSuicideAttack() && !creature.isInvul()) if (skill.isSuicideAttack())
{ {
creature.doDie(null);
creature.setCurrentHp(0); creature.setCurrentHp(0);
creature.doDie(null);
} }
} }