summaryrefslogblamecommitdiff
path: root/npc/029-0/event.txt
blob: 43ecb13a6cd40dfcc2c51d428d7d4003ec6190fa (plain) (tree)
1
2
3
4
5
6
7
8
9






                                                                                  

                                                                         


                          







                                                                                                                                                      

                                                                                                            






                          




                                                             







                                                                                                                                           
                         



                                                                




                                                             






                                                                                                                                            
                        
                         





                                                                
     
                                                                         
                              

                                  

                   
                                     

        
       
                                                               



                                   
                                               
                   


                



                            
                    










                                                   

                                                       


                                                                       
     


                                                
                                                                                  



                                                
                                                     


                                                



                                                    



                                                  



                                                      





















                                                             
 
                               



                          

            
            

            
            

            
            
            
                    

                           
            
                             
                                   
                            
                                               
 














                                                        

                                                            


                                                                         
     


                                                       



                                              









                                                                                            
 






                                                             
     





















                                                           


           
                                
                                   


        


                                                                      


                                                                          
                                                                                  


          
                                                                                  


                                                              
                                                                                                                                                                                                                                             





                                                                                                
                                       



                                                              
                                                                                    









                                                                                         


                    
 
                   
                                                









                                            
                  
                                       
                     
                         
                                   
                              
     
                     



                                   

                                      



                     
                      










                            
                                      







                                                                                                                                                             

                                                                                                                       





                                

                             

                                                                                           
                      



                
      

                               
      


        
// TMW2 scripts.
// Authors:
//    Jesusalva
// Description:
//    Exclusive for Fires of Steam 2021 - When our OVH server datacenter got fire.

029-0,111,37,0	script	Alliance Hero#FoS	NPC_HALBERDBARBARIAN,{
    // No one is supposed to be able to reach NPC if event did not happen
    if (!$FIRESOFSTEAM) {
        disablenpc .name$;
        die(); end;
    }
    mesn;
    mesq l("Sooo, the police station of Moubootaur Legends went ablaze. Constable Perry is too busy to monitor illegal operation on this continent.");
    next;
    mesn;
    mesq l("Therefore... Are you perhaps interested in some... illicit goods? %%p");
    next;
    select
        l("Show me what you got, noob."),
        rif($GAME_STORYLINE >= 4, l("Actually - Do you exchange goods even more illegal goods than this?")),
        rif($GAME_STORYLINE >= 4, l("Actually - Do you exchange illegal... research results?"));
    mes "";
    if (@menu == 1) {
        closeclientdialog;
        openshop .name$;
        close;
    }
    else if (@menu == 2) {
        if (.mobp < .points) {
            mesn;
            mesq l("Not at the moment but come back later.");
            close;
        }
        mesn;
        mesq l("Yes I do... I sell %s %s for the small amount of %s GP. Interested? %%%%p", fnum(.mobp), l("Monster Points"), fnum(.mobg));
        if (Zeny < .mobg) close;
        next;
        if (askyesno() == ASK_NO) close;
        if (Zeny < .mobg) { die(); close; }
        Zeny-=.mobg;
        Mobpt+=.mobp;
        .points -= .mobp;
        mes "";
        mesn;
        mesq l("Hehehe... A pleasure doing business with you!");
    } else if (@menu == 3) {
        if (.robp < .points) {
            mesn;
            mesq l("Not at the moment but come back later.");
            close;
        }
        mesn;
        mesq l("Yes I do... I sell %s %s for the small amount of %s GP. Interested? %%%%p", fnum(.robp), l("Research Points"), fnum(.robg));
        if (Zeny < .robg) close;
        next;
        if (askyesno() == ASK_NO) close;
        if (Zeny < .robg) { die(); close; }
        Zeny-=.robg;
        MAGIC_RP+=.robp;
        .points -= .robp;
        mes "";
        mesn;
        mesq l("Hehehe... A pleasure doing business with you!");
    }
    close;

OnRw:
    logmes(sprintf("%s - Reward Granted by System Admin", getcharid(3)));
    getitem StrangeCoin, 2000;
    getitembound FireScroll, 1, 1;
    getexp 1000000, 500000;
    Mobpt+=1000000;
    Zeny+=1000000;
    dispbottom l("Jesusalva : \\o/");
    end;

OnInit:
    bindatcmd "steambk", "Alliance Hero#FoS::OnRw", 100, 99, 1;
	tradertype(NST_MARKET);
    .mobp=rand2(1000, 2500);
    .mobg=.mobp*rand2(100, 150)/10;
    .robp=rand2(900, 1200);
    .robg=.robp*rand2(40, 60);//rand2(80, 110);
    .points = 5000;
    .distance=5;
    .sex=G_MALE;

    .@steam = $FIRESOFSTEAM;
    if ($EVENT$ != "Steam")
        .@steam /= 2;

    sleep(SHOPWAIT);
    sellitem Coal,          -1, 50+(.@steam*3-3);
    sellitem LeatherPatch,  800, 45+(.@steam*3-3);
    sellitem RawLog,        -1, 40+(.@steam*3-3);
    sellitem WoodenLog,     -1, 40+(.@steam*3-3);
    sellitem IronOre,       -1, 30+(.@steam*3-3);
    sellitem CopperOre,     1000, 20+(.@steam*2-2);
    sellitem SilverOre,     2000, 14+(.@steam*2-2);
    sellitem GoldOre,       3000, 14+(.@steam*2-2);
    sellitem TinOre,        3600, 15+(.@steam*2-2);
    sellitem LeadOre,       4000, 15+(.@steam*2-2);
    sellitem TitaniumOre,   6000, 9+(.@steam*2-2);
    if ($GAME_STORYLINE >= 4) {
        sellitem IridiumOre,    16000, 6+(.@steam*2-2);
        // Platinum Ore is only stocked if Platinum Mines are liberated
        if ($FORTRESS_STATE)
            sellitem PlatinumOre,   24000, 3+(.@steam*2-2);
    }
    sellitem EarthPowder,   -1, 3+.@steam-1;
    sellitem EverburnPowder, 15000, 2+.@steam-1;

    sellitem AncientBlueprint,  ($EVENT$ == "Steam" ? 12500 : 18000), 4+.@steam/2;
    sellitem RustyKnife,        -1, 5+.@steam-1;
    sellitem TrainingWand,      -1, 5+.@steam-1;
    sellitem TrainingBow,       -1, 5+.@steam-1;

    // Always stock blueprints at initialization time
    sellitem AlchemyBlueprintA, -1, 5+.@steam-1;
    sellitem AlchemyBlueprintB, -1, 4+.@steam-1;
    sellitem AlchemyBlueprintC, -1, 3+.@steam-1;
    if ($GAME_STORYLINE >= 4) {
        sellitem AlchemyBlueprintD, -1, 2+.@steam-1;
        sellitem AlchemyBlueprintE, -1, 1+.@steam/2;
    }

    sellitem EquipmentBlueprintA, -1, 5+.@steam-1;
    sellitem EquipmentBlueprintB, -1, 4+.@steam-1;
    sellitem EquipmentBlueprintC, -1, 3+.@steam-1;
    if ($GAME_STORYLINE >= 4) {
        sellitem EquipmentBlueprintD, -1, 2+.@steam-1;
        sellitem EquipmentBlueprintE, -1, 1+.@steam/2;
    }

    sellitem ArcmageBoxset,     10000, 4+.@steam-1;
    sellitem ScholarshipBadge,  -1, 3+.@steam-1;
    sellitem Bullet,            4, 90000+(.@steam*1000-1000);
    sellitem Lifestone,         -1, 500+.@steam-1;
    sellitem Bread,             -1, 450+.@steam-1;
    sellitem Cheese,            -1, 300+.@steam-1;
    sellitem Aquada,            -1, 200+.@steam-1;

    sellitem WhiteFur,          -1, 1+rand2(50)+.@steam;
    sellitem Piberries,         -1, 1+rand2(50)+.@steam;
    sellitem CherryCake,        -1, 1+rand2(50)+.@steam;
    sellitem LettuceLeaf,       -1, 1+rand2(50)+.@steam;
    sellitem BugLeg,            -1, 1+rand2(50)+.@steam;
    sellitem RoastedMaggot,     -1, 1+rand2(50)+.@steam;
    sellitem Moss,              -1, 1+rand2(50)+.@steam;
    sellitem AnimalBones,       -1, 1+rand2(40)+.@steam;
    sellitem Milk,              -1, 1+rand2(50)+.@steam;
    sellitem Mashmallow,        -1, 1+rand2(50)+.@steam;
    sellitem Dragonfruit,       1200, 1+rand2(50)+.@steam;
    sellitem Root,              -1, 40+.@steam;
    sellitem ManaPiouFeathers,  -1, 1+rand2(300)+.@steam;

    if (!$BETASERVER && !debug)
        disablenpc .name$;
    end;

OnClock0001:
OnClock0201:
OnClock0401:
OnClock0601:
OnClock0801:
OnClock1001:
OnClock1201:
OnClock1401:
OnClock1601:
OnClock1801:
OnClock2001:
    .points += 5000;
    if ($EVENT$ != "Steam")
        end;
OnClock2201:
    .mobp+=rand2(1000, 2500);
    .mobg=.mobp*rand2(100, 150)/10;
    .robp+=rand2(900, 1200);
    .robg=.robp*rand2(40, 60);//rand2(80, 110);

    .@steam = $FIRESOFSTEAM;
    if ($EVENT$ != "Steam")
        .@steam /= 2;

    restoreshopitem Coal,           50+(.@steam*3-3);
    restoreshopitem LeatherPatch, 800, 45+(.@steam*3-3);
    restoreshopitem RawLog,         40+(.@steam*3-3);
    restoreshopitem WoodenLog,      40+(.@steam*3-3);
    restoreshopitem IronOre,        30+(.@steam*3-3);
    restoreshopitem CopperOre,   1000, 20+(.@steam*2-2);
    restoreshopitem SilverOre,   2000, 14+(.@steam*2-2);
    restoreshopitem GoldOre,     3000, 14+(.@steam*2-2);
    restoreshopitem TinOre,      3600, 15+(.@steam*2-2);
    restoreshopitem LeadOre,     4000, 15+(.@steam*2-2);
    restoreshopitem TitaniumOre, 6000, 9+(.@steam*2-2);
    if ($GAME_STORYLINE >= 4) {
        restoreshopitem IridiumOre,  16000, 6+(.@steam*2-2);
        // Platinum Ore is only restocked if Platinum Mines are liberated
        if ($FORTRESS_STATE)
            restoreshopitem PlatinumOre, 24000, 3+(.@steam*2-2);
    }
    restoreshopitem EarthPowder, 3+.@steam-1;
    restoreshopitem EverburnPowder, 15000, 2+.@steam-1;

    restoreshopitem RustyKnife, 5+.@steam-1;
    restoreshopitem TrainingWand, 5+.@steam-1;
    restoreshopitem TrainingBow, 5+.@steam-1;

    // Only restock blueprints in odd days
    if ($EVENT$ == "Steam" || gettimeparam(GETTIME_DAYOFMONTH) % 2) {
        restoreshopitem AncientBlueprint, ($EVENT$ == "Steam" ? 12500 : 18000), 4+.@steam/2;
        restoreshopitem AlchemyBlueprintA, 5+.@steam-1;
        restoreshopitem AlchemyBlueprintB, 4+.@steam-1;
        restoreshopitem AlchemyBlueprintC, 3+.@steam-1;
        if ($GAME_STORYLINE >= 4) {
            restoreshopitem AlchemyBlueprintD, 2+.@steam-1;
            restoreshopitem AlchemyBlueprintE, 1+.@steam/2;
        }

        restoreshopitem EquipmentBlueprintA, 5+.@steam-1;
        restoreshopitem EquipmentBlueprintB, 4+.@steam-1;
        restoreshopitem EquipmentBlueprintC, 3+.@steam-1;
        if ($GAME_STORYLINE >= 4) {
            restoreshopitem EquipmentBlueprintD, 2+.@steam-1;
            restoreshopitem EquipmentBlueprintE, 1+.@steam/2;
        }
    }

    restoreshopitem ArcmageBoxset, 10000, 4+.@steam-1;
    restoreshopitem ScholarshipBadge, 3+.@steam-1;
    restoreshopitem Bullet, 4, 90000+(.@steam*1000-1000);
    restoreshopitem Lifestone, 500+.@steam-1;
    restoreshopitem Bread,  450+.@steam-1;
    restoreshopitem Cheese, 300+.@steam-1;
    restoreshopitem Aquada, 200+.@steam-1;

    restoreshopitem WhiteFur, 1+rand2(50)+.@steam;
    restoreshopitem Piberries, 1+rand2(50)+.@steam;
    restoreshopitem CherryCake, 1+rand2(50)+.@steam;
    restoreshopitem LettuceLeaf, 1+rand2(50)+.@steam;
    restoreshopitem BugLeg, 1+rand2(50)+.@steam;
    restoreshopitem RoastedMaggot, 1+rand2(50)+.@steam;
    restoreshopitem Moss, 1+rand2(50)+.@steam;
    restoreshopitem AnimalBones, 1+rand2(40)+.@steam;
    restoreshopitem Milk, 1+rand2(50)+.@steam;
    restoreshopitem Mashmallow, 1+rand2(50)+.@steam;
    restoreshopitem Dragonfruit, 1200, 1+rand2(50)+.@steam;
    restoreshopitem Root, 40+.@steam;
    restoreshopitem ManaPiouFeathers, 1+rand2(300)+.@steam;
    end;

OnMinute02:
    if ($EVENT$ != "Steam") end;
    donpcevent "Neko::OnClock2359";
    end;
}


003-0-2,34,21,0	script	Alliance Officer	NPC_HALBERDBARBARIAN,{
    mesn;
    mesq l("Good %s, %s. The council is not in session right now.",
          (is_night() ? l("evening") : l("morning")),
          (strcharinfo(0) == $MOST_HEROIC$ ? lg("hero") : lg("peasant")));
    if (($BETASERVER || debug) && BaseLevel < 60 && !#BETA_REVIVE) goto L_PowerUp;
    close;

L_PowerUp:
    tutmes l("This is a debug NPC. If you don't know what you're doing, refuse.");
    next;
    mesn strcharinfo(0);
    mesq l("Could you awake my lost and forsaken potential?");
    if (TUTORIAL) mesc l("You whisper a date - 2021-03-11, the %sreal%s date of the %d AT Great Fire.", "[@@https://tmw2.org/news#outage|", "@@]", min(240, gettime(GETTIME_YEAR)-1800)); // Great Fire: 219~240 AT (238 max due to 2038 bug)
    next;
    mesn;
    mesq l("Yes. I can. But this is irreversible. Are you sure you want this?");
    next;
    mesc l("Awake lost potential? This will mess with your char data irreversibly, beware."), 1;
    if (askyesno() == ASK_NO) close;
    inventoryplace Iten, 1, NPCEyes, 4;

    // Chose a stage (NO TTL)
    mesc l("Please select where you left off on Main Quest.");
    mesc l("The one with a star (*) is advised.");
    mesc l("It is NOT advised for new players to skip parts of the Main Quest."), 1;
    mesc l("Skipping will FORSAKE rewards for the quest and related; So choose wisely!");
    mes "";
    menuint
        "Nard Quest finished", 1,
        "Lua Quest finished", 3,
        "Airlia Quest finished", 6,
        "Librarian Quest finished", 10,
        "Blue Sage Quest finished", 12,
        "(*) King Gelid Quest complete", 17,
        "Lightbringer/Barbara finished", 19;
    mes "";
    // Save stage
    .@mq = @menuret;

    // IP Blacklist
    if (array_find($@IPBLIST$, getcharip()) < 0)
        array_push($@IPBLIST$, getcharip());

    // Level up
    freeloop(true);
    while (BaseLevel < 60)
        getexp NextBaseExp, 100;
    freeloop(false);

    // Skip a few quests
    setq ShipQuests_Arpan, 5;
    if (.@mq > 10)
        setq NivalisQuest_BlueSage, 12;
    if (.@mq >= 17) {
        sk_lvup(AM_REST);
        sk_lvup(AM_RESURRECTHOMUN);
        sk_lvup(AM_CALLHOMUN);
    }
    if (.@mq >= 18) {
        BARBARA_STATE=any(1, 2, 3);
    }

    // Update main quest
    if (getq(General_Narrator) < .@mq)
        setq General_Narrator, .@mq;

    // Monster points
    MPQUEST=true;
    if (!Mobpt)
        Mobpt+=100000;

    // Magic Power
    adddefaultskills();
    if (!MAGIC_LVL) {
        sk_lvup(AL_DP);
        MAGIC_LVL=1;
    }

    // Crafting
    if (!CRAFTQUEST) {
        sk_lvup(TMW2_CRAFT);
        getitembound RecipeBook, 1, 1;
        CRAFTQUEST=true;
    }

    // Free skills
    sk_lvup(TMW2_MANABOMB);
    sk_lvup(any(TMW2_FROSTDIVER, TMW2_NAPALMBEAT, TMW2_MAGICSTRIKE, TMW2_METEORSTRIKE, TMW2_FIREARROW, TMW2_BRAWLING, TMW2_FALKONSTRIKE, TMW2_CHARGEDARROW));

    // Pure awesomeness
    //getitembound any(StrengthFruit, AgilityFruit, VitalityFruit, IntelligenceFruit, DexterityFruit, LuckFruit), 1, 4;
    //getitembound any(StrengthFruit, AgilityFruit, VitalityFruit, IntelligenceFruit, DexterityFruit, LuckFruit), 1, 4;

    // Full power
    getitembound Wurtzite, 6, 4;
    getitembound Bread, 10, 4;

    // Regeneration and misc
    getitem StrangeCoin, 100;
    Zeny+=50000;
    percentheal 100,100;
    mesc l("You awake a long forgotten potential, and feel ready to take over the world.");
    #BETA_REVIVE=true;
    close;

OnInit:
    .distance=4;
    /*
    if (!$BETASERVER && !debug)
        disablenpc .name$;
    */
    end;
}