// TMW-2 script.
// Authors:
// Jesusalva
// Description:
// Server news.
function script GameNews {
.@entry=getarg(0, 0);
switch(.@entry) {
case 99:
mes "";
mes ".:: "+ l("Prologue") + " ::.";
next;
mesc l("[@@https://wiki.moubootaurlegends.org/Storyline|Read the History@@]");
next;
break;
//////////////////////////////////////////////////////////////////
case 100:
mes "";
mes ".:: "+ l("The First Act") + " ::.";
next;
mesc b(l("The Monster King Army has occupied several towns!"));
mesc l("The Monster King has managed to take hold of Nivalis and Hurnscald; Travel to Frostia and Halinarzo has also been made difficult.");
next;
mesc l("With Tulimshar being the last major human settlement standing (besides distant locations like Candor), the situation looks more dire than ever.");
mesc l("Brave players need to group and retake them!");
mesc l("Stay tuned for announcements regarding raid times to retake the towns.");
mesc l("This event is unique, and cannot be repeated."), 1;
next;
break;
//////////////////////////////////////////////////////////////////
case 101:
mes "";
mes ".:: "+ l("The Second Act") + " ::.";
next;
mesc b(l("The Monster King Army left the cities! What will happen next? Anxiety grows!"));
mesc l("After being successful is recovering Hurnscald and Nivalis from the Monster Army, they seem to have withdrawn.");
next;
mesc l("This certainly is just to reorganize their armies. We must take this chance to improve ourselves, or else, we'll be overrun soon enough.");
mesc l("Brave adventurers, be ready for the worst!");
next;
break;
//////////////////////////////////////////////////////////////////
case 102:
mes "";
mes ".:: "+ l("The Third Act") + " ::.";
next;
mesc b(l("The Monster King Army is making siege at towns randomly!"));
mesc l("The Monster King is sending their armies to attack towns with a seemingly random pattern.");
mesc l("However, the Army seems to walk away after some time.");
next;
mesc l("The reason why they are not occupying the towns like before is still unknown.");
mesc l("However, we must defeat the commanders to avoid major damage to them!");
next;
break;
//////////////////////////////////////////////////////////////////
case 103:
mes "";
mes ".:: "+ l("The Fourth Act") + " ::.";
next;
mesc b(l("The Strike Back Is Upon Us!"));
mesc l("The Monster Army appears to be in complete disarray, sieges are much less frequent.");
next;
mesc l("The mist over the Impregnable Fortress Peak finally lowered down, and it seems... The peaks are no more!");
mesc l("The Monster King Lair is not in a impregnable mountain, but in a small island now!!");
next;
mesc l("Will adventurers reach it? Will the random attacks at towns cease??");
mesc l("The world hero %s and the High Council Officers will announce the times to raid the Fortress.", $MOST_HEROIC$);
mesc l("Pay attention to #world chat, as this event is managed by players. The Monster Army is also trying to regroup, neglecting it is not advised."), 1;
next;
break;
//////////////////////////////////////////////////////////////////
case 1031:
mes "";
mes ".:: "+ l("Interlude") + " ::.";
next;
mesc b(l("Andrei Sakar Calls for Heroes!"));
mesc l("Andrei Sakar, world renowned hero, is assembling a group of adventurers for an important mission!");
next;
mesc l("For a long time, towns on the distant continent of Kolev have been supporting humans here.");
mesc l("They had a critical role in ensuring the human's race survival to The Great Fire.");
next;
mesc l("However, for a few months already, nothing else has been heard from that town, and all contact was lost.");
mesc l("Andrei Sakar is decided to investigate, and has made arrangements with %s.", b(l("Nard")));
next;
mesc l("If you are a brave hero or adventurer, Andrei, his lieutenant Elora and the Alliance will be waiting for you on %s!", b(l("Artis")));
mesc l("You need to reach a certain point in Player Story in order to partake on this event. Non-repeatable."), 1;
next;
break;
//////////////////////////////////////////////////////////////////
case 104:
mes "";
mes ".:: "+ l("The Fifth Act") + " ::.";
next;
mesc l("With the brave sacrifice of Andrei Sakar to save our world, our future seems as bleak than ever.");
mesc l("There is no other solution; A desperate struggle is needed...");
next;
mesc l("We must defeat the Monster King on his evil lair!");
mesc l("Only then we may have peace!!");
next;
break;
//////////////////////////////////////////////////////////////////
case 105:
mes "";
mes ".:: "+ l("The Final Act") + " ::.";
next;
// The Final Act has not been finished
// So this part is a bit weaker than others
mesc l("The Moubootaur is the final opponent.");
mesc l("How many lives will be claimed until he is put to rest?");
next;
mesc l("According to the prophecy, he'll not stop, until life itself as we know today is removed from existence.");
next;
break;
default:
break;
}
mesc l("We want to thank everyone who did this release possible.");
mes "";
mesc l("Shall you have any inquiry, do not hesit to [@@mailto:admin@tmw2.org|send us an email@@]##b.");
mesc l("You can also read the [@@news|server news@@], or even [@@https://tmw2.org/news|older entries@@].");
next;
return;
}
function script EventHelp {
if ($EVENT$ == "") return;
if ($EVENT$ == "Kamelot") {
/////////////////////////////////////////////////////////////////////////
mesc ".:: " + l("Kamelot Raid") + " ::.", 2;
mes "";
mes l("Group together your guild and challenge the evil power,");
mes l("which creeps over Kamelot! During this event, the ancient");
mes l("evil will return every day to curse King Arthur the Micksha.");
mes "";
mes l("Is your guild strong enough to give Arthur at least good nights sleep?");
mesc l("Location: Kamelot Castle, west of Hurnscald."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Valentine") {
mesc ".:: " + l("Valentine Day") + " ::.", 2;
mes "";
mes l("It is time to send %s to your beloved ones!", getitemlink(BoxOfChocolates));
mes l("Touch Soul Menhir and visit the Valentine's Island.");
mes l("Collect chocolate and love letters from the fluffies");
mes l("and have Demure to send them to those you admire!");
mes l("Don't forget to collect and eat any chocolate sent to you, too!");
mes "";
mes l("Witness, the power of love!");
mesc l("Location: Valentine Island, access by Soul Menhir."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Easter") {
mesc ".:: " + l("Easter") + " ::.", 2;
mes "";
mes l("The Enchanted Forest is now open to visitors!");
mes l("Collect easter eggs, and exchange them with Lilica!");
mes "";
mes l("Compete for the first place, and remember to exchange silver");
mes l("easter eggs for more useful things!");
mes "";
mes l("Who will collect the most?!");
mesc l("Location: Enchanted Forest, access by Soul Menhir."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Patrick") {
mesc ".:: " + l("St. Patrick Day") + " ::.", 2;
mes "";
mes l("A golden pot in woodlands shall reward those who wear green.");
mes l("Find it, spin it, and be bestowed in golden rewards!");
mes "";
mes l("Meanwhile, at 00h, 06h, 12h, 15h, 18h and 21h UTC,");
mes l("legendary clovers will spawn almost everywhere.");
mes "";
mes l("Feeling lucky?");
mesc l("Location: North Woodlands, south of Nivalis."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Worker") {
mesc ".:: " + l("Worker Day") + " ::.", 2;
mes "";
mes l("The International Worker Day is a traditional celebration,");
mes l("focused on lower level players, and to cherish those whom work hard everyday.");
mes "";
mes l("Visit the special event map, kill low level bosses, collect %s,", getitemlink(Pearl));
mes l("exchange them, and have fun!");
mes "";
mes l("Happy %s!", "@@https://en.wikipedia.org/wiki/International_Workers%27_Day|"+l("international worker day")+"@@");
mesc l("Location: Worker's Cave, access by Soul Menhir."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Thanksgiving") {
mesc ".:: " + l("Thanksgiving") + " ::.", 2;
mes "";
mes l("It has been a great year, and the TMW2 Team would like to");
mes l("give everyone gifts for spending so much time with us %%l");
mes "";
mes l("Every day you login, you'll be able to spin a card.");
mes l("the card will determine your gift - the more cards you spin,");
mes l("the better your chances to get the best cards.");
mes "";
mes l("So long, and thanks for all the fish!");
mesc l("Location: Daily Login."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Christmas") {
mesc ".:: " + l("Christmas") + " ::.", 2;
mes "";
mes l("By far, the most important holiday on Moubootaur Legends.");
mes l("Visit the Christmas Workshop, and talk to the chief in charge.");
mes "";
mes l("Seems like they're having difficulty handling the demand, and");
mes l("need help to send gifts to everyone! Compete for scoreboards,");
mes l("but remember: Rewards will also be based on everyone's progress!");
mes "";
mes l("Merry Christmas, and a happy new year! \\o/");
mesc l("Location: Christmas Workshop, Romantic Field, south of Nivalis."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Anniversary") {
mesc ".:: " + l("Moubootaur Legends Anniversary") + " ::.", 2;
mes "";
mes l("Moubootaur Legends just got older! %%N");
mes l("Base Experience Rate is now %d%%.", $BCONFB_EXPR);
mes "";
mes l("Also known as TMW2 Day, it celebrates the server founding,");
mes l("in March 2nd 2018.");
mes l("New chars, and reborn chars, will also begin at level 10.");
mes "";
mes l("Invite your friends, and become a Moubootaur Legend!");
mesc l("Location: N/A"), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Regnum") {
mesc ".:: " + l("Regnum Blessing") + " ::.", 2;
mes "";
mes l("The Regnum Blessing causes all monsters in an area");
mes l("to give %s experience!", l("triple"));
mes "";
mes l("Farm there and get the best experience value!");
mesc l("Location: %s", $REGNUM_BLESSMAP_H$), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Expo") {
mesc ".:: " + l("World Expo") + " ::.", 2;
mes "";
mes l("A few times during the year, an independent team organizes a world exposition of special relics.");
mes l("However, %s stole the treasures which were being showcased!", $WORLDEXPO_ENEMY$);
mes l("Collect the treasured crystals from treasure chests!");
mes "";
mes l("While %s's reasons to do so remain unclear, a request was made.", $WORLDEXPO_ENEMY$);
mes l("Aurora will collect the crystals; And adventurers from the whole world shall look for them in the chests and return to Aurora!");
mes "";
mes l("This exposition has to be a success!");
mesc l("Location: Treasure Chests, hidden inside dungeons."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Fishing") {
mesc ".:: " + l("Catch the Golden Fish!") + " ::.", 2;
mes "";
mes l("A few times during the year, the \"golden wave\" migrates from the north pole to the south pole.");
mes l("As a result, while fishing you may randomly get a golden fish.");
mes "";
mes l("These gold fishes multiply horribly and have no natural predator.");
mes l("If left unchecked for long, they will eventually become the only specie on the sea.");
mes l("Help controlling their population, and return those you fish to Aurora!");
mes "";
mes l("Catch the golden fish swarm!");
mesc l("Location: Fishing spots in the water."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Mining") {
mesc ".:: " + l("Miners Union Research Request!") + " ::.", 2;
mes "";
mes l("While mining bifs, a strange powder appeared.");
mes l("The effects and uses - if any - are still unknown.");
mes "";
mes l("The Miners Union is trying to research this powder.");
mes l("A reward is promised to those whom cooperate.");
mes l("Collaborate by giving this powder to Aurora, before it vanishes!");
mes "";
mes l("Mysterious Powder expires after some time!");
mesc l("Location: All bifs in the world."), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Candor") {
mesc ".:: " + l("Candor Battle Season") + " ::.", 2;
mes "";
mes l("During this season, challenges to Crazyfefe will be free.");
mes l("Special battle modes will also be available.");
mes "";
mes l("Will you accept his challenge?! Raise to the highest top score!");
mesc l("Location: Candor B1F"), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Celestia") {
mesc ".:: " + l("Celestia Season") + " ::.", 2;
mes "";
mes l("During this season, you can summon the Yeti King for free.");
mes l("This is the perfect opportunity to help Celestia.");
mes "";
mes l("Mount your party and find the Yeti King!");
mesc l("Location: Tulimshar Sewers / Hurnscald Town Hall"), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Gemini") {
mesc ".:: " + l("Gemini Season") + " ::.", 2;
mes "";
mes l("During this season, Gemini Quest can be done with parties of 6.");
mes l("Not only that, but you get one free attempt every day!");
mes "";
mes l("Form your party and rescue Luvia Gemini from Isbamuth!");
mesc l("Location: Forsaken Inn, South Woodlands"), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Rebirth") {
mesc ".:: " + l("Rebirth Season") + " ::.", 2;
mes "";
mes l("During this season, monster point gain is increased in %d%%!", 10);
mes l("Not only that, but reborn characters will spawn at level %d!", 3);
mes "";
mes l("Also: You'll be able to rebirth at Tulimshar with Jakod. What are you waiting for?!");
mesc l("Location: Not applicable"), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Tower") {
mesc ".:: " + l("Dream Tower Appears") + " ::.", 2;
mes "";
mes l("The dream towers have shown up. They have several floors filled with treasure and dangerous monsters.");
mes l("Every day, they disappear and a new one shows up on its place.");
mes "";
mes l("You need a %s for each floor, and defeat the gatekeeper to advance.", getitemlink(EventDreamTicket));
mes l("Floors cannot be re-visited, and rewards increase at each floor.");
mes "";
mes l("These towers must hold unfathomable secrets from %s.", $DREAMTOWER_SAGE$);
mes l("We must find out what lies at the top, whatever the cost!");
mesc l("Location: The Mana Plane, Dream Tower"), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Raid") {
mesc ".:: " + l("Boss Raid") + " ::.", 2;
mes "";
mes l("This is terrible - a fiend from a parallel dimension has broken in ours!");
mes l("We are unsure of the cause, but they must be repelled at any cost!");
mes l("Meanwhile, the sages of destiny will prepare a way to kick them back to wherever they belong!");
mes "";
mes l("Can we keep %s at bay long enough?", $RAIDING_BOSS$);
mes l("Collect their %s as well, so our wizards can do their magic!", getitemlink(EventNaftalin));
mesc l("Location: The Mana Plane, Showdown Chamber"), 3;
/////////////////////////////////////////////////////////////////////////
} else if ($EVENT$ == "Olympics") {
mesc ".:: " + l("Magic Olympics") + " ::.", 2;
mes "";
mes l("The Magic Olympics are held by the Academy Grand Masters roughly quarterly, and allow the brightest mages to acquire scholarships at the Magic Academy.");
mes l("Only one vouch can be acquired, and you cannot be vouched to Grand Master position. You need to have touched the Mana Stone to participate.");
mes "";
mes l("Talk to Hocus in Porthos (via Menhir) to enroll.");
mesc l("Location: The Mana Plane, Porthos"), 3;
/////////////////////////////////////////////////////////////////////////
} else {
mesc l("There's no help available for this event.");
/////////////////////////////////////////////////////////////////////////
}
next;
return;
}
function script Journalman {
/* Random Fun Fact */
npctalk3 any(
l("Halinarzo Church makes a party every Sunday! Only true believers are invited!"),
l("Beware the Terranite! Only @@ would be brave enough to challenge them!", ($MOST_HEROIC$ == "" ? "Andrei Sakar" : $MOST_HEROIC$)),
l("Terrible manaquake hits the whole world, causing dramatic changes!"),
l("Effects from The Great Fire are still felt by the people."),
l("Green Wars project says that @@ trees were planted by adventurers on the world!", format_number($TREE_PLANTED)),
l("The Team For A Better PvP says that @@ players were killed in fair matches!", format_number($PLAYERS_KILLED)),
l("The Alliance says that @@ monsters have been slain since Hurnscald Siege!", format_number($MONSTERS_KILLED)),
l("All hail @@ and Andrei Sakar, heroes of the world!", $MOST_HEROIC$));
mesn getarg(0);
mesq l("Bonjour! I am @@, and I am from the Press! Read the latest news with me!", getarg(0));
mes "";
/* Permanent/Weekly Events */
if ($EVENT$ != "") {
mesc l("It's @@ (day)!", $EVENT$);
mesc l("Try talking to Soul Menhir or with any NPC on Tulimshar Center (near Soul Menhir).");
}
/* Short-Timed Events */
if ($@GM_EVENT)
mesc l("An event is happening at Aeros! Hurry up!");
else if ($@MK_SCENE)
mesc l("The Monster King is on the move!");
/* Seasonal Events */
switch (season()) {
case SPRING:
mesc l("It's spring! Two lovely NPCs at woodlands can be found...");
break;
case WINTER:
mesc l("It's winter! An NPC in Nivalis Town is freezing...");
break;
case SUMMER:
mesc l("It's summer! Ched is having his usual contest, but Luffyx in Hurnscald is up to no good!");
break;
case AUTUMN:
mesc l("It's autumn! There is no special event during autumn, only special drops.");
break;
default:
Exception(l("Invalid season: @@", season()), RB_DEFAULT|RB_SPEECH); break;
}
/* Main Storyline */
mes "";
switch ($GAME_STORYLINE) {
case 0:
mesc l("The Monster King Army is occupying several towns! Brave players need to group and retake them!");
break;
case 1:
mesc l("The Monster King Army left the cities! What will happen next? Anxiety grows!");
break;
case 2:
.@def=100-(($MK_TEMPVAR+rand2(-1,1))*100/MK_SIEGE_TOTALPOWER);
if ($@MK_AGGRO >= 300)
.@st$=col(b(l("very mad")), 1);
else if ($@MK_AGGRO >= 200)
.@st$=col(b(l("very angry")), 6);
else if ($@MK_AGGRO >= 100)
.@st$=col(b(l("furious")), 7);
if ($@MK_AGGRO >= 50)
.@st$=col(b(l("angry")), 4);
else
.@st$=col(b(l("discontent")), 9);
mesc l("The Monster King Army is attacking towns at random, but players already reduced their organization to @@ %%!", .@def);
mesc l("With recent player activity, the Monster king is @@!", .@st$);
break;
case 3:
mesc l("The Monster Army is in complete disarray, sieges are much less frequent.");
mesc l("The Monster King Lair is not in a impregnable mountain, but in a small island now!!");
mesc l("Will adventurers reach it? Will the random attacks at towns cease??");
break;
case 4:
mesc l("We must defeat the Monster King on his evil lair!");
mesc l("Only then we may have peace!!");
break;
case 5:
mesc l("Moubootaur, please spare me...");
break;
default:
Exception(l("I do now know what this means: GS-@@-ICXN-@@", $GAME_STORYLINE, $MK_TEMPVAR), RB_DEFAULT|RB_SPEECH); break;
}
/* Fires of Steam */
if ($FIRESOFSTEAM) {
mes "";
if ($FIRESOFSTEAM >= 10)
mesc l("We'll never forget Andrei Sakar, the most courageous hero this world has ever had.");
else
mesc l("Andrei Sakar calls for all the brave in the town of Artis - Kolev!");
}
next;
do {
mes "";
menuint
l("Thanks for your help!"), 1,
rif($EVENT$ != "", l("Event News")), 0,
rif($GAME_STORYLINE >= 5, l("The Final Act")), 105,
rif($GAME_STORYLINE >= 4, l("The Fifth Act")), 104,
rif($FIRESOFSTEAM, l("Interlude - Fourth Act")), 1031,
rif($GAME_STORYLINE >= 3, l("The Fourth Act")), 103,
rif($GAME_STORYLINE >= 2, l("The Third Act")), 102,
rif($GAME_STORYLINE >= 1, l("The Second Act")), 101,
rif($GAME_STORYLINE >= 0, l("The First Act")), 100,
l("Prologue"), 99,
l("Eh, I have to go."), 1;
mes "";
if (@menuret > 1)
GameNews(@menuret);
if (@menuret == 0)
EventHelp();
} while (@menuret != 1);
mesn getarg(0);
mesq l("Good bye!");
close;
return;
}