From cf18ce071c79ae37e14ea38943e0b1d88da70a7b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 9 Apr 2021 13:33:57 -0300 Subject: Override --- npc/030-4/_import.txt | 4 + npc/030-4/mana_battery.txt | 433 +++++++++++++++++++++++++++++++++++++++++++++ npc/030-4/mapflags.txt | 2 + 3 files changed, 439 insertions(+) create mode 100644 npc/030-4/_import.txt create mode 100755 npc/030-4/mana_battery.txt create mode 100755 npc/030-4/mapflags.txt (limited to 'npc/030-4') diff --git a/npc/030-4/_import.txt b/npc/030-4/_import.txt new file mode 100644 index 00000000..ef054d02 --- /dev/null +++ b/npc/030-4/_import.txt @@ -0,0 +1,4 @@ +// Map 030-4: Christmas Inn Warehouse +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/030-4/mana_battery.txt", +"npc/030-4/mapflags.txt", diff --git a/npc/030-4/mana_battery.txt b/npc/030-4/mana_battery.txt new file mode 100755 index 00000000..2091f5b5 --- /dev/null +++ b/npc/030-4/mana_battery.txt @@ -0,0 +1,433 @@ + + + + +030-4,32,21,0 script AniManOMat NPC400,{ + $@XmasBattleStatusClone = 0; + callfunc "XmasStates"; + @xmas_battle_side = 0; + if ($@XmasBattleCoolDown) + goto L_CoolDown; + if (@xmas_side) + @xmas_battle_side = 1; + if ($@XmasBattleStatus) + goto L_BattleInProgress; + if (@xmas_state < $@xmas_boss_door_open_state) + goto L_ThrowOut; + if ((@xmas_boss_start) && (@xmas_state > $@xmas_boss_door_open_state)) + goto L_Helper; + if (@xmas_state == $@xmas_boss_door_open_state) + goto L_InitiateBattle; + goto L_InitiateBattle; + +L_InitiateBattle: + callfunc "XmasSetBossStart"; + if(@xmas_battle_side) + goto L_BattleBad; + goto L_BattleGood; + +L_BattleBad: + mes "[Orum's Homunculus]"; + mes "\"So this is where this whole shallow charade will end...\""; + mes "\"Good. Are you ready to get this over with?\""; + menu + "Huh? Sure, why not.", L_KeepGoing, + "Wait a sec.", L_close, + "Well... since you ask... I prefer to leave now, this is way to dangerous. I have responsibities.", L_Coward; + +L_KeepGoing: + mes "[Orums Homunculus]"; + mes "\"Okay now listen closely, at least for once.\""; + mes "\"Put the mana battery into that vessel in front of you.\""; + next; + menu + "Ok.", L_YeahOk, + "No way, I prefer to leave. Now!", L_Coward, + "Give me a second, I need to consider my options.", L_close; + +L_YeahOk: + mes "You carefully install the Mana Battery as good as you can manage."; + mes "As you bend over, you notice a strong sulphur odour coming from the crate"; + next; + mes "[Orum]"; + mes "\"Ok. now this should be enough.\""; + mes "\"Get out of here, before the bomb explodes!.\""; + menu + "Agreed.", L_StartBad, + "You know what? If I pull this lever this should become HUGE! (Beware! that's dangerous)", L_StartBadHard; + +L_BattleGood: + mes "You stare into a box that even through your unexperienced eyes looks less than secure to harbour such a powerful device as the mana battery is."; + menu + "Ok, this should be where the battery belongs.", L_StartGood, + "No WAY! I am not going to put my life in danger", L_close, + "Ok that does it, I am going to leave! I cannot be responsible for blowing up the entire mana world.", L_Coward, + "I studied magic and this looks all wrong. (Beware! that's dangerous)", L_StartGoodHard; + +L_StartGood: + if ($@XmasBattleStatus) + goto L_BattleInProgress; + @xmas_battle_status = 1; + goto L_Start; + +L_StartGoodHard: + if ($@XmasBattleStatus) + goto L_BattleInProgress; + callsub S_CheckHardReq; + delitem $@xmas_boss_req$[ @xmas_battle_side ], $@xmas_boss_amount[ @xmas_battle_side ]; + mes "You pour a handfull of " + $@xmas_boss_req$[@xmas_battle_side] + " over the Mana Battery."; + @xmas_battle_status = 2; + goto L_Start; + +L_StartBad: + if ($@XmasBattleStatus) + goto L_BattleInProgress; + @xmas_battle_status = 3; + goto L_Start; + +L_StartBadHard: + if ($@XmasBattleStatus) + goto L_BattleInProgress; + callsub S_CheckHardReq; + delitem $@xmas_boss_req$[ @xmas_battle_side ], $@xmas_boss_amount[ @xmas_battle_side ]; + mes "You pour a handfull of " + $@xmas_boss_req$[@xmas_battle_side] + " over the Mana Battery."; + @xmas_battle_status = 4; + goto L_Start; + +L_Start: + mes "You struggle a little with your task, since the mana battery doesn't seem to fit in as smooth as you expected it."; + next; + mes "W00t!"; + next; + mes "Now it is glowing wildly"; + next; + mes "it seems like this will not turn out as planned, Look this Guard of Honour is going crazy!"; + next; + npctalk strnpcinfo(0), "The Guards are out of control!"; + if ($@XmasBattleStatus) + goto L_BattleAlreadyStarted; + $@XmasBattleStatus = @xmas_battle_status; + $@XmasBattleStatusClone = $@XmasBattleStatus; + $@XmasBossRound = 0; + $@XmasBossPlayerCount = getmapusers("030-4"); + areamonster "030-4", 20, 21, 40, 40, "", 1114, 1, "AniManOMat::OnGuardDeath"; + initnpctimer; + goto L_close; + +L_ThrowOut: + // if the player didnt get a bomb yet + mes "This looks dangerous. Come back when you are prepared"; + next; + warp "030-2",151,25; + goto L_close; + +L_Coward: + //Player chose to cancel + mes "What a pitty now you still have a bomb in your hands but..."; + mes "As you wish."; + next; + warp "030-2",151,25; + goto L_close; + +L_Helper: + //Player used up his own chance to start + mes "mmh the AniManOMat is empty again, maybe we should try with a different mana battery."; + menu + "No I prefer to leave now, get me out of here.", L_Quit, + "Wait let me check if i can fix this ...(Beware!)", L_Repeat, + "Why would I do that? Aaaah... Nevermind.", L_close; + +L_Repeat: + //Player wants to try again on hard mode again + if ($@XmasBattleStatus) + goto L_BattleInProgress; + callsub S_CheckHardReq; + delitem $@xmas_boss_req$[ @xmas_battle_side ], $@xmas_boss_amount[ @xmas_battle_side ]; + @xmas_battle_status = (2 * (@xmas_battle_side)) + 2; + goto L_Start; + +L_Quit: + warp "030-2",151,25; + goto L_close; + +L_CoolDown: + mes "The AniManOMat is too hot to handle right now, you should wait a bit to try a new battery."; + menu + "No I prefer to leave now, get me out of here.", L_Quit, + "Ughhh, but I'm certain this time the battery will work!", L_close; + +L_BattleInProgress: + mes "The mana battery looks like it is about to explode. You better take cover!"; + goto L_close; + +L_BattleAlreadyStarted: + mes "Seems like someone was faster than you."; + goto L_close; + +L_close: + callsub S_ClearVariables; + close; + + // per NPC logic +OnTimer5000: + setnpctimer 0; + if ($@XmasBattleStatus) + goto L_CaveLogic; + goto L_CleanUp; + +L_Return_1: + $@XmasBossPlayerCount = 0; + areatimer 0, "030-4", 0, 0, 60, 60, 10, "AniManOMat::OnTick"; + end; + +L_CaveLogic: + if ($@XmasBossPlayerCount < 1) + goto L_AllDead; + set $@BombTimer, $@BombTimer + 5; // Advance 5 seconds + if ((mobcount("030-4", "AniManOMat::OnGuardDeath") + 1) == 0) + goto L_NextWave; + if ($@BombTimer >= 120) + goto L_NextWave; + goto L_Return_1; + +L_NextWave: + $@BombTimer = 0; + $@DangerCellNumber = rand(8); + $@XmasBossRound = $@XmasBossRound + 1; + if (($@XmasBossRound > 10) && ((mobcount("030-4", "AniManOMat::OnGuardDeath") + 1) == 0)) + goto L_Finished; + // Break/LastChance(s) + if (($@XmasBossRound > 10) && ($@XmasBossRound <= 16)) + goto L_Return_1; + //KillerWaves + if ($@XmasBossRound > 16) + areamonster "030-4", 0, 0, 50, 50, "", 1114, $@XmasBossRound*2 + $@XmasBossPlayerCount*3, "AniManOMat::OnGuardDeath"; + //Normal Waves 1 to 10 + // Guard Amount doubles if on hard mode + $@GuardAmount = 1 + (6 + ($@XmasBossRound) + (2 * $@XmasBossPlayerCount)) / 7; + $@SkullAmount = 1 + ($@GuardAmount * $@GuardAmount) / 4; + + if ($@GuardAmount > 15) + $@GuardAmount = 15; + + //Obliatory Guard Of Honour in the Southern Hallway + areamonster "030-4", 30, 43, 39, 49, "", 1114, $@GuardAmount, "AniManOMat::OnGuardDeath"; + //CopperSlimes, I love Copper Slimes anywhere anytime + areamonster "030-4", 20, 21, 49, 49, "", 1098, rand(2,7), "AniManOMat::OnGuardDeath"; + //IceSkulls for hard mode in room 3 and 4 + if ($@XmasBattleStatus == 2 || $@XmasBattleStatus == 4) + areamonster "030-4", 20, 32, 28, 39, "", 1085, $@SkullAmount / 2, "AniManOMat::OnGuardDeath"; + if ($@XmasBattleStatus == 2 || $@XmasBattleStatus == 4) + areamonster "030-4", 41, 32, 49, 39, "", 1085, $@SkullAmount / 2 + 1, "AniManOMat::OnGuardDeath"; + //Angry Sea Slimes for Easy Mode in Nice Version in Room 3,4,5,6 + if ($@XmasBattleStatus == 1) + areamonster "030-4", 20, 32, 28, 49, "", 1109, $@SkullAmount, "AniManOMat::OnGuardDeath"; + if ($@XmasBattleStatus == 1) + areamonster "030-4", 41, 32, 49, 49, "", 1109, $@SkullAmount, "AniManOMat::OnGuardDeath"; + //Candied Slimes for Nice Mode in Rooms 1 and 2 + if ($@XmasBattleStatus == 1 || $@XmasBattleStatus == 2) + areamonster "030-4", 20, 21, 28, 28, "", 1111, ($@XmasBossRound / 2) + 1, "AniManOMat::OnGuardDeath"; + if ($@XmasBattleStatus == 1 || $@XmasBattleStatus == 2) + areamonster "030-4", 41, 21, 49, 28, "", 1111, ($@XmasBossRound / 2) + 2, "AniManOMat::OnGuardDeath"; + //Bluepars for Easy mode in Naughty Variant in Rooms 3,4,5,6 + if ($@XmasBattleStatus == 3) + areamonster "030-4", 20, 32, 28, 49, "", 1107, $@SkullAmount, "AniManOMat::OnGuardDeath"; + if ($@XmasBattleStatus == 3) + areamonster "030-4", 41, 32, 49, 49, "", 1107, $@SkullAmount, "AniManOMat::OnGuardDeath"; + // Wicked Mushrooms for Naughty Mode in Rooms 1 and 2 + if ($@XmasBattleStatus == 3 || $@XmasBattleStatus == 4) + areamonster "030-4", 20, 21, 28, 28, "", 1106, $@XmasBossRound + ($@XmasBossRound / 2), "AniManOMat::OnGuardDeath"; + if ($@XmasBattleStatus == 3 || $@XmasBattleStatus == 4) + areamonster "030-4", 41, 21, 49, 28, "", 1106, $@XmasBossRound + ($@XmasBossRound / 2), "AniManOMat::OnGuardDeath"; + + $@msgnumber = (2 * $@XmasBossRound) + (($@XmasBattleStatus - 1) >> 1); + $@msg$ = $@XmasBossMes$[ $@msgnumber ]; + $@msgnumber = 0; + if ($@XmasBossRound > 10) goto L_Return_1; + callsub S_Announce; + goto L_Return_1; + +OnTick: + if (ispcdead()) end; + $@XmasBossPlayerCount = $@XmasBossPlayerCount + 1; + if(isin("030-4", $@DangerCellX1[$@DangerCellNumber], $@DangerCellY1[$@DangerCellNumber], $@DangerCellX2[$@DangerCellNumber], $@DangerCellY2[$@DangerCellNumber])) + goto L_DangerCell; + end; + +L_DangerCell: + message strcharinfo(0), "Target Aquired. Locking on Now."; + misceffect 10001, strcharinfo(0); + heal ((MaxHp/100) * -20), 0; + end; + +OnGuardDeath: + end; + +L_AllDead: + $@msg$ = $@xmas_final_announce$[ ($@XmasBattleStatus - 1) / 2 ]; + callsub S_Announce; + goto L_CleanUp; + +L_Finished: + $@msg$ = $@xmas_final_announce$[ (($@XmasBattleStatus - 1) / 2) + 2 ]; + callsub S_Announce; + goto L_CleanUp; + +L_CleanUp: + areatimer 0, "030-4", 0, 0, 50, 50, 10, "AniManOMat::OnReward"; + $@XmasBossPlayerCount = 0; + $@XmasBossRound = 0; + $@BombTimer = 0; + $@GuardAmount = 0; + $@SkullAmount = 0; + killmonster "030-4", "AniManOMat::OnGuardDeath"; + stopnpctimer; + donpcevent "#XmasChamberCooler::OnCommandCoolDown"; + end; + +OnReward: + if (ispcdead()) + end; + if (($@XmasBattleStatusClone % 2) == 0) + XMASTIME = XMASTIME | $@xmas_boss_hero_bit; + @xmas_state = (XMASTIME & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT; + @bonus = (55 - (BaseLevel / 2)); + DailyQuestBonus = DailyQuestBonus + @bonus; + message strcharinfo(0), "You feel a temporary rush of power and zest for action."; + if (@xmas_state != $@xmas_boss_door_open_state ) + goto L_End; + @xmas_state = $@xmas_reward_start; + callfunc "XmasSetState"; + @xmas_state = 0; + @karma_bonus = $@xmas_boss_bonus; + message strcharinfo(0), "Wow, what happened here?."; + goto L_End; + +L_End: + if ((($@XmasBattleStatus - 1) / 2) == 0) goto L_EndNice; + goto L_EndNaughty; + +L_EndNaughty: + callfunc "XmasNaughty"; + callsub S_ClearVariables; + end; + +L_EndNice: + callfunc "XmasNice"; + callsub S_ClearVariables; + end; + +OnCommandChamberReset: + areatimer 0, "030-4", 0, 0, 50, 50, 10, "AniManOMat::OnReward"; + $@XmasBattleStatus = 0; + $@XmasBossPlayerCount = 0; + $@XmasBossRound = 0; + $@BombTimer = 0; + $@GuardAmount = 0; + $@SkullAmount = 0; + killmonster "030-4", "AniManOMat::OnGuardDeath"; + stopnpctimer; + setnpctimer 0; + goto L_Restart; + +OnInit: + goto L_Restart; + +L_Restart: + $@XmasBattleStatus = 0; + setarray $@XmasBossMes$, + "", // unused + "", // unused + "Scrrreeeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaatch", + "Scrrreeeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaatch", + "Avalia : I am getting a weird sensation ... ", + "Orums Homunculus : I think they know what we are up to!", + "Avalia : Oh no! This is going to blow up", + "Orums Homunculus : The Door is locked you idiot, fight for your life.", + "Avalia : Guards of Honor I demand you: STOP!", + "Orums Homunculus : Okay, this is somewhat funny... why are they coming back?!?", + "Avalia : You brave fighters! Deactivate the nutcrackers! they are out of control!", + "Orums Homunculus : The good news is: if we make it this time we will never have to do that again!", + "Avalia : Oh boy we are so screwed.", + "Orums Homunculus : Report: I am an Idiot", + "Avalia : Quick, we need to kill the nutcrackers, before they ruin everything we've been working for.", + "Orums Homunculus : Strange they are getting more and not less.", + "Avalia : Oh no, they are too powerful. Fight my warriors, Fight for the spirit of Christmas.", + "Orums Homunculus : If I was smart enough to stop talking, it would have happened already..", + "Avalia : I cannot believe it, this is making them stronger. More and more of them are coming.", + "Orums Homunculus : I think we are almost done, the bomb should explode any second.", + "Avalia : Those poor creatures. Just kill them all.", + "Orums Homunculus : A N Y S E C O N D.", + "Avalia : Oh well... just try again, I trust in you.", + "Orum's Homunculus : just lol.", + "Avalia : Wow! You saved christmas.", + "Orum's Homunculus : Yep, it's over... and strange enough you survived."; + + setarray $@xmas_final_announce$, + "Avalia : Oh no, not only did you slay half my Guard of Honour, but also the issue was not fixed, try to install the battery again!", + "Orum's Homunculus : Boy are you lame. So what now? The battery is still not placed! Go try again!", + "Avalia : W00t you actually made it through. I think now that the manabattery lost some of its abundant power this seems to have given those nutcrackers that didn't go crazy a good boost of life energy. Thank you for your help all and come see me for a reward.", + "Orum's Homunculus : Good. They are dead. Now GET OUT OF THERE, this bomb is dangerous!"; + // Danger Cells to attack sitters + // 0: 19,20,29,29 + // 1: 30,20,40,29 + // 2: 41,20,50,29 + // 3: 19,31,29,40 + // 4: 30,31,40,40 + // 5: 41,31,50,40 + // 6: 19,42,29,50 + // 7: 30,42,40,50 + // 8: 41,42,50,50 + setarray $@DangerCellX1, 19, 30, 41, 19, 30, 41, 19, 30, 41; + setarray $@DangerCellY1, 20, 20, 20, 31, 31, 31, 42, 42, 42; + setarray $@DangerCellX2, 29, 40, 50, 29, 40, 50, 29, 40, 50; + setarray $@DangerCellY2, 29, 29, 29, 40, 40, 40, 50, 50, 50; + end; + +S_Announce: + mapannounce "030-4", "Danger Cell Activated. Zone " + $@DangerCellNumber + " activated.", 0; + mapannounce "030-4", $@msg$, 0; + mapannounce "030-2", $@msg$, 0; + $@msg$ = ""; + return; + +S_CheckHardReq: + if (BaseLevel < $@BossHardLevel) + goto L_NotHighEnough; + if (countitem($@xmas_boss_req$[ @xmas_battle_side ]) < $@xmas_boss_amount[ @xmas_battle_side ]) + goto L_NotEnoughItems; + goto L_Return; + +L_NotEnoughItems: + mes "Nono, you need to bring " + $@xmas_boss_amount[ @xmas_battle_side ] + " " + $@xmas_boss_req$[ @xmas_battle_side ] + "s."; + goto L_close; + +L_NotHighEnough: + mes "\"Err no sweetie, you don't. just do it the normal way.\""; + goto L_close; + +L_Return: + return; + +S_ClearVariables: + @xmas_battle_side = 0; + @bonus = 0; + @xmas_state = 0; + @xmas_battle_status = 0; + @karma_bonus = 0; + return; +} + +030-4,0,0,0 script #XmasChamberCooler NPC32767,{ + end; +OnCommandCoolDown: + $@XmasBattleStatus = 0; + $@XmasBattleCoolDown = 1; + initnpctimer; + end; + +OnTimer120000: + $@XmasBattleCoolDown = 0; + stopnpctimer; + end; +} diff --git a/npc/030-4/mapflags.txt b/npc/030-4/mapflags.txt new file mode 100755 index 00000000..e9283539 --- /dev/null +++ b/npc/030-4/mapflags.txt @@ -0,0 +1,2 @@ +030-4 mapflag nosave 030-2,151,25 +//030-4 mapflag resave 030-2,151,25 -- cgit v1.2.3-60-g2f50