summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2018-08-28 10:52:33 -0300
committerJesusaves <cpntb1@ymail.com>2018-08-28 10:52:33 -0300
commit0d91e644e3942fe2419c4fb4f276b5dd8ffa7c0b (patch)
treed5f0e7d4c80e4f4fb88e95262b7970ed2536d5bd /npc
parentfc8bc03cedf63cdfa3b0e796e2b821b7821e9c38 (diff)
downloadserverdata-0d91e644e3942fe2419c4fb4f276b5dd8ffa7c0b.tar.gz
serverdata-0d91e644e3942fe2419c4fb4f276b5dd8ffa7c0b.tar.bz2
serverdata-0d91e644e3942fe2419c4fb4f276b5dd8ffa7c0b.tar.xz
serverdata-0d91e644e3942fe2419c4fb4f276b5dd8ffa7c0b.zip
Priest Sketch
Diffstat (limited to 'npc')
-rw-r--r--npc/003-0/_import.txt1
-rw-r--r--npc/003-0/priest.txt255
2 files changed, 256 insertions, 0 deletions
diff --git a/npc/003-0/_import.txt b/npc/003-0/_import.txt
index 29256964f..415c1919f 100644
--- a/npc/003-0/_import.txt
+++ b/npc/003-0/_import.txt
@@ -5,6 +5,7 @@
"npc/003-0/berserk.txt",
"npc/003-0/mages.txt",
"npc/003-0/paladin.txt",
+"npc/003-0/priest.txt",
"npc/003-0/sage.txt",
"npc/003-0/tanker.txt",
"npc/003-0/warriors.txt",
diff --git a/npc/003-0/priest.txt b/npc/003-0/priest.txt
new file mode 100644
index 000000000..ffa4ce754
--- /dev/null
+++ b/npc/003-0/priest.txt
@@ -0,0 +1,255 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// Leader of the PRIEST class
+
+003-0,58,30,0 script Priest Master NPC_PLAYER,{
+ /*
+ if (!is_staff())
+ goto L_Close;
+ */
+ if (!(MAGIC_SUBCLASS & CL_PRIEST))
+ 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(WIZARD_MAGE) < 2)
+ goto L_Close;
+ mesn;
+ mesq l("Hey there! Do you want to join the Priest 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_PRIEST;
+ mesn;
+ mesq l("Welcome to the Priest 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
+// Priest
+// AL_HOLYLIGHT (standard holy magic attack - 125% of MATK)
+// MG_SRECOVERY (small increase to SP Recovery while idle each 10 sec.)
+// ALL_RESURRECTION (Revive at 10% HP. May insta-kill undead. Max Level 3~4)
+// PR_ASPERSIO (Change anyone weapon to holy for 60s. Or 40 defense-disregard holy dmg to undead/evil)
+// TF_DETOXIFY (cancels poison. 40% MP.)
+
+L_Member:
+ mesn;
+ mesq l("Hey there! Do you want to learn new skills for a very small teaching fee?");
+ select
+ rif(sk_intcost(AL_HOLYLIGHT) && !getskilllv(AL_HOLYLIGHT), l("Learn Holy Light")),
+ rif(sk_intcost(TF_DETOXIFY) && !getskilllv(TF_DETOXIFY), l("Learn Detoxify")),
+ rif(sk_intcost(ALL_RESURRECTION) && getskilllv(ALL_RESURRECTION) < (1+degree_subclass()/2), l("Learn Ressurection")),
+ rif(sk_intcost(MG_SRECOVERY) && sk_canlvup(MG_SRECOVERY), l("Improve Mana Recovery")),
+ rif(sk_intcost(PR_ASPERSIO) && sk_canlvup(PR_ASPERSIO), l("Improve Blessed Weapon")),
+ l("Leave Subclass"),
+ l("Nothing at the moment.");
+ mes "";
+ switch (@menu) {
+ case 1:
+ mesc l("[Holy Light]");
+ mesc l("The basic magic attack from a Priest. No effect against Holy Monsters.");
+ mes "";
+ mesn;
+ mesq l("This useful skill will only require:");
+ mesc l("@@/@@ @@", countitem(Tentacle), (getskilllv(AL_HOLYLIGHT)+1)*10, getitemlink(Tentacle));
+ mesc l("@@/@@ @@", countitem(MushroomSpores), (getskilllv(AL_HOLYLIGHT)+1)*5, getitemlink(MushroomSpores));
+ mesc l("@@/@@ @@", countitem(WolvernTooth), (getskilllv(AL_HOLYLIGHT)+1)*3, getitemlink(WolvernTooth));
+ mesc l("@@/@@ @@", countitem(RedScorpionClaw), (getskilllv(AL_HOLYLIGHT)+1)*1, getitemlink(RedScorpionClaw));
+ next;
+ if (askyesno() == ASK_YES) {
+ if (
+ countitem(Tentacle) < (getskilllv(AL_HOLYLIGHT)+1)*10 ||
+ countitem(MushroomSpores) < (getskilllv(AL_HOLYLIGHT)+1)*5 ||
+ countitem(WolvernTooth) < (getskilllv(AL_HOLYLIGHT)+1)*3 ||
+ countitem(RedScorpionClaw) < (getskilllv(AL_HOLYLIGHT)+1)*1) goto L_Missing;
+
+ delitem Tentacle, (getskilllv(AL_HOLYLIGHT)+1)*10;
+ delitem MushroomSpores, (getskilllv(AL_HOLYLIGHT)+1)*5;
+ delitem WolvernTooth, (getskilllv(AL_HOLYLIGHT)+1)*3;
+ delitem RedScorpionClaw, (getskilllv(AL_HOLYLIGHT)+1)*1;
+
+ sk_lvup(AL_HOLYLIGHT);
+
+ next;
+ }
+ break;
+ case 2:
+ mesc l("[Detoxify]");
+ mesc l("Cancels Poison. Antidotes are hard to come by, anyway.");
+ mes "";
+ mesn;
+ mesq l("This useful skill will only require:");
+ mesc l("@@/@@ @@", countitem(Acorn), (getskilllv(TF_DETOXIFY)+1)*70, getitemlink(Acorn));
+ mesc l("@@/@@ @@", countitem(Root), (getskilllv(TF_DETOXIFY)+1)*10, getitemlink(Root));
+ mesc l("@@/@@ @@", countitem(FrozenYetiTear),(getskilllv(TF_DETOXIFY)+1)*2, getitemlink(FrozenYetiTear));
+ mesc l("@@/@@ @@", countitem(FluoPowder), (getskilllv(TF_DETOXIFY)+1)*1, getitemlink(FluoPowder));
+ next;
+ if (askyesno() == ASK_YES) {
+ if (
+ countitem(Acorn) < (getskilllv(TF_DETOXIFY)+1)*70 ||
+ countitem(Root) < (getskilllv(TF_DETOXIFY)+1)*10 ||
+ countitem(FrozenYetiTear) < (getskilllv(TF_DETOXIFY)+1)*2 ||
+ countitem(FluoPowder) < (getskilllv(TF_DETOXIFY)+1)*1) goto L_Missing;
+
+ delitem Acorn, (getskilllv(TF_DETOXIFY)+1)*70;
+ delitem Root, (getskilllv(TF_DETOXIFY)+1)*10;
+ delitem FrozenYetiTear, (getskilllv(TF_DETOXIFY)+1)*2;
+ delitem FluoPowder, (getskilllv(TF_DETOXIFY)+1)*1;
+
+ sk_lvup(TF_DETOXIFY);
+
+ next;
+ }
+ break;
+ case 3:
+ mesc l("[Ressurection]");
+ mesc l("Raise fallen party members so they can keep fighting.");
+ mes "";
+ mesn;
+ mesq l("This useful skill will only require:");
+ mesc l("@@/@@ @@", countitem(Acorn), (getskilllv(ALL_RESURRECTION)+1)*60, getitemlink(Acorn));
+ mesc l("@@/@@ @@", countitem(Bread), (getskilllv(ALL_RESURRECTION)+1)*30, getitemlink(Bread));
+ mesc l("@@/@@ @@", countitem(SmallMushroom), (getskilllv(ALL_RESURRECTION)+1)*20, getitemlink(SmallMushroom));
+ mesc l("@@/@@ @@", countitem(PinkBlobime), (getskilllv(ALL_RESURRECTION)+1)*20, getitemlink(PinkBlobime));
+ mesc l("@@/@@ @@", countitem(RedApple), (getskilllv(ALL_RESURRECTION)+1)*15, getitemlink(RedApple));
+ next;
+ if (askyesno() == ASK_YES) {
+ if (
+ countitem(Acorn) < (getskilllv(ALL_RESURRECTION)+1)*60 ||
+ countitem(Bread) < (getskilllv(ALL_RESURRECTION)+1)*30 ||
+ countitem(SmallMushroom) < (getskilllv(ALL_RESURRECTION)+1)*20 ||
+ countitem(PinkBlobime) < (getskilllv(ALL_RESURRECTION)+1)*20 ||
+ countitem(RedApple) < (getskilllv(ALL_RESURRECTION)+1)*15) goto L_Missing;
+
+ delitem Acorn, (getskilllv(ALL_RESURRECTION)+1)*60;
+ delitem Bread, (getskilllv(ALL_RESURRECTION)+1)*30;
+ delitem SmallMushroom, (getskilllv(ALL_RESURRECTION)+1)*20;
+ delitem PinkBlobime, (getskilllv(ALL_RESURRECTION)+1)*20;
+ delitem RedApple, (getskilllv(ALL_RESURRECTION)+1)*15;
+
+ sk_lvup(ALL_RESURRECTION);
+
+ next;
+ }
+ break;
+ case 4:
+ mesc l("[MP Regen]");
+ mesc l("Heals more mana while standing.");
+ mes "";
+ mesn;
+ mesq l("This useful skill will only require:");
+ mesc l("@@/@@ @@", countitem(Acorn), (getskilllv(MG_SRECOVERY)+1)*70, getitemlink(Acorn));
+ mesc l("@@/@@ @@", countitem(Root), (getskilllv(MG_SRECOVERY)+1)*10, getitemlink(Root));
+ mesc l("@@/@@ @@", countitem(FrozenYetiTear),(getskilllv(MG_SRECOVERY)+1)*2, getitemlink(FrozenYetiTear));
+ mesc l("@@/@@ @@", countitem(FluoPowder), (getskilllv(MG_SRECOVERY)+1)*1, getitemlink(FluoPowder));
+ next;
+ if (askyesno() == ASK_YES) {
+ if (
+ countitem(Acorn) < (getskilllv(MG_SRECOVERY)+1)*70 ||
+ countitem(Root) < (getskilllv(MG_SRECOVERY)+1)*10 ||
+ countitem(FrozenYetiTear) < (getskilllv(MG_SRECOVERY)+1)*2 ||
+ countitem(FluoPowder) < (getskilllv(MG_SRECOVERY)+1)*1) goto L_Missing;
+
+ delitem Acorn, (getskilllv(MG_SRECOVERY)+1)*70;
+ delitem Root, (getskilllv(MG_SRECOVERY)+1)*10;
+ delitem FrozenYetiTear, (getskilllv(MG_SRECOVERY)+1)*2;
+ delitem FluoPowder, (getskilllv(MG_SRECOVERY)+1)*1;
+
+ sk_lvup(MG_SRECOVERY);
+
+ next;
+ }
+ break;
+ case 5:
+ mesc l("[Bless Weapon]");
+ mesc l("Changes anyone's weapon to Holy elemental. Causes small damage when used on offensive.");
+ mes "";
+ mesn;
+ mesq l("This useful skill will only require:");
+ mesc l("@@/@@ @@", countitem(Acorn), (getskilllv(PR_ASPERSIO)+1)*70, getitemlink(Acorn));
+ mesc l("@@/@@ @@", countitem(Root), (getskilllv(PR_ASPERSIO)+1)*10, getitemlink(Root));
+ mesc l("@@/@@ @@", countitem(FrozenYetiTear),(getskilllv(PR_ASPERSIO)+1)*2, getitemlink(FrozenYetiTear));
+ mesc l("@@/@@ @@", countitem(FluoPowder), (getskilllv(PR_ASPERSIO)+1)*1, getitemlink(FluoPowder));
+ next;
+ if (askyesno() == ASK_YES) {
+ if (
+ countitem(Acorn) < (getskilllv(PR_ASPERSIO)+1)*70 ||
+ countitem(Root) < (getskilllv(PR_ASPERSIO)+1)*10 ||
+ countitem(FrozenYetiTear) < (getskilllv(PR_ASPERSIO)+1)*2 ||
+ countitem(FluoPowder) < (getskilllv(PR_ASPERSIO)+1)*1) goto L_Missing;
+
+ delitem Acorn, (getskilllv(PR_ASPERSIO)+1)*70;
+ delitem Root, (getskilllv(PR_ASPERSIO)+1)*10;
+ delitem FrozenYetiTear, (getskilllv(PR_ASPERSIO)+1)*2;
+ delitem FluoPowder, (getskilllv(PR_ASPERSIO)+1)*1;
+
+ sk_lvup(PR_ASPERSIO);
+
+ next;
+ }
+ break;
+ case 6:
+ // 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 AL_HOLYLIGHT, 0, 0;
+ skill TF_DETOXIFY, 0, 0;
+ skill ALL_RESURRECTION, 0, 0;
+ skill MG_SRECOVERY, 0, 0;
+ skill PR_ASPERSIO, 0, 0;
+ MAGIC_SUBCLASS=MAGIC_SUBCLASS^CL_PRIEST;
+ mesc l("You abandoned the PRIEST 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); // TODO: wizard hat
+ setunitdata(.@npcId, UDT_HEADMIDDLE, SorcererRobe);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
+ setunitdata(.@npcId, UDT_WEAPON, JeansChaps);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 2);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 4);
+
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+