summaryrefslogblamecommitdiff
path: root/npc/003-6/cyndala.txt
blob: 81aa678472a626523fcbd91bb6e30d36f8d82959 (plain) (tree)
1
2
3
4
5
6



               

                      







                                                                                                        
                           
                                            
                                                
                                                                                 

                                                                                                               

                                                                                               
                                                                                         





















                                                                                                                                              
     
    





                                 




                                                          


                                                    

                                                                   




























                                                                                                           
                                                                                             







                                                        
                                                      


                                                           
 



                                                                   









                                                            





































                                                                                                     






                              
                                            



                                              
                                                               










                                                                               


                                   







                                                                                      
                                   


                                              

                                                                                                       
















                                                                                              
                               










                                                                
// TMW2 Script.
// Author:
//    Saulc
//    Jesusalva
// Dye Quest added by:
//     Povo
// Description:
//    Will be with dye functions for a while... May be wrong. Only Card2 is available per hercules rules

// Original code from evol
// Authors:
//    Reid

003-6,33,30,0	script	Cyndala	NPC_FEMALE,{
    function explain_dyes {
         .@q = getq(TulimsharQuest_Cyndala);
        speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
            l("Dyes are a special kind of ink to make certain objects fancier."),
            l("Once you have the appropriate colorant for the item, ##bdrag the colorant##b to the material."),
            l("Example:"),
            l("Drag and drop a %s in a %s, and you will obtain a %s.", getitemlink(YellowDye), 
                 getitemlink(ArtisTankTop), getitemlink(ArtisTankTop, YellowDye)),
            l("Dye cards are not the only thing which exist, but they are the coolest!");
            if (.@q < 1) {
                speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
                    l("By the way, did you know that the official color of Tulimshar is yellow?"),
                    l("In fact, the Tulimshar Noble District is world-renowned for crafting high-quality yellow garments!"),
                    l("Normally I would offer to make you some %s, but economic problems in Halinarzo have caused a shortage of supplies...", 
                        getitemlink(YellowDye));
                if (BaseLevel > 20 && 
                     .@q < 1) {
                    speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
                        l("Wait a minute! I have an idea!"),
                        l("You look like you have enough experience to know your way around town..."),
                        l("If you can manage to gather the supplies I need, I can surely craft some %s for you!", 
                            getitemlink(YellowDye)),
                        l("Of course, I do charge a nominal fee of for the service. %s GP to be exact.", fnum(50)),
                        l("In addition to my fee, I will also need the following items:");
                    mesq l("%d/%d %s", countitem(BottleOfSewerWater), 1, getitemlink(BottleOfSewerWater));
                    mesq l("%d/%d %s", countitem(PiouFeathers), 50, getitemlink(PiouFeathers));
                    next;
                    mesq l("I am sure that an adventurer like you can gather everything in no time at all!");
                    setq TulimsharQuest_Cyndala, 1;
                }
            }
    }
    
    function item_is_bleachable
    {
        .@item_index = getarg(0);
        if (.@item_index < 0)
            return false;

        getinventorylist();
        if (is_staff())
        mesf "Item Index %d (%s) - ID %d", .@item_index,
             getitemlink(@inventorylist_id[.@item_index]),
             @inventorylist_id[.@item_index];

        if (@inventorylist_card1[.@item_index] != 0)
        {
            if ((@inventorylist_card1[.@item_index] > YellowDye) ||
                (@inventorylist_card1[.@item_index] < CrimsonDye))
            {
                return false;
            }
            .@is_bleachable = true;
        }

        return .@is_bleachable;
    }

    function remove_cards_from_item
    {
        .@item_index = -1;

        speech S_FIRST_BLANK_LINE,
            l("What item would you like to bleach?");

        narrator S_FIRST_BLANK_LINE | S_LAST_NEXT,
            l("You can drag and drop an item to the NPC window or select an item through your inventory.");

        .@item_index = requestitemindex();
        if (!item_is_bleachable(.@item_index))
        {
            speech S_LAST_NEXT,
                l("You should know this, an item like this can't be bleached.");

            return;
        }

        speech S_LAST_NEXT,
            l("Your mind is set? You will probably lose the color dye during this process.");

        switch (askyesno())
        {
            case 1:
                speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
                    l("Ok, let me see..."),
                    l("...");

                if (rand2(1, 1000) > readparam2(bLuk))
                    failedremovecardsindex .@item_index, 1;
                else
                    successremovecardsindex(.@item_index);

                // First option slot of weapon: Raises STR in 5
                // setequipoption(EQI_HAND_R, 1, VAR_STRAMOUNT, 5);
                // This is an option :3

                speech S_LAST_NEXT | S_NO_NPC_NAME,
                    l("..."),
                    l("Here it is, clean like a whistle!");
                break;
            case 2:
                speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
                    l("Is it truly a hard choice to make?");
                break;
        }
    }
    
    function give_yellow_dye {
        .@q = getq(TulimsharQuest_Cyndala);
        
        inventoryplace YellowDye, 1, EmptyBottle, 1;
        Zeny = Zeny - 50;
        delitem BottleOfSewerWater, 1;
        delitem PiouFeathers, 50;
        
        mesn;
        mesq l("Here you are, you won't find a dye more yellow than this!");
        getitem(YellowDye, 1);
        getitem(EmptyBottle, 1);
        
        if (.@q == 1) {
            setq TulimsharQuest_Cyndala, 2;
            getexp 80, 0;
        }   
    }

    function deny_yellow_dye {
        mesn;
        mesc l("I am sorry, but it does not look like you have everything. You will need to bring:");
        next;
        mesc l("%d/%d %s", countitem(BottleOfSewerWater), 1, getitemlink(BottleOfSewerWater));
        mesc l("%d/%d %s", countitem(PiouFeathers), 50, getitemlink(PiouFeathers));
        mesc l("%s/%s GP", fnum(Zeny), fnum(50));
        next;
    }        
    
    function craft_yellow_dye {
        if (countitem(BottleOfSewerWater) < 1 ||
              countitem(PiouFeathers) < 50 || 
              Zeny < 50) 
            deny_yellow_dye(); 
        else 
            give_yellow_dye();
    }

    mesn;
    mesq l("Hello, darling!");
    mes "";

    do
    {
         .@q = getq(TulimsharQuest_Cyndala);
        select
            l("Excuse me."),
            l("Could you bleach my clothes?"),
            l("What can you say about dyes?"),
            rif(.@q > 0, l("I would like to order some dye.")),
            rif(is_staff(), l("Technical problem, gimme info about an item."));

        switch (@menu)
        {
            case 2:
                remove_cards_from_item();
                break;
            case 3:
                explain_dyes();
                break;
            case 4:
                craft_yellow_dye();
                break;
            case 5:
                .@item = requestitemindex();
                mes "Item index selected: " + str(.@item);
                mes "slots=" + str(MAX_SLOTS);
                for (.@i = 0; .@i < MAX_SLOTS; .@i++)
                {
                    mes "slot " + str(.@i) + " = " + str(getcardbyindex(.@item, .@i));
                }
                mes str(@inventorylist_card1[.@item]);
                mes str(YellowDye);
                mes "item options:";
                for (.@i = 0; .@i < 5; .@i ++)
                {
                    mes sprintf("%d: Option: %d, Value: %d", .@i, getitemoptionidbyindex(.@item, .@i), 
                        getitemoptionvaluebyindex(.@item, .@i));
                }
                mes "Note named items (Card1 254 and 255) have Card3 and Card4 reserved";
                break;
            default:
                speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("I wish you a good time in town.");
                break;
        }

    } while (@menu != 1);


    closeclientdialog;
    goodbye;
    close;


OnInit:
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, NPCEyes);
    setunitdata(.@npcId, UDT_HEADMIDDLE, ValentineDress); //TODO
    setunitdata(.@npcId, UDT_HEADBOTTOM, CottonTrousers);
    setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); // Boots
    setunitdata(.@npcId, UDT_HAIRSTYLE, 16);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 11);

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