summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/003-0/_import.txt4
-rw-r--r--npc/003-0/colin.txt4
-rw-r--r--npc/003-0/luca.txt4
-rw-r--r--npc/003-0/sage.txt188
-rw-r--r--npc/003-0/saves.txt31
-rw-r--r--npc/003-0/trickmaster.txt31
-rw-r--r--npc/003-0/wizard.txt191
7 files changed, 68 insertions, 385 deletions
diff --git a/npc/003-0/_import.txt b/npc/003-0/_import.txt
index f2e4c81d9..0ec5970cb 100644
--- a/npc/003-0/_import.txt
+++ b/npc/003-0/_import.txt
@@ -4,5 +4,5 @@
"npc/003-0/colin.txt",
"npc/003-0/luca.txt",
"npc/003-0/recepcionist.txt",
-"npc/003-0/sage.txt",
-"npc/003-0/wizard.txt",
+"npc/003-0/saves.txt",
+"npc/003-0/trickmaster.txt",
diff --git a/npc/003-0/colin.txt b/npc/003-0/colin.txt
index aff8474b6..1a7bb2c3b 100644
--- a/npc/003-0/colin.txt
+++ b/npc/003-0/colin.txt
@@ -3,9 +3,9 @@
// Saulc
// Jesusalva
// Description:
-// Luca and Colin assigns player a class. Colin is the Wizard Master.
+// Colin, of Destructive Magic Class.
-003-0,41,25,0 script Colin NPC_PLAYER,{
+003-0,58,29,0 script Colin NPC_PLAYER,{
mesn;
mesq l("I am the @@ master.", l("Wizard Mages"));
if (!MAGIC_LVL) goto L_NoMagic;
diff --git a/npc/003-0/luca.txt b/npc/003-0/luca.txt
index 3c0fd60db..3ffb716cc 100644
--- a/npc/003-0/luca.txt
+++ b/npc/003-0/luca.txt
@@ -3,9 +3,9 @@
// Saulc
// Jesusalva
// Description:
-// Luca and Colin assigns player a class. Luca is the Warrior Master.
+// Luca, of Physical Science Class.
-003-0,31,26,0 script Luca NPC_PLAYER,{
+003-0,34,41,0 script Luca NPC_PLAYER,{
mesn;
mesq l("I am the @@ master.", l("Magic Warriors"));
if (!MAGIC_LVL) goto L_NoMagic;
diff --git a/npc/003-0/sage.txt b/npc/003-0/sage.txt
deleted file mode 100644
index 9df6a2dec..000000000
--- a/npc/003-0/sage.txt
+++ /dev/null
@@ -1,188 +0,0 @@
-// TMW2 scripts.
-// Authors:
-// Jesusalva
-// Description:
-// Leader of the SAGE class
-
-003-0,61,25,0 script Sage Master NPC_PLAYER,{
- /*
- if (!is_staff())
- goto L_Close;
- */
- if (!(MAGIC_SUBCLASS & CL_SAGE))
- 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 Sage 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_SAGE;
- mesn;
- mesq l("Welcome to the sage 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
-// Sage
-// CR_TRUST (raise Max HP in 200 and Holy Resistance in 5%, passive)
-// AL_ANGELUS (DEF Increase 5% for 15s/LVL, 14x14 area for PARTY)
-// PR_REDEMPTIO (suicide with death penalty. Revive dead party members on a 29x29 area. Min. 1% xp. 0.01% xp penalty reduction per revive)
-// MER_INCAGI (raise agi and move speed for 20s/LVL. Have an HP cost.)
-// SM_BASH up to level 4 (+220% dmg and +20% acc). PS. If you have MP, SM_BASH is very powerful.
-
-L_Member:
- mesn;
- mesq l("Hey there! Do you want to learn new skills for a very small teaching fee?");
- select
- rif(sk_intcost(SA_FREECAST) && getskilllv(SA_FREECAST) < (1+degree_subclass()/2), l("Learn Action Casting")),
- rif(sk_intcost(SA_DRAGONOLOGY) && getskilllv(SA_DRAGONOLOGY) < (1+degree_subclass()/2), l("Learn Dragon Slayer")),
- rif(sk_intcost(TMW2_SAGE) && sk_canlvup(TMW2_SAGE), l("Improve Mana Wisdom")),
- rif(sk_intcost(SA_FLAMELAUNCHER) && sk_canlvup(SA_FLAMELAUNCHER), l("Improve Fire Weapon")),
- rif(sk_intcost(SA_FROSTWEAPON) && sk_canlvup(SA_FROSTWEAPON), l("Improve Ice Weapon")),
- rif(sk_intcost(SA_LIGHTNINGLOADER) && sk_canlvup(SA_LIGHTNINGLOADER), l("Improve Wind Weapon")),
- rif(sk_intcost(SA_SEISMICWEAPON) && sk_canlvup(SA_SEISMICWEAPON), l("Improve Earth Weapon")),
- l("Leave Subclass"),
- l("Nothing at the moment.");
- mes "";
- switch (@menu) {
- case 1:
- mesc l("[Action Casting]");
- mesc l("Allows to move/attack while casting. (Melee attacks still interrupt casting!)");
- mes "";
- mesn;
- if (!mlearn(SA_FREECAST,
- Tentacles, 10,
- MushroomSpores, 5,
- WolvernTooth, 3,
- RedScorpionClaw, 1))
- goto L_Missing;
- break;
- case 2:
- mesc l("[Dragon Slayer]");
- mesc l("Raises attack and resistance against dragons. Also raises int. Passive.");
- mes "";
- mesn;
- if (!mlearn(SA_DRAGONOLOGY,
- Acorn, 70,
- Root, 10,
- FrozenYetiTear, 2,
- FluoPowder, 1))
- goto L_Missing;
- break;
- case 3:
- mesc l("[Mana Wisdom]");
- mesc l("Increase mana experience gain, when using mana skills.");
- mes "";
- mesn;
- if (!mlearn(TMW2_SAGE,
- Acorn, 60,
- Bread, 25,
- PinkBlobime, 20,
- SmallMushroom, 15,
- RedApple, 12))
- goto L_Missing;
- break;
- // Weapon Enhance
- case 4:
- case 5:
- case 6:
- case 7:
- setarray .@ASkill, SA_FLAMELAUNCHER, SA_FROSTWEAPON, SA_LIGHTNINGLOADER, SA_SEISMICWEAPON;
- setarray .@AItem, Curshroom, Coral, BatWing, PileOfAsh;
- setarray .@BItem, Ruby, Sapphire, Emerald, Topaz;
- setarray .@ASkill$, "Fire", "Ice", "Wind", "Earth";
-
- .@index=@menu-4;
-
- .@Skill$=.@ASkill$[.@index];
- .@Skill=.@ASkill[.@index];
- .@Item=.@AItem[.@index];
- .@ItemB=.@BItem[.@index];
-
- deletearray(.@ASkill);
- deletearray(.@AItem);
- deletearray(.@BItem);
- deletearray(.@ASkill$);
-
- mesc l("[@@ Weapon]", .@Skill$);
- mesc l("Temporaly switch weapon element to @@. Success rate is fixed at 70%.", .@Skill$);
- mes "";
- mesn;
- if (!mlearn(.@Skill,
- .@Item, 30,
- FluoPowder, 10,
- WoodenLog, 5,
- HerbalTea, 3,
- .@ItemB, 1))
- goto L_Missing;
- break;
- case 8:
- // 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 SA_FREECAST, 0, 0;
- skill SA_DRAGONOLOGY, 0, 0;
- skill TMW2_SAGE, 0, 0;
- skill SA_FLAMELAUNCHER, 0, 0;
- skill SA_FROSTWEAPON, 0, 0;
- skill SA_LIGHTNINGLOADER, 0, 0;
- skill SA_SEISMICWEAPON, 0, 0;
- MAGIC_SUBCLASS=MAGIC_SUBCLASS^CL_SAGE;
- mesc l("You abandoned the SAGE 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); // 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;
-}
-
diff --git a/npc/003-0/saves.txt b/npc/003-0/saves.txt
new file mode 100644
index 000000000..89f8b3b53
--- /dev/null
+++ b/npc/003-0/saves.txt
@@ -0,0 +1,31 @@
+// TMW2 Script
+// Author:
+// Jesusalva
+// Description:
+// Mr. Saves of Scholar Class
+
+003-0,34,25,0 script Mr Saves NPC_BLACKALCHEMIST,{
+ if (!MAGIC_LVL) goto L_NoMagic;
+ mesn;
+ mesq l("You are a noob.");
+ close;
+
+L_NoMagic:
+ next;
+ mesn;
+ mesq l("Your lack of magical power is critical. I dare say, you might never in your life get access to a Mana Stone.");
+ next;
+ mesn;
+ mesq l("Besides the Magic Council, Andrei Sakar have his own Mana Stone, but I doubt he would train the likes of you, or share his Mana Stone.");
+ next;
+ mesn;
+ mesq l("Perhaps, in the city, someone knows rumors about Mana Stones and can teach you. Other than that, you're on your own.");
+ close;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 5;
+ end;
+
+}
+
diff --git a/npc/003-0/trickmaster.txt b/npc/003-0/trickmaster.txt
new file mode 100644
index 000000000..2fbce745e
--- /dev/null
+++ b/npc/003-0/trickmaster.txt
@@ -0,0 +1,31 @@
+// TMW2 Script
+// Author:
+// Jesusalva
+// Description:
+// Trickmaster of Tricksters Class
+
+003-0,40,30,0 script Trickmaster NPC_BLACKALCHEMIST,{
+ if (!MAGIC_LVL) goto L_NoMagic;
+ mesn;
+ mesq l("You are a noob.");
+ close;
+
+L_NoMagic:
+ next;
+ mesn;
+ mesq l("Your lack of magical power is critical. I dare say, you might never in your life get access to a Mana Stone.");
+ next;
+ mesn;
+ mesq l("Besides the Magic Council, Andrei Sakar have his own Mana Stone, but I doubt he would train the likes of you, or share his Mana Stone.");
+ next;
+ mesn;
+ mesq l("Perhaps, in the city, someone knows rumors about Mana Stones and can teach you. Other than that, you're on your own.");
+ close;
+
+OnInit:
+ .sex = G_FEMALE;
+ .distance = 5;
+ end;
+
+}
+
diff --git a/npc/003-0/wizard.txt b/npc/003-0/wizard.txt
deleted file mode 100644
index d4ca14a52..000000000
--- a/npc/003-0/wizard.txt
+++ /dev/null
@@ -1,191 +0,0 @@
-// TMW2 scripts.
-// Authors:
-// Jesusalva
-// Description:
-// Leader of the WIZARD class
-// TODO: Improve Fireball
-
-003-0,55,25,0 script Wizard Master NPC_PLAYER,{
- if (!(MAGIC_SUBCLASS & CL_WIZARD))
- 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 Wizard 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_WIZARD;
- mesn;
- mesq l("Welcome to the wizard 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
-// Wizard
-// MG_COLDBOLT (ice)
-// MG_LIGHTNINGBOLT (wind)
-// WZ_EARTHSPIKE (earth)
-// MG_NAPALMBEAT (ghost)
-// MG_ENERGYCOAT (For 5 minutes, raise damage reduction, but that eats MP)
-// TODO: We have many other cool skills for Wizard (more AoE skills, more damage, etc)
-// I will worry with that later, as that also means providing extra skills for Sage & Priest
-// Note: the number of hits of bolts is the same as the skill level :D
-
-L_Member:
- mesn;
- mesq l("Hey there! Do you want to learn new skills for a very small teaching fee?");
- select
- rif(sk_intcost(MG_ENERGYCOAT) && !getskilllv(MG_ENERGYCOAT), l("Learn Energy Coating")),
- rif(sk_intcost(MG_NAPALMBEAT) && sk_canlvup(MG_NAPALMBEAT), l("Improve Napalm Beat")),
- rif(sk_intcost(MG_COLDBOLT) && sk_canlvup(MG_COLDBOLT), l("Improve Cold Bolt")),
- rif(sk_intcost(MG_LIGHTNINGBOLT) && sk_canlvup(MG_LIGHTNINGBOLT), l("Improve Thunder Bolt")),
- rif(sk_intcost(WZ_EARTHSPIKE) && sk_canlvup(WZ_EARTHSPIKE), l("Improve Earth Spike")),
- rif(sk_intcost(MG_FIREBOLT) && sk_canlvup(MG_FIREBOLT), l("Improve Fire Bolt")),
- rif(sk_intcost(MG_FIREBALL) && getskilllv(MG_FIREBALL) < (3+degree_subclass()), l("Improve Fire Ball")),
- l("Leave Subclass"),
- l("Nothing at the moment.");
- mes "";
- switch (@menu) {
- case 1:
- mesc l("[Energy Coating]");
- mesc l("Drains Mana to reduce damage taken. The only defensive skill from wizards.");
- mes "";
- mesn;
- if (!mlearn(MG_ENERGYCOAT,
- Tentacles, 10,
- MushroomSpores, 5,
- WolvernTooth, 3,
- RedScorpionClaw, 1))
- goto L_Missing;
- break;
- case 2:
- mesc l("[Napalm Beat]");
- mesc l("Neutral attack with low damage value, but with low cost, high range and wide Effect Area.");
- //mesc l("Useful in PvP when your enemy have equipped a @@", getitemlink(AstralCube));
- mes "";
- mesn;
- if (!mlearn(MG_NAPALMBEAT,
- Acorn, 60,
- Bread, 30,
- SmallMushroom, 20,
- PinkBlobime, 20,
- RedApple, 15))
- goto L_Missing;
- break;
- // Magic Bolts
- case 3:
- case 4:
- case 5:
- case 6:
- setarray .@ASkill, MG_COLDBOLT, MG_LIGHTNINGBOLT, WZ_EARTHSPIKE, MG_FIREBOLT;
- setarray .@AItem, Coral, BatWing, PileOfAsh, Curshroom;
- setarray .@BItem, Sapphire, Emerald, Topaz, Ruby;
- setarray .@ASkill$, "Ice", "Wind", "Earth", "Fire";
-
- .@index=@menu-3;
-
- .@Skill$=.@ASkill$[.@index];
- .@Skill=.@ASkill[.@index];
- .@Item=.@AItem[.@index];
- .@ItemB=.@BItem[.@index];
-
- deletearray(.@ASkill);
- deletearray(.@AItem);
- deletearray(.@BItem);
- deletearray(.@ASkill$);
-
- mesc l("[@@ Bolt]", .@Skill$);
- mesc l("Causes a @@ bolt on the enemy. Number of hits is the skill level.", .@Skill$);
- mes "";
- mesn;
- if (!mlearn(.@Skill,
- .@Item, 30,
- FluoPowder, 8,
- HerbalTea, 3,
- DiamondPowder, 2,
- .@ItemB, 1))
- goto L_Missing;
- break;
- case 7:
- mesc l("[Fire Ball]");
- mesc l("Standard fireball skill.");
- mes "";
- mesn;
- if (!mlearn(MG_FIREBALL,
- Curshroom, 10,
- SulfurPowder, 10,
- FluoPowder, 10,
- PolishedRuby, 3,
- HerbalTea, 1))
- goto L_Missing;
- break;
- case 8:
- // 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 MG_ENERGYCOAT, 0, 0;
- skill SA_DRAGONOLOGY, 0, 0;
- skill MG_NAPALMBEAT, 0, 0;
- skill MG_COLDBOLT, 0, 0;
- skill MG_LIGHTNINGBOLT, 0, 0;
- skill WZ_EARTHSPIKE, 0, 0;
- skill MG_FIREBOLT, 0, 0;
- skill MG_FIREBALL, 2, 0;
- MAGIC_SUBCLASS=MAGIC_SUBCLASS^CL_WIZARD;
- mesc l("You abandoned the WIZARD 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, FancyHat); // TODO: wizard hat
- setunitdata(.@npcId, UDT_HEADMIDDLE, SorcererRobe);
- setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
- setunitdata(.@npcId, UDT_WEAPON, JeansShorts);
- setunitdata(.@npcId, UDT_HAIRSTYLE, 2);
- setunitdata(.@npcId, UDT_HAIRCOLOR, 5);
-
- .sex=G_MALE;
- .distance=5;
- end;
-}
-