From 99e6981142744c1853c3c44a1cd289426313a8a8 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 28 Apr 2022 15:48:11 -0300 Subject: Bandit Stage --- npc/014-2-2/valia.txt | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) (limited to 'npc/014-2-2/valia.txt') diff --git a/npc/014-2-2/valia.txt b/npc/014-2-2/valia.txt index d4c886d2b..892f5641f 100644 --- a/npc/014-2-2/valia.txt +++ b/npc/014-2-2/valia.txt @@ -48,6 +48,8 @@ function script GeminiKill { break; case 6: // Just entered the Den break; + case 7: // Just got stunned + break; // Forest -> Desert -> Bandit Cave -> Island -> Fake showdown -> Storage -> Showdown -> Chest, Lore and Exit -> Wumpus' Trap -> End } return; @@ -223,6 +225,31 @@ OnCore: case 5: // JackO shows up getexp 32000, 1400; break; + case 7: // Ambushed & Captured + @lockpicks=false; + // Prision Area + .@m=any(Bandit, RobinBandit, SleepingBandit); + areamonster("val2@"+.@p, 52, 93, 70, 98, strmobinfo(1, .@m), .@m, 1); + .@m=any(Bandit, RobinBandit, SleepingBandit); + areamonster("val2@"+.@p, 52, 93, 70, 98, strmobinfo(1, .@m), .@m, 1); + // Ante-chamber + areamonster("val2@"+.@p, 69, 96, 85, 107, strmobinfo(1, Bandit), Bandit, 1); + .@m=any(Bandit, RobinBandit, SleepingBandit, RobinBandit); + areamonster("val2@"+.@p, 69, 96, 85, 107, strmobinfo(1, .@m), .@m, 1); + // Reception & Lord Desk + areamonster("val2@"+.@p, 50, 30, 80, 75, strmobinfo(1, Bandit), Bandit, (BaseLevel/15)); + areamonster("val2@"+.@p, 50, 30, 80, 75, strmobinfo(1, RobinBandit), RobinBandit, (BaseLevel/25)); + // Whole Map + areamonster("val2@"+.@p, 20, 24, 78, 72, strmobinfo(1, Archant), Archant, (BaseLevel/8)); + // Great Hall + areamonster("val2@"+.@p, 25, 24, 50, 45, strmobinfo(1, RobinBandit), RobinBandit, (BaseLevel/22)); + areamonster("val2@"+.@p, 25, 24, 50, 45, strmobinfo(1, Assassin), Assassin, (BaseLevel/20)); + areamonster("val2@"+.@p, 25, 24, 50, 45, strmobinfo(1, Bandit), Bandit, (BaseLevel/18)); + areamonster("val2@"+.@p, 25, 24, 50, 45, strmobinfo(1, HoodedNinja), HoodedNinja, 1); + break; + case 8: // Key retrieved + getexp 128000, 2000; + break; } } addtimer(5000, "Valia::OnCoreInit"); @@ -230,35 +257,81 @@ OnCore: OnGSlime: fix_mobkill(GreenSlime); + .@p = getcharid(1); areamonster("val1@"+.@p, 20, 20, 60, 60, strmobinfo(1, GreenSlime), GreenSlime, 1, "Valia::OnGSlime"); end; OnLHead: fix_mobkill(LogHead); + .@p = getcharid(1); areamonster("val1@"+.@p, 20, 20, 70, 60, strmobinfo(1, LogHead), LogHead, 1, "Valia::OnLHead"); end; OnFShroom: fix_mobkill(ForestMushroom); + .@p = getcharid(1); areamonster("val1@"+.@p, 20, 20, 70, 60, strmobinfo(1, ForestMushroom), ForestMushroom, 1, "Valia::OnFShroom"); end; OnRShroom: fix_mobkill(RedMushroom); + .@p = getcharid(1); areamonster("val1@"+.@p, 20, 20, 70, 60, strmobinfo(1, RedMushroom), RedMushroom, 1, "Valia::OnRShroom"); end; /////////////////////////////////// OnCSnake: fix_mobkill(CaveSnake); + .@p = getcharid(1); areamonster("val1@"+.@p, 100, 20, 170, 60, strmobinfo(1, CaveSnake), CaveSnake, 1, "Valia::OnCSnake"); end; OnMGoblin: fix_mobkill(MagicGoblin); + .@p = getcharid(1); areamonster("val1@"+.@p, 100, 20, 170, 60, strmobinfo(1, MagicGoblin), MagicGoblin, 2, "Valia::OnMGoblin"); end; +/////////////////////////////////// +OnKey1: + .@p = getcharid(1); + .@mob=monster("val2@"+.@p, 57, 104, strmobinfo(1, CopperSlime), CopperSlime, 1, "Valia::OnKey1"); + // This should wipe the monster experience value + setunitdata(.@mob, UDT_LEVEL, 1); + if (countitem(Lockpicks) || @lockpicks || rand2(3)) end; + getitem Lockpicks, 1; + @lockpicks=true; + end; + +OnKey2: + .@p = getcharid(1); + .@mob=monster("val2@"+.@p, 61, 104, strmobinfo(1, CopperSlime), CopperSlime, 1, "Valia::OnKey2"); + // This should wipe the monster experience value + setunitdata(.@mob, UDT_LEVEL, 1); + if (countitem(Lockpicks) || @lockpicks || rand2(3)) end; + getitem Lockpicks, 1; + @lockpicks=true; + end; + +OnKey3: + .@p = getcharid(1); + .@mob=monster("val2@"+.@p, 66, 104, strmobinfo(1, CopperSlime), CopperSlime, 1, "Valia::OnKey3"); + // This should wipe the monster experience value + setunitdata(.@mob, UDT_LEVEL, 1); + if (countitem(Lockpicks) || @lockpicks || rand2(3)) end; + getitem Lockpicks, 1; + @lockpicks=true; + end; + +OnLord: + .@p = getcharid(1); + if (mobcount("val2@"+.@p, "Valia::OnLord")) { + 'STATUS = 8; + Zeny+=15000; + dispbottom l("This lord dropped a key and a stash of gold!"); + } + end; + OnInit: .distance=4; end; -- cgit v1.2.3-70-g09d2