// TMW2 scripts. // Authors: // Jesusalva // Description: // Leader of the TANKER class 003-0,38,41,2 script Tanker Master NPC_PLAYER,{ /* if (!is_staff()) goto L_Close; */ if (!(MAGIC_SUBCLASS & CL_TANKER)) goto L_SignUp; goto L_Member; // Sign Up L_SignUp: // Not allowed if subclass filled or not from main class if (total_subclass() >= max_subclass() || getskilllv(MAGIC_WARRIOR) < 2) goto L_Close; mesn; mesq l("Hey there! Do you want to join the Tanker Class?"); mesc l("Warning: If you join a subclass, you can't leave it later!"), 1; mesc b(l("Warning: This class haven't been tested/balanced yet. Feedback is required!")), 1; next; if (askyesno() != ASK_YES) close; // TODO: Requeriment for signing up to a subclass? Or is the tier + skill quest hard enough? MAGIC_SUBCLASS=MAGIC_SUBCLASS|CL_TANKER; mesn; mesq l("Welcome to the tanker guild!"); close; // Close L_Close: goodbye; closedialog; close; L_Missing: mesn; mesq l("Hey hey! You don't have that stuff, CAN'T YOU READ?!"); percentheal 0, -10; next; goto L_Member; // Membership area // Tanker // CR_TRUST (raise Max HP in 200 and Holy Resistance in 5%, passive) // CR_AUTOGUARD (5% chance to complety block attack. Freeze you for a while. Req. Shield. Last 5m.) // CR_DEFENDER (less damage from ranged attacks, but lowers move & attack speed. Req. Shield) - max lv 4 plz. Last 3m. // SM_RECOVERY (insignificant HP recovery every 10s without moving. Better with higher level.) - low mp cost L_Member: mesn; mesq l("Hey there! Do you want to learn new skills for a very small teaching fee?"); select rif(sk_intcost(CR_TRUST) && getskilllv(CR_TRUST) < 1+(degree_subclass()/2), l("Learn Last Standing Man")), "", //rif(sk_intcost(CR_AUTOGUARD) && sk_canlvup(CR_AUTOGUARD), l("Improve Guard")), rif(sk_intcost(CR_DEFENDER) && sk_canlvup(CR_DEFENDER), l("Improve Arrow Shield")), rif(sk_intcost(SM_RECOVERY) && sk_canlvup(SM_RECOVERY), l("Improve Standing HP Regen")), l("Leave Subclass"), l("Nothing at the moment."); mes ""; switch (@menu) { case 1: mesc l("[Last Standing Man]"); mesc l("Raises max HP and holy resistance. Passive."); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(Cheese), (getskilllv(CR_TRUST)+1)*50, getitemlink(Cheese)); mesc l("@@/@@ @@", countitem(Coral), (getskilllv(CR_TRUST)+1)*30, getitemlink(Coral)); mesc l("@@/@@ @@", countitem(PiberriesInfusion), (getskilllv(CR_TRUST)+1)*20, getitemlink(PiberriesInfusion)); mesc l("@@/@@ @@", countitem(FluoPowder), (getskilllv(CR_TRUST)+1)*15, getitemlink(FluoPowder)); mesc l("@@/@@ @@", countitem(HastePotion), (getskilllv(CR_TRUST)+1)*10, getitemlink(HastePotion)); mesc l("@@/@@ @@", countitem(DiamondPowder), (getskilllv(CR_TRUST)+1)*3, getitemlink(DiamondPowder)); mesc l("@@/@@ @@", countitem(GrassCarp), (getskilllv(CR_TRUST)+1)*1, getitemlink(GrassCarp)); mesc l("@@/@@ @@", countitem(ElixirOfLife), (getskilllv(CR_TRUST)+1)*1, getitemlink(ElixirOfLife)); next; if (askyesno() == ASK_YES) { if ( countitem(Cheese) < (getskilllv(CR_TRUST)+1)*50 || countitem(Coral) < (getskilllv(CR_TRUST)+1)*30 || countitem(PiberriesInfusion) < (getskilllv(CR_TRUST)+1)*20 || countitem(FluoPowder) < (getskilllv(CR_TRUST)+1)*15 || countitem(HastePotion) < (getskilllv(CR_TRUST)+1)*10 || countitem(DiamondPowder) < (getskilllv(CR_TRUST)+1)*3 || countitem(GrassCarp) < (getskilllv(CR_TRUST)+1)*1 || countitem(ElixirOfLife) < (getskilllv(CR_TRUST)+1)*1) goto L_Missing; delitem Cheese, (getskilllv(CR_TRUST)+1)*50; delitem Coral, (getskilllv(CR_TRUST)+1)*30; delitem PiberriesInfusion, (getskilllv(CR_TRUST)+1)*20; delitem FluoPowder, (getskilllv(CR_TRUST)+1)*15; delitem HastePotion, (getskilllv(CR_TRUST)+1)*10; delitem DiamondPowder, (getskilllv(CR_TRUST)+1)*3; delitem GrassCarp, (getskilllv(CR_TRUST)+1)*1; delitem ElixirOfLife, (getskilllv(CR_TRUST)+1)*1; sk_lvup(CR_TRUST); next; } break; case 2: mesc l("[Guard]"); mesc l("Raises chance to entirely block an attack, but freezes you for a while. Req. Shield."); mes ""; // TODO: Requirem, quest, agree sk_lvup(CR_AUTOGUARD); break; case 3: mesc l("[Arrow Shield]"); mesc l("Decrease ranged damage taken for a few minutes, in exchange of agi and move speed. Req. Shield."); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(PiouFeathers), (getskilllv(CR_DEFENDER)+1)*60, getitemlink(PiouFeathers)); mesc l("@@/@@ @@", countitem(PoisonArrow), (getskilllv(CR_DEFENDER)+1)*10, getitemlink(PoisonArrow)); mesc l("@@/@@ @@", countitem(CursedArrow), (getskilllv(CR_DEFENDER)+1)*10, getitemlink(CursedArrow)); mesc l("@@/@@ @@", countitem(OrangeCupcake), (getskilllv(CR_DEFENDER)+1)*6, getitemlink(OrangeCupcake)); mesc l("@@/@@ @@", countitem(Mashmallow), (getskilllv(CR_DEFENDER)+1)*5, getitemlink(Mashmallow)); mesc l("@@/@@ @@", countitem(Orange), (getskilllv(CR_DEFENDER)+1)*4, getitemlink(Orange)); next; if (askyesno() == ASK_YES) { if ( countitem(PiouFeathers) < (getskilllv(CR_DEFENDER)+1)*60 || countitem(PoisonArrow) < (getskilllv(CR_DEFENDER)+1)*10 || countitem(CursedArrow) < (getskilllv(CR_DEFENDER)+1)*10 || countitem(OrangeCupcake) < (getskilllv(CR_DEFENDER)+1)*6 || countitem(Mashmallow) < (getskilllv(CR_DEFENDER)+1)*5 || countitem(Orange) < (getskilllv(CR_DEFENDER)+1)*4) goto L_Missing; delitem PiouFeathers, (getskilllv(CR_DEFENDER)+1)*60; delitem PoisonArrow, (getskilllv(CR_DEFENDER)+1)*10; delitem CursedArrow, (getskilllv(CR_DEFENDER)+1)*10; delitem PrangeCupcake, (getskilllv(CR_DEFENDER)+1)*6; delitem Mashmallow, (getskilllv(CR_DEFENDER)+1)*5; delitem Orange, (getskilllv(CR_DEFENDER)+1)*4; sk_lvup(CR_DEFENDER); next; } break; case 4: mesc l("[Standing Regen]"); mesc l("Regenerate HP every 5 seconds, as if you were always eating a healing item."); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(PiberriesInfusion), (getskilllv(SM_RECOVERY)+1)*10, getitemlink(PiberriesInfusion)); mesc l("@@/@@ @@", countitem(BlackMambaEgg), (getskilllv(SM_RECOVERY)+1)*6, getitemlink(BlackMambaEgg)); mesc l("@@/@@ @@", countitem(MoubooSteak), (getskilllv(SM_RECOVERY)+1)*4, getitemlink(MoubooSteak)); mesc l("@@/@@ @@", countitem(TonoriDelight), (getskilllv(SM_RECOVERY)+1)*8, getitemlink(TonoriDelight)); next; if (askyesno() == ASK_YES) { if ( countitem(PiberriesInfusion) < (getskilllv(SM_RECOVERY)+1)*10 || countitem(BlackMambaEgg) < (getskilllv(SM_RECOVERY)+1)*6 || countitem(MoubooSteak) < (getskilllv(SM_RECOVERY)+1)*4 || countitem(TonoriDelight) < (getskilllv(SM_RECOVERY)+1)*8) goto L_Missing; delitem PiberriesInfusion, (getskilllv(SM_RECOVERY)+1)*10; delitem BlackMambaEgg, (getskilllv(SM_RECOVERY)+1)*6; delitem MoubooSteak, (getskilllv(SM_RECOVERY)+1)*4; delitem TonoriDelight, (getskilllv(SM_RECOVERY)+1)*8; sk_lvup(SM_RECOVERY); //mesc l("This skill can be further improved with Job Points"); next; } break; case 5: // All skills related may include the basic class skills if they're related. mesc l("WARNING: If you leave the subclass, you'll lose all skills related to it!"), 1; mesc l("This cannot be undone. Are you sure?"), 1; mes ""; if (askyesno() == ASK_YES) { mes ""; if (validatepin()) { skill CR_TRUST, 0, 0; skill CR_AUTOGUARD, 0, 0; skill CR_DEFENDER, 0, 0; skill SM_RECOVERY, 0, 0; MAGIC_SUBCLASS=MAGIC_SUBCLASS^CL_TANKER; mesc l("You abandoned the TANKER class!"), 1; close; } else { mesc l("Failed to validate pin. Aborting."); next; } } else { mes ""; mesc l("Operation aborted. Phew!"); next; } break; default: goto L_Close; } goto L_Member; OnInit: .@npcId = getnpcid(.name$); setunitdata(.@npcId, UDT_HEADTOP, WarlordHelmet); setunitdata(.@npcId, UDT_HEADMIDDLE, WarlordPlate); setunitdata(.@npcId, UDT_HEADBOTTOM, SteelShield); setunitdata(.@npcId, UDT_WEAPON, JeansChaps); setunitdata(.@npcId, UDT_HAIRSTYLE, 2); setunitdata(.@npcId, UDT_HAIRCOLOR, 4); .sex=G_MALE; .distance=5; end; }