diff options
Diffstat (limited to 'npc/003-0/tanker.txt')
-rw-r--r-- | npc/003-0/tanker.txt | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/npc/003-0/tanker.txt b/npc/003-0/tanker.txt new file mode 100644 index 000000000..7f7e7d72d --- /dev/null +++ b/npc/003-0/tanker.txt @@ -0,0 +1,220 @@ +// 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; + 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(0, .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; +} + |