diff options
Diffstat (limited to 'world')
-rw-r--r-- | world/map/npc/033-1/birrod.txt | 91 | ||||
-rw-r--r-- | world/map/npc/033-1/debug.txt | 8 | ||||
-rw-r--r-- | world/map/npc/033-1/yerrnk.txt | 9 | ||||
-rw-r--r-- | world/map/npc/034-1/_import.txt | 1 | ||||
-rw-r--r-- | world/map/npc/034-1/ambushs.txt | 95 |
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; +} |