summaryrefslogtreecommitdiff
path: root/world
diff options
context:
space:
mode:
Diffstat (limited to 'world')
-rw-r--r--world/map/npc/033-1/birrod.txt91
-rw-r--r--world/map/npc/033-1/debug.txt8
-rw-r--r--world/map/npc/033-1/yerrnk.txt9
-rw-r--r--world/map/npc/034-1/_import.txt1
-rw-r--r--world/map/npc/034-1/ambushs.txt95
5 files changed, 151 insertions, 53 deletions
diff --git a/world/map/npc/033-1/birrod.txt b/world/map/npc/033-1/birrod.txt
index f560b0d0..916d4dc4 100644
--- a/world/map/npc/033-1/birrod.txt
+++ b/world/map/npc/033-1/birrod.txt
@@ -1,26 +1,21 @@
033-1.gat,72,27,0|script|Birrod|217,{
-//TODO: minimum level for quests?
+// TODO: check name of wolf monster after it has been added to the mob_db
set @Q_Barbarians_MASK, NIBBLE_0_MASK;
set @Q_Barbarians_SHIFT, NIBBLE_0_SHIFT;
set @state, ((QUEST_Barbarians & @Q_Barbarians_MASK) >> @Q_Barbarians_SHIFT);
-//TODO: think about amount
- set @candy, 25;
- set @chocolate, 20;
- set @candycane, 15;
- set @sweet_exp, 10000;
-
-// different idea: wolf ambushs on 034-1
-//TODO set @wolfdrop, ;
-//TODO set @wolf_exp, ;
+// TODO: determine values:
+ set @wolvern_level, 40; // minimum level to do the wolvern hunting
+ set @wolvern_amount, 10; // number of script spawned wolverns to kill
+ set @wolvern_exp, 5000;
set @minigame_exp, 5000;
if (@state >= 6) goto L_Impressed;
if (@state == 5) goto L_Questions;
- if (@state == 4) goto L_Warrior;
- if (@state == 3) goto L_Sweets;
+ if (@state == 4) goto L_Wolverns;
+ if (@state == 3) goto L_Hunting;
if (@state == 2) goto L_Kimarr;
if (@state == 1) goto L_Fluffy;
@@ -45,62 +40,46 @@ L_Kimarr:
mes "\"But I think, Kimarr has something for you.\"";
close;
-// TODO: decide whether to leave out this part or not
-L_Sweets:
- mes "Birrod speaks with a lowered voice.";
+L_Hunting:
+ if (baselevel < @wolvern_level)
+ goto L_Weak;
mes "[Birrod]";
- mes "\"" + strcharinfo(0) + ", can I ask you for a favor?\"";
+ mes "\"Hello, " + strcharinfo(0) + "! Would you like to prove your hunting skills again?\"";
next;
- mes "\"I noticed those slime things with the funny hats. And they have so tasty stuff with them!\"";
+ mes "\"I noticed some groups of wolverns in the forest west of here which are unusually aggressive.";
+ mes "This makes dangerous to all the small people from the town nearby to go there.\"";
next;
- mes "He blushes.";
- mes "[Birrod]";
- mes "\"A warrior shouldn't get excited about sweets, so ahm, it would be great if you don't tell Yerrnk and Kimarr about it.\"";
+ mes "\"To prove your skills, go to the forest and hunt down " + @wolvern_amount + " of the very aggressive wolverns.\"";
next;
- mes "\"Do you have " + @candy + " Candys, " + @chocolate + " Chocolate Bars and " + @candycane + " Candy Canes for me?\"";
- menu
- "Sure.",-,
- "I'll see what I can do.",L_Close,
- "I'm a great warrior, I don't have sweets with me!",L_Close;
-
- if ((countitem("Candy") < @candy) || (countitem("ChocolateBar") < @chocolate) || (countitem("CandyCane") < @candycane)) goto L_No_Items;
- delitem "Candy", @candy;
- delitem "ChocolateBar", @chocolate;
- delitem "CandyCane", @candycane;
- getexp @sweet_exp, 0;
+ mes "\"There are also some wolverns that behave normally attacking you when you come to close to them.";
+ mes "Those are not the ones I mean, but those that seek the battle themselves.\"";
set @state, 4;
callsub S_Update_Mask;
- mes "[Birrod]";
- mes "\"Thank you!\"";
- mes "He puts the sweets in his pockets covertly.";
- mes "Then takes one candy and eats it with such a delighted look on his face that's really hard not to burst out in laughter.";
close;
-L_Warrior:
-// TODO: player can show his fighting abilities by bringing some drop of wolve monsters
-// different idea: wolf ambushs on 034-1
-// wolve monsters are more dangerous and harder to hunt than fluffies -> harder task
-// reason to hunt them: there unusual aggressive and are a danger for the people living in that area
-// also use of the items the drop (e.g. fur -> clothes)
+L_Wolverns:
+ if (wolvern_count >= @wolvern_amount)
+ goto L_Wolverns_Done;
mes "[Birrod]";
- mes "\"Hello, " + strcharinfo(0) + "! Would you like to prove your hunting skills again?\"";
+ mes "\"Greetings, my friend.";
+ mes "The aggressive wolverns are still roaming the forest west of here.\"";
next;
-// TODO: check name of monster
- mes "\"I noticed many wolverns in this area. When there are so many of them, they reduce the fluffy population too much.";
- mes "Also they are dangerous to all the small people who live in the town nearby.\"";
- next;
- mes "\"Bring me (amount) (TODO:drop of wolvern).";
- mes "alternative: hunt (amount) of the aggressive wolverns in forest in the west.";
- mes "TODO: add story about what useful can be done with that drop.";
- menu
- "Debug succes",-,
- "Debug no succes",L_Close;
+ mes "\"This is your chance to prove your worth.\"";
+ close;
+
+L_Wolverns_Done:
set @state, 5;
callsub S_Update_Mask;
- if (getskilllv(SKILL_POOL) == 0) goto L_Not_Ready;
+ set wolvern_count, 0;
mes "[Birrod]";
+ mes "\"" + strcharinfo(0) + "!";
+ mes "Good work. Now this area is much safer.\"";
+ next;
+ getexp @wolvern_exp, 0;
+ if (getskilllv(SKILL_POOL) == 0) goto L_Not_Ready;
mes "\"Your skills are impressing. You are worthy to be called a warrior of the Mangarr, if you accept.\"";
next;
+ goto L_Questions;
L_Questions:
if (getskilllv(SKILL_POOL) == 0) goto L_Not_Ready;
@@ -251,7 +230,13 @@ L_No_Member:
mes "Come back when you feel better prepared.\"";
close;
+L_Weak:
+ mes "[Birrod]";
+ mes "\"Hello, " + strcharinfo(0) + "! I might have a task for you when you've grown up a bit.\"";
+ close;
+
L_Close:
+ // TODO: set all variables to 0
close;
S_Update_Mask:
diff --git a/world/map/npc/033-1/debug.txt b/world/map/npc/033-1/debug.txt
index 7db90195..fcf79d3d 100644
--- a/world/map/npc/033-1/debug.txt
+++ b/world/map/npc/033-1/debug.txt
@@ -5,12 +5,20 @@
menu
"Reset all records", -,
"Reset quest",L_Reset,
+ "Set Fluffy Hunting done", L_Fluffy,
"Close", L_Close;
cleararray $Record_Fluffy_Kills, 0, MAX_HIGH_SCORES;
cleararray $Record_Fluffy_Name$, "", MAX_HIGH_SCORES;
cleararray $Record_Fluffy_Date$, "", MAX_HIGH_SCORES;
+L_Fluffy:
+ set @Q_Barbarians_MASK, NIBBLE_0_MASK;
+ set @Q_Barbarians_SHIFT, NIBBLE_0_SHIFT;
+ set @state, 3;
+ callsub S_Update_Mask;
+ close;
+
L_Reset:
set @Q_Barbarians_MASK, NIBBLE_0_MASK;
set @Q_Barbarians_SHIFT, NIBBLE_0_SHIFT;
diff --git a/world/map/npc/033-1/yerrnk.txt b/world/map/npc/033-1/yerrnk.txt
index a474a759..4e13a169 100644
--- a/world/map/npc/033-1/yerrnk.txt
+++ b/world/map/npc/033-1/yerrnk.txt
@@ -50,6 +50,8 @@ L_Sorrow:
mes "\"I noticed that you're getting along with Kimarr and Birrod very well. That's good.\"";
mes "He smiles, but then an expression of worry gets back to his face.";
next;
+
+L_Mission:
mes "[Yerrnk]";
mes "\"Our tribe is going through dire straits. We used to live in harmony with the mountain ever since.";
mes "Life is hard in the snowy mountains, but this life suits our nature.\"";
@@ -71,14 +73,21 @@ L_Birrod:
mes "[Yerrnk]";
mes "\"" + strcharinfo(0) + ", I have to admit that I'm surprised by your skills.";
mes "You've proved your braveness and strength.\"";
+ next;
if (getskilllv(SKILL_POOL) == 0) goto L_Not_Ready;
mes "\"Please talk to Birrod to receive the initiation ritual to become a warrior of the Mangarr.\"";
+ menu
+ "Alright.",-,
+ "Can you tell me again what are you here for?",L_Mission;
close;
L_Not_Ready:
mes "[Yerrnk]";
mes "\"But you're not yet ready to become a fully accepted warrior of our tribe.";
mes "You should travel the world to gain the ability to focus on your inner strength.\"";
+ menu
+ "Alright.",-,
+ "What are you doing down here?",L_Mission;
close;
L_Warrior:
diff --git a/world/map/npc/034-1/_import.txt b/world/map/npc/034-1/_import.txt
index e4b39026..e88cbd7a 100644
--- a/world/map/npc/034-1/_import.txt
+++ b/world/map/npc/034-1/_import.txt
@@ -3,3 +3,4 @@
map: 034-1.gat
npc: npc/034-1/_mobs.txt
npc: npc/034-1/_warps.txt
+npc: npc/034-1/ambushs.txt
diff --git a/world/map/npc/034-1/ambushs.txt b/world/map/npc/034-1/ambushs.txt
new file mode 100644
index 00000000..ff01993b
--- /dev/null
+++ b/world/map/npc/034-1/ambushs.txt
@@ -0,0 +1,95 @@
+// This file belongs to the wolvern hunting quest given by 033-1/birrod.txt
+// Author: Jenalya
+// TODO: add more ambushs all over the map
+
+034-1.gat,118,59,0|script|#Ambush0Trigger|45,1,1,{
+ set @Q_Barbarians_MASK, NIBBLE_0_MASK;
+ set @Q_Barbarians_SHIFT, NIBBLE_0_SHIFT;
+ set @state, ((QUEST_Barbarians & @Q_Barbarians_MASK) >> @Q_Barbarians_SHIFT);
+ if (@state != 4)
+ end;
+ if (rand(50) > wolvern_count) // TODO: eventally use different argument for rand
+ end;
+ set $@Ambush0VictimID, getcharid(3);
+ if ($@Ambush0_Active != 0)
+ end;
+ set $@Ambush0_Active, 1;
+ donpcevent "#Ambush0::OnAmbush";
+ end;
+}
+
+034-1.gat,119,60,0|script|#Ambush0|45,{
+end;
+
+OnAmbush:
+ attachrid($@Ambush0VictimID);
+ set @wolvern_amount, 10; // has to be same value as in birrod.txt
+ set $@Ambush0_Spawn, 4 + rand(3);
+ message strcharinfo(0), "An ambush!";
+ areamonster "034-1.gat", 113, 55, 122, 63, "", 1089, $@Ambush0_Spawn, "#Ambush0::OnWolvernDeath";
+ set $@Ambush0VictimID, 0;
+ end;
+
+OnWolvernDeath:
+ set @MobID, 1089; // TODO: adapt
+
+ set @Q_Barbarians_MASK, NIBBLE_0_MASK;
+ set @Q_Barbarians_SHIFT, NIBBLE_0_SHIFT;
+ set @state, ((QUEST_Barbarians & @Q_Barbarians_MASK) >> @Q_Barbarians_SHIFT);
+ if (@state == 4)
+ set wolvern_count, wolvern_count + 1;
+
+ set $@Ambush0_Spawn, $@Ambush0_Spawn - 1;
+ if ($@Ambush0_Spawn == 0)
+ set $@Ambush0_Active, 0;
+
+ if (wolvern_count >= @wolvern_amount)
+ message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
+ end;
+}
+
+034-1.gat,94,91,0|script|#Ambush1Trigger|45,1,1,{
+ set @Q_Barbarians_MASK, NIBBLE_0_MASK;
+ set @Q_Barbarians_SHIFT, NIBBLE_0_SHIFT;
+ set @state, ((QUEST_Barbarians & @Q_Barbarians_MASK) >> @Q_Barbarians_SHIFT);
+ if (@state != 4)
+ end;
+ if (rand(50) > wolvern_count)
+ end;
+ set $@Ambush1VictimID, getcharid(3);
+ if ($@Ambush1_Active != 0)
+ end;
+ set $@Ambush1_Active, 1;
+ donpcevent "#Ambush1::OnAmbush";
+ end;
+}
+
+034-1.gat,94,92,0|script|#Ambush1|45,{
+end;
+
+OnAmbush:
+ attachrid($@Ambush1VictimID);
+ set @wolvern_amount, 10; // has to be same value as in birrod.txt
+ set $@Ambush1_Spawn, 4 + rand(3);
+ message strcharinfo(0), "An ambush!";
+ areamonster "034-1.gat", 91, 89, 98, 94, "", 1089, $@Ambush1_Spawn, "#Ambush1::OnWolvernDeath";
+ set $@Ambush1VictimID, 0;
+ end;
+
+OnWolvernDeath:
+ set @MobID, 1089; // TODO: adapt
+
+ set @Q_Barbarians_MASK, NIBBLE_0_MASK;
+ set @Q_Barbarians_SHIFT, NIBBLE_0_SHIFT;
+ set @state, ((QUEST_Barbarians & @Q_Barbarians_MASK) >> @Q_Barbarians_SHIFT);
+ if (@state == 4)
+ set wolvern_count, wolvern_count + 1;
+
+ set $@Ambush1_Spawn, $@Ambush1_Spawn - 1;
+ if ($@Ambush1_Spawn == 0)
+ set $@Ambush1_Active, 0;
+
+ if (wolvern_count >= @wolvern_amount)
+ message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
+ end;
+}