// TMW2 scripts. // Authors: // Jesusalva // Description: // Craftmaster, teaches player TMW2_CRAFT 024-16,27,42,0 script Dwarf Craftsmaster NPC_DWARF_CRAFTMASTER,{ function calcRequisites; function calcPrices; function calcUpgrade; .@q=getq(General_Narrator); if (.@q < 13) { hello; end; } mesn; mesq lg("Look what we have here, it is a girl!", "Look what we have here, it is a boy!"); next; mesn; mesq l("I'm Thurgar the mighty craftsman. I can make anything reality! But I only work for the king!"); next; mesn; mesq l("...Unless, of course, if you're interested in learning this art, I shall teach you. You'll not regret it, I assure you."); next; // Main Loop .@score=CRAFTING_SCORE_COMPLETE/40; mesc l("Crafting Skill Level: @@", getskilllv(TMW2_CRAFT)); msObjective(.@score >= calcRequisites(), l("Completed Crafts: @@/@@", .@score, calcRequisites()) ); msObjective(Zeny >= calcPrices(), l("Money: @@ GP", format_number(Zeny)) ); // Script end if (getskilllv(TMW2_CRAFT) > 6) close; mes ""; select rif(!.@score, l("How can I complete a craft?")), rif(.@score >= calcRequisites(), l("Learn crafting for @@ GP", format_number(calcPrices())) ), rif(.@score, l("How can I complete a craft?")), l("Nothing for now, thanks."); mes ""; switch (@menu) { case 1: case 3: mesn; mesq l("Well, first of, you'll need an @@ and an Equipment Recipe.", getitemlink(RecipeBook)); next; if (!countitem(RecipeBook) && !countitem(JesusalvaGrimorium)) { mesn; mesq l("If you don't have the recipe book, you'll need to find one... Maybe someone in a household you've already helped is willing to give you one."); next; } mesn; mesq l("Anyway, once you have the recipe book and learned a recipe, you can craft items in forges. I think you can buy it in your apartment."); next; mesn; mesq l("That will help you to make your very first first craft! Remember to use @@ to change which bonuses can be applied to your craft items.", b("@ucp")); next; mesn; mesq l("I think someone on Tulimshar is capable to teach you these bonuses. Eh, I don't know. Haven't been there for a while."); break; case 2: if (calcUpgrade()) { mesn; mesq l("There you go. Craft hard, mwhahahahaha!"); } else { mesn; mesq l("You don't have met all requisites, like money and successful crafts, or you already reached the maximum level for this skill."); } break; } close; // Calc successful crafts required to learn crafting // Returns amount of crafts needed function calcRequisites { switch (getskilllv(TMW2_CRAFT)) { case 0: return 0; case 1: return 3; case 2: return 7; case 3: return 12; case 4: return 18; case 5: return 32; case 6: return 64; } return -1; } // Calc how much GP the skill will cost you // Returns amount of GP function calcPrices { switch (getskilllv(TMW2_CRAFT)) { case 0: return 1000; case 1: return 5000; case 2: return 9000; case 3: return 15000; case 4: return 27000; case 5: return 36000; case 6: return 50000; } return false; } // calcUpgrade() returns true if skill // can be leveled up. And levels it up. function calcUpgrade { .@gp=calcPrices(); .@cf=calcRequisites(); if (Zeny < .@gp) return false; if (CRAFTING_SCORE_COMPLETE / 40 < .@cf) return false; if (.@cf < 0 || .@gp < 0) return false; // You may get a free blueprint switch (getskilllv(TMW2_CRAFT)) { case 0: inventoryplace EquipmentBlueprintA, 1; getitem EquipmentBlueprintA, 1; // We should aid you getting basic skills - for free! if (!CRAFTSYS[CRGROUP_BASE]) CRAFTSYS[CRGROUP_BASE]+=1; if (!CRAFTSYS_CURRENT) CRAFTSYS_CURRENT=CRAFTSYS_CURRENT|CRGROUP_BASE; break; case 1: inventoryplace EquipmentBlueprintB, 1; getitem EquipmentBlueprintB, 1; break; case 2: inventoryplace EquipmentBlueprintC, 1; getitem EquipmentBlueprintC, 1; break; case 3: inventoryplace EquipmentBlueprintD, 1; getitem EquipmentBlueprintD, 1; break; case 4: inventoryplace EquipmentBlueprintE, 1; getitem EquipmentBlueprintE, 1; break; case 5: inventoryplace AncientBlueprint, 1; getitem AncientBlueprint, 1; break; default: getexp 1700, 200; break; } Zeny-=.@gp; skill TMW2_CRAFT, getskilllv(TMW2_CRAFT)+1, 0; return true; } OnInit: .distance=5; end; }