summaryrefslogtreecommitdiff
path: root/npc/003-0/berserk.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/003-0/berserk.txt')
-rw-r--r--npc/003-0/berserk.txt159
1 files changed, 159 insertions, 0 deletions
diff --git a/npc/003-0/berserk.txt b/npc/003-0/berserk.txt
new file mode 100644
index 000000000..de90fbaee
--- /dev/null
+++ b/npc/003-0/berserk.txt
@@ -0,0 +1,159 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// Leader of the BERSERK class
+
+003-0,34,45,4 script Ragger Master NPC_PLAYER,{
+ if (!is_staff())
+ goto L_Close;
+ if (!(MAGIC_SUBCLASS & CL_BERSERK))
+ 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 Berserk (Ragger) 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_BERSERK;
+ mesn;
+ mesq l("Welcome to the berserker 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
+// Ragger
+// KN_AUTOCOUNTER (Counter any attack with 2x critical rate and block attack for 0.5s)
+// SM_ENDURE (deny stun penalty when hit, and MDEF bonus, for 10s)
+
+L_Member:
+ mesn;
+ mesq l("Hey there! Do you want to learn new skills for a very small teaching fee?");
+ select
+ rif(sk_intcost(SM_BASH) && getskilllv(SM_BASH) < (3+degree_subclass()), l("Improve Bash Skill")),
+ rif(sk_intcost(SM_ENDURE) && sk_canlvup(SM_ENDURE), l("Improve Endure Skill")),
+ rif(sk_intcost(KN_AUTOCOUNTER) && sk_canlvup(KN_AUTOCOUNTER), l("Improve Counter Defense")),
+ l("Nothing at the moment.");
+ mes "";
+ switch (@menu) {
+ case 1:
+ mesn;
+ mesq l("This useful skill will only require:");
+ mesc l("@@/@@ @@", countitem(ManaPiouFeathers), (getskilllv(SM_ENDURE)+1)*15, getitemlink(ManaPiouFeathers));
+ mesc l("@@/@@ @@", countitem(CaveSnakeSkin), (getskilllv(SM_ENDURE)+1)*4, getitemlink(CaveSnakeSkin));
+ mesc l("@@/@@ @@", countitem(RubyPowder), (getskilllv(SM_ENDURE)+1)*2, getitemlink(RubyPowder));
+ mesc l("@@/@@ @@", countitem(StrengthPotion), (getskilllv(SM_ENDURE)+1)*2, getitemlink(StrengthPotion));
+ next;
+ if (askyesno() == ASK_YES) {
+ if (
+ countitem(ManaPiouFeathers) < (getskilllv(SM_ENDURE)+1)*15 ||
+ countitem(CaveSnakeSkin) < (getskilllv(SM_ENDURE)+1)*4 ||
+ countitem(RubyPowder) < (getskilllv(SM_ENDURE)+1)*2 ||
+ countitem(StrengthPotion) < (getskilllv(SM_ENDURE)+1)*2) goto L_Missing;
+
+ delitem PiberriesInfusion, (getskilllv(SM_ENDURE)+1)*15;
+ delitem BlackMambaEgg, (getskilllv(SM_ENDURE)+1)*4;
+ delitem MoubooSteak, (getskilllv(SM_ENDURE)+1)*2;
+ delitem IronIngot, (getskilllv(SM_ENDURE)+1)*2;
+
+ sk_lvup(SM_BASH);
+
+ next;
+ }
+ break;
+ case 2:
+ mesn;
+ mesq l("This useful skill will only require:");
+ mesc l("@@/@@ @@", countitem(PiberriesInfusion), (getskilllv(KN_AUTOCOUNTER)+1)*10, getitemlink(PiberriesInfusion));
+ mesc l("@@/@@ @@", countitem(BlackMambaEgg), (getskilllv(KN_AUTOCOUNTER)+1)*2, getitemlink(BlackMambaEgg));
+ mesc l("@@/@@ @@", countitem(MoubooSteak), (getskilllv(KN_AUTOCOUNTER)+1)*4, getitemlink(MoubooSteak));
+ mesc l("@@/@@ @@", countitem(IronIngot), (getskilllv(KN_AUTOCOUNTER)+1)*1, getitemlink(IronIngot));
+ next;
+ if (askyesno() == ASK_YES) {
+ if (
+ countitem(PiberriesInfusion) < (getskilllv(KN_AUTOCOUNTER)+1)*10 ||
+ countitem(BlackMambaEgg) < (getskilllv(KN_AUTOCOUNTER)+1)*2 ||
+ countitem(MoubooSteak) < (getskilllv(KN_AUTOCOUNTER)+1)*4 ||
+ countitem(IronIngot) < (getskilllv(KN_AUTOCOUNTER)+1)*1) goto L_Missing;
+
+ delitem PiberriesInfusion, (getskilllv(KN_AUTOCOUNTER)+1)*10;
+ delitem BlackMambaEgg, (getskilllv(KN_AUTOCOUNTER)+1)*2;
+ delitem MoubooSteak, (getskilllv(KN_AUTOCOUNTER)+1)*4;
+ delitem IronIngot, (getskilllv(KN_AUTOCOUNTER)+1)*1;
+
+ sk_lvup(KN_AUTOCOUNTER);
+
+ next;
+ }
+ break;
+ case 3:
+ 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(HastePotion), (getskilllv(CR_TRUST)+1)*10, getitemlink(HastePotion));
+ mesc l("@@/@@ @@", countitem(DiamondPowder), (getskilllv(CR_TRUST)+1)*3, getitemlink(DiamondPowder));
+ 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(HastePotion) < (getskilllv(CR_TRUST)+1)*10 ||
+ countitem(DiamondPowder) < (getskilllv(CR_TRUST)+1)*3 ||
+ 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 HastePotion, (getskilllv(CR_TRUST)+1)*10;
+ delitem DiamondPowder, (getskilllv(CR_TRUST)+1)*3;
+ delitem ElixirOfLife, (getskilllv(CR_TRUST)+1)*1;
+
+ sk_lvup(SM_ENDURE);
+
+ next;
+ }
+ break;
+ default:
+ goto L_Close;
+ }
+
+ goto L_Member;
+
+OnInit:
+ .@npcId = getnpcid(0, .name$);
+ setunitdata(.@npcId, UDT_HEADTOP, WarlordHelmet);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, GoldenWarlordPlate);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, ShortGladius);
+ setunitdata(.@npcId, UDT_WEAPON, JeansChaps);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 2);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 4);
+
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+