summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaulc <lucashelaine14@gmail.com>2018-02-11 17:12:56 +0100
committerSaulc <lucashelaine14@gmail.com>2018-02-11 17:12:56 +0100
commit4ff349e57a5b8efd89fbe3f2e6389b5ccf175c32 (patch)
tree3ff317500bffe312923b4b48cab779afbf7af220
parent817b39ebe3195c231773426b2610c621a8562e28 (diff)
parent91e35411240fed391bb2a873c8d42e38aef98d01 (diff)
downloadserverdata-4ff349e57a5b8efd89fbe3f2e6389b5ccf175c32.tar.gz
serverdata-4ff349e57a5b8efd89fbe3f2e6389b5ccf175c32.tar.bz2
serverdata-4ff349e57a5b8efd89fbe3f2e6389b5ccf175c32.tar.xz
serverdata-4ff349e57a5b8efd89fbe3f2e6389b5ccf175c32.zip
Merge branch 'master' of gitlab.com:TMW2/serverdata
-rw-r--r--db/constants.conf3
-rw-r--r--npc/002-1/chefgado.txt188
-rw-r--r--npc/002-3/juliet.txt113
-rw-r--r--npc/002-4/elmo.txt2
-rw-r--r--npc/002-4/nard.txt148
-rw-r--r--npc/003-1/ched.txt19
-rw-r--r--npc/003-1/constableperry.txt15
-rw-r--r--npc/003-1/cyndala.txt14
-rw-r--r--npc/003-1/eomie.txt14
-rw-r--r--npc/003-1/inac.txt13
-rw-r--r--npc/003-1/jakod.txt12
-rw-r--r--npc/003-1/malivox.txt93
-rw-r--r--npc/003-1/tamiloc.txt284
-rw-r--r--npc/003-1/tinris.txt21
14 files changed, 204 insertions, 735 deletions
diff --git a/db/constants.conf b/db/constants.conf
index 82a90218b..8430bcd26 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -3957,6 +3957,9 @@ constants_db: {
NPC_TEST1: 800
NPC_PLAYER: 801
+ NPC_FEMALE: 802
+ NPC_ELF: 803
+ NPC_ELF_F: 804
NPC_SAVE_POINT: 901
NPC_LEFT_HAMMOCK: 904
diff --git a/npc/002-1/chefgado.txt b/npc/002-1/chefgado.txt
index dd98a91de..ad600782d 100644
--- a/npc/002-1/chefgado.txt
+++ b/npc/002-1/chefgado.txt
@@ -2,30 +2,17 @@
// Authors:
// Hal9000
// Qwerty Dragon
+// Jesusalva
// Description:
// La Johanne Chef.
+// The cook may need help with something.
// Variable:
// ShipQuests_ChefGado
// ShipQuests_Nard
-// Values:
-// 0 Default, no quest given.
-// 1 Quest accepted.
-// 2 Ingredients collected, ready to poison Julia.
-// 3 Julia poisoned.
-// 4 Quest complete. Chef Gago wins.
-// 5 Quest complete. Julia wins (poison dish returned).
-// 6 Quest complete. Julia wins.
002-1,27,28,0 script Chef Gado NPC_CHEF_GADO,{
.@q = getq(ShipQuests_ChefGado);
.@n = getq(ShipQuests_Nard);
- if (.@q == 1) goto L_QuestAccepted;
- if (.@q == 2) goto L_PoisonAccepted;
- if (.@q == 3) goto L_PoisonJulia;
- if (.@q == 4) goto L_QuestComplete;
- if (.@q == 5 && countitem(PoisonedDish) > 0) goto L_Aborting;
- if (.@q > 4) goto L_QuestAborted;
- if (.@n == 3) goto L_QuestStart;
mesn;
.@r = rand(3);
@@ -35,177 +22,6 @@
close;
-L_QuestStart:
- mesn;
- mesq l("So it seems I have another stomach to fill. Those bastards have no respect for who feeds them every damn day!");
- next;
-
- menu
- l("How rude! What is the reason behind your malice?"), L_Rude,
- l("I swear, I do not eat so much."), -;
-
- mes "";
- mesn;
- mesq l("Yeah, yeah, of course you don't...");
-
- close;
-
-L_Rude:
- mes "";
- mesn;
- mesq l("UAHAHAHAAH! I am the cook of that bunch of donkeys, and I can be rude with everyone from this bossy captain to that harpy-lady!");
- next;
-
- select
- l("Harpy-lady?");
-
- mes "";
- mesn;
- mesq l("I am sure you know her. Nice dress, large smile and a constant flux of orders and rules. Julia they call her!");
- next;
- mesq l("You have to know that there was a time during which I was the unopposed lieutenant of this crew. Then one day one of those damn sailors brought that 'nice' lady here.");
- next;
- mesq l("I will not tell you all the details, but after a month, she was ruling the ship and I was sent down here, cooking for those traitors!");
- next;
- mesq l("But I swear that one day... Oh... My tasty revenge! Hhm, actually I wonder if... Maybe...");
- next;
-
- select
- l("M... Maybe?");
-
- mes "";
- mesn;
- mesq lg("Well, eh-heh... Welcome aboard, cutie!", "Well, eh-heh... Welcome aboard, son!");
- next;
- mesq l("I just realized I am lacking some common things, and one key ingredient, to prepare a... A special recipe.");
- next;
- mesq l("I only need 2 @@, 2 @@s, 1 @@...", getitemlink(PiouLegs), getitemlink(HalfCroconut), getitemlink(Aquada));
- next;
- mesq l("... and 1 @@.", getitemlink(SeaDrops));
- next;
-
- menu
- l("Sea water?! I will not help you with your evil plan!"), L_Quit,
- l("Sure, why not?"), -;
-
- setq ShipQuests_ChefGado, 1;
- mes "";
- mesn;
- mesq lg("Well done! Collect all the ingredients and then come back here. You will be rewarded once I am satisfied that they understand who rules this ship!");
- next;
- mesq l("Before you go, let me tell you how to get @@s, because you don't look very smart.", getitemlink(HalfCroconut));
-
- goto L_OpenCroconut;
-
-L_QuestAccepted:
- mesn;
- mesq l("Have you collected all the ingredients for my recipe? The special one too?");
- next;
-
- menu
- rif(countitem(PiouLegs) > 1 && countitem(HalfCroconut) > 1 && countitem(Aquada) > 0 && countitem(SeaDrops) > 0, l("All your... Fresh ingredients are ready to be cooked.")), L_GotAll,
- l("What are your needs?"), L_Need,
- l("Where can I find a half croconut?"), L_OpenCroconut,
- l("Not yet. I will be back soon."), L_Quit;
-
-L_OpenCroconut:
- mes "";
- mesn;
- mesq lg("Take a @@ and try opening it using something like a sharp knife. I doubt you'll succeed, you're being so weak in everything.",
- "Take a @@ and try opening it using something like a sharp knife. I doubt you'll succeed, you're being so weak in everything.", getitemlink(Croconut));
- next;
- mesq l("Now move!");
-
- close;
-
-L_GotAll:
- mes "";
-
- inventoryplace PoisonedDish, 1;
-
- delitem PiouLegs, 2;
- delitem HalfCroconut, 1;
- delitem Aquada, 1;
- delitem SeaDrops, 1;
-
- mesn;
- mesq l("Let me see... Crispy legs, disgusting liquids... Let's start!");
- next;
- mesq l("Water, salt, spicy herbs and meat stuffed with my special surprise!");
- next;
- mesq l("Done. Here, take it! Now, here is the plan. Go talk to her and offer our beautiful lady a bite of her arrogance!");
-
- setq ShipQuests_ChefGado, 2;
- getitem PoisonedDish, 1;
- close;
-
-L_Need:
- mes "";
- mesn;
- mesq l("Shhht, don't say it that loud...");
- next;
- mesq l("I only need 2 @@, 2 @@s, 1 @@...", getitemlink(PiouLegs), getitemlink(HalfCroconut), getitemlink(Aquada));
- next;
- mesq l("... and 1 @@.", getitemlink(SeaDrops));
-
- close;
-
-L_PoisonAccepted:
- mesn;
- mesq l("Fool! Just come back here when you'll be done with our little... 'Secret mission'.");
-
- close;
-
-L_PoisonJulia:
- mesn;
- mesq l("The usurper has been punished! This is a great day! Take this reward as a prize for your loyalty to the old commander!");
-
- setq ShipQuests_ChefGado, 4;
- Zeny = Zeny + 200;
- message strcharinfo(0), l("You receive @@ E!", 200);
- inventoryplace Bread, 1;
- getitem Bread, 1;
- getexp 15, 0;
-
- close;
-
-L_QuestComplete:
- mesn;
- mesq l("Oh, it's you. I think it's better we do not talk for a while. They suspect something.");
-
- close;
-
-L_Aborting:
- mesn;
- mesq l("Wait, why do you still have the dish with you?!");
- next;
-
- select
- l("I informed Julia about your monstrous plan.");
-
- mes "";
- mesn;
- mesq l("Are you mad?!");
- next;
- mesq lg("Give me back this dish, you dirty liar!");
-
- if (countitem(PoisonedDish) > 0) delitem PoisonedDish, 1;
-
- next;
- mesq l("You're like the rest of this filthy crew, I can't trust you!");
-
- close;
-
-L_QuestAborted:
- mesn;
- mesq lg("You're like the rest of this filthy crew. Your name is now on the traitors list!");
-
- close;
-
-L_Quit:
- closedialog;
- close;
-
OnInit:
.sex = G_MALE;
.distance = 2;
diff --git a/npc/002-3/juliet.txt b/npc/002-3/juliet.txt
index 24b6a0e21..c773f8755 100644
--- a/npc/002-3/juliet.txt
+++ b/npc/002-3/juliet.txt
@@ -1,3 +1,4 @@
+// TMW2 scripts.
// Evol scripts.
// Authors:
// 4144
@@ -6,33 +7,14 @@
// Jesusalva
// Description:
// Allows to change language and talks about what happened to him.
-// Modified by Jesusalva for TMW2
-// 2 Bits Array:
-// ShipQuests
+// Modified by Jesusalva for TMW2. She is the nurse and also does other minor tasks.
// Variables:
// 0 ShipQuests_Julia
-// 1 ShipQuests_ChefGado
-// 2 ShipQuests_Nard
// Values:
// Julia:
// 10 Default, no quest given.
// 01 Need to see Julia.
// 02 Has been registered by Julia.
-// Gado:
-// 10 Default, no quest given.
-// 11 Quest accepted.
-// 12 Ingredients collected, ready to poison Julia.
-// 13 Julia poisoned.
-// 14 Quest complete. Chef Gago wins.
-// 15 Quest complete. Julia wins (poison dish returned).
-// 16 Quest complete. Julia wins.
-// Nard:
-// 20 Introduction of the boxes and Nard. This is displayed when the player never spoke to Nard or his box.
-// 21 Nard spoke and gave access to the outdoor of the ship.
-// 22 Completed the Gugli quest.
-// 23 ChefGado Quest accepted.
-// 24 ChefGado Quest completed and "Introduction" chapter finalized.
-// 25 Reward taken from the box.
002-3,27,24,0 script Juliet#TMW2 NPC_JULIA,2,10,{
@@ -43,17 +25,6 @@
closedialog;
}
- function poisonJulia {
- mes "";
- mesn;
- mesq l("Seems yummy! Let me taste it!");
- next;
- mesq l("Hmmm, hm... *cough*, *cough*, *burp*, *cough*. What... What is that?!... *cough*, *burp*... Damn Gado... *cough*");
- if (countitem(PoisonedDish) > 0) delitem PoisonedDish, 1;
- setq ShipQuests_ChefGado, 3;
- close;
- }
-
function gotoSleep {
speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
l("You already did enough for us, follow Nard's advice and get some rest."),
@@ -63,68 +34,7 @@
return;
}
- function heardRumors {
- mes "";
- mesn;
- mesq l("You shouldn't believe every tale drunken sailors tell you.");
- next;
-
- select
- l("Let's say the person who told me about that is well respected on this ship and never drunk.");
-
- mes "";
- mesn;
- mesq l("Hahaha! All sailors aboard this ship are always drunk... Well... Except... Wait, what?! Nard told you?!");
- next;
- mesq l("Doesn't he like the way I'm taking care of his ship? Everything is clean and tidy with me, rightful lieutenant of La Johanne.");
- next;
- mesq l("I give tasks to every single sailor, all day long. That should make him happy!");
- next;
-
- select
- l("Well... I don't think it is the best way to rule a ship. Think about it."),
- l("In fact, everything seems to work perfectly under your guidance. Nard has made the right choice.");
-
- if (@menu == 1)
- {
- closedialog;
- end;
- }
-
- mes "";
- mesn;
- mesq l("I'm glad you're on my side.");
- next;
- mesq l("Take this money as a reward for your nice words.");
-
- setq ShipQuests_ChefGado, 6;
- Zeny += 100;
- message strcharinfo(0), l("You receive @@ GP!", 100);
- getexp 8, 0;
- close;
- }
-
- function gotRegrets {
- mes "";
- mesn;
- mesq l("Why? And who should you bring it back to?");
- next;
- select
- l("Ehm... He was really upset because of some past stories.");
-
- mes "";
- mesn;
- mesq l("Gado! That coward lives in the past, I will ask Nard to punish him, again!");
- next;
- mesq l("Take this money for your wise choice. But do not try it again. The open sea has been merciful with you once... Do not further tempt the fates!");
-
- setq ShipQuests_ChefGado, 5;
- Zeny += 200;
- message strcharinfo(0), l("You receive @@ GP!", 200);
- getexp 15, 0;
- close;
- }
function basicSkill {
mes "";
@@ -234,15 +144,11 @@
function mainMenu {
do
{
- .@q2 = getq(ShipQuests_ChefGado);
.@q3 = getq(ShipQuests_Nard);
.@q4 = getq(General_Narrator);
selectd
rif(.@q3 == 5 && .@q4 < 1, l("What can I do now?")),
- rif(.@q3 == 3 && .@q2 == 0, l("I heard rumors about some old hostilities between you and Gado. Are they true?")),
- rif(.@q2 == 2 && countitem(PoisonedDish), l("Well... No wait, I have something for you but you shouldn't eat it... I'm taking it back to the kitchen.")),
- rif(.@q2 == 2 && countitem(PoisonedDish), l("I have brought you a tasty present for your delicate mouth.")),
rif(getskilllv(NV_BASIC) < 6, l("Something is wrong with me, I can't smile nor sit.")),
lg("I made a mistake, I would like to change my language."),
l("Could you explain to me where I am?"),
@@ -253,15 +159,12 @@
switch (@menu)
{
case 1: gotoSleep; break;
- case 2: heardRumors; break;
- case 3: gotRegrets; break;
- case 4: poisonJulia; break;
- case 5: basicSkill; break;
- case 6: chooseLang .@s$; break;
- case 7: whereAmI; break;
- case 8: whatHappened; break;
- case 9: readRules; break;
- case 10: closedialog; end;
+ case 2: basicSkill; break;
+ case 3: chooseLang .@s$; break;
+ case 4: whereAmI; break;
+ case 5: whatHappened; break;
+ case 6: readRules; break;
+ case 7: closedialog; end;
}
} while (1);
}
diff --git a/npc/002-4/elmo.txt b/npc/002-4/elmo.txt
index 06f1f5ddd..2b03b9ad8 100644
--- a/npc/002-4/elmo.txt
+++ b/npc/002-4/elmo.txt
@@ -2,7 +2,7 @@
// Authors:
// Jesusalva
// Description:
-// Elmo's second dialog.
+// Elmo's second dialog. He is Nard's deputy and second-in-command.
// Elmo was created in Evol by Qwerty Dragon and Reid
002-4,27,27,0 script Elmo NPC_ELMO,{
diff --git a/npc/002-4/nard.txt b/npc/002-4/nard.txt
index 08fe8357c..98cf5afcf 100644
--- a/npc/002-4/nard.txt
+++ b/npc/002-4/nard.txt
@@ -1,46 +1,20 @@
-// Evol scripts.
+// TMW2 scripts.
// Authors:
// Qwerty Dragon
// Reid
+// Jesusalva
// Description:
// Captain Nard dialogs.
// Nard is a fair merchant ship's captain.
-// This quest is meant to teach the player how to use a weapon.
-// 4 bits array:
-// ShipQuests
-// Variable:
-// 0 ShipQuests_Nard
-// 1 ShipQuests_Gugli
-// 2 ShipQuests_ChefGado
-// Values:
-// 00 Introduction of the boxes and Nard. This is displayed when the player never spoke to Nard or his box.
-// 01 Nard spoke and gave access to the outdoor of the ship.
-// 02 Completed the Gugli quest.
-// 03 ChefGado Quest accepted.
-// 04 ChefGado Quest completed and "Introduction" chapter finalized.
-// 05 Reward taken from the box.
-// 06 Intro finished
-// 10 Never talked with Gugli.
-// 11 Gugli gives you the task.
-// 12 Gave all of the boxes to Gugli.
+// Original Nard's from Evol by Qwerty Dragon and Reid
002-4,25,26,0 script Nard NPC_NARD,{
- .@nard = getq(ShipQuests_Nard);
- .@gugli = getq(ShipQuests_Gugli);
- .@gado = getq(ShipQuests_ChefGado);
+ .@nard = getq(ShipQuests_Nard); // TODO
.@narrator = getq(General_Narrator);
.@price=2000;
L_Checker:
if (getq(CandorQuest_Barrel) == 4 && getq(CandorQuest_HAS) == 3) .@price-=500; // Check Elmo's script. You can do quests later... FOR NOW.
- if (.@gado > 3 && .@nard == 3) goto L_ChefQuestComplete;
- if (.@nard == 2) goto L_ChefQuestStart;
- if (.@nard == 3) goto L_ChefQuestGiven;
- if (.@nard == 4) goto L_Reward;
- if (.@nard > 5) goto L_GoBackArtis;
- if (.@nard > 4) goto L_Already;
- if (.@gugli == 2) goto L_Done;
- if (.@nard == 1) goto L_NotYet;
if (.@narrator == 1) goto L_Travel;
if (LOCATION$ != "") goto L_NotYet;
@@ -82,10 +56,6 @@ L_MenuQuest:
l("Wait, you never came here before?"), L_CandorIsland;
mes "";
- //mesn;
- //mesq l("Oh! I like that sort of answer!");
- //next;
- //mesq lg("We need manpower on the island... Oh forgive me, women are also welcome, of course.", "We need manpower on the island.");
mesn;
mesq l("Ship travels are not free. See if you can gather some money, and I'll bring you to Tulimshar!");
next;
@@ -206,116 +176,6 @@ L_TTulim:
mesq l("I was planning to go there soon, anyway. All aboard!");
close;
-
-// Deprecated, will be removed later
-L_Done:
- mesn;
- mesq l("Hi @@.", strcharinfo(0));
- next;
- mesq l("Elmo and Gugli told me that you did all of the tasks outside, congrats!");
-
- setq ShipQuests_Nard, 2;
- next;
- goto L_ChefQuestRedir;
-
-L_ChefQuestStart:
- mesn;
- mesq lg("Elmo told me you are now considered family and are numbered among us in our activities on the island. I do so very much appreciate the efforts you did down there.");
- next;
-
-L_ChefQuestRedir:
- mesq l("Unfortunately, we still need help from you. This time it will be a delicate task, here onboard.");
- next;
- mesq l("Elmo brought reports to me about some frictions between my old and new lieutenants. You probably already met Juliet and Chef Gado.");
- next;
- mesq l("They are each valued individuals and I need them both. In the past, I probably made my share of mistakes. I regret good management is so difficult. I was wondering if you could investigate and... Sort out this situation.");
- next;
-
- select
- l("Of the two of them, who has 'good' on their side?");
-
- mes "";
- mesq l("I do not want to go pointing my finger at someone. I want to be honorable and fair, and I sense the same quality in you, so I put my trust in you. I am sure you will be able to judge and solve this troubling situation.");
-
- setq ShipQuests_Nard, 3;
-
- close;
-
-L_ChefQuestGiven:
- mesn;
- mesq l("It seems you still have some work to do.");
-
- close;
-
-L_ChefQuestComplete:
- mesn;
- mesq l("Congratulations!");
- next;
- mesq l("You are now officially part of my crew! Thanks again for your help.");
- next;
- mesq l("Take your reward from the box next to my desk!");
- next;
-
- select
- l("I will take it! Thank you captain!");
-
- setq ShipQuests_Nard, 4;
- getexp 50, 0;
-
-// Need to add a skill for the crew at this line.
- mes "";
-
-L_Already:
- speech
- l("I recommend you to take a nap on the inferior level, we will soon leave this place.");
-
- close;
-
-L_GoBackArtis:
- checkclientversion;
- speech S_LAST_NEXT,
- l("Enough of this island?"),
- l("Where would you like to go now?");
- switch (select(l("Let's go to Artis."),
- l("Tell me, where are we right now?"),
- l("I would like to stay here a bit more.")))
- {
- case 1:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Let's set sail then!");
-
- savepoint "001-2-22", 50, 38;
- if (!getmapxy(.@map$, .@x, .@y, 0))
- {
- warp "001-2-24", .@x, .@y;
- }
- else
- {
- warp "001-2-24", 22, 27;
- }
-
- closedialog;
- close;
-
- case 2:
- closedialog;
- npctalk3 l("This is Drasil Island, I named it after an ancient mythical tree.");
- close;
-
- case 3:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Ok I stay here with my paperwork if you need my help.");
-
- closedialog;
- close;
- }
-
-L_Reward:
- mesn;
- mesq l("You may already claim your reward.");
-
- close;
-
OnInit:
.sex = G_MALE;
.distance = 5;
diff --git a/npc/003-1/ched.txt b/npc/003-1/ched.txt
index 1bb7d38bf..21fd30590 100644
--- a/npc/003-1/ched.txt
+++ b/npc/003-1/ched.txt
@@ -1,12 +1,25 @@
+// TMW2 scripts.
// Author:
// Saulc
+// Description:
+// Ched is from a quest.
-003-1,40,49,0 script Ched NPC_MONA,{
-hello;
+003-1,40,49,0 script Ched NPC_PLAYER,{
+
+ hello;
+
OnInit:
+ .@npcId = getnpcid(0, "Ched");
+ setunitdata(.@npcId, UDT_HEADTOP, 2929);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, 1314);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, 2204);
+ setunitdata(.@npcId, UDT_WEAPON, 1803); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 7);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 17);
+
.sex = G_MALE;
- .distance = 3;
+ .distance = 5;
end;
}
diff --git a/npc/003-1/constableperry.txt b/npc/003-1/constableperry.txt
index 64ab70e4d..0490be5e1 100644
--- a/npc/003-1/constableperry.txt
+++ b/npc/003-1/constableperry.txt
@@ -1,9 +1,22 @@
+// TMW2 Scripts.
// Author:
// Saulc
+// Jesusalva
+// Description:
+// Constable Perry invites players to the TMW2 Project
003-1,47,75,0 script Constable Perry NPC_MOUBOO,{
-hello;
+//hello;
+ mesn;
+ mesq l("Hello there! I am a constable. I keep law and order here.");
+ next;
+ mesq l("Yes, I am a mouboo. Why? Can't a mouboo be a law and order enforcer?!");
+ next;
+ mesq l("Anyway, you can check our [@@https://gitlab.com/TMW2/TheManaWorld_Wiki/wikis/home|Wiki@@] to find awesome stuff!");
+ next;
+ mesq l("You can even join the project there. Contributors are greatly appreciated! %%g");
+ close;
OnInit:
.sex = G_MALE;
diff --git a/npc/003-1/cyndala.txt b/npc/003-1/cyndala.txt
index aeee8c7de..4b4571159 100644
--- a/npc/003-1/cyndala.txt
+++ b/npc/003-1/cyndala.txt
@@ -1,12 +1,20 @@
// Author:
// Saulc
-003-1,41,80,0 script Cyndala NPC_MONA,{
+003-1,41,80,0 script Cyndala NPC_FEMALE,{
hello;
OnInit:
- .sex = G_MALE;
- .distance = 3;
+ .@npcId = getnpcid(0, "Cyndala");
+ //setunitdata(.@npcId, UDT_HEADTOP, 2929);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, 1320);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, 2207);
+ setunitdata(.@npcId, UDT_WEAPON, 1802); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 16);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 11);
+
+ .sex = G_FEMALE;
+ .distance = 5;
end;
}
diff --git a/npc/003-1/eomie.txt b/npc/003-1/eomie.txt
index d3f406139..57a355248 100644
--- a/npc/003-1/eomie.txt
+++ b/npc/003-1/eomie.txt
@@ -2,12 +2,20 @@
// Saulc
// Notes: Eomie did the bug bomb at Candor
-003-1,68,24,0 script Eomie NPC_MONA,{
+003-1,68,24,0 script Eomie NPC_ELF_F,{
hello;
OnInit:
- .sex = G_MALE;
- .distance = 3;
+ .@npcId = getnpcid(0, "Eomie");
+ //setunitdata(.@npcId, UDT_HEADTOP, 2929);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, 1319);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, 2207);
+ //setunitdata(.@npcId, UDT_WEAPON, 1802); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 10);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 12);
+
+ .sex = G_FEMALE;
+ .distance = 5;
end;
}
diff --git a/npc/003-1/inac.txt b/npc/003-1/inac.txt
index 0358d01bf..38129c45d 100644
--- a/npc/003-1/inac.txt
+++ b/npc/003-1/inac.txt
@@ -1,13 +1,22 @@
+// TMW2 scripts.
// Author:
// Saulc
-003-1,55,82,0 script Inac NPC_MONA,{
+003-1,55,82,0 script Inac NPC_PLAYER,{
hello;
OnInit:
+ .@npcId = getnpcid(0, "Inac");
+ setunitdata(.@npcId, UDT_HEADTOP, 2900);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, 1301);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, 2207);
+ setunitdata(.@npcId, UDT_WEAPON, 1800); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 7);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 17);
+
.sex = G_MALE;
- .distance = 3;
+ .distance = 5;
end;
}
diff --git a/npc/003-1/jakod.txt b/npc/003-1/jakod.txt
index d1f7a12be..cddecb667 100644
--- a/npc/003-1/jakod.txt
+++ b/npc/003-1/jakod.txt
@@ -1,14 +1,22 @@
// Author:
// Saulc
-003-1,62,76,0 script Jakod NPC_MONA,{
+003-1,62,76,0 script Jakod NPC_PLAYER,{
hello;
OnInit:
+ .@npcId = getnpcid(0, "Jakod");
+ //setunitdata(.@npcId, UDT_HEADTOP, 2929);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, 1315);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, 2207);
+ setunitdata(.@npcId, UDT_WEAPON, 1800); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 24);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 2);
+
.sex = G_MALE;
- .distance = 3;
+ .distance = 5;
end;
}
diff --git a/npc/003-1/malivox.txt b/npc/003-1/malivox.txt
index bdb9d481c..4ad7b0a95 100644
--- a/npc/003-1/malivox.txt
+++ b/npc/003-1/malivox.txt
@@ -1,12 +1,99 @@
// Author:
// Saulc
-003-1,114,106,0 script Malivox NPC_MONA,{
+003-1,114,106,0 script Malivox NPC_PLAYER,{
-
-hello;
+ speech S_LAST_NEXT,
+ l("I am Malivox, an alchemist specialized in reset potions.");
+
+L_Menu:
+ if (BaseLevel < 10)
+ .@plush_count = (BaseLevel*5)+5;
+ else
+ .@plush_count = BaseLevel*190-(9*190);
+ // Lv 9: 50 GP | Lv 10: 190 GP
+
+ select
+ l("Can you reset my stats please?"),
+ lg("You are weird, I have to go sorry.");
+
+ switch (@menu)
+ {
+ case 1:
+ goto L_ResetStats;
+ case 2:
+ goto L_Quit;
+ }
+
+L_ResetStats:
+ mesn;
+ mesq l("Status point reset can't be undone. Do you really want this?");
+
+L_ConfirmReset:
+ switch (select(lg("Yes, I am sure."),
+ lg("I need to think about it..."),
+ lg("I won't need it, thank you.")))
+ {
+ case 1:
+ speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
+ l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@plush_count);
+
+ select
+ rif(Zeny >= .@plush_count, l("Here, take as much as you need, I have plenty!")),
+ rif(Zeny > 0 && Zeny < .@plush_count, l("I don't have enough money...")),
+ rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
+ l("I have to go, sorry.");
+
+ if (@menu > 1)
+ {
+ goto L_Quit;
+ }
+
+ // TODO: I think there were functions to deal with GP
+ set Zeny, Zeny-.@plush_count;
+
+ speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
+ l("Thank you."),
+ l("Now stand still... It should not take much time...");
+
+ .@wasSP = StatusPoint;
+ resetstatus;
+ if (StatusPoint == .@wasSP)
+ {
+ speech S_LAST_NEXT,
+ l("It seems that you have no status points to reset!"),
+ l("But the money you brought was really awesome you know."),
+ l("Come back when you will really need me.");
+ }
+ else
+ {
+ speech S_LAST_NEXT,
+ l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
+ l("Spend it wisely this time."),
+ l("But you are welcome to reset your stats again! I need the money.");
+ }
+ goto L_Quit;
+
+ case 2:
+ goto L_Quit;
+ case 3:
+ goto L_Quit;
+ }
+
+
+L_Quit:
+
+ goodbye;
OnInit:
+ .@npcId = getnpcid(0, "Malivox");
+ setunitdata(.@npcId, UDT_HEADTOP, 2902);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, 1303);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, 2203);
+ setunitdata(.@npcId, UDT_WEAPON, 1800); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 7);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 17);
+
.sex = G_MALE;
.distance = 3;
end;
diff --git a/npc/003-1/tamiloc.txt b/npc/003-1/tamiloc.txt
index 12abc1390..6d42a41e0 100644
--- a/npc/003-1/tamiloc.txt
+++ b/npc/003-1/tamiloc.txt
@@ -1,288 +1,14 @@
-// Evol scripts.
+// TMW2 scripts.
// Authors:
-// Ablu
-// Alige
-// Qwerty Dragon
-// Reid
-// Vasily_Makarov
-// Description:
-// Hidden in a ship's hole.
-// 2 bits array:
-// ShipQuests
-// Variable:
-// ShipQuests_Alige
-// Values:
-// 0 Never talk.
-// 1 First talk.
-// 2 Accept the task.
-// 3 Bring first food.
+// Saulc
003-1,49,43,0 script Tamiloc NPC_ELVEN_FEMALE_ARMOR_SHOP,{
- .@q = getq(ShipQuests_Alige);
- if (.@q > 1) goto L_AskForFood;
- goto OnFirstEncounter;
-
-OnFirstEncounter:
- setq ShipQuests_Alige, 1;
-
- setcamnpc;
- mesn "Hidden Person";
- mesq l("Hey, psst! You're not a sailor, right?");
- next;
- restorecam;
-
- menu
- lg("I am, who are you?"), -,
- lg("Indeed, I am not."), L_NeedHelp;
-
- mes "";
- mesn "Narrator";
- mes col(l("The stowaway doesn't answer."), 9);
-
- close;
-
-L_NeedHelp:
- setcamnpc;
- mes "";
- mesn "Hidden Person";
- mesq l("Good, good... Hey, could you help me please? I beg you, please, pleeeease...");
- next;
- restorecam;
-
- menu
- l("Why not, but who are you, and what kind of help do you need?"), L_CanHelp;
- l("Sorry but I have no time for this."), -;
-
- closedialog;
- close;
-
-L_CanHelp:
- setcamnpc;
- mes "";
- mesn;
- mesq l("My name is Alige, I've been hiding here for weeks. All I have to eat are these berries... berries... berries...");
- next;
- mesq l("I'm losing my mind here, I need something else to eat!");
- next;
- mesq l("Could you please bring me something which isn't a berry, and I'm not big on vegetables either. I need proteins!");
- next;
- restorecam;
-
- menu
- l("Sure, but what will you give me in exchange?"), L_AboutReward,
- l("Why don't you come out?"), -;
-
-L_ExplainHiding:
- setcamnpc;
- mes "";
- mesn;
- mesq l("No, I can't. I won't! All I wanted was to travel across the seas for fun, growl... sniff. And in this hole in the floor, as you can see, I have lots of fun.");
- next;
- mesq l("Oh... um... actually... all I wanted was to get to Artis. Err... but I didn't, uhm... have enough money to pay for the ferry!");
- next;
- mesq l("Please don't tell people you saw me. I don't want to be decapitated or get thrown into the sea as food for sharks, or get my hair mussed!");
- next;
- restorecam;
-
- if (getq(ShipQuests_Alige) == 2) goto L_SoAskForFood;
- goto L_Accept;
-
-L_AboutReward:
- setcamnpc;
- mes "";
- mesn;
- mesq l("I'll share my berries with you if you help me.");
- next;
- restorecam;
-
-L_Accept:
- menu
- l("Understood, I will help you."), L_FirstAccepted,
- l("What is Artis?"), L_Artis,
- l("I think I should report you to the crew members."), -;
-
- setcamnpc;
- mesq lg("Growl, sniff, grr! You'd better not tell anyone you saw me!");
-
- close;
-
-L_Artis:
- setcamnpc;
- mes "";
- mesn;
- mesq l("It's a commercial port of Andorra, it's weird that you don't know about it since it is one of the most famous cities throughout the whole world. But hey, back to me. Remember me telling you that I'm hun...grrr...eee!");
- next;
- restorecam;
-
- if (.@q == 2) goto L_SoAskForFood;
- goto L_Accept;
-
-L_FirstAccepted:
- if (getq(ShipQuests_Alige) >= 2) goto L_Accepted;
- setq ShipQuests_Alige, 2;
-
- goto L_Accepted;
-
-L_Accepted:
- setcamnpc;
- mes "";
- mesn;
- mesq lg("Great, what food do you have for me today?");
- next;
- restorecam;
-
-L_GiveFood:
- mes "";
- menuint
- rif(countitem(Acorn), l(getitemname(Acorn))), 0,
- rif(countitem(Bread), l(getitemname(Bread))), 502,
- rif(countitem(Fungus), l(getitemname(Fungus))), 503,
- rif(countitem(Cheese), l(getitemname(Cheese))), 504,
- rif(countitem(PiouLegs), l(getitemname(PiouLegs))), 505,
- rif(countitem(LettuceLeaf), l(getitemname(LettuceLeaf))), 0,
- rif(countitem(Piberries), l(getitemname(Piberries))), 2,
- rif(countitem(SeaDrops), l(getitemname(SeaDrops))), 1,
- rif(countitem(Aquada), l(getitemname(Aquada))), 509,
- rif(countitem(PinkBlobime), l(getitemname(PinkBlobime))), 1,
- rif(countitem(HalfCroconut), l(getitemname(HalfCroconut))), 512,
- rif(countitem(Croconut), l(getitemname(Croconut))), 0,
- rif(countitem(Plushroom), l(getitemname(Plushroom))), 515,
- rif(countitem(PumpkinSeeds), l(getitemname(PumpkinSeeds))), 1,
- rif(countitem(UrchinMeat), l(getitemname(UrchinMeat))), 1,
- rif(countitem(EasterEgg), l(getitemname(EasterEgg))), 1,
- rif(countitem(PumpkishJuice), l(getitemname(PumpkishJuice))), 527,
- rif(countitem(Manana), l(getitemname(Manana))), 528,
- rif(countitem(Curshroom), l(getitemname(Curshroom))), 529,
- rif(countitem(Carrot), l(getitemname(Carrot))), 530,
- rif(countitem(RedPlushWine), l(getitemname(RedPlushWine))), 3,
- l("I don't have anything good for you today."), -1;
-
- .@id = @menuret;
- if (.@id == -1) goto L_Quit; // Quit message.
- if (.@id == 0) goto L_NoReward; // In case of wrong food.
- if (.@id == 1) goto L_Poison; // In case of poisoned food.
- if (.@id == 2) goto L_NoMore; // In case of Piberries.
- if (.@id == 3) goto L_Drunk; // In case of Alcohol.
- if (countitem(.@id) == 0) goto L_Quit;
-// if (.@id == item's ID) then food is correct.
-// Do not put any other number than -1, 0, 1, 2 or the item's ID, that'll avoid confusion.
-
- inventoryplace Piberries, 3;
- delitem .@id, 1;
-
- setcamnpc;
- mes "";
- mesn;
- mesq l("Thank you so much! Here, have some of my berries.");
-
- setq ShipQuests_Alige, 3;
- getitem Piberries, rand(1, 3);
- next;
-
- goto L_ReturnMenu;
-
-L_NoReward:
- setcamnpc;
- mes "";
- mesn;
- mesq l("You don't expect me to eat that, do you? Give me something else!");
- next;
- restorecam;
-
- goto L_GiveFood;
-
-L_Drunk:
- setcamnpc;
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("I asked for food but... *hips* Ah, that'll do!");
- restorecam;
-
- goto L_GiveFood;
-
-L_ReturnMenu:
- setcamnpc;
- mesq l("Do you have anything else for me?");
- next;
- restorecam;
-
- goto L_GiveFood;
-
-L_NoMore:
- setcamnpc;
- mes "";
- mesn;
- mesq l("Grr, don't give me more berries! I don't want them, stupid berries, stupid... Stupid... Stupid!");
- next;
-
- goto L_ReturnMenu;
-
-L_Poison:
- setcamnpc;
- mes "";
- mesn;
- mesq l("Don't try to poison me! I know what that does!");
- next;
- restorecam;
- goto L_ReturnMenu;
-
-L_SoAskForFood:
- setcamnpc;
- mesn;
- mesq l("So, do you have anything for me today?");
- next;
- restorecam;
- goto L_IntroMenu;
-
-L_AskForFood:
- setcamnpc;
- mesn;
- mesq l("Do you have anything for me today?");
- next;
- restorecam;
-
-L_IntroMenu:
- menu
- l("Yes."), L_GiveFood,
- l("Where can I find some food?"), L_FindFood,
- l("Why are you hiding?") + " " + l("Why don't you come out?"), L_ExplainHiding,
- l("What is Artis?"), L_Artis,
- l("I think I should report you to the crew members."), -;
-
- setcamnpc;
- mesq lg("Growl, sniff, grr! You'd better not tell anyone you saw me!");
-
- close;
-
-L_FindFood:
- setcamnpc;
- mes "";
- mesn;
- mesq l("There are some flying yellow plushes around you. They're called pious. Getting a roasted leg of one of them would be perfect.");
- next;
- mesq l("I'd like to catch one of them, but they fly away when I try.");
- next;
- mesq l("Walking around a bit, it'll be easy for you to catch one, I bet. Impale one of them for me please.");
- next;
- restorecam;
- mesn "Narrator";
- mes col(l("You can attack a monster by clicking on it, or from your keyboard you can press the 'A' key to select the monster followed by 'Ctrl' to attack it."), 9);
- next;
- mes col(l("Once the monster is dead, click on the dropped items to add them to your inventory. You can also use the 'Z' key to claim the drops."), 9);
-
- close;
-
-L_Quit:
- setcamnpc;
- mes "";
- mesn;
- mesq l("Too bad... Come back when you'll have some nice food for me. Growl... grumble... grumble.");
-
- close;
+ hello;
OnInit:
- .sex = G_MALE;
- .distance = 2;
+ .sex = G_FEMALE;
+ .distance = 5;
end;
}
diff --git a/npc/003-1/tinris.txt b/npc/003-1/tinris.txt
index de267dff8..972891192 100644
--- a/npc/003-1/tinris.txt
+++ b/npc/003-1/tinris.txt
@@ -1,12 +1,27 @@
// Author:
// Saulc
-003-1,66,30,0 script Tinris NPC_MONA,{
+003-1,66,30,0 script Tinris NPC_ELF,{
-hello;
+ // Placeholder dialog
+ mesn;
+ mesq l("We elves have greater affinity for magic than humans.");
+ next;
+ mesq l("However, our skill growth rate is much smaller than those of humans.");
+ next;
+ mesq l("In the end, elves would have quite the age to rivalize with human wizards.");
+ close;
OnInit:
+ .@npcId = getnpcid(0, "Tinris");
+ //setunitdata(.@npcId, UDT_HEADTOP, 2929);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, 1308);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, 2207);
+ setunitdata(.@npcId, UDT_WEAPON, 1802); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 3);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 19);
+
.sex = G_MALE;
- .distance = 3;
+ .distance = 5;
end;
}