// TMW2 script // Author: Jesusalva // // 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, 215, -5)) end; .@q=getq(General_Auldsbel); do { mes ".:: " + l("Transmutation Skill") + " ::."; mesc l("What will you transmute today?"); mes ""; menuint rif(@transmemo, l("Repeat ")+getitemname(@transmemo)), @transmemo, l("Crazy Rum"), CrazyRum, l("Coal"), 9901, // 9901 cheat code l("Mouboo Figurine"), MoubooFigurine, rif(.@q >= 9, l("Downgrade Snake Skin")), SnakeSkin, rif(.@q >= 9, l("Downgrade Snake Egg")), SnakeEgg, rif(.@q >= 9, l("Downgrade Snake Tongue")), SnakeTongue, rif(.@q >= 7, l("Downgrade Scorpion Stinger")), ScorpionStinger, rif(.@q >= 7, l("Downgrade Scorpion Claw")), ScorpionClaw, l("Downgrade Ore"), IronOre; mes ""; @menuret = (@menuret == WoodenLog ? 9901 : @menuret); .@itemid=(@menuret == 9901 ? Coal : @menuret); mesc l("Transmutating @@ will require:", getitemlink(@menuret)); // Requeriments listing switch (@menuret) { case CrazyRum: mesc l("* @@/@@ @@", countitem(Plushroom), 18, getitemlink(Plushroom)); mesc l("* @@/@@ @@", countitem(Milk), 5, getitemlink(Milk)); break; case 9901: // This is coal mesc l("* @@/@@ @@", countitem(WoodenLog), 6, getitemlink(WoodenLog)); break; case MoubooFigurine: mesc l("* @@/@@ @@", countitem(WoodenLog), 1, getitemlink(WoodenLog)); break; case MountainSnakeSkin: case CaveSnakeSkin: 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"), 0; break; case MountainSnakeEgg: case CaveSnakeEgg: 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"), 0; break; case MountainSnakeTongue: case CaveSnakeTongue: 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("5x Snake Tongues -> Tortuga Tongue"), TortugaTongue, l("Cancel"), 0; break; case RedScorpionStinger: case ScorpionStinger: menuint l("Black Scorpion Stinger -> Red Scorpion Stinger"), RedScorpionStinger, l("Red Scorpion Stinger -> Scorpion Stinger"), ScorpionStinger, l("Cancel"), 0; break; case BlackScorpionClaw: case RedScorpionClaw: 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"), 0; break; case IridiumOre: case TitaniumOre: case LeadOre: case TinOre: case GoldOre: case SilverOre: case CopperOre: case Coal: case IronOre: menuint l("Platinum Ore -> Iridium Ore"), IridiumOre, l("Iridium Ore -> Titanium Ore"), TitaniumOre, l("Titanium Ore -> Lead Ore"), LeadOre, l("Lead Ore -> Tin Ore"), TinOre, l("Tin Ore -> Gold Ore"), GoldOre, l("Gold Ore -> Silver Ore"), SilverOre, l("Silver Ore -> Copper Ore"), CopperOre, l("Copper Ore -> Iron Ore"), IronOre, l("Iron Ore -> Coal"), Coal, l("Cancel"), 0; break; default: Exception("ERROR, INVALID TRANSMIGRATION OPTION", RB_DEFAULT|RB_SPEECH); @menuret=0; break; } // Confirmation if (@menuret) { next; mesc l("Transmute?!"); .@me=@menuret; if (askyesno() == ASK_NO) @menuret=0; else @menuret=.@me; } } while (!@menuret); // Close the dialog closeclientdialog; // Check and Consume the reagents switch (@menuret) { case CrazyRum: if (!transcheck(Plushroom, 18, Milk, 5)) { dispbottom l("Not enough items!"); end; } percentheal 0, -2; // Additionally takes 2% of your MP break; case MoubooFigurine: if (!transcheck(WoodenLog, 1)) { dispbottom l("Not enough items!"); end; } break; case 9901: // Coal cheat code if (!transcheck(WoodenLog, 6)) { dispbottom l("Not enough items!"); end; } .@me=WoodenLog; @menuret=Coal; 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; case TortugaTongue: if (!transcheck(SnakeTongue, 5)) { 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; // Ore Chain (the biggest one) case IridiumOre: if (!transcheck(PlatinumOre, 1)) { dispbottom l("Not enough items!"); end; } break; case TitaniumOre: if (!transcheck(IridiumOre, 1)) { dispbottom l("Not enough items!"); end; } break; case LeadOre: if (!transcheck(TitaniumOre, 1)) { dispbottom l("Not enough items!"); end; } break; case TinOre: if (!transcheck(LeadOre, 1)) { dispbottom l("Not enough items!"); end; } break; case GoldOre: if (!transcheck(TinOre, 1)) { dispbottom l("Not enough items!"); end; } break; case SilverOre: if (!transcheck(GoldOre, 1)) { dispbottom l("Not enough items!"); end; } break; case CopperOre: if (!transcheck(SilverOre, 1)) { dispbottom l("Not enough items!"); end; } break; case IronOre: if (!transcheck(CopperOre, 1)) { dispbottom l("Not enough items!"); end; } break; case Coal: if (!transcheck(IronOre, 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 any(WarpedLog, .@me), 1; // You were successful } else { dispbottom l("*plim*"); getitem @menuret, (@menuitem == MoubooFigurine ? 1 : 2); } // Store to memory @transmemo=.@me; // 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,9)); end; OnInit: bindatcmd "sk-trans", "sk#mkpot::OnCall", 0, 100, 0; end; }