diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-04-17 16:07:04 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-04-17 16:07:04 -0300 |
commit | 14f7af0b7b3839f0e1b35c31bf3bd17e70cf366f (patch) | |
tree | d9a501ffc748bca4cf19a56942d91bdd82d5eeb5 /npc/magic | |
parent | bd9d7c6142986a30f6fcd355efe22704f5bf4be4 (diff) | |
download | serverdata-14f7af0b7b3839f0e1b35c31bf3bd17e70cf366f.tar.gz serverdata-14f7af0b7b3839f0e1b35c31bf3bd17e70cf366f.tar.bz2 serverdata-14f7af0b7b3839f0e1b35c31bf3bd17e70cf366f.tar.xz serverdata-14f7af0b7b3839f0e1b35c31bf3bd17e70cf366f.zip |
Refactor Sagatha functions. Add shear spell (reusing ML code)
Diffstat (limited to 'npc/magic')
-rw-r--r-- | npc/magic/final.txt | 2 | ||||
-rw-r--r-- | npc/magic/level2-shear.txt | 54 |
2 files changed, 56 insertions, 0 deletions
diff --git a/npc/magic/final.txt b/npc/magic/final.txt index 78c171b6..87971b65 100644 --- a/npc/magic/final.txt +++ b/npc/magic/final.txt @@ -59,6 +59,8 @@ function script HUB_SkillInvoke { // Level 2 case SKILL_INMA: SK_Inma(); break; + case SKILL_CHIPCHIP: + SK_Shear(); break; case SKILL_KALAKARENK: case SKILL_KALBOO: case SKILL_KALGINA: diff --git a/npc/magic/level2-shear.txt b/npc/magic/level2-shear.txt new file mode 100644 index 00000000..f848b36d --- /dev/null +++ b/npc/magic/level2-shear.txt @@ -0,0 +1,54 @@ +// The Mana World script +// Author: Jesusalva <jesusalva@themanaworld.org> +// +// Magic Script: SKILL_CHIPCHIP (Level 1) +// School: Nature 2 + +function script SK_Shear { + .@mobGD=getarg(0, @skillTarget); + if (.@mobGD <= 0) + return; + + // We only want monsters + if (getunittype(.@mobGD) != UNITTYPE_MOB) { + dispbottom l("This skill can only be used on monsters!"); + return; + } + + // Global data + setarray .@valid, Fluffy, EasterFluffy, SpikyMushroom, Mouboo, MauvePlant, CobaltPlant, GambogePlant, AlizarinPlant, Silkworm, Pinkie; + setarray .@prize, WhiteFur, WhiteFur, HardSpike, CottonCloth, MauveHerb, CoblatHerb, GambogeHerb, AlizarinHerb, SilkCocoon, PinkAntenna; + setarray .@score, 300, 300, 250, 175, 700, 700, 700, 700, 300, 180; + + // Specific data + .@mobID=getunitdata(.@mobGD, UDT_CLASS); + .@matk=AdjustSpellpower(40+(10*@skillLv)); + .@idx=array_find(.@valid, .@mobID); + + // Invalid target + if (.@idx < 0) return; + + // Not yet sheared + if (array_rfind(@shear, .@mobGD) < 0) { + array_push(@shear, @mobGD); + if (.@matk > .@score[.@idx]) + getitem .@prize[.@idx], 1; + } + + // Sagratha bonus + if (.@mobId == Fluffy || .@mobId == Mouboo || .@mobId == Pinkie) + QuestSagathaHappy(any(true, true, false)); + + // Special effect + specialeffect(FX_MAGIC_SHEAR_CAST, AREA, getcharid(3)); + specialeffect(FX_MAGIC_SHEAR_CAST, AREA, .@mobGD); + + // Truncate. + // We're saving the GID so it must be "big enough" + // But not too big so rfind() is not expensive + if (getarraysize(@study) > 99) { + deletearray(@study, 30); + } + return; +} + |