diff options
Diffstat (limited to 'npc')
-rw-r--r-- | npc/026-6/ctrl.c | 31 | ||||
-rw-r--r-- | npc/026-7/boss.txt | 83 |
2 files changed, 64 insertions, 50 deletions
diff --git a/npc/026-6/ctrl.c b/npc/026-6/ctrl.c index cdf64f0f9..9e961ba56 100644 --- a/npc/026-6/ctrl.c +++ b/npc/026-6/ctrl.c @@ -13,6 +13,7 @@ // TODO: The main NPC which lets you get out of the platform 026-6,21,70,0, script #026-6Gate NPC_FANCY_CIRCLE,1,0,{ if (getq(General_Fortress) < 6) { die(); end; } + if ($MK_TEMPVAR >= MKIF_LV_B7F) goto L_Warp; mesc l(".:: Impregnable Fortress, %sF ::.", "B6"), 3; msObjective($MK_TEMPVAR >= MKIF_LV_B7F, l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B7F)); mes ""; @@ -20,8 +21,8 @@ close; L_Warp: - // Not unlocked - if ($GAME_STORYLINE >= 3 && $MK_TEMPVAR < MKIF_LV_B7F) { + // Not unlocked (this time, require Andrei Sakar mission completion) + if ($GAME_STORYLINE < 4 || $MK_TEMPVAR < MKIF_LV_B7F) { mesc l("The gate is sealed shut."), 1; mesc l("The monster army is still strong on this floor!"), 1; mesc l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B7F), 1; @@ -37,7 +38,7 @@ L_Warp: dispbottom l("I should wait for %s or one of the heroes to challenge the Monster King.", $MOST_HEROIC$); end; } - doevent "#DungeonCore::OnBlood"; + doevent "#DungeonCore::OnBleed"; slide any(21, 22), 63; end; @@ -83,8 +84,8 @@ OnInit: do { if (.@e >= 30) break; - .@x = rand2(21, 60); - .@y = rand2(21, 60); + .@x = rand2(21, 140); + .@y = rand2(21, 120); .@e+=1; } while (!checknpccell("026-6", .@x, .@y, cell_chkpass)); movenpc .name$, .@x, .@y; @@ -92,12 +93,20 @@ OnInit: } // Create more traps -026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap02 NPC_TRAP,0,0 -026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap03 NPC_TRAP,0,0 -026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap04 NPC_TRAP,0,0 -026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap05 NPC_TRAP,0,0 -026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap06 NPC_TRAP,0,0 -026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap07 NPC_TRAP,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap02 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap03 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap04 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap05 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap06 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap07 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap08 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap09 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap10 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap11 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap12 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap13 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap14 NPC_TRAP_ONLINE,0,0 +026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap15 NPC_TRAP_ONLINE,0,0 // Storage master (18, 57), healer (25, 57), etc. (125, 66) 026-6,18,57,0 script Barzil#FT NPC_LLOYD,{ diff --git a/npc/026-7/boss.txt b/npc/026-7/boss.txt index 85950e090..2f6da9220 100644 --- a/npc/026-7/boss.txt +++ b/npc/026-7/boss.txt @@ -14,6 +14,7 @@ OnInit: .mana = 0; // More mana = more likely to cast skills .immortal = true; // Set to FALSE when all four guardians are defeated .memohp = 999; // Memorand HP, controls spawns + .mou = 0; // Temporary for Cutscene end; // Maybe not OnTouch, but OnSit? @@ -48,7 +49,7 @@ OnBegin: // Lock the MK in the showdown $@MK_SCENE=MK_SHOWDOWN; // Initial assortment of monsters - siege_cast("026-7", .name$, 15, TP_TULIM|TP_HURNS|TP_NIVAL); + //siege_cast("026-7", .name$, 15, TP_TULIM|TP_HURNS|TP_NIVAL); // Spawn the boss himself .MK=monster("026-7", 39, 34, "The Monster King", MonsterKing, 1); immortal(.MK); // Immortal until conditions are met @@ -127,7 +128,7 @@ OnTimer15000: consolewarn("Warning, fail-safe mechanism triggered to Monster King."); OnTimer10000: maptimer2("026-7", 10, "Impregnable#B7F::OnMFDispose"); - .mana += 1; // Recover mana + .mana += (.immortal ? 1 : 2); // Recover mana /* Regeneration & Defeat Loop */ .@end = false; @@ -210,12 +211,12 @@ OnTimer10000: if (.@hp < .memohp) { .memohp = .@hp; .mana += 25; - siege_cast("026-7", .name$, 15, TP_TULIM|TP_HURNS|TP_NIVAL); + siege_cast("026-7", .name$, 35, TP_TULIM|TP_HURNS|TP_NIVAL); } } /* Decide whenever the Monster King will use a skill. */ - // Each Mana point is worth 1% chance. He gains 6 points per minute. + // Each Mana point is worth 1% chance. He gains 6 points per minute. (12 later) // (While immortal, each mana point is worth 0.5% chance) if (rand2(.immortal ? 200 : 100) <= .mana) { .mana -= 5; // Mana cost for skill use. It can go negative @@ -455,56 +456,60 @@ L_NextAct: $MANA_BLVL-=10; // Set base level to 5~15 $MANA_BLVL=max(0, $MANA_BLVL); // XXX Cutscene - .@mou = monster("026-7", 39, 35, "Moubootaur", MobMoubootaur, 1); - immortal(.@mou); - sc_start(SC_STUN, 90000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@mou); + sleep(3000); + .mou = monster("026-7", 39, 37, "Moubootaur", MobMoubootaur, 1); + immortal(.mou); + sc_start(SC_STUN, 90000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .mou); maptimer2("026-7", 30, "Book#FoS::OnMFShake"); - sleep(1000); - unittalk(.@mou, "##1I'm free... At least!"); - sleep(2500); - unittalk(.@mou, "##1The blood in the Heart, as the prophecy foretold!"); - sleep(2500); + sleep(3000); + unittalk(.mou, "##1I'm free... At least!"); + sleep(6500); + unittalk(.mou, "##1The blood in the Heart, as the prophecy foretold!"); + sleep(4500); maptimer2("026-7", 30, "Book#FoS::OnMFShake"); sleep(30); - unittalk(.@mou, "##1All monsters, heed my command! ##BHostile Takeover!##b"); - sleep(1000); + unittalk(.mou, "##1All monsters, heed my command! ##BHostile Takeover!##b"); + sleep(1500); freeloop(true); - for (.@i=0; .@i < 50; .@i++) { + for (.@i=0; .@i < 25; .@i++) { .@m = areamonster("026-7", 20, 20, 55, 55, "Subjugated Monster", any(PinkieEmperor, PanthomLord, TerraniteKing, YetiKing, PsiConscience, DemureSecondForm, Luvia, Birb, MonsterGeneral, MonsterColonel, LavaSlimeMother, BlackSlimeMother, WanderingShadow, BanditLord, HoodedAssassin, SpiderQueen, NightScorpion, SaxsoGhost, GiantMutatedBat), 1); immortal(.@m); sc_start(SC_STUN, 90000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@m); - sleep(50); // 2.5 s + sleep(200); // 5 s } freeloop(false); - unittalk(.@mou, "##1My children, ##BArise!##b"); - sleep(1000); + sleep(3000); + unittalk(.mou, "##1My children, ##BArise!##b"); + sleep(1500); freeloop(true); - for (.@i=0; .@i < 50; .@i++) { + for (.@i=0; .@i < 25; .@i++) { .@m = areamonster("026-7", 20, 20, 55, 55, "Subjugated Monster", any(Moubi, Moubi, Moubi, MoubooSlime, GreatMoubooSlime, Mouboo, Mouboo, EasterMouboo, AlphaMouboo, Shrewboo, BloodyMouboo), 1); immortal(.@m); sc_start(SC_STUN, 90000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@m); - sleep(40); // 2 s + sleep(160); // 4 s } freeloop(false); - unittalk(.@mou, "##1I have taken over the World Heart... Your chances are forfeit."); - sleep(4000); - unittalk(.@mou, "##1But first, I'll make a Monster King puppet."); - sleep(1000); + sleep(3000); + unittalk(.mou, "##1I have taken over the World Heart... Your chances are forfeit."); + sleep(6000); + unittalk(.mou, "##1But first, I'll make a Monster King puppet."); + sleep(2000); .@m = monster("026-7", 39, 34, "Monster King (puppet)", MonsterKing, 1); immortal(.@m); sc_start(SC_STUN, 90000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@m); - sleep(2000); - unittalk(.@mou, "##1Now, it would be inconvenient if you were to disturb me while I work..."); - sleep(4000); - unittalk(.@mou, "##1It'll take several days or even months to corrupt the Heart. Can't be bothered."); + sleep(3000); + unittalk(.mou, "##1Now, it would be inconvenient if you were to disturb me while I work..."); + sleep(6000); + unittalk(.mou, "##1It'll take several days or even months to corrupt the Heart. Can't be bothered."); + sleep(8000); + unittalk(.mou, "##1Enjoy your final days while you can. The day on which everything will be a Mouboo is upon us!"); sleep(5000); - unittalk(.@mou, "##1Enjoy your final days while you can. The day on which everything will be a Mouboo is upon us!"); maptimer2("026-7", 10, "Impregnable#B7F::OnVictory"); // Cleanup sleep(10000); $@MK_SCENE=MK_NONE; killmonsterall("026-7"); - + .mou = 0; // This disables all mosnters :< //setbattleflag("monster_ai", 0x209); @@ -568,13 +573,13 @@ OnInit: } // Create more traps -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap02 NPC_TRAP,0,0 -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap03 NPC_TRAP,0,0 -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap04 NPC_TRAP,0,0 -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap05 NPC_TRAP,0,0 -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap06 NPC_TRAP,0,0 -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap07 NPC_TRAP,0,0 -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap08 NPC_TRAP,0,0 -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap09 NPC_TRAP,0,0 -026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap10 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap02 NPC_TRAP_ONLINE,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap03 NPC_TRAP_ONLINE,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap04 NPC_TRAP_ONLINE,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap05 NPC_TRAP_ONLINE,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap06 NPC_TRAP_ONLINE,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap07 NPC_TRAP_ONLINE,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap08 NPC_TRAP_ONLINE,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap09 NPC_TRAP_ONLINE,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap10 NPC_TRAP_ONLINE,0,0 |