summaryrefslogblamecommitdiff
path: root/npc/001-11/Demure.txt
blob: 8e14066b37ca34b29efdbbba7dd10f9797c76af1 (plain) (tree)
1
2
3
4
5
6
7
8
9
10






                                                            


                















                                                                                                                                                                                                              

































                                                                                                            













                                                                                                                                                                 






                                                                                                                



                             
                                                  

















                                                                                                                                                            
                                                                                                                                 








                                                                                                                                    

                             
                   
                            



















                                                 
// TMW2 scripts.
// Author:
//    Jesusalva
// Description:
//    Valentine Event Master

001-11,40,25,0	script	Demure#Valentine	NPC_FEMALE,{
    goto L_Main;

    // Functions
    function	ScoreValentine {
	    .@nb = query_sql("SELECT c.name, i.value FROM `acc_reg_num_db` AS i, `char` AS c WHERE i.key='#VALENTINE_POINTS' AND i.account_id=c.account_id ORDER BY i.value DESC LIMIT 10", .@name$, .@value);

        mes "##B"+l("Top 10 - Valentine Day")+"##b";
	    mes("1." +.@name$[0]+" ("+.@value[0]+")");
	    mes("2." +.@name$[1]+" ("+.@value[1]+")");
	    mes("3." +.@name$[2]+" ("+.@value[2]+")");
	    mes("4." +.@name$[3]+" ("+.@value[3]+")");
	    mes("5." +.@name$[4]+" ("+.@value[4]+")");
	    mes("6." +.@name$[5]+" ("+.@value[5]+")");
	    mes("7." +.@name$[6]+" ("+.@value[6]+")");
	    mes("8." +.@name$[7]+" ("+.@value[7]+")");
	    mes("9." +.@name$[8]+" ("+.@value[8]+")");
	    mes("10."+.@name$[9]+" ("+.@value[9]+")");
        next;
    }
    // $@VALENTINE_GIFTSTACKS
    // (account id, gifts to receive)
    // $@VALENTINE_LOVELETTER
    // (account id, list of names)
    function	SendGift {
        mesn;
        mesq l("How many chocolate do you want to send? You currenly have: @@", countitem(BoxOfChocolates));
        input @Val_Ammo;
        if (@Val_Ammo > countitem(BoxOfChocolates)) {
            mesc l("You don't have that many!");
            return;
        }
    }
    function	GetGift {
        .@m = htget($@VALENTINE_GIFTSTACKS, getcharid(3));
        if (.@m > 0) {
            mesq l("Hey, look, you have @@ boxes to collect!", .@m);
            .@n$ = htget($@VALENTINE_LOVELETTER, getcharid(3), l("Secret Admirer"));
            mesq l("They were given with @@ by @@.", any(l("love"), l("passion"), l("affection")), .@n$);

            inventoryplace BoxOfChocolates, .@m;
            getitem BoxOfChocolates, .@m;
            htput $@VALENTINE_GIFTSTACKS, getcharid(3), 0;
            htput $@VALENTINE_LOVELETTER, getcharid(3), "";

        } else {
            mesq l("Sorry, you don't have any chocolate to pick up.");
        }

        return;
    }

// Script begin
L_Main:
    // Safety Check
    if ($EVENT$ != "Valentine") {
        warp "Save", 0, 0; end;
    }

    // Demure Main
    mesn;
    mesq l("That annoying guy on the side of the tree is annoying. I want to ban him.");
    next;
    mesn;
    mesq l("Anyway, it is Valentine Day, a good day to trade @@ with your admired one!", getitemlink(BoxOfChocolates));
    next;
    do {
        mesc l("You currently have @@ points, @@ boxes of chocolate and @@ love letters.", #VALENTINE_POINTS, countitem(BoxOfChocolates), countitem(LoveLetter));
        if (#VALENTINE_OPENED-#VALENTINE_RECEIVED > 0) {
            mesc l("@@ boxes of chocolate were given to you as a gift.", #VALENTINE_OPENED-#VALENTINE_RECEIVED);
            // Demure can just send Soren's Chocolate to somebody else.
            // Everyone else cannot send their gift chocolates. Please don't lose the boxes.
            if (!is_gm())
                .@eatfirst=true;
        }
        mes "";
        select
            l("Information"),
            l("Scoreboards"),
            rif(!.@eatfirst, l("Send Chocolate")),
            l("Receive Chocolate"),
            l("Okay, bye");
        mes "";

        switch (@menu) {
            case 1:
            mesn;
            mes lg("Valentine Day event consist in gathering @@ and sending them to your loved one.", getitemlink(BoxOfChocolates));
            next;
            mesn;
            mes l("Don't worry if they don't correspond to you. Each box sent will grant you 1 event point.");
            mes l("The prizes are only for the top 10, but Loratay on Land Of Fire Village can make a dress for you.");
            next;
            mes l("You can optionally send a @@ along the chocolate box, so the person knows it was you who sent the chocolate.", gettitemlink(LoveLetter));
            mes l("Sending the letter will give you double event points, capped to 10 extra points.");
            next;
            mes l("When receiving the chocolate, you must eat it before event ends to get a point for that!");
            mes l("These boxes cannot be sold, but they'll be deleted a while after the event ends.");
            mes l("You also cannot send any boxes before eating any you've received, but Demure is an exception for this rule.");
            next;
            mes l("As with all TMW2 Major Events, the top 1 receive a special pet, and the other ranked ones get diverse rewards.");
            mes l("There might be reward for anyone who doesn't gets a rank, but I never count on that. So, let's start?");
            next;
            break;
            case 2:
            ScoreValentine();
            break;
            case 3:
            SendGift(); next;
            break;
            case 4:
            GetGift(); next;
            break;
        }
    } while (@menu != 5);
    closedialog;
    goodbye;
    close;

OnInit:
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, GMCap);
    setunitdata(.@npcId, UDT_HEADMIDDLE, GMRobe);
    setunitdata(.@npcId, UDT_HAIRSTYLE, 14);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 18);

    .sex = G_FEMALE;
    .distance = 5;
    end;

}