summaryrefslogblamecommitdiff
path: root/npc/003-6/cyndala.txt
blob: 9dd039ff60e2f3ce16ccc5bba404f1486afdafa1 (plain) (tree)
























































































































































































































































                                                                                                                                                                                  
// 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_ARGAES,{
    function explain_dyes;
    function item_is_bleachable;
    function remove_cards_from_item;
    function give_yellow_dye;
    function deny_yellow_dye;
    function craft_yellow_dye;

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

    do
    {
         .@q = getq(TulimsharQuest_Cyndala);
        select
            l("Excuse me."),
            l("Could you bleach my equipment?"),
            l("What can you say about dyes?"),
            rif(.@q > 0, l("I would like to order some dye.")),
            rif(is_staff(), "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:
            mes "";
            mesn;
            mesq l("I wish you a good time in town.");
            next;
            break;
        }

    } while (@menu != 1);


    closeclientdialog;
    goodbye;
    close;

/////////////////////////////////////////////////////////////////////////////////
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;

    // Collect the item ID
    delinventorylist();
    getinventorylist();
    .@x=@inventorylist_id[.@id];

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

    // No duplicates
    if (countitem(.@x) > 1) {
        mesc l("You are carrying duplicates of the same item. Sorry, but I have no idea which one you want to tweak."), 1;
        return false;
    }

    // Must have a card, d'oh
    if (@inventorylist_card1[.@item_index] == 0)
            return false;

    return true;
}

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;
    }
    .@item_id = @inventorylist_id[.@item_index];

    speech S_LAST_NEXT,
        l("Your mind is set? You will probably lose all the dyes and/or cards during on the item during this process. You're bleaching a %s by the way.", getitemlink(.@item_id));

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

            // FIXME: Register this on picklog
            if (rand2(1, 800) > readparam2(bLuk)) {
                failedremovecardsindex .@item_index, 1;
                logmes("Deleted Cards from item: "+.@item_id);
            } else {
                successremovecardsindex(.@item_index);
                logmes("Removed Cards from item: "+.@item_id);
            }

            // 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;
        default:
            speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
                l("Is it truly a hard choice to make?");
            break;
    }
    return;
}

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;
    }
    return;
}

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;
    return;
}

function craft_yellow_dye {
    if (countitem(BottleOfSewerWater) < 1 ||
          countitem(PiouFeathers) < 50 ||
          Zeny < 50)
        deny_yellow_dye();
    else
        give_yellow_dye();
    return;
}

OnInit:
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, NPCEyesD);
    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;
}