Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //===== eAthena/rAthena Script =======================================
- //= Goblin Invasion
- //===== By: ==================================================
- //= Mysterious
- //===== Current Version: =====================================
- //= 1.6
- //===== Compatible With: =====================================
- //= eAthena or rAthena SVN
- //===== Description: =========================================
- // Goblins spawn randomly in a given town. Once all Goblins are killed
- // the Goblin Leader spawns.
- //===== TODO: ================================================
- // - Change more coding
- //===== Additional Comments: =================================
- //= v1.0 - First release [Mysterious]
- //= v1.1 - Fixed Bugs [Mysterious]
- //= v1.2 - Fixed Sentence structures [Mysterious]
- //= v1.3 - Added Proper Notes [Mysterious]
- //= v1.4 - Made it obvious on what players have to change [Mysterious]
- //= v1.5 - Proper Sentence Structures and Typos fixed [Mysterious]
- //= v1.6 - Fixed mobs not counting down properly [Mysterious]
- //============================================================
- rachel,136,146,5 script Goblin Invasion 459,{
- set .gm,40; //GM Level to access the GM Menu. Default: 40
- // GM menu | Game Masters Level 40 or more are allowed to Start and Stop invasions.
- if (getgmlevel()>.gm) {
- if (.mobs_left) {
- mes "[Invasion]";
- mes "An invasion is already in progress! Details:";
- mes "Location: " + .Map$;
- mes "^FF0000"+.mobs_left+"^000000 Goblins left";
- mes " ";
- mes "Would you like to Stop the invasion?";
- if(select("- No:- Yes")==1) close;
- donpcevent "Invasion NPC::OnTimer1805000";
- mes "Invasion stopped";
- announce "The Invasion has been stopped by "+strcharinfo(0),bc_all;
- goto OnStop;
- close;
- }
- mes "[Invasion]";
- mes "Please customize the Invasion event before starting it.";
- mes "Note - The Goblin Leader drops x5 of the prize.";
- Main:
- next;
- mes "[Invasion]";
- switch(select("Item [" + getitemname(.ItemID) + "]:Start Event")) {
- case 1:
- mes "Which item would you like the Goblin Leader to drop?";
- mes "Please input the item ID:";
- input .ItemID;
- goto Main;
- case 2:
- mes "The event is going to begin shortly.";
- close2;
- goto OnStart;
- }
- //If a player clicks the NPC, the NPC will tell the player how much Mobs are left on the certain map.
- mes "[Invasion]";
- mes "There are "+.mobs_left+" Goblins who've invaded "+.Map$[.rand_map]+"!";
- close;
- /////////////////////////
- //The actual NPC Script//
- /////////////////////////
- OnMinute50: // Change this to your liking (When you want the event to start)
- OnStart:
- set .mobs_left, 1;
- sleep2 1000;
- set $@ran, rand(1,6);
- if ($@ran == 6) set .Map$,"splendide";
- if ($@ran == 5) set .Map$,"izlude";
- if ($@ran == 4) set .Map$,"payon";
- if ($@ran == 3) set .Map$,"geffen";
- if ($@ran == 2) set .Map$,"morocc";
- if ($@ran == 1) set .Map$,"prontera";
- sleep2 1000;
- announce "[ Rune-Midgard Guard ]: We have trouble here in the fabulous town known as " + .Map$ + "!", bc_all;
- sleep2 5000;
- announce "[ Rune-Midgard Guard ]: Everyone, we need your help to get rid of these Goblins!", bc_all;
- announce "[ Rune-Midgard Guard ]: We need you to kill ALL THE GOBLIN WITHIN 30MINUTES to summon the GOBLIN LEADER!", bc_all;
- monster .Map$,0,0,"Goblin",1258,250,"Goblin Invasion::OnMyMobDead";
- set .mobs_left, 250;
- initnpctimer;
- end;
- OnTimer1805000: // 30 minutes later, kills all the mobs.
- killmonster .Map$,"Goblin Invasion::OnMyMobDead";
- killmonster .Map$,"Goblin Invasion::OnSpecialMobDead";
- set .mobs_left, 0;
- announce "It seems that no one can finish the Invasion!",bc_all;
- end;
- OnStop://When the event is stopped by a GM, or all monsters dead.
- stopnpctimer;
- killmonster .Map$,"Goblin Invasion::OnMyMobDead";
- killmonster .Map$,"Goblin Invasion::OnSpecialMobDead";
- announce "It seems that "+strcharinfo(0)+" has ended the Invasion!",bc_all;
- end;
- OnMyMobDead: //When a Goblin is killed
- set .mobs_left, .mobs_left-1;
- if (.mobs_left==0) {
- announce "[ Rune-Midgard Guard ]: The Goblin Leader has spawned in " + .Map$ + "!", bc_all;
- monster .Map$,0,0,"Goblin Leader",1299,1,"Goblin Invasion::OnSpecialMobDead";
- } else {
- announce "["+.mobs_left+"/250] Goblins left.",bc_map;
- }
- end;
- OnSpecialMobDead:
- announce strcharinfo(0)+" has fought off the Goblin Invasion and has been awarded a worthy prize!", bc_all;
- getitem .ItemID,5; //Change the [5] to the amount you wish to hand out.
- donpcevent "Goblin Invasion::OnStop";
- }
- end;
- }
Advertisement
Add Comment
Please, Sign In to add comment