summaryrefslogtreecommitdiff
path: root/npc/008-1
diff options
context:
space:
mode:
Diffstat (limited to 'npc/008-1')
-rw-r--r--npc/008-1/_import.txt3
-rw-r--r--npc/008-1/auldsbel.txt3
-rw-r--r--npc/008-1/banu.txt3
-rw-r--r--npc/008-1/blossom.txt1
-rw-r--r--npc/008-1/confused-tree.txt1
-rw-r--r--npc/008-1/crane.txt1
-rw-r--r--npc/008-1/greenmage.txt (renamed from npc/008-1/4144.txt)7
-rw-r--r--npc/008-1/hinnak.txt4
-rw-r--r--npc/008-1/jack.txt4
-rw-r--r--npc/008-1/mikhail.txt12
-rw-r--r--npc/008-1/milly.txt1
-rw-r--r--npc/008-1/old-man.txt1
-rw-r--r--npc/008-1/old-woman.txt1
-rw-r--r--npc/008-1/oscar.txt1
-rw-r--r--npc/008-1/rossy.txt10
-rw-r--r--npc/008-1/sabine.txt1
-rw-r--r--npc/008-1/sergeant-ryan.txt71
-rw-r--r--npc/008-1/shop.txt1
-rw-r--r--npc/008-1/sign.txt5
-rw-r--r--npc/008-1/snarfles.txt3
-rw-r--r--npc/008-1/soul-menhir.txt59
-rw-r--r--npc/008-1/voltain.txt3
-rw-r--r--npc/008-1/wateranimation.txt24
23 files changed, 113 insertions, 107 deletions
diff --git a/npc/008-1/_import.txt b/npc/008-1/_import.txt
index 381dec5a..88b1ded5 100644
--- a/npc/008-1/_import.txt
+++ b/npc/008-1/_import.txt
@@ -1,6 +1,6 @@
// Map 008-1: Hurnscald
// This file is generated automatically. All manually added changes will be removed when running the Converter.
-"npc/008-1/4144.txt",
+"npc/008-1/greenmage.txt",
"npc/008-1/_mobs.txt",
"npc/008-1/_warps.txt",
"npc/008-1/auldsbel.txt",
@@ -20,6 +20,7 @@
"npc/008-1/oscar.txt",
"npc/008-1/rossy.txt",
"npc/008-1/sabine.txt",
+"npc/008-1/sergeant-ryan.txt",
"npc/008-1/shop.txt",
"npc/008-1/sign.txt",
"npc/008-1/snarfles.txt",
diff --git a/npc/008-1/auldsbel.txt b/npc/008-1/auldsbel.txt
index 3d3ebbf5..316bf604 100644
--- a/npc/008-1/auldsbel.txt
+++ b/npc/008-1/auldsbel.txt
@@ -43,12 +43,11 @@
}
} else {
mesn;
- mesq lg("If you come back later, I may teach you something. But psst, practising magic is quite dangerous these days.");
+ mesq l("If you come back later, I may teach you something. But psst, practising magic is quite dangerous these days.");
}
close;
OnInit:
- .bodytype = BODYTYPE_3;
.distance = 4;
end;
}
diff --git a/npc/008-1/banu.txt b/npc/008-1/banu.txt
index 183d33c3..05209a2c 100644
--- a/npc/008-1/banu.txt
+++ b/npc/008-1/banu.txt
@@ -10,12 +10,11 @@
l("Hello."),
l("You don't have a scythe, by chance? I am too old to mew this field all alone."),
l("I asked Hinnak, but he wants at least a beer in exchange for his scythe."),
- lg("But I hate alcohol, so thats not an option for me.");
+ l("But I hate alcohol, so thats not an option for me.");
close;
OnInit:
- .bodytype = BODYTYPE_2;
.distance = 4;
end;
}
diff --git a/npc/008-1/blossom.txt b/npc/008-1/blossom.txt
index 8746752e..57782b20 100644
--- a/npc/008-1/blossom.txt
+++ b/npc/008-1/blossom.txt
@@ -72,7 +72,6 @@
close;
OnInit:
- .bodytype = BODYTYPE_2;
.distance = 4;
end;
}
diff --git a/npc/008-1/confused-tree.txt b/npc/008-1/confused-tree.txt
index 5ed54448..aead40ed 100644
--- a/npc/008-1/confused-tree.txt
+++ b/npc/008-1/confused-tree.txt
@@ -928,7 +928,6 @@ OnInit:
// config below
.hotwords$ = "tree"; // what hot words the npc should listen to, besides its own name (regex)
.distance = 14; // the npc will only listen to player within X tiles
- .bodytype = BODYTYPE_1; // BodyType of the npc
.dir = season_direction(); // sprite direction according to the season
.talk_rate = 1; // min number of seconds to wait between replies
.repeat_rate = 1; // min number of seconds to wait before sending the same message twice in a row
diff --git a/npc/008-1/crane.txt b/npc/008-1/crane.txt
index d8099536..3a22fa47 100644
--- a/npc/008-1/crane.txt
+++ b/npc/008-1/crane.txt
@@ -87,7 +87,6 @@ function foodQuest {
}
OnInit:
- .bodytype = BODYTYPE_3;
.distance = 4;
end;
}
diff --git a/npc/008-1/4144.txt b/npc/008-1/greenmage.txt
index 842f9269..5b40f42d 100644
--- a/npc/008-1/4144.txt
+++ b/npc/008-1/greenmage.txt
@@ -3,13 +3,13 @@
// Jesusalva
// WildX
// Description:
-// Andrei is not an human, according to studies conducted by TMW Team.
+// The Green Mage is not an human, according to studies conducted by TMW Team.
// He seems to be a highly advanced artificial intelligence.
// The fact that he was never seen contributes to this theory.
// Other members opinions:
// “4144 is a bot which sits on Hurnscald.” ~ Sagratha, 2016
-008-1,246,105,0 script Andrei NPC_PLAYER,{
+008-1,246,105,0 script Green Wizard NPC_PLAYER,{
function sittingBot;
function zealiteLore;
// TODO: Maybe we should use Karma here? For discussion
@@ -75,7 +75,7 @@
OnInit:
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADTOP, FancyHat); // Wizard Hat
- setunitdata(.@npcId, UDT_HEADMIDDLE, SilkRobe);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, SilkRobe); // TODO: Must be dye-ed green
setunitdata(.@npcId, UDT_HEADBOTTOM, CottonGloves);
setunitdata(.@npcId, UDT_WEAPON, CottonBoots);
@@ -84,7 +84,6 @@ OnInit:
setunitdata(.@npcId, UDT_HAIRCOLOR, rand(1,20));
npcsit;
- .bodytype = BODYTYPE_3;
.distance = 4;
end;
}
diff --git a/npc/008-1/hinnak.txt b/npc/008-1/hinnak.txt
index ea556475..69802791 100644
--- a/npc/008-1/hinnak.txt
+++ b/npc/008-1/hinnak.txt
@@ -149,7 +149,7 @@
{
delitem .monster_drop, .drop_count;
getitem .reward_item, 1;
- Zeny += .reward_money;
+ quest_gp(.maxLevel, .reward_money);
//getexp .reward_exp, 0;
setq .quest, 3;
}
@@ -354,6 +354,7 @@ OnTimer1000:
OnInit:
.min_level = 15; // min level to do the quest
+ .maxLevel = getiteminfo(Scythe, ITEMINFO_ELV) + 20;
.monster_id = Pinkie; // monster to kill
.monster_drop = PinkAntennae; // monster drop to collect
.drop_count = 10; // amount of that drop needed
@@ -367,7 +368,6 @@ OnInit:
.quest = HurnscaldQuests_Hinnak;
.quest_inspector = HurnscaldQuests_Inspector;
.quest_debug = .quest;
- .bodytype = BODYTYPE_3;
.distance = 3;
.speed = 300;
diff --git a/npc/008-1/jack.txt b/npc/008-1/jack.txt
index fdce7fe6..fd16d965 100644
--- a/npc/008-1/jack.txt
+++ b/npc/008-1/jack.txt
@@ -224,7 +224,7 @@
delitem(.logs_item, .logs_amount);
getitem(.shield_item, 1);
Zeny -= .shield_cost;
- getexp(.shield_exp, 0);
+ quest_xp(.maxLevel, .shield_exp);
speech(
l("Enjoy your new shield!"));
@@ -294,12 +294,12 @@ OnInit:
.shield_cost = 5000; // XXX: maybe nlogn?
.shield_exp = 2500;
.shield_item = WoodenShield;
+ .maxLevel = getiteminfo(WoodenShield, ITEMINFO_ELV) + 20;
.quest_bow = HurnscaldQuests_ForestBow;
.quest_shield = HurnscaldQuests_WoodenShield;
.quest_inspector = HurnscaldQuests_Inspector;
.quest_debug = .quest_bow;
- .bodytype = BODYTYPE_3;
.distance = 3;
////////// UNFINISHED //////////
diff --git a/npc/008-1/mikhail.txt b/npc/008-1/mikhail.txt
index 3d9441d1..24806baf 100644
--- a/npc/008-1/mikhail.txt
+++ b/npc/008-1/mikhail.txt
@@ -75,7 +75,7 @@
delitem .third_item, .third_item_qty;
setq .quest, 7;
- getexp .third_reward_exp, 0;
+ quest_xp(.maxLevel, .third_reward_exp);
close;
}
@@ -112,20 +112,12 @@ OnInit:
.third_item_qty = 5;
.third_item_mob = Maggot;
+ .maxLevel = 30;
.third_reward_exp = 100;
.quest = HurnscaldQuests_Soup;
.quest_debug = .quest;
- .bodytype = BODYTYPE_3;
.distance = 3;
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-//if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
end;
}
diff --git a/npc/008-1/milly.txt b/npc/008-1/milly.txt
index 35c0e6b7..320ef3bf 100644
--- a/npc/008-1/milly.txt
+++ b/npc/008-1/milly.txt
@@ -105,7 +105,6 @@ function script GetBeanieCopter {
OnInit:
.quest_inspector = HurnscaldQuests_Inspector;
.quest_debug = .quest_inspector; // TODO: change this to the milly quest debug when it exists
- .bodytype = BODYTYPE_2;
.distance = 3;
////////// UNFINISHED //////////
diff --git a/npc/008-1/old-man.txt b/npc/008-1/old-man.txt
index e0df33bc..5b0e2f51 100644
--- a/npc/008-1/old-man.txt
+++ b/npc/008-1/old-man.txt
@@ -73,7 +73,6 @@
OnInit:
.quest_inspector = HurnscaldQuests_Inspector;
.quest_debug = .quest_inspector;
- .bodytype = BODYTYPE_3;
.distance = 1; // this npc has bad hearing
.speed = 2000; // this npc is very old
// TODO: move graph (after the Hurnscald map is finalized)
diff --git a/npc/008-1/old-woman.txt b/npc/008-1/old-woman.txt
index ddfb33c6..89789b70 100644
--- a/npc/008-1/old-woman.txt
+++ b/npc/008-1/old-woman.txt
@@ -120,7 +120,6 @@
OnInit:
.quest_inspector = HurnscaldQuests_Inspector;
.quest_debug = .quest_inspector;
- .bodytype = BODYTYPE_2;
.distance = 1; // this npc has bad hearing
.speed = 2000; // this npc is very old
// TODO: move graph (after the Hurnscald map is finalized)
diff --git a/npc/008-1/oscar.txt b/npc/008-1/oscar.txt
index d7c2f6d5..2ea42456 100644
--- a/npc/008-1/oscar.txt
+++ b/npc/008-1/oscar.txt
@@ -14,7 +14,6 @@
close;
OnInit:
- .bodytype = BODYTYPE_3;
.distance = 4;
end;
}
diff --git a/npc/008-1/rossy.txt b/npc/008-1/rossy.txt
index 8e63bd27..f0acfa67 100644
--- a/npc/008-1/rossy.txt
+++ b/npc/008-1/rossy.txt
@@ -127,7 +127,7 @@ function rossyFirstmet {
mes "";
if (@menu == 2) {
mesn;
- mesq lg("Then why bother? Weird person...");
+ mesq l("Then why bother? Weird person...");
return;
}
setq HurnscaldQuests_Rossy, 2;
@@ -160,7 +160,8 @@ function rossyBasket {
mesq l("You do, but that's not enough. I need %d %s.", .blueberries_amount, getitemlink(Blueberries));
}
delitem Blueberries, .blueberries_amount;
- getexp 2000, 500;
+ quest_xp(.maxLevel, 2000);
+ quest_jxp(.maxLevel, 500);
setq HurnscaldQuests_Rossy, 4;
// FIXME: Perhaps give player a [Berries Bag] item? Hmm.
mesn;
@@ -348,7 +349,8 @@ function rossyDeliverTulip {
mes "";
delitem ARedTulip, 15;
setq HurnscaldQuests_Rossy, 14;
- getexp 2500, 250;
+ quest_xp(.maxLevel, 2500);
+ quest_jxp(.maxLevel, 250);
mesn;
mesq l("That's better! Go and tell my mother that she is the nicest mother in the world.");
next;
@@ -379,11 +381,11 @@ function rossyJulietIntro {
}
OnInit:
- .bodytype = BODYTYPE_3;
.distance = 4;
// Quest conf
.blueberries_amount=30;
.minLevel_rescue = 60;
+ .maxLevel = 90;
end;
}
diff --git a/npc/008-1/sabine.txt b/npc/008-1/sabine.txt
index 8f4fa713..dc2b11b7 100644
--- a/npc/008-1/sabine.txt
+++ b/npc/008-1/sabine.txt
@@ -49,7 +49,6 @@
OnInit:
.quest_inspector = HurnscaldQuests_Inspector;
.quest_debug = .quest_inspector;
- .bodytype = BODYTYPE_2;
.distance = 3;
////////// UNFINISHED //////////
diff --git a/npc/008-1/sergeant-ryan.txt b/npc/008-1/sergeant-ryan.txt
new file mode 100644
index 00000000..975587e4
--- /dev/null
+++ b/npc/008-1/sergeant-ryan.txt
@@ -0,0 +1,71 @@
+// Evol scripts.
+// Author:
+// Livio
+// Description:
+// Save Sergeant Ryan
+
+008-1,55,47,0 script Sergeant Ryan NPC_RAIJIN_MALE_BROTHERHOOD,{
+function advanceQuest;
+function advanceQuest {
+ setq(General_CptHal, getq(General_CptHal) + 1);
+ return;
+}
+
+ if (getq(General_CptHal)<=3) {
+ speech
+ l("Aaah!!! Dammit!!!"),
+ l("It hurts like hell, #@%!!!!"),
+ l("Go away, my comrades will be here soon!");
+ }
+ if (getq(General_CptHal)==3) {
+ select l("No. They won't because Hal sent me to look after you, Tom Hanks.");
+ speech l("Aaah!!! What?");
+ select l("You are hurt! Looks like I have to save private Ryan...");
+ speech l("I'm a Sergeant. I could teach you a lesson or two if it wasn't for my leg.");
+ select l("Does it hurts if I touch here?");
+ speech l("@#@%&#@*!!!");
+ select l("This leg is badly hurt! Let me look out for something to heal it.");
+ speech l("Grr... I'm so nuts that I want to get even first with damn wolverns.");
+ speech l("Bring me:");
+ printIngredients(.REQ0_INGREDIENTS, .REQ0_INGREDIENTS_AMOUNT);
+ next;
+ advanceQuest();
+ close;
+ }
+ if (getq(General_CptHal)==4) {
+ if (checkForItems(.REQ0_INGREDIENTS, .REQ0_INGREDIENTS_AMOUNT)) {
+ speech l("Yeah, finally!!!");
+ next;
+ BaseExp += 15 * BaseLevel;
+ Zeny += 50;
+ advanceQuest();
+ delitem(.REQ0_INGREDIENTS, .REQ0_INGREDIENTS_AMOUNT);
+ speech l("Go tell Hal that I'm fine and I will go on with the mission as soon as possible.");
+ } else {
+ speech l("What are you doing here?!? I need:");
+ printIngredients(.REQ0_INGREDIENTS, .REQ0_INGREDIENTS_AMOUNT);
+ speech l("Come on, kill those bastards!!! Wolverns must pay the price of tasting my damn leg!!!");
+ select l("Fine. But PETA is not going to be happy about it...");
+ speech l("@#@%&#@*!!!");
+ }
+ close;
+ }
+ if (getq(General_CptHal)>=5) {
+ speech l("Thanks! Now move, I have a mission to accomplish.");
+ }
+ close;
+
+OnInit:
+ // NPC ITEM REQUESTS
+ setarray(.REQ0_INGREDIENTS,
+ WolvernPelt,
+ BottleOfWater
+ );
+ setarray(.REQ0_INGREDIENTS_AMOUNT,
+ 1,
+ 1
+ );
+
+ .distance = 4;
+ end;
+}
diff --git a/npc/008-1/shop.txt b/npc/008-1/shop.txt
index 5ea1c139..b2b4a406 100644
--- a/npc/008-1/shop.txt
+++ b/npc/008-1/shop.txt
@@ -20,7 +20,6 @@ OnInit:
sellitem AWhiteTulip, -1, 50;
sellitem AYellowTulip, -1, 50;
- .bodytype = BODYTYPE_1;
.distance = 10;
end;
diff --git a/npc/008-1/sign.txt b/npc/008-1/sign.txt
index 7652c3f2..950fe996 100644
--- a/npc/008-1/sign.txt
+++ b/npc/008-1/sign.txt
@@ -9,7 +9,6 @@
close;
OnInit:
.distance = 2;
- .bodytype = BODYTYPE_1;
end;
}
@@ -18,7 +17,6 @@ OnInit:
close;
OnInit:
.distance = 2;
- .bodytype = BODYTYPE_1;
end;
}
@@ -27,7 +25,6 @@ OnInit:
close;
OnInit:
.distance = 2;
- .bodytype = BODYTYPE_1;
end;
}
@@ -36,7 +33,6 @@ OnInit:
close;
OnInit:
.distance = 2;
- .bodytype = BODYTYPE_1;
end;
}
@@ -45,6 +41,5 @@ OnInit:
close;
OnInit:
.distance = 1;
- .bodytype = BODYTYPE_1;
end;
}
diff --git a/npc/008-1/snarfles.txt b/npc/008-1/snarfles.txt
index 6332b4c9..d4de8ed0 100644
--- a/npc/008-1/snarfles.txt
+++ b/npc/008-1/snarfles.txt
@@ -10,7 +10,7 @@
speech
l("My Mouboos, my beloved Mouboos!"),
l("Oh, hi, isn't it cool to live among all those Mouboos? I don't understand how some people can eat Mouboo steak."),
- lg("Murderers!");
+ l("Murderers!");
if (getq(General_SmearedHands) <= 3 && getq2(General_SmearedHands) != 2)
foodQuest();
close;
@@ -92,7 +92,6 @@ function foodQuest {
}
OnInit:
- .bodytype = BODYTYPE_3;
.distance = 4;
end;
}
diff --git a/npc/008-1/soul-menhir.txt b/npc/008-1/soul-menhir.txt
index 2c57f0de..61112de5 100644
--- a/npc/008-1/soul-menhir.txt
+++ b/npc/008-1/soul-menhir.txt
@@ -1,62 +1,9 @@
-// Evol scripts.
+// The Mana World scripts.
// Author:
// gumi
+// Jesusalva
// Description:
// place of power, mana refills faster when sitting nearby
-008-1,252,111,0 script Soul Menhir#hurnscald NPC_NO_SPRITE,{
- if (!@menhir_meditation_message)
- {
- dispbottom(l("You feel a strong magic aura. You want to sit near it and meditate."));
- @menhir_meditation_message=1;
- }
- end;
+008-1,252,111,0 duplicate(Soul Menhir) Soul Menhir#hurn_1_7_200 NPC_NO_SPRITE
-OnRefill:
- @menhir_lock = false;
- getmapxy(.@map$, .@x, .@y, UNITTYPE_PC);
-
- if (.@map$ != .map$ || distance(.x, .y, .@x, .@y) > .refill_distance ||
- !(issit()))
- end;
-
- heal(0, .refill_rate);
- end;
-
-
-OnTimer500:
- .@count = getunits(BL_PC, .@units[0], false, .map$, (.x - .refill_distance),
- (.y - .refill_distance), (.x + .refill_distance), (.y + .refill_distance));
-
- for (.@i = 0; .@i < .@count; ++.@i)
- {
- if (.@units[.@i] < 0) continue; // pre-check, just in case
- deltimer(.name$ + "::OnRefill", .@units[.@i]);
- if (gettimer(TIMER_COUNT, .@units[.@i], .name$ + "::OnRefill") > 0 ||
- getvariableofpc(@menhir_lock, .@units[.@i])) {
- continue;
- }
- set(getvariableofpc(@menhir_lock, .@units[.@i]), true);
- addtimer(rand(.refill_timer), .name$ + "::OnRefill", .@units[.@i]);
- }
-
- initnpctimer();
- end;
-
-OnInit:
-
- .refill_rate = 1; // number of SP to give every refill
- .refill_distance = 7; // max distance
- .refill_timer = 200; // wait rand(X) ms before refill
- initnpctimer();
-
-////////// UNFINISHED //////////
-////////////////////////////////
-// REMOVE THIS CODE WHEN THIS //
-// NPC IS NO LONGER A WIP //////
-////////////////////////////////
-//if (!debug) disablenpc(.name$);
-///////// UNFINISHED ///////////
-
- end;
-}
diff --git a/npc/008-1/voltain.txt b/npc/008-1/voltain.txt
index 6ab22f1e..ce41f10b 100644
--- a/npc/008-1/voltain.txt
+++ b/npc/008-1/voltain.txt
@@ -8,12 +8,11 @@
008-1,182,155,0 script Voltain NPC_DARK_DRUID,{
speech
l("Go away, I have to think about new evil doings."),
- lg("GO AWAY, I SAID!");
+ l("GO AWAY, I SAID!");
close;
OnInit:
- .bodytype = BODYTYPE_3;
.distance = 4;
end;
}
diff --git a/npc/008-1/wateranimation.txt b/npc/008-1/wateranimation.txt
index 74ff5fd9..ce72d893 100644
--- a/npc/008-1/wateranimation.txt
+++ b/npc/008-1/wateranimation.txt
@@ -1,9 +1,21 @@
-// Evol scripts.
-// Author:
-// gumi
-// Reid
+// The Mana World scripts.
// Description:
// Water animations, splash, fishes, etc...
-008-1,311,97,0 duplicate(#water_animation0) #water_animation16 NPC_WATER_SPLASH
-008-1,314,139,0 duplicate(#water_animation0) #water_animation17 NPC_WATER_SPLASH
+008-1,90,223,0 duplicate(#fish_river) #hurns_fish01 NPC_WATER_SPLASH
+008-1,86,177,0 duplicate(#fish_river) #hurns_fish02 NPC_WATER_SPLASH
+008-1,85,186,0 duplicate(#fish_river) #hurns_fish03 NPC_WATER_SPLASH
+008-1,89,208,0 duplicate(#fish_river) #hurns_fish04 NPC_WATER_SPLASH
+008-1,139,91,0 duplicate(#fish_river) #hurns_fish05 NPC_WATER_SPLASH
+008-1,64,36,0 duplicate(#fish_river) #hurns_fish06 NPC_WATER_SPLASH
+008-1,55,30,0 duplicate(#fish_river) #hurns_fish07 NPC_WATER_SPLASH
+008-1,46,35,0 duplicate(#fish_river) #hurns_fish08 NPC_WATER_SPLASH
+008-1,105,55,0 duplicate(#fish_river) #hurns_fish09 NPC_WATER_SPLASH
+008-1,214,155,0 duplicate(#fish_river) #hurns_fish10 NPC_WATER_SPLASH
+008-1,216,153,0 duplicate(#fish_river) #hurns_fish11 NPC_WATER_SPLASH
+008-1,225,26,0 duplicate(#fish_river) #hurns_fish12 NPC_WATER_SPLASH
+008-1,220,49,0 duplicate(#fish_river) #hurns_fish13 NPC_WATER_SPLASH
+008-1,220,57,0 duplicate(#fish_river) #hurns_fish14 NPC_WATER_SPLASH
+008-1,233,56,0 duplicate(#fish_river) #hurns_fish15 NPC_WATER_SPLASH
+008-1,230,51,0 duplicate(#fish_river) #hurns_fish16 NPC_WATER_SPLASH
+