summaryrefslogblamecommitdiff
path: root/npc/functions/news.txt
blob: c11d36ffdfb29c2ef52ba6251e4254c279b230cb (plain) (tree)
1
2
3
4
5
6
7
8
9






                                         

                         











                                                                                      






                                                                                                                                                                  






                                                                      




                                                                                                                                                           






                                                                      





                                                                                                            






                                                                      


                                                                                                      

                                                                                                                           
             
                                                                                      



















                                                                                                                                                                  






                                                                      


                                                                                                                   



                                                                    




                                                                      

                                                   





                                                                                                                           



              
                                                                       
           

                                                                                                               
         


           

                                         
 
                               
                                                                                 

                                                    
                                                                         




                                                                                        
























                                                                                           
                                      










                                                                                 
                                     










                                                                                                                               






















                                                                                  
                                                             

                                                                                     


                                                                      
                                                        








                                                                                 


                                                       
                                                                    
                                                     

                                                               
                                                       
                                                                                 


                                                  


                                                                                                                  
               

                                                                                                                                                



                                                                                 


                                                              

                                                                                                                  
               


                                                                                                     



                                                                                 












                                                                                  



                                                                           
                                                              
               
                                                                                 

                                                                                 

















                                                                                 





                                                                                                                       
                                                                                                                    





                                                                                         










                                                                                                               








                                                                                                                                                                         

                                                            
                                                                                 











           
                                         
                         
                 
                                                                                           
                                                                                                                                            
                                                                                
                                                                       
                                                                                                                           
                                                                                                                         
                                                                                                                        


                                                                                                  
           

                                 
                        
                                          
                                                                                                     

     
                            



                                                            
 
                         















                                                                                                               

                        








                                                                                                                     
                                                                          











                                                                                                                                          
                  

                                                                                               
                                                                                                          
                                                                                          



                                                                        
                  


                                                     
                
                                                                                                                                    
     



                        
                                



                                                                                                         
         
 
        
               

                                          
                                                   
                                                               
                                                               
                                                                  





                                                                
               

                               

                          
                            





                        
// 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$ == "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;
}