summaryrefslogtreecommitdiff
path: root/world/map/npc/011-1/oscar.txt
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/011-1/oscar.txt')
-rw-r--r--world/map/npc/011-1/oscar.txt514
1 files changed, 0 insertions, 514 deletions
diff --git a/world/map/npc/011-1/oscar.txt b/world/map/npc/011-1/oscar.txt
deleted file mode 100644
index ad088eff..00000000
--- a/world/map/npc/011-1/oscar.txt
+++ /dev/null
@@ -1,514 +0,0 @@
-//############################################################################
-//# #
-//# Halloween seasonal #
-//# #
-//############################################################################
-
-// Annual_Quest variable:
-// This variable contains 4 bytes that are used to check if a player
-// completed or not an annual quest. The first byte will be used by this
-// after-Halloween event.
-// Each byte contains the value "year minus 2000" where year is the next year
-// when the player can start over the annual quest.
-// Be sure to not have a quest whose duration overlaps on two years,
-// or this will cause problems.
-
-// The second byte contains easter information, see annualeaster.txt for more information.
-
-// Halloween quest states:
-// 0: nothing started
-// 1: the player knows the story and is asked to go find pumpkin seeds in the forest
-// 2: the player gathered enough seeds
-// 3: the player gave the pumpkin seeds and can now help the farmer to grow them
-// the player can chose that the pumpkins patches will be watered by kaflosh (requires Nature Magic lvl 2), -> jumps to 5
-// 4: the player is asked to go refill water bottles
-// 5: various possible states here: the water bottles are refilled and the pumpkin spawns will start right away.
-// the player will start by kafloshing ($@HalloweenQuest_PumpkinHunter$ == "")
-// 5 + $@HalloweenQuest_PumpkinHunter$ != "":* the player watered the patches (by kaflosh, or the farmer did). Pumpkins spawn.
-// 6: the player saved the farmer from the pumpkin invasion (all pumpkins / mobs killed)
-// 10: the player failed to save the farmer from the pumpkin invasion (player left the map, died -- logging off is allowed however)
-
-function|script|HalloweenQuestWaterPumpkins
-{
- if (Quest_Halloween != 5 || $@HalloweenQuest_PumpkinHunter$ != "")
- goto L_Return;
- set $@HalloweenQuest_PumpkinHunter$, strcharinfo(0);
- donpcevent "Oscar::OnCommandSpg";
- goto L_Return;
-
-L_Return:
- return;
-}
-
-011-1,94,38,0|script|Oscar|142
-{
- // Check we are at the good time of the year
- if (!(gettime(6) == 11 && (gettime(5) >= 4 && gettime(5) <= 30))) goto L_NoEvent;
- // Check halloween quest has been done or not.
- set @halloween_year, (Annual_Quest & BYTE_0_MASK) >> BYTE_0_SHIFT;
- if (@halloween_year < (gettime(7) - 2000)) goto L_AdjustYear;
- goto L_Init;
-
-L_AdjustYear:
- set Quest_Halloween, 0;
- set @halloween_year, gettime(7) - 2000;
- callsub S_Update_Annual_Quest;
- goto L_Init;
-
-L_NoEvent:
- mes "[Oscar]";
- mes "\"Welcome here!";
- mes "I'm the owner of this farm. I'm growing fruits around here as you can see.\"";
- next;
- mes "\"Some of my fruits are for sale in my shop right here.";
- mes "Don't hesitate to drop by. They are cheap!\"";
- close;
-
-L_Init:
- if (@halloween_year == (gettime(7) - 2000) + 1) goto L_QuestAlreadyDone;
- if (Quest_Halloween == 0) goto L_Introduce;
- if (Quest_Halloween == 1 || Quest_Halloween == 2) goto L_CheckSeeds;
- if (Quest_Halloween == 3) goto L_HelpGrowSeeds;
- if (Quest_Halloween == 4) goto L_HelpFillWaters;
- if (Quest_Halloween == 5 && $@HalloweenQuest_PumpkinHunter$ == "") goto L_HelpWaterPatches;
- if (Quest_Halloween == 5 && $@HalloweenQuest_PumpkinHunter$ == strcharinfo(0)) goto L_HelpCleanPumpkins;
- if (Quest_Halloween == 5 && $@HalloweenQuest_PumpkinHunter$ != "") goto L_WateringBusy;
- if (Quest_Halloween == 6) goto L_GetReward;
- if (Quest_Halloween == 10) goto L_GetSlap;
- goto L_End;
-
-L_Introduce:
- mes "[Oscar]";
- mes "\"Heya!\"";
- next;
- mes "\"I just came back from a long trip... Really tiring, but so interesting.\"";
- menu
- "Oh? Where did you go?", L_Next,
- "Well... I believe.", L_End;
-
-L_Next:
- mes "[Oscar]";
- mes "\"Well, I travelled to the economic center of this continent.";
- mes "It's north-east of here. Quite far I must say.\"";
- next;
- mes "\"But it was worth it really.";
- mes "I went there to see ways to improve my little plantation here.";
- mes "Oh well, sell some of my fruits too, see some of my fellow farmers. Classic business.\"";
- next;
- mes "\"Until a few days ago, they were holding a large party to celebrate Halloween.";
- mes "Very nice really... And in particular, I saw these strange veggies they call pumpkins.\"";
- next;
- mes "\"They taste really good you see, but ahah, they weren't really for eating at that moment!";
- mes "Anyway, I wondered if I could grow some here. Until now I only grow apples and oranges.\"";
- menu
- "That's an interesting idea!", L_Next1,
- "Really, I hate pumpkins.", L_End;
-
-L_Next1:
- mes "[Oscar]";
- mes "\"However, I couldn't get any seeds, but I heard rumors in that city, saying we could find pumpkins in the forests north-east of here.";
- mes "Most likely there are pumpkin seeds laying around them.\"";
- next;
- mes "\"They also mentioned something strange about them, but hey, who cares! Just rumors!\"";
- next;
-
- if (BaseLevel < 45)
- goto L_TooYoung;
-
- mes "\"Do you think you can get some for me?\"";
- menu
- "Sure. Leave it to me!", L_Next2,
- "Well, I don't have time for that right now.", L_End;
-
-L_Next2:
- mes "[Oscar]";
- mes "\"Thanks so much " + strcharinfo(0) + "!";
- mes "I can't wait to try them!\"";
- set Quest_Halloween, 1;
- goto L_End;
-
-L_TooYoung:
- mes "\"Ahm... That may be a little dangerous for you though. I don't want to send a kid in the deep forest.\"";
- goto L_End;
-
-L_End:
- set @halloween_year, 0;
- close;
-
-L_CheckSeeds:
- if (countitem("PumpkinSeeds") < $@halloween_num_seeds)
- goto L_NotEnoughSeeds;
- delitem "PumpkinSeeds", $@halloween_num_seeds;
- set Quest_Halloween, 3;
- mes "[Oscar]";
- mes "\"Yes you found them! I can start to make them grow now!";
- mes "Thank you so much " + strcharinfo(0) + "!\"";
- goto L_End;
-
-L_NotEnoughSeeds:
- mes "[Oscar]";
- mes "\"Oh, it looks like you didn't find enough seeds yet...\"";
- goto L_End;
-
-L_HelpGrowSeeds:
- // Wait 20 seconds before triggering the next step.
- if (@halloween_seeds_timer == 0)
- set @halloween_seeds_timer, gettimetick(2);
- if ((gettimetick(2) - @halloween_seeds_timer) < 5)
- goto L_WaitGrowSeeds;
- mes "[Oscar]";
- mes "\"Oh, you are back!\"";
- next;
- mes "You notice Oscar looks quite disappointed.";
- next;
- mes "[Oscar]";
- mes "\"You see I could use some more help from you.";
- mes "My supplies of water are quite low because of the long trip I made.";
- mes "And I've been watering the pumpkin patches, but unfortunately I'm already out of water before I can see anything growing.\"";
- next;
- mes "\"If you could help me fill these " + $@halloween_num_water_bottles + " bottles with water, that would be very kind of you!\"";
-
- set @nature_magic, getskilllv(SKILL_MAGIC_NATURE);
- if (@nature_magic > 1)
- goto L_ProposeUseKaflosh;
- set @nature_magic, 0;
- menu
- "Yeah sure!", L_Next3,
- "That sounds boring to do. No thanks.", L_End;
-
-L_Next3:
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("EmptyBottle") == 0)
- goto L_InventoryFull;
- set @inventorylist_count, 0;
- set Quest_Halloween, 4;
- goto L_GetEmptyBottles;
-
-L_ProposeUseKaflosh:
- set @nature_magic, 0;
- menu
- "Yeah sure!", L_Next4,
- "Maybe I can help you water them with magic!", L_WaterWithKaflosh,
- "That sounds boring to do. No thanks.", L_End;
-
-L_Next4:
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("EmptyBottle") == 0)
- goto L_InventoryFull;
- set Quest_Halloween, 4;
- goto L_GetEmptyBottles;
-
-L_GetEmptyBottles:
- mes "[Oscar]";
- mes "\"Ok, here are the " + $@halloween_num_water_bottles + " empty bottles.\"";
- next;
- mes "\"Oh and while you fill these bottles, why not bring some friends here as well?";
- mes "Let's not be reckless. Maybe these rumors about the pumpkins are true.";
- mes "Oh, unless you consider yourself strong enough to take care of this alone!\"";
- getitem "EmptyBottle", $@halloween_num_water_bottles;
- goto L_End;
-
-L_WaitGrowSeeds:
- mes "[Oscar]";
- mes "\"Thanks again " + strcharinfo(0) + "!";
- mes "I'm planting these seeds right now.\"";
- next;
- mes "\"Stay around if you want to see what it looks like!";
- mes "Amazing I tell you, amazing!\"";
- goto L_End;
-
-L_HelpFillWaters:
- mes "[Oscar]";
- mes "\"Hey, you again!\"";
- next;
- if ($@HalloweenQuest_PumpkinHunter$ != "")
- goto L_WateringBusy;
- mes "\"So do you have the " + $@halloween_num_water_bottles + " bottles filled with fresh water?\"";
- menu
- "Yes! Fresh and clear water.", L_Next5,
- "Oh, not yet. I'm on my way.", L_End;
-
-L_Next5:
- if (countitem("BottleOfWater") < $@halloween_num_water_bottles)
- goto L_NotEnoughWaters;
-
- // make an additional check here, since the player had a dialog pause in the above menu.
- if ($@HalloweenQuest_PumpkinHunter$ != "")
- goto L_WateringBusy;
- delitem "BottleOfWater", $@halloween_num_water_bottles;
-
- mes "[Oscar]";
- mes "\"Many thanks! I wonder what I would have done without you!";
- mes "I'll water the patches right away. Watch this!\"";
- set Quest_Halloween, 5;
- set $@HalloweenQuest_PumpkinHunter$, strcharinfo(0);
- callsub S_StartPumpkinsSpawn;
- goto L_End;
-
-L_WaterWithKaflosh:
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("BottleOfWater") == 0)
- goto L_InventoryFull;
- mes "[Oscar]";
- mes "\"Oh, I see!";
- next;
- mes "\"So, I'm waiting you show me your skills!";
- mes "Water the pumpkin patches right here with your awesome magic!\"";
- next;
- mes "\"Here is one bottle of water to do it.\"";
- next;
- mes "\"By the way, I told you about the rumors concerning these pumpkins.";
- mes "Why not bring some friends here? Oh, unless you consider yourself strong enough!\"";
- set Quest_Halloween, 5;
- getitem "BottleOfWater", 1;
- goto L_End;
-
-L_HelpWaterPatches:
- // We check again here that the player has magic skills
- // This case happens when the player has logged off
- // during the infestation phase.
- set @nature_magic, getskilllv(SKILL_MAGIC_NATURE);
- if (!(@nature_magic > 1))
- goto L_HelpFillWaters;
- set @nature_magic, 0;
- mes "[Oscar]";
- mes "\"Come on, water the pumpkin patches right here with your awesome magic!";
- mes "For sure you will be more efficient than me!\"";
- goto L_End;
-
-L_WateringBusy:
- mes "[Oscar]";
- mes "\"Sorry. I'm really busy at the moment.";
- mes "May you come back later? Thank you, thank you...";
- mes "Sorry I have to take care of this now!\"";
- goto L_End;
-
-L_HelpCleanPumpkins:
- mes "[Oscar]";
- mes "\"Help me clean all these pumpkins! It's a disaster!\"";
- goto L_End;
-
-L_NotEnoughWaters:
- mes "[Oscar]";
- mes "\"That's not enough bottles to water all these pumpkin patches.";
- mes "Please bring me more.\"";
- goto L_End;
-
-S_Update_Annual_Quest:
- set Annual_Quest, (Annual_Quest & ~(BYTE_0_MASK) | (@halloween_year << BYTE_0_SHIFT));
- return;
-
-OnCommandSpg:
- callsub S_StartPumpkinsSpawn;
- end;
-
-S_StartPumpkinsSpawn:
- set $@HalloweenQuest_PumpkinsCount, $@halloween_num_pumpkins;
- set $@HalloweenQuest_PumpkinsState, 0;
- initnpctimer;
- return;
-
-L_QuestAlreadyDone:
- mes "[Oscar]";
- mes "\"I'm relieved all this mess is sorted out now.";
- mes "That was interesting, but really, fruits are more quiet!\"";
- goto L_End;
-
-OnInit:
- set $@halloween_num_seeds, 12;
- set $@halloween_num_water_bottles, 15;
- set $@halloween_num_pumpkins, $@halloween_num_seeds * 4;
- end;
-
-OnTimer1000:
- goto L_TimerFunction;
-
-OnTimer2000:
- goto L_TimerFunction;
-
-OnTimer3000:
- goto L_TimerFunction;
-
-L_TimerFunction:
- if ($@HalloweenQuest_PumpkinsState != 1)
- end;
- callsub S_CheckPlayer;
- set $@HalloweenQuest_PumpkinsTimer, $@HalloweenQuest_PumpkinsTimer + 1;
- if (mobcount("011-1", "Oscar::OnPD") < 0 &&
- mobcount("011-1", "Oscar::OnPDP") < 0 &&
- $@HalloweenQuest_PumpkinsCount <= 0)
- goto L_AllPumpkinsDead;
- // A quick "cheer up"
- if ($@HalloweenQuest_PumpkinsTimer == 300)
- npctalk strnpcinfo(0), "Hurry up " + $@HalloweenQuest_PumpkinHunter$ + "! My farm is being ruined!";
- // 7 mins max
- if ($@HalloweenQuest_PumpkinsTimer > 420)
- goto L_PumpkinsRuined;
-
- if (getnpctimer(0) >= 2900)
- goto L_TrySpawnPumpkin;
- end;
-
-L_TrySpawnPumpkin:
- if ($@HalloweenQuest_PumpkinsCount > 0)
- areamonster "011-1", 97, 40, 101, 44, "", 1063, 1, "Oscar::OnPD";
- setnpctimer 0;
- end;
-
-OnTimer2500:
- if ($@HalloweenQuest_PumpkinsState != 0)
- end;
- areamonster "011-1", 97, 40, 101, 44, "", 1063, 2, "Oscar::OnPD";
- end;
-
-OnTimer6000:
- if ($@HalloweenQuest_PumpkinsState != 0)
- end;
- emotion EMOTE_AFRAID;
- npctalk strnpcinfo(0), "Oh no, these pumpkins look strange and infested with bugs! Help me get rid of them " + $@HalloweenQuest_PumpkinHunter$ + "!";
- set $@HalloweenQuest_PumpkinsState, 1;
- setnpctimer 0;
- end;
-
-OnPD:
- if (strcharinfo(0) != $@HalloweenQuest_PumpkinHunter$)
- goto L_KillBadHunter;
- set $@HalloweenQuest_PumpkinsCount, $@HalloweenQuest_PumpkinsCount - 1;
- if (@discover_poisonous_pumpkin_again == 0)
- message strcharinfo(0), "Oh no! These pumpkins are poisonous as well!";
- set @discover_poisonous_pumpkin_again, 1;
- // Small damages
- misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- heal -10, 0;
- sc_start sc_poison, 1, 3;
- // Spawn mobs or get items
- set @halloween_rand, rand(0,100);
- // Seeds reward
- if (@halloween_rand < 10)
- getitem "PumpkinSeeds", 1;
- // Pumpkin helmet reward
- if (@halloween_rand >= 10 && @halloween_rand < 17)
- getitem "PumpkinHelmet", 1;
- // huntsman spider x1
- if (@halloween_rand < (15*BaseLevel)/100)
- areamonster "011-1", 97, 40, 101, 44, "", 1083, 1, "Oscar::OnPDP";
- // Or spider x1
- if (@halloween_rand >= (15*BaseLevel)/100 && @halloween_rand < (75*BaseLevel)/100)
- areamonster "011-1", 97, 40, 101, 44, "", 1012, 1, "Oscar::OnPDP";
- // Or archant x2
- if (@halloween_rand >= (75*BaseLevel)/100)
- areamonster "011-1", 97, 40, 101, 44, "", 1060, 2, "Oscar::OnPDP";
-
- set @halloween_rand, 0;
- end;
-
-OnPDP:
- end;
-
-L_KillBadHunter:
- misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- heal -Hp, 0;
- end;
-
-L_PumpkinsRuined:
- npctalk strnpcinfo(0), "No! " + $@HalloweenQuest_PumpkinHunter$ + " how could you let that happen? All my farm is a mess now! All my trees are infested with bugs!";
- goto L_Fail;
-
-L_AllPumpkinsDead:
- goto L_Success;
-
-S_CheckPlayer:
- if (attachrid(getcharid(3, $@HalloweenQuest_PumpkinHunter$)) == 0)
- goto L_PlayerOff;
- if (isdead())
- goto L_PlayerDead;
- if (isin("011-1",20,5,130,110) == 0)
- goto L_PlayerLeft;
- detachrid;
- return;
-
-L_PlayerOff:
- npctalk strnpcinfo(0), "What? Where is " + $@HalloweenQuest_PumpkinHunter$ + "? Someone, help me!";
- goto L_Fail;
-
-L_PlayerLeft:
- npctalk strnpcinfo(0), "What the!! " + $@HalloweenQuest_PumpkinHunter$ + " left me alone with all this! Someone, help me!";
- goto L_Fail;
-
-L_PlayerDead:
- npctalk strnpcinfo(0), "Oh no I can't believe it! " + $@HalloweenQuest_PumpkinHunter$ + " just died! Someone, help me!";
- goto L_Fail;
-
-L_Fail:
- // If the player is logged off, since we check every second that the player
- // is online, we can consider it's an accident, so we will allow to redo the quest
- // Otherwise, it's a "valid" fail.
- if (attachrid(getcharid(3, $@HalloweenQuest_PumpkinHunter$)))
- set Quest_Halloween, 10;
- goto L_Clean;
-
-L_Success:
- // Make this check again or the server will crash.
- if (attachrid(getcharid(3, $@HalloweenQuest_PumpkinHunter$)) == 0)
- goto L_PlayerOff;
- set Quest_Halloween, 6;
- emotion EMOTE_GRIN;
- npctalk strnpcinfo(0), "Hurray, " + $@HalloweenQuest_PumpkinHunter$ + " you did it! Thank you thank you! Come here!";
- goto L_Clean;
-
-L_Clean:
- killmonster "011-1", "Oscar::OnPD";
- killmonster "011-1", "Oscar::OnPDP";
- set $@HalloweenQuest_PumpkinHunter$, "";
- set $@HalloweenQuest_PumpkinsCount, 0;
- set $@HalloweenQuest_PumpkinsState, 0;
- set $@HalloweenQuest_PumpkinsTimer, 0;
- stopnpctimer;
- detachrid;
- end;
-
-L_GetReward:
- mes "[Oscar]";
- mes "\"" + strcharinfo(0) + ", you were wonderful!";
- mes "My farm is safe thanks to you!\"";
- next;
- mes "\"Look, when I went to this city a few days ago, I could find this magnificient fruit.";
- mes "I believe not many exist in the world, but hey, this one is for you!\"";
-
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("GoldenDeliciousApple") == 0)
- goto L_InventoryFull;
- set @inventorylist_count, 0;
- getitem "GoldenDeliciousApple", 1;
- set @halloween_year, gettime(7) - 2000 + 1;
- set Quest_Halloween, 0;
- callsub S_Update_Annual_Quest;
- goto L_End;
-
-L_GetSlap:
- mes "[Oscar]";
- mes "\"Ah! There you are "+strcharinfo(0)+"!";
- next;
- mes "\"As you can see, my farm is safe now.";
- mes "I can't really say it's thanks to you though!\"";
- next;
- mes "\"Well, I won't be a bad guy.";
- mes "Take this for your trouble and farewell!\"";
-
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("CandyPumpkin") == 0)
- goto L_InventoryFull;
- set @inventorylist_count, 0;
- getitem "CandyPumpkin", 5;
- set @halloween_year, gettime(7) - 2000 + 1;
- set Quest_Halloween, 0;
- callsub S_Update_Annual_Quest;
- goto L_End;
-
-L_InventoryFull:
- set @inventorylist_count, 0;
- next;
- mes "\"Ah, but you cannot carry anything else!";
- mes "Make some room first.\"";
- goto L_End;
-}