diff options
Diffstat (limited to 'world/map/npc')
-rw-r--r-- | world/map/npc/033-1/yerrnk.txt | 100 | ||||
-rw-r--r-- | world/map/npc/034-1/_import.txt | 1 | ||||
-rw-r--r-- | world/map/npc/034-1/yetiSpawn.txt | 56 |
3 files changed, 146 insertions, 11 deletions
diff --git a/world/map/npc/033-1/yerrnk.txt b/world/map/npc/033-1/yerrnk.txt index 4e13a169..dfdfb4da 100644 --- a/world/map/npc/033-1/yerrnk.txt +++ b/world/map/npc/033-1/yerrnk.txt @@ -1,10 +1,14 @@ 033-1.gat,66,28,0|script|Yerrnk|216,{ -//TODO: minimum level for quests? set @Q_Barbarians_MASK, NIBBLE_0_MASK; set @Q_Barbarians_SHIFT, NIBBLE_0_SHIFT; set @state, ((QUEST_Barbarians & @Q_Barbarians_MASK) >> @Q_Barbarians_SHIFT); + set @yeti_level, 70; + + if (@state == 9) goto L_Done; + if (@state == 8) goto L_Yeti_Success; + if (@state == 7) goto L_Hunt_Yeti; if (@state == 6) goto L_Warrior; if (@state == 5) goto L_Birrod; if (@state == 4) goto L_Sorrow; @@ -18,7 +22,7 @@ mes "Yerrnk looks at you in a reserved way."; mes "[Yerrnk]"; mes "\"Please take care of your own business.\""; - close; + goto L_Close; L_Fluffy: mes "[Yerrnk]"; @@ -27,12 +31,12 @@ L_Fluffy: next; mes "[Yerrnk]"; mes "\"Are you going to accept Kimarr's task? It's an ancient ceremony in our tribe. A young member is accepted as an adult when completing it.\""; - close; + goto L_Close; L_Kimarr: mes "[Yerrnk]"; mes "\"I think Kimarr wants to give you something.\""; - close; + goto L_Close; L_Duty: mes "[Yerrnk]"; @@ -43,7 +47,7 @@ L_Duty: mes "\"So you'll have to obey our laws and traditiones, protect and help any member of our tribe that is in need and never show weakness nor fear in battle.\""; next; mes "\"Keep this in mind. If you fail you'll have to recieve the elders judgement.\""; - close; + goto L_Close; L_Sorrow: mes "[Yerrnk]"; @@ -67,7 +71,7 @@ L_Mission: next; mes "\"That's why we were sent on a mission to find and talk to Santa, one of the Sages of Kazei."; mes "The Sages are wizards of great power and wisdom, and we hope Santa might be able to give us advice.\""; - close; + goto L_Close; L_Birrod: mes "[Yerrnk]"; @@ -79,7 +83,7 @@ L_Birrod: menu "Alright.",-, "Can you tell me again what are you here for?",L_Mission; - close; + goto L_Close; L_Not_Ready: mes "[Yerrnk]"; @@ -88,12 +92,86 @@ L_Not_Ready: menu "Alright.",-, "What are you doing down here?",L_Mission; - close; + goto L_Close; L_Warrior: -//TODO: player is now fully accepted warrior of the tribe, gets a task: bring yeti claws -// reason: claws can be used to craft spears which are effective to use against the yetis - mes "TODO: add story about bringing yeti claw (probably final quest)"; + mes "[Yerrnk]"; + mes "\"" + strcharinfo(0) + ", welcome back!"; + mes "Do you have any question?\""; + menu + "Everything's alright, thanks.",-, + "What are you doing down here?",L_Mission, + "Can you explain the raging ability to me?",L_Skill, + "Do you have a task for me?",L_Task; + goto L_Close; + +L_Skill: + mes "[Yerrnk]"; + mes "\"As a warrior of our tribe it should be the most important thing to you to defend weaker members of the tribe."; + mes "To achieve this goal our warriors are training the skill to stand the pain of being hit and even use it to get into a state of rage."; + next; + mes "It only works in a melee fight, when you hear your opponent gasping, smell his sweat, feel the heat of his body, -\""; + next; + mes "Yerrnk gets excited, then he pauses a moment calming down."; + mes "\"Basically its a neglect of your own defense but therefor being able to hit the enemy with outstanding might.\""; + next; + mes "[Yerrnk]"; + mes "\"You can imagine that this comprises some danger. That's why we usually fight as a group, so a weakened warrior can step back and recover while the others keep the fight."; + mes "It's also beneficial to have a healer, but very few members of our tribe are born with the capability to wield magic.\""; + goto L_Close; + +L_Task: + if (baselevel >= @yeti_level) + goto L_Yeti; + mes "[Yerrnk]"; + mes "\"Not at the moment."; + mes "Try to stop by later and use the time to practice your abilities.\""; + goto L_Close; + +L_Yeti: + mes "[Yerrnk]"; + mes "\"Indeed, there's something to do that needs a competent warrior."; + mes "We've got reports about a single Yeti prowling around one of the houses in the woods west of here.\""; + next; + mes "\"If you dare to take on this task, seek that Yeti and make the area secure again."; + mes "To find the house, enter the forest and then go first south and then west.\""; + set @state, 7; + callsub S_Update_Mask; + goto L_Close; + +L_Hunt_Yeti: + mes "[Yerrnk]"; + mes "\"That Yeti is still roaming in the forest west of here."; + mes "To find the house it's prowling around, enter the forest and then go first south and then west.\""; + menu + "I'm on it.",-, + "What are you doing down here?",L_Mission, + "Can you explain the raging ability to me?",L_Skill; + goto L_Close; + +L_Yeti_Success: + mes "[Yerrnk]"; + mes "\"" + strcharinfo(0) + "! You made it!"; + mes "You proved that you're one of the most skilled warriors of our tribe.\""; + next; + mes "TODO: add reward here, maybe leather pants?"; + set @state, 9; + callsub S_Update_Mask; + goto L_Close; + +L_Done: +// TODO: maybe add background informations about barbarian village here + mes "Yerrnk smiles at you."; + mes "[Yerrnk]"; + mes "\"Welcome back, great warrior.\""; + menu + "What's the reason you came here?",L_Mission, + "Can you explain the raging ability to me?",L_Skill; + goto L_Close; + +L_Close: + // TODO: set all temporary variables to zero + set @yeti_level, 0; close; S_Update_Mask: diff --git a/world/map/npc/034-1/_import.txt b/world/map/npc/034-1/_import.txt index 79870598..395e6af7 100644 --- a/world/map/npc/034-1/_import.txt +++ b/world/map/npc/034-1/_import.txt @@ -4,3 +4,4 @@ map: 034-1.gat npc: npc/034-1/_mobs.txt npc: npc/034-1/_warps.txt npc: npc/034-1/ambushs.txt +npc: npc/034-1/yetiSpawn.txt diff --git a/world/map/npc/034-1/yetiSpawn.txt b/world/map/npc/034-1/yetiSpawn.txt new file mode 100644 index 00000000..db8f3bc2 --- /dev/null +++ b/world/map/npc/034-1/yetiSpawn.txt @@ -0,0 +1,56 @@ +// This file belongs to the yeti hunting quest given by 033-1/yerrnk.txt +// Author: Jenalya + +034-1.gat,79,98,0|script|#Yerrnk_YetiTrigger|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 != 7) + end; + + if ($@Yerrnk_Yeti_Active != 0) + end; + set $@Yerrnk_Yetifighter_ID, getcharid(3); + set $@Yerrnk_Yeti_Active, 1; + donpcevent "#Yerrnk_Yeti::OnYeti"; + end; +} + +034-1.gat,78,98,0|script|#Yerrnk_Yeti|45,{ +end; + +OnYeti: + if (attachrid($@Yerrnk_Yetifighter_ID) == 0) + goto L_Abort; + + message strcharinfo(0), "There is the Yeti!"; + areamonster "034-1.gat", 67, 93, 74, 102, "", 1072, 1, "#Yerrnk_Yeti::OnYetiDeath"; + end; + +L_Abort: + set $@Yerrnk_Yeti_Active, 0; + set $@Yerrnk_Yetifighter_ID, 0; + end; + +OnYetiDeath: + set @MobID, 1072; + + 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 != 7) + end; + set @state, 8; + callsub S_Update_Mask; + message strcharinfo(0), "You defeated the Yeti."; + + set $@Yerrnk_Yeti_Active, 0; + set $@Yerrnk_Yetifighter_ID, 0; + end; + +S_Update_Mask: + set QUEST_Barbarians, + (QUEST_Barbarians & ~(@Q_Barbarians_MASK)) + | (@state << @Q_Barbarians_SHIFT); + return; +} |