// TMW2 scripts. // Authors: // Jesusalva // Description: // Gemini Sisters Quest - Central Core 034-1,0,0,0 script #Gemini NPC_HIDDEN,{ end; OnCoreInit: debugmes "CORE INIT, Inst = %d", instance_id(); // Oops! You do not have enough level! if (BaseLevel < 30) { warp "014-2-2", 36, 24; end; } .@p = getcharid(1); instance_attach($@VALIA_INST[.@p]); @mystatus = 0; sleep2(200); if (!$@VALIA_STATUS[.@p]) $@VALIA_STATUS[.@p] = 1; // FALLTHROUGH OnCore: if (!compare(getmap(), "val")) end; .@p = getcharid(1); instance_attach($@VALIA_INST[.@p]); // Always true on first interaction // This handles new stages for person if (@mystatus < $@VALIA_STATUS[.@p]) { // No retroaction! switch ($@VALIA_STATUS[.@p]) { case 1: // Quest initiated // Spawn monsters areamonster("val1@"+.@p, 20, 20, 60, 60, strmobinfo(1, GreenSlime), GreenSlime, (BaseLevel/15), "Valia::OnGSlime"); areamonster("val1@"+.@p, 20, 20, 70, 60, strmobinfo(1, LogHead), LogHead, (BaseLevel/15), "Valia::OnLHead"); areamonster("val1@"+.@p, 20, 20, 70, 60, strmobinfo(1, ForestMushroom), ForestMushroom, (BaseLevel/12), "Valia::OnFShroom"); areamonster("val1@"+.@p, 20, 20, 70, 60, strmobinfo(1, RedMushroom), RedMushroom, 1+(BaseLevel/30), "Valia::OnRShroom"); break; case 2: // Looking for a runestone if (@mystatus) getexp 4000, 100; break; case 3: // Runestone was found if (@mystatus) getexp 8000, 200; break; case 4: // Desert unlocked, but no clue on what to do dispbottom l("You hear a noise from distance."); // Spawn monsters areamonster("val1@"+.@p, 100, 20, 170, 60, strmobinfo(1, CaveSnake), CaveSnake, 3, "Valia::OnCSnake"); areamonster(getmap(), 100, 20, 170, 60, strmobinfo(1, MagicGoblin), MagicGoblin, 1, "Valia::OnMGoblin"); // These refuse to respawn but are numerous // Thus far, the quest is still easy. But soon it won't be. areamonster(getmap(), 100, 20, 170, 60, strmobinfo(1, MountainSnake), MountainSnake, 1+(BaseLevel/24)); areamonster(getmap(), 100, 20, 170, 60, strmobinfo(1, DarkLizard), DarkLizard, 1+(BaseLevel/20)); areamonster(getmap(), 100, 20, 170, 60, strmobinfo(1, WickedMushroom), WickedMushroom, 1+(BaseLevel/32)); areamonster(getmap(), 100, 20, 170, 60, strmobinfo(1, EliteDuck), EliteDuck, 1); break; case 5: // JackO shows up if (@mystatus) getexp 16000, 400; break; case 6: // Passage Open if (countitem(SealedSoul)) delitem SealedSoul, countitem(SealedSoul); dispbottom l("You hear waterfall opening in distance."); if (@mystatus) getexp 32000, 800; break; case 7: // Ambushed & Captured if (!is_gm()) nude(); @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: // Bandit Key retrieved if (@mystatus) getexp 64000, 1600; break; case 9: // Door seal broken if (@mystatus) getexp 128000, 3200; break; case 10: // Luvia first cutscene // Limit exports of Lazurite outside the area if (countitem(LazuriteShard) > 2) delitem LazuriteShard, countitem(LazuriteShard)/2; // These two remain for internal quests if (countitem(LazuriteCrystal)) delitem LazuriteCrystal, countitem(LazuriteCrystal); if (countitem(LazuriteHeart)) delitem LazuriteHeart, countitem(LazuriteHeart); break; case 11: // Survived cutscene if (@mystatus) getexp 256000, 6400; break; case 12: // Storage cutscene break; case 13: // Survived storage if (@mystatus) getexp 384000, 9600; break; case 14: // Luvia Showdown cutscene break; case 15: // Defeated Luvia and now on pursuit! if (@mystatus) getexp 512000, 12800; break; } @mystatus = $@VALIA_STATUS[.@p]; } addtimer(3000, "#Gemini::OnCore"); end; } // Max experience gain: 1,404,000 XP and 35,100 JXP