// TMW2 scripts. // Authors: // Jesusalva // Description: // Nivalis Liberation Day // The Walking Monster King 023-2,121,35,0 script The Monster King#NLib NPC_MONSTERKING,{ end; OnTouch: npctalk3 get_race() + "!"; die(); end; OnInit: .sex = G_MALE; .distance = 5; OnHour00: OnReprocess: if (!$NLIB_DAY) { disablenpc .name$; end; } switch ($NLIB_DAY) { case 1: movenpc(.name$, 121, 35, DIR_WEST); break; case 2: movenpc(.name$, 105, 37, DIR_NORTH); break; case 3: movenpc(.name$, 105, 51, DIR_SOUTH); break; case 4: movenpc(.name$, 102, 63, DIR_WEST); break; case 5: movenpc(.name$, 81, 59, DIR_NORTH); break; case 6: movenpc(.name$, 53, 53, DIR_SOUTH); break; case 7: movenpc(.name$, 36, 99, DIR_SOUTH); break; default: channelmes("#world", "A bug happened: Monster King # Nivalis Liberation Day - Value Out of Range."); disablenpc .name$; break; } end; // Event Handler L_Finish: $MANA_BLVL-=10; // Set level to 30 // Just being bigger is not enough. Must be over the double for the advantage draw (about 1 player for 10m) if (.victory_count > (.defeat_count*2)) { announce "The fight ends in draw! The Monster King did accomplish what he set, though...", bc_all|bc_npc; channelmes("#world", "Congratulations for the draw, that was a good fight."); channelmes("#world", "The Monster King stole whatever he wanted and left."); // Reproduce the same bonus from Alpha Server $@EXP_EVENT=25; donpcevent "@exprate::OnPlayerCall"; $MANA_BLVL-=5; // Set level to 25 } else if (.victory_count < 100) { // 1 player for 5 minutes is enough to prevent this loss announce "The Monster King, after moping the floor with the players, accomplish what he set, and left...", bc_all|bc_npc; channelmes("#world", "The players failed miserably in stopping the Monster King."); // Reproduce the same penalty from Beta Server $@EXP_EVENT=rand2(-50, -25); donpcevent "@exprate::OnPlayerCall"; } else { announce "The fight ends in draw, with advantage to the Monster King...", bc_all|bc_npc; channelmes("#world", "The players weren't capable to really harm the Monster King."); } L_Finish2: killmonsterall("023-2"); .wcycle=0; maptimer("023-2", 10, "The Monster King#NLib::OnReturn"); channelmes("#world", "*FINAL SCORE - PLAYERS "+.victory_count+" : "+.defeat_count+" MONSTERS*"); // Game Storyline advances: The Town Blockade Stage is now over $GAME_STORYLINE=1; $MK_TEMPVAR=gettimeparam(GETTIME_DAYOFMONTH)+rand(30,35); // Clean up the event $NIVALIS_LIBDATE=gettimetick(2); $NLIB_DAY=0; $NLIB_HIGHTIME=0; $NLIB_HIGHNAME$=""; disablenpc "Lightbringer#NLib"; enablenpc "#019-1_70_21"; enablenpc "#019-2_37_55"; enablenpc "#020-1_70_128"; enablenpc "#020-1_107_55"; removemapflag("019-3", mf_bexp); removemapflag("019-3", mf_nosave); removemapflag("020-1", mf_bexp); removemapflag("020-1", mf_nosave); removemapflag("023-2", mf_bexp); removemapflag("023-2", mf_nosave); removemapflag("023-2", mf_nopenalty); removemapmask "019-3", MASK_MATTACK; setmapflag("019-3",mf_bexp,100); setmapflag("020-1",mf_bexp,100); setmapflag("023-2",mf_bexp,100); stopnpctimer; end; OnTimer3000: .wcycle+=3; .@pl=getareausers("023-2", 21, 109, 31, 114); .@pla=getmapusers("023-2"); if (.@pl <= 0 && .@pla > 0) mapannounce "023-2", "##1WARNING: Players outside the Monster King room counts toward DEFEAT count!", 0; .victory_count+=.@pl; // Processment if (.@pl <= 0) { .defeat_count+=1; } else if (.wcycle % 30 == 3) { areamonster "023-2", 21, 109, 31, 114, "Monster", any(AngryScorpion, BlackSlime, BlackScorpion, Wolvern, BlueSlime, SlimeBlast, CaveMaggot), .@pl; } else if (.wcycle % 30 == 18) { areamonster "023-2", 21, 109, 31, 114, "Monster", any(BlackSlime, BlueSlime, SlimeBlast), 1; // PS. Drop “Demure Dark Soul” ¬.¬ } else if (.wcycle % 60 == 0) { mapannounce "023-2", str(15-(.wcycle/60))+" minute(s) remaining", 0; } if (.wcycle >= 900) goto L_Finish; initnpctimer; end; OnVictory: channelmes("#world", "The Monster King was defeated by players, and had to flee!"); channelmes("#world", "Getting magic is now easier!"); announce "Players have defeated the Monster King! He fleed from the cave after leaving a decoy!", bc_all|bc_npc; $MANA_BLVL-=10; // Set level to 20 $@EXP_EVENT=25; donpcevent "@exprate::OnPlayerCall"; goto L_Finish2; end; OnBegin: .defeat_count=0; .victory_count=0; .wcycle=0; channelmes("#world", "The fight against the Monster King ends in 15 minutes. If he is forced to flee, that'll result as victory."); channelmes("#world", "Each cycle there are players fighting against him will result in victory points. The opposite will result in defeat points."); channelmes("#world", "More players fighting will result in more victory points. This may affect drastically the result."); channelmes("#world", "Defeat, decided by a certain threshold of points, will result in MAGIC BEING PERMANENTLY HARDER TO OBTAIN."); announce "The Alliance attacks the Monster King! 15 minutes! Rules in #world", bc_all|bc_npc; movenpc(.name$, 0, 0); monster("023-2", 24, 111, "The Monster King", MonsterKing, 1, "The Monster King#NLib::OnVictory"); monster("023-2", 30, 109, "Andrei Sakar", AndreiSakar, 1, "The Monster King#NLib::OnSkip", Size_Medium, 1); areamonster "023-2", 21, 109, 31, 114, "Monster", AngryScorpion, 1; areamonster "023-2", 21, 109, 31, 114, "Monster", BlackSlime, 2; areamonster "023-2", 21, 109, 31, 114, "Monster", BlueSlime, 1; areamonster "023-2", 21, 109, 31, 114, "Monster", CaveMaggot, 1; initnpctimer; end; OnReturn: warp "019-2", 43, 55; end; OnSkip: end; } // Floor triggers 023-2,121,35,0 script #NLIB_T01 NPC_HIDDEN,1,2,{ OnTouch: if ($NLIB_DAY == 1) { @QNL3=1; dispbottom l("I've found the Monster King."); } end; } 023-2,110,36,0 script #NLIB_T02 NPC_HIDDEN,2,2,{ OnTouch: if ($NLIB_DAY == 2) { @QNL3=1; dispbottom l("I've found the Monster King."); } else if ($NLIB_DAY < 2) { slide 114, 36; dispbottom l("I should not veer off too much the path."); } end; } 023-2,105,50,0 script #NLIB_T03 NPC_HIDDEN,2,2,{ OnTouch: if ($NLIB_DAY == 3) { @QNL3=1; dispbottom l("I've found the Monster King."); } else if ($NLIB_DAY < 3) { slide 104, 48; dispbottom l("I should not veer off too much the path."); } end; } 023-2,104,62,0 script #NLIB_T04 NPC_HIDDEN,0,0,{ OnTouch: if ($NLIB_DAY == 4) { @QNL3=1; dispbottom l("I've found the Monster King."); } else if ($NLIB_DAY < 4) { slide 104, 61; dispbottom l("I should not veer off too much the path."); } end; } 023-2,86,59,0 script #NLIB_T05 NPC_HIDDEN,2,5,{ OnTouch: if ($NLIB_DAY == 5) { @QNL3=1; dispbottom l("I've found the Monster King."); } else if ($NLIB_DAY < 5) { slide 91, 61; dispbottom l("I should not veer off too much the path."); } end; } 023-2,53,49,0 script #NLIB_T06 NPC_HIDDEN,0,5,{ OnTouch: if ($NLIB_DAY == 6) { @QNL3=1; dispbottom l("I've found the Monster King."); } else if ($NLIB_DAY < 6) { slide 55, 48; dispbottom l("I should not veer off too much the path."); } end; } 023-2,35,90,0 script #NLIB_T07 NPC_HIDDEN,1,3,{ OnTouch: if ((gettime(2) < 25 || gettime(2) > 45) && !$@GM_OVERRIDE) { slide 39, 89; dispbottom l("I should not go ahead... yet."); } end; }