summaryrefslogblamecommitdiff
path: root/npc/commands/event.txt
blob: 7e51ecdfd72881c88fefd620a532b8781756e33e (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                                                         
                                                                           
                                         
                              

















                                                          







                                                              
                                                              
                                                              

                                                              
                                                                

                                           
                                           
                                           





                                             
                                                              



                    




                                          
                                   

                                      
                                                    

                                          
                                                                                                                                        



               


                                          
                                 

                                       
                                                     

                                          
                                                                                                                                         



               
                      






                                                         


                                                    


                                                


                                                   

                                  
     
 


















 




                                            
                                  
                                        
                                     
                                                     
 
                        
                                                                                           
                      
                                     







                                                                      

                                                                 




               








                                                                                                

                                            
                                     



                                                                                      
                        
                                          
                                          
                                            











                               
                   





                    
 
 











                                                                        
                                     
                                                                        
                                                                                                                                                  
                                                                  











                                              

        
       
                                                   
                                                      
 
// Delete item ID on inventories, storages, guild storages and carts. Also affects mails.
// WARNING, irreversible and dangerous!
// DelItemFromEveryPlayer( ID )
function	script	DelItemFromEveryPlayer	{
    if (getarg(0, -1) < 0)
        return;

    query_sql("DELETE FROM `inventory` WHERE `nameid`="+getarg(0));
    query_sql("DELETE FROM `cart_inventory` WHERE `nameid`="+getarg(0));
    query_sql("DELETE FROM `storage` WHERE `nameid`="+getarg(0));
    query_sql("DELETE FROM `guild_storage` WHERE `nameid`="+getarg(0));
    query_sql("DELETE FROM `rodex_items` WHERE `nameid`="+getarg(0));
    query_sql("DELETE FROM `auction` WHERE `nameid`="+getarg(0));
    return;
}

// Christmas cannot be on GlobalEventMenu because it affects seasons system
function	script	sChristmas	{
        // Add Christmas drops
        addmonsterdrop(Moggun,      XmasCake,  800);
        addmonsterdrop(AlphaMouboo, XmasCake,  920);
        addmonsterdrop(BlueSlime,   XmasCake, 1000);
        addmonsterdrop(SantaSlime,  XmasCake, 1200);
        addmonsterdrop(IcedFluffy,  XmasCake, 1500);
        addmonsterdrop(Yeti,        XmasCake, 5000);

        addmonsterdrop(Bandit,      XmasCandyCane,  300);
        addmonsterdrop(Mouboo,      XmasCandyCane,  480);
        addmonsterdrop(WhiteSlime,  XmasCandyCane,  500);
        addmonsterdrop(RudolphSlime,XmasCandyCane, 1000);
        addmonsterdrop(Fluffy,      XmasCandyCane, 2000);
        addmonsterdrop(AzulSlime,   XmasCandyCane, 2000);

        addmonsterdrop(Duck,        GingerBreadMan,  360);
        addmonsterdrop(WaterFairy,  GingerBreadMan, 1000);


        addmonsterdrop(Yeti,        ClosedChristmasBox,  500);
        addmonsterdrop(WaterFairy,  ClosedChristmasBox,  480);
        addmonsterdrop(AlphaMouboo, ClosedChristmasBox,  430);
        addmonsterdrop(IcedFluffy,  ClosedChristmasBox,  375);
        addmonsterdrop(BlueSlime,   ClosedChristmasBox,  320);
        addmonsterdrop(SantaSlime,  ClosedChristmasBox,  260);
        addmonsterdrop(AzulSlime,   ClosedChristmasBox,  200);
        addmonsterdrop(Moggun,      ClosedChristmasBox,  140);
        addmonsterdrop(Fluffy,      ClosedChristmasBox,  100);
        addmonsterdrop(RudolphSlime,ClosedChristmasBox,   60);
        addmonsterdrop(WhiteSlime,  ClosedChristmasBox,   30);

        // Change maps for Christmas Season (Specially LoF maps)
        addmapmask "003-1", MASK_CHRISTMAS;
        addmapmask "005-1", MASK_CHRISTMAS;
        addmapmask "009-1", MASK_CHRISTMAS;
        addmapmask "012-1", MASK_CHRISTMAS;
        addmapmask "017-2", MASK_CHRISTMAS;
        addmapmask "017-2-1", MASK_CHRISTMAS;
        addmapmask "017-3", MASK_CHRISTMAS;

        // Enable event
        set $EVENT$, "Christmas";
        //logmes "Enabled CHRISTMAS event.", LOGMES_ATCOMMAND;
        return;
    }
    //MASK_CHRISTMAS

function	script	GlobalEventMenu	{

    function rateManagement {
        clear;
        mes l("To get the current rate:");
        mes col("    @exprate", 7);
        next;
        mes l("To set the exp rate:");
        mes col("    @exprate ##Brate##b hours", 7);
        next;
        mes l("To reset back to normal:");
        mes col("    @exprate default", 7); // note to translators: any non-numerical value will reset so "default" is safe to translate
        next;
        return;
    }

    function dropManagement {
        clear;
        mes l("To get the current rate:");
        mes col("    @rates", 7);
        next;
        mes l("To set the drop rate:");
        mes col("    @droprate ##Brate##b hours", 7);
        next;
        mes l("To reset back to normal:");
        mes col("    @droprate default", 7); // note to translators: any non-numerical value will reset so "default" is safe to translate
        next;
        return;
    }

    function sEaster {

        // Enable event
        set $EVENT$, "Easter";
        logmes "Enabled EASTER event.", LOGMES_ATCOMMAND;
        return;
    }

    // WARNING, possibly dangerous.
    function sClear {
        // Delete all Easter Stuff from every player
        DelItemFromEveryPlayer(GoldenEasteregg);
        DelItemFromEveryPlayer(GoldenEasteregg);

        // Delete all Christmas stuff
        DelItemFromEveryPlayer(ClosedChristmasBox);
        DelItemFromEveryPlayer(OpenedChristmasBox);
        $XMAS_MONEY=0; // Golbarez
        $XMAS_GIFTS=0; // Chief
    }




















    function seasonManagement {
        clear;
        mes l("Current event: @@", $EVENT$);
        menu
            l("Disable event"), -,
            l("Enable Easter"), -,
            l("Enable Worker's Day"), -,
            l("Enable Christmas"), -,
            l("Reset Kill Saulc Event (Monthly)"), -;

        switch (@menu) {
            case 1: set $EVENT$, ""; sClear(); logmes "Disabled events.", LOGMES_ATCOMMAND;
                break;
            case 2: sEaster(); break;
            case 3:
                set $EVENT$, "Worker Day";
                logmes "Enabled WORKERS DAY event.", LOGMES_ATCOMMAND;
                /*
                addmonsterdrop(Snake, Pearl, 10);
                debugmes "Snakes are now dropping Pearls.";
               */
                break;
            case 4: sChristmas(); break;
            case 5: DelItemFromEveryPlayer(MurdererCrown); break;
        }

        return;
    }

    do
    {
        clear;
        setnpcdialogtitle l("Event Management");
        mes l("This menu allows you to manage events and gives access to event-related tools.");
        mes "";
        mes l("What do you want to access?");

        select
            l("Experience Rate management"),
            l("Drop Rate management"),
            l("Change Season Event"),
            rif(getarg(0,0), menuimage("actions/home", l("Return to Super Menu")));

        //.@c = getarg(0,0) ? 2 : 1; // 1 = back to event menu, 2 = back to super menu

        switch (@menu) {
            case 1: rateManagement; break;
            case 2: dropManagement; break;
            case 3: seasonManagement; break;
            default: return;
        }

    } while (true);
}



-	script	@event	32767,{
    end;

OnCall:
    if (!is_gm()) {
        end;
    }

    GlobalEventMenu;
    closedialog;
    end;
}

-	script	@toevent	32767,{
    end;

OnCall:
    if (!$@GM_EVENT)
        dispbottom l("The mana bridge is closed at the moment.");
    else if (BaseLevel < 10)
        dispbottom l("You are not strong enough to survive this trip.");
    else if (readparam(Sp) != readparam(MaxSp))
        dispbottom l("You need all your mana to do this trip.");
    else if (readparam(Hp) != readparam(MaxHp))
        dispbottom l("You cannot be hurt to do this trip.");
    else if (getmapname() ~= "001-*")
        dispbottom l("You are already at the Mana Plane of Existence.");
    else if (getmapname() == "boss" || getmapname() == "sec_pri" || getmapname() ~= "000-*" || getmapname() ~= "008-*" || getmapname() ~= "sore*")
        dispbottom l("The Mana Plane is currently out of reach.");
    else {
        .@gt=$@AEROS_SPWN;
        if (.@gt == 2)
            .@gt=rand(0,1);
        switch (.@gt) {
        case 0:
            warp "001-1", 235, 26; break;
        case 1:
            warp "001-1", 23, 108; break;
        }
        specialeffect(63, AREA, getcharid(3));
    }
    end;

OnInit:
    bindatcmd "event", "@event::OnCall", 99, 99, 0;
    bindatcmd "toevent", "@toevent::OnCall", 0, 99, 0;
}