// TMW2 script
// Author: Jesusalva <admin@tmw2.org>
//
// Magic Script: TMW2_TRANSMIGRATION
//
// Attempts to make stuff from other stuff
// This is actually referred as transmutation in human-readable forms, and
// transmigration in scripts.
- script sk#mkpot 32767,{
end;
OnCall:
// Check cooldown
if (@mkpot_at > gettimetick(2)) {
dispbottom l("Skill is in cooldown for @@.", FuzzyTime(@mkpot_at));
end;
}
// Check requisites
if (!MagicCheck(TMW2_TRANSMIGRATION, 185, -5))
end;
do {
mes ".:: " + l("Transmutation Skill") + " ::.";
mesc l("What will you transmute today?");
mes "";
menuint
l("Crazy Rum"), CrazyRum,
rif(false, l("Downgrade Snake Skin")), SnakeSkin,
rif(false, l("Downgrade Snake Egg")), SnakeEgg,
rif(false, l("Downgrade Snake Tongue")), SnakeTongue,
rif(false, l("Downgrade Scorpion Stinger")), ScorpionStinger,
rif(false, l("Downgrade Scorpion Claw")), ScorpionClaw,
l("Mouboo Figurine"), MoubooFigurine;
mes "";
mesc l("Transmutating @@ will require:", getitemlink(@menuret));
// Requeriments listing
switch (@menuret) {
case CrazyRum:
mesc l("* @@/@@ @@", countitem(Plushroom), 10, getitemlink(Plushroom));
mesc l("* @@/@@ @@", countitem(Milk), 1, getitemlink(Milk));
break;
case MoubooFigurine:
mesc l("* @@/@@ @@", countitem(WoodenLog), 1, getitemlink(WoodenLog));
break;
case SnakeSkin:
menuint
l("Black Mamba Skin -> Mountain Snake Skin"), MountainSnakeSkin,
l("Mountain Snake Skin -> Snake Skin"), SnakeSkin,
l("Snake Skin -> Cave Snake Skin"), CaveSnakeSkin,
l("Cancel");
break;
case SnakeEgg:
menuint
l("Black Mamba Egg -> Mountain Snake Egg"), MountainSnakeEgg,
l("Mountain Snake Egg -> Snake Egg"), SnakeEgg,
l("Snake Egg -> Cave Snake Egg"), CaveSnakeEgg,
l("Cancel");
break;
case SnakeTongue:
menuint
l("Black Mamba Tongue -> Mountain Snake Tongue"), MountainSnakeTongue,
l("Mountain Snake Tongue -> Snake Tongue"), SnakeTongue,
l("Snake Tongue -> Cave Snake Tongue"), CaveSnakeTongue,
l("Cancel");
break;
case ScorpionStinger:
menuint
l("Black Scorpion Stinger -> Red Scorpion Stinger"), RedScorpionStinger,
l("Red Scorpion Stinger -> Scorpion Stinger"), ScorpionStinger,
l("Cancel");
break;
case ScorpionClaw:
menuint
l("Golden Scorpion Claw -> Black Scorpion Claw"), BlackScorpionClaw,
l("Black Scorpion Claw -> Red Scorpion Claw"), RedScorpionClaw,
l("Red Scorpion Claw -> Scorpion Claw"), ScorpionClaw,
l("Cancel");
break;
default:
Exception("ERROR, INVALID TRANSMIGRATION OPTION", RB_DEFAULT|RB_SPEECH); @menuret=0; break;
}
// Confirmation
if (@menuret) {
next;
mesc l("Transmute?!");
if (askyesno() == ASK_NO)
@menuret=0;
}
} while (!@menuret);
// Close the dialog
closeclientdialog;
// Check and Consume the reagents
switch (@menuret) {
case CrazyRum:
if (!transcheck(Plushroom, 10, Milk, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case MoubooFigurine:
if (!transcheck(WoodenLog, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
// Snake Skin Chain
case MountainSnakeSkin:
if (!transcheck(BlackMambaSkin, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case SnakeSkin:
if (!transcheck(MountainSnakeSkin, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case CaveSnakeSkin:
if (!transcheck(SnakeSkin, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
// Snake Egg Chain
case MountainSnakeEgg:
if (!transcheck(BlackMambaEgg, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case SnakeEgg:
if (!transcheck(MountainSnakeEgg, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case CaveSnakeEgg:
if (!transcheck(SnakeEgg, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
// Snake Tongue Chain
case MountainSnakeTongue:
if (!transcheck(BlackMambaTongue, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case SnakeTongue:
if (!transcheck(MountainSnakeTongue, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case CaveSnakeTongue:
if (!transcheck(SnakeTongue, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
// Scorpion Stinger Chain
case RedScorpionStinger:
if (!transcheck(BlackScorpionStinger, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case ScorpionStinger:
if (!transcheck(RedScorpionStinger, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
// Scorpion Claw Chain
case BlackScorpionClaw:
if (!transcheck(GoldenScorpionClaw, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case RedScorpionClaw:
if (!transcheck(BlackScorpionClaw, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
case ScorpionClaw:
if (!transcheck(RedScorpionClaw, 1)) {
dispbottom l("Not enough items!");
end;
}
break;
default:
Exception("ERROR, INVALID TRANSMIGRATION REAGENTS", RB_DEFAULT|RB_SPEECH|RB_ISFATAL); break;
}
// Do the roll from 1 to 100
// Base success chance is 0%
// Each abizit() point gives you 18% success rate (max 90%)
// Each skill level gives you 1% success rate (max 10%)
.@r=rand2(1, 100)-abizit()*18-getskilllv(TMW2_TRANSMIGRATION);
// Backfire chance: 30%
if (.@r >= 70) {
dispbottom l("The spell backfires!");
percentheal -(rand2(5, 15)), 0;
// Chance for nothing to happen
} else if (.@r >= 30) {
dispbottom l("Your reagents vanish into emptiness!");
// Chance for you getting a junk item
} else if (.@r > 0) {
dispbottom l("Your spell takes a mind of its own and shapes in something else!");
getitem WarpedLog, 1;
// You were successful
} else {
dispbottom l("*plim*");
getitem @menuret, 1;
}
// set cooldown
@mkpot_at=gettimetick(2);
@mkpot_at=@mkpot_at+6;
// Get a few mana experience points (this is NOT used by Mana Stone)
GetManaExp(TMW2_TRANSMIGRATION, rand2(4,11));
end;
OnInit:
bindatcmd "sk-trans", "sk#mkpot::OnCall", 0, 100, 0;
end;
}