summaryrefslogtreecommitdiff
path: root/npc/002-1/peter.txt
diff options
context:
space:
mode:
authorSaulc <lucashelaine14@gmail.com>2018-02-06 21:09:35 +0100
committerSaulc <lucashelaine14@gmail.com>2018-02-06 21:09:35 +0100
commitf127d9cc42a1a1431dff8ca39d7d3f515216d1a2 (patch)
tree94b8a3f4716d99259c5f2e37bac741b1762b81fe /npc/002-1/peter.txt
parentb3bf92fd561ef1a9514841817c94b1060dc7063b (diff)
downloadserverdata-f127d9cc42a1a1431dff8ca39d7d3f515216d1a2.tar.gz
serverdata-f127d9cc42a1a1431dff8ca39d7d3f515216d1a2.tar.bz2
serverdata-f127d9cc42a1a1431dff8ca39d7d3f515216d1a2.tar.xz
serverdata-f127d9cc42a1a1431dff8ca39d7d3f515216d1a2.zip
add npc's on 002-1
Diffstat (limited to 'npc/002-1/peter.txt')
-rw-r--r--npc/002-1/peter.txt339
1 files changed, 339 insertions, 0 deletions
diff --git a/npc/002-1/peter.txt b/npc/002-1/peter.txt
new file mode 100644
index 000000000..fc91e943e
--- /dev/null
+++ b/npc/002-1/peter.txt
@@ -0,0 +1,339 @@
+// Evol scripts.
+// Authors:
+// 4144
+// Ablu
+// Alastrim
+// Qwerty Dragon
+// Reid
+// Vasily_Makarov
+// Description:
+// Rat hunter.
+// 4+2 bits array:
+// ShipQuests
+// Variable:
+// ShipQuests_Peter
+// Values:
+// 0 Doesn't know the quest.
+// 1 Task given.
+// 2 Task given and reward expected.
+// 3 Task completed without reward.
+// 4 Asked for reward after completion of the task.
+// 5 Task done and reward given.
+// 6 Did not start the quest.
+// Others:
+// .@peter = Peter variable.
+// "002-2" - map with mobs.
+// "$@RAT_SAILOR_HELPER$" - Name of the participant.
+// "$@RAT_SAILOR_DEATHS - Number of deaths when the participant starts the fight.
+// "$@RAT_SAILOR_CONTROL" - Explanation of each index of the array.
+// "$@RAT_SAILOR_OLD_HELPER$" - Name of the participant.
+// "$@RAT_SAILOR_COUNTDOWN" - Seconds since the epoch of when the player done the quest.
+// [1] = Shows status of ratto number 1 (1 is dead and 0 is alive).
+// [2] = Shows status of ratto number 2 (1 is dead and 0 is alive).
+// [3] = Shows status of ratto number 3 (1 is dead and 0 is alive).
+// [4] = Shows status of ratto number 4 (1 is dead and 0 is alive).
+// [5] = Shows how many seconds passed since ratto number 1 died.
+// [6] = Shows how many seconds passed since ratto number 2 died.
+// [7] = Shows how many seconds passed since ratto number 3 died.
+// [8] = Shows how many seconds passed since ratto number 4 died.
+// [9] = Shows how many seconds passed since the player started the quest.
+// [10] = Shows how many seconds passed since the player done the quest.
+
+002-1,72,34,0 script AreaNPC NPC_HIDDEN,0,1,{
+
+OnTouch:
+ if (BaseLevel < 5) goto L_Stop;
+ if ($@RAT_SAILOR_COUNTDOWN == 0) goto L_NoCountDown;
+ if ((gettimetick(2) - $@RAT_SAILOR_COUNTDOWN) < 10) goto L_NoGoodTick;
+ if (($@RAT_SAILOR_OLD_HELPER$ == strcharinfo(0)) && ((gettimetick(2) - $@RAT_SAILOR_COUNTDOWN) < 60)) goto L_NoGoodTick;
+ $@RAT_SAILOR_COUNTDOWN = 0;
+
+L_NoCountDown:
+ if ($@RAT_SAILOR_HELPER$ != "") goto L_Occupied;
+ .@peter = getq(ShipQuests_Peter);
+ if (.@peter < 1 || .@peter > 5) goto L_Task;
+ if (.@peter == 1 || .@peter == 2) goto L_Rfail;
+ if (.@peter == 3 || .@peter == 4) goto L_Rwin;
+ if (.@peter > 5) goto L_SecondTime;
+ doevent "Peter::OnReturnWin";
+ close;
+
+L_Stop:
+ doevent "Peter::OnStop";
+
+ close;
+
+L_Occupied:
+ doevent "Peter::OnDontneedHelp";
+
+ close;
+
+L_Task:
+ doevent "Peter::OnGiveTask";
+
+ close;
+
+L_Rfail:
+ doevent "Peter::OnReturnFail";
+
+ close;
+
+L_Rwin:
+ doevent "Peter::OnReturnWin";
+
+ close;
+
+L_NoGoodTick:
+ doevent "Peter::OnNoGoodTick";
+
+ close;
+}
+
+002-1,70,35,0 script Peter NPC_RATTO_SAILOR,{
+ if (BaseLevel < 5) goto OnTooWeak;
+ if ($@RAT_SAILOR_COUNTDOWN == 0) goto L_NoCountDown;
+ if ((gettimetick(2) - $@RAT_SAILOR_COUNTDOWN) < 10) goto OnNoGoodTick;
+ if (($@RAT_SAILOR_OLD_HELPER$ == strcharinfo(0)) && ((gettimetick(2) - $@RAT_SAILOR_COUNTDOWN) < 60)) goto OnNoGoodTick;
+ $@RAT_SAILOR_COUNTDOWN = 0;
+
+L_NoCountDown:
+ .@peter = getq(ShipQuests_Peter);
+ if (.@peter == 1 || .@peter == 2) goto OnReturnFail;
+ if (.@peter == 3 || .@peter == 4 || .@peter == 5) goto OnReturnWin;
+
+OnGiveTask:
+ setq ShipQuests_Peter, 6;
+ .@peter = getq(ShipQuests_Peter);
+ mesn;
+ mesq lg("Hey, girl!", "Hey, man!");
+ next;
+ mesq l("I need somebody who can rid the hold of the ship of these rattos. Can you help me?");
+ next;
+
+ menu
+ l("Yeah, but what reward will I get?"), L_BonusTask,
+ l("Why not, I need to train anyway."), L_Task,
+ l("No, they are way too dangerous for me!"), -;
+
+ mes "";
+ mesn;
+ mesq l("Hehe, hehe. Well, come back if you change your mind.");
+
+ goto L_Quit;
+
+OnTooWeak:
+ mesn;
+ mesq lg("I need someone to help me clean the edge of the ship, but you aren't strong enough for now.");
+
+ goto L_Quit;
+
+OnStop:
+ warp "002-1", 72, 36;
+
+ mesn;
+ mesq l("You can't go there!");
+
+ close;
+
+OnReturnFail:
+ mesn;
+ mesq l("I see it's not so easy to get rid of these rattos. Do you want to try again?");
+ next;
+
+ menu
+ l("Yeah, but I would like to make sure I get a reward."), L_BonusTask,
+ l("Why not, I need to train anyway."), L_Task,
+ l("No, they are way too dangerous for me!"), -;
+
+ mes "";
+ mesn;
+ mesq l("Hehe, hehe. Well, come back if you change your mind.");
+
+ goto L_Quit;
+
+OnReturnWin:
+ .@peter = getq(ShipQuests_Peter);
+ mesn;
+ mesq l("Thanks again for helping me. Drats these rattos for infesting our fair vessal!");
+ next;
+ mesq l("They are a permanent problem so I will always need your help to exterminate them in order to keep their number under control.");
+ next;
+ mesq l("Your help is very welcome indeed. Unfortunately, I can give you a reward for the first extermination only.");
+ next;
+
+ if (.@peter == 3 || .@peter == 4)
+ menu
+ l("Did you say reward? I want it!"), L_BonusTask,
+ l("I am not worried about rewards. I just want to help."), L_Task,
+ l("Sorry, I am not in the mood for another fight with these rattos."), -;
+
+ if (.@peter == 5)
+ menu
+ l("No problem, I can help you anyway."), L_Task,
+ l("Sorry, I am not in the mood for another fight with these rattos."), -;
+
+ mes "";
+ mesn;
+ mesq l("Hehe, hehe. Well, come back if you change your mind.");
+
+ close;
+
+L_BonusTask:
+ mes "";
+ mesn;
+ mesq l("What if I give you 1000 Esperin for that job, is it ok?");
+ next;
+
+ menu
+ lg("Okay, I'm ready to work!"), -,
+ l("What? This reward is too small!"), L_Quit;
+
+ .@peter = getq(ShipQuests_Peter);
+ if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
+ if (.@peter == 6) setq ShipQuests_Peter, 2;
+ if (.@peter == 3) setq ShipQuests_Peter, 4;
+ .@peter = getq(ShipQuests_Peter);
+ goto L_Start;
+
+L_Task:
+ .@peter = getq(ShipQuests_Peter);
+ if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
+ if (.@peter == 6) setq ShipQuests_Peter, 1;
+ .@peter = getq(ShipQuests_Peter);
+
+L_Start:
+ mes "";
+ mesn;
+ mesq l("Okay, you can start!");
+
+OnStartOutside:
+ if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
+ $@RAT_SAILOR_HELPER$ = strcharinfo(0);
+ $@RAT_SAILOR_DEATHS = PC_DIE_COUNTER;
+ initnpctimer;
+ warp "000-2-2", 48, 28;
+ doevent "RattosControl::OnSpawn";
+
+ goto L_Quit;
+
+OnTimer2000:
+ if (attachrid(getcharid(3, $@RAT_SAILOR_HELPER$)) == 0) goto L_Logoff;
+ $@RAT_SAILOR_CONTROL[9] = $@RAT_SAILOR_CONTROL[9] + 2;
+ if ($@RAT_SAILOR_CONTROL[9] > 100) goto L_Timeout;
+ if (PC_DIE_COUNTER > $@RAT_SAILOR_DEATHS) goto L_Dead;
+ if ($@RAT_SAILOR_CONTROL[1] && $@RAT_SAILOR_CONTROL[2] && $@RAT_SAILOR_CONTROL[3] && $@RAT_SAILOR_CONTROL[4]) goto L_Done;
+ if (getmapusers("000-2-2") == 0) goto L_CleaningEnd;
+ goto L_CheckRattos;
+
+ end;
+
+L_CheckRattos:
+ if ($@RAT_SAILOR_CONTROL[1]) $@RAT_SAILOR_CONTROL[5] = $@RAT_SAILOR_CONTROL[5] + 2;
+ if ($@RAT_SAILOR_CONTROL[2]) $@RAT_SAILOR_CONTROL[6] = $@RAT_SAILOR_CONTROL[6] + 2;
+ if ($@RAT_SAILOR_CONTROL[3]) $@RAT_SAILOR_CONTROL[7] = $@RAT_SAILOR_CONTROL[7] + 2;
+ if ($@RAT_SAILOR_CONTROL[4]) $@RAT_SAILOR_CONTROL[8] = $@RAT_SAILOR_CONTROL[8] + 2;
+ if ($@RAT_SAILOR_CONTROL[5] > 45) doevent "RattosControl::OnRatto1Respawn";
+ if ($@RAT_SAILOR_CONTROL[6] > 45) doevent "RattosControl::OnRatto2Respawn";
+ if ($@RAT_SAILOR_CONTROL[7] > 45) doevent "RattosControl::OnRatto3Respawn";
+ if ($@RAT_SAILOR_CONTROL[8] > 45) doevent "RattosControl::OnRatto4Respawn";
+
+L_NotYet:
+ setnpctimer 0;
+
+ end;
+
+OnDontneedHelp:
+ mesn;
+ mesq l("I don't need your help right now, come back later.");
+ next;
+ mesq l("@@ is helping me.", $@RAT_SAILOR_HELPER$);
+
+ goto L_Quit;
+
+L_Timeout:
+ mesn;
+ mesq l("Hey! Be careful. You can't stay in this basement for so long, you're going to get sick. Come outside and take a break, maybe you can try again later.");
+ warp "000-2-1", 72, 36;
+
+ goto L_CleaningClose;
+
+L_Logoff:
+ goto L_CleaningEnd;
+
+L_Dead:
+// Warps the dead body outside, so it does not interfere with the getmapusers check.
+ if (getmapusers("002-2") > 0) warp "002-1", 72, 36;
+
+ goto L_CleaningEnd;
+
+L_Done:
+ $@RAT_SAILOR_CONTROL[10] = $@RAT_SAILOR_CONTROL[10] + 2;
+ if($@RAT_SAILOR_CONTROL[10] < 5) goto L_NotYet;
+ .@peter = getq(ShipQuests_Peter);
+ if (.@peter == 2 || .@peter == 4) goto L_Reward;
+ warp "000-2-1", 72, 36;
+
+ goto L_Thanks;
+
+L_CleaningEnd:
+ stopnpctimer;
+ $@RAT_SAILOR_HELPER$ = "";
+ $@RAT_SAILOR_DEATHS = 0;
+ cleararray $@RAT_SAILOR_CONTROL, 0, 11;
+ killmonster "000-2-2", "RattosControl::OnRatto1Death";
+ killmonster "000-2-2", "RattosControl::OnRatto2Death";
+ killmonster "000-2-2", "RattosControl::OnRatto3Death";
+ killmonster "000-2-2", "RattosControl::OnRatto4Death";
+
+ end;
+
+L_CleaningClose:
+ stopnpctimer;
+ $@RAT_SAILOR_OLD_HELPER$ = $@RAT_SAILOR_HELPER$;
+ $@RAT_SAILOR_HELPER$ = "";
+ $@RAT_SAILOR_DEATHS = 0;
+ cleararray $@RAT_SAILOR_CONTROL, 0, 11;
+ killmonster "000-2-2", "RattosControl::OnRatto1Death";
+ killmonster "000-2-2", "RattosControl::OnRatto2Death";
+ killmonster "000-2-2", "RattosControl::OnRatto3Death";
+ killmonster "000-2-2", "RattosControl::OnRatto4Death";
+ $@RAT_SAILOR_COUNTDOWN = gettimetick(2);
+
+ close;
+
+L_Reward:
+ warp "002-1", 72, 36;
+ setq ShipQuests_Peter, 5;
+ .@peter = getq(ShipQuests_Peter);
+ mesn;
+ mesq l("Good job!") + " " + l("Here's your reward!");
+ getexp 100, 0;
+ Zeny = Zeny + 1000;
+ message strcharinfo(0), l("You receive @@ E!", 1000);
+
+ goto L_CleaningClose;
+
+L_Thanks:
+ mesn;
+ mesq l("Thanks for helping me!");
+ .@peter = getq(ShipQuests_Peter);
+ if (.@peter == 1) setq ShipQuests_Peter, 3;
+ .@peter = getq(ShipQuests_Peter);
+
+ goto L_CleaningClose;
+
+L_Quit:
+ .@peter = 0;
+
+ close;
+
+OnNoGoodTick:
+ mesn;
+ mesq l("I don't need your help right now, come back later.");
+ close;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 3;
+ end;
+}