summaryrefslogtreecommitdiff
path: root/npc/magic/level1-transmutations.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/magic/level1-transmutations.txt')
-rw-r--r--npc/magic/level1-transmutations.txt95
1 files changed, 95 insertions, 0 deletions
diff --git a/npc/magic/level1-transmutations.txt b/npc/magic/level1-transmutations.txt
new file mode 100644
index 00000000..88e916fc
--- /dev/null
+++ b/npc/magic/level1-transmutations.txt
@@ -0,0 +1,95 @@
+// The Mana World script
+// Author: Jesusalva <jesusalva@themanaworld.org>
+//
+// Magic Script: MULTIPLE (Level 1)
+// School: Transmutation *
+
+function script SK_Transmute {
+ // Setup
+ switch (@skillId) {
+ case SKILL_PARUM:
+ .@prize = MoubooFigurine; .@pc = 1;
+ .@mexp = 1; .@fx = FX_MAGIC_WOOD_CAST;
+ setarray .@component, RawLog;
+ setarray .@co_amount, 1;
+ setarray .@failure, Iten, WarpedLog, WarpedLog;
+ break;
+ case SKILL_KULARZUFRILL:
+ .@prize = Arrow; .@pc = AdjustSpellpower(40+@skillLv*2);
+ .@mexp = 2; .@fx = FX_MAGIC_ARROW_CAST;
+ setarray .@component, RawLog;
+ setarray .@co_amount, 1;
+ setarray .@failure, WarpedLog, WarpedLog;
+ break;
+ case SKILL_ZUKMINBIRF:
+ .@prize = IronPowder; .@pc = 1+AdjustSpellpower(@skillLv*5);
+ .@mexp = 2; .@fx = FX_MAGIC_IRON_CAST;
+ setarray .@component, IronOre;
+ setarray .@co_amount, 1;
+ setarray .@failure, Iten, IronOre, IronOre;
+ break;
+ case SKILL_PATMUPLOO:
+ .@prize = CottonShirt; .@pc = 1;
+ .@mexp = 2; .@fx = FX_MAGIC_SHIRT_CAST;
+ setarray .@component, CottonCloth;
+ setarray .@co_amount, 5;
+ setarray .@failure, CottonCloth, CottonCloth;
+ break;
+ case SKILL_PATVILOREE:
+ .@prize = ShortTankTop; .@pc = 1;
+ .@mexp = 2; .@fx = FX_MAGIC_SHIRT_CAST;
+ setarray .@component, CottonCloth;
+ setarray .@co_amount, 3;
+ setarray .@failure, CottonCloth, CottonCloth;
+ break;
+ case SKILL_PATLOREE:
+ .@prize = TankTop; .@pc = 1;
+ .@mexp = 2; .@fx = FX_MAGIC_SHIRT_CAST;
+ setarray .@component, CottonCloth;
+ setarray .@co_amount, 4;
+ setarray .@failure, CottonCloth, CottonCloth;
+ break;
+ case SKILL_GOLE:
+ .@prize = SulphurPowder; .@pc = 1+AdjustSpellpower(@skillLv*20);
+ .@mexp = 1; .@fx = FX_MAGIC_SULPHUR_CAST;
+ setarray .@component, PileOfAsh;
+ setarray .@co_amount, 1;
+ setarray .@failure, PileOfAsh, PileOfAsh;
+ break;
+ case SKILL_MANPAHIL:
+ .@prize = Lifestone; .@pc = 10;
+ .@mexp = 2; .@fx = FX_MAGIC_STONE_CAST;
+ setarray .@component, BugLeg, MaggotSlime, MauveHerb, AlizarinHerb, CobaltHerb, GambogeHerb;
+ setarray .@co_amount, 1, 1, 1, 1, 1, 1;
+ setarray .@failure, Lifestone, Lifestone;
+ break;
+ default: return;
+ }
+ // Check for items
+ for (.@i=0; .@i < getarraysize(.@component); .@i++) {
+ if (countitem(.@component[.@i]) < .@co_amount[.@i]) {
+ dispbottom l("You do not have enough %s (min %d)",
+ getitemname(.@component[.@i]), .@co_amount[.@i]);
+ return;
+ }
+ }
+ // Delete reagents
+ inventoryplace Iten, 1, .@prize, .@pc;
+ for (.@i=0; .@i < getarraysize(.@component); .@i++) {
+ delitem(.@component[.@i], .@co_amount[.@i]);
+ }
+ // Effect and EXP
+ specialeffect(.@fx, AREA, getcharid(3));
+ GetManaExp(@skillId, .@mexp);
+ // The chances of success are based on magic exp, abizit and skill level
+ .@rand100 = abizit()*10 + cap_value(MAGIC_EXP/100, 0, 50) + (@skillLv*5);
+ if (.@rand100 > rand2(100)) {
+ getitem .@prize, .@pc;
+ } else {
+ dispbottom l("Your magic takes a mind of its own!");
+ getitem any_of(.@failure), 1;
+ }
+ return;
+}
+
+