diff options
Diffstat (limited to 'world/map/npc/items')
-rw-r--r-- | world/map/npc/items/check_wand.txt | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/world/map/npc/items/check_wand.txt b/world/map/npc/items/check_wand.txt new file mode 100644 index 00000000..1b11dfc2 --- /dev/null +++ b/world/map/npc/items/check_wand.txt @@ -0,0 +1,65 @@ +// Wands +// Author: Wushin +function|script|WandMana|, +{ + callfunc "CheckWand"; + set @WandCost, (@Wand * ((MaxSp / 10) + 2)); + set @WandAttack, 0; + if (!(@Wand)) + goto L_NoWand; + if (Sp >= @WandCost) + goto L_Attack; + goto L_LowSp; + +L_Attack: + set Sp, (Sp - @WandCost); + set @WandAttack, 1; + goto L_Return; + +L_NoWand: + message strcharinfo(0), "You need a wand Equipped!"; + set @WandAttack, 0; + goto L_Return; + +L_LowSp: + message strcharinfo(0), "Out of Mana"; + set @WandAttack, 0; + goto L_Return; + +L_Return: + return; +} +function|script|CheckWand|, +{ + setarray $@Wands, 758, 1171; + setarray $@WandsPwr, 2, 1; + set @Wand, 0; + set @wand_loop, 0; + goto L_Loop; + +L_Loop: + if ((getequipid(equip_hand1) == $@Wands[@wand_loop]) || (getequipid(equip_hand2) == $@Wands[@wand_loop])) + goto L_SetWand; + goto L_LoopAgain; + +L_SetWand: + set @Wand, $@WandsPwr[@wand_loop]; + callfunc "MorganState"; + if (@morgan == 2) + goto L_SetCastOnce; + goto L_Return; + +L_LoopAgain: + set @wand_loop, (@wand_loop + 1); + if (@wand_loop >= getarraysize($@Wands)) + goto L_Return; + goto L_Loop; + +L_SetCastOnce: + set @morgan_tmp, 3; + callfunc "SetMorganMask"; + goto L_Return; + +L_Return: + return; +} |