summaryrefslogblamecommitdiff
path: root/npc/items/recipes.txt
blob: c7e4b2a7c8fb06c60b7353e78dfe04a593212769 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11






                                           



                                                                                
 







                                                                                                      

                   









                                            
 



















                                                                        
     
























































                                                                                 


                   
                    




                                          
                           


                  







































































                                                                                  
// Evol script.
// Author:
//    Jesusalva
//    Micksha
// Description:
//    Contains recipe books for Evol Online

// showRecipe( Craft, Bonus, {amount 1, item 1}, {amount 2, item 2}... )
function	script	showRecipe	{
    if (getargcount() < 3 || getargcount() % 2 != 0)
        return false;//Exception("Faulty recipe skill command invoked - error");

    if (RECIPES[getarg(0)]) {
        if (getarg(1)) {
            mes l(".:: %s Recipe ::.", getitemlink(getarg(1)));

            for (.@i=2;.@i < getargcount(); .@i++) {
                mesc l("%d/%d %s", countitem(getarg(.@i+1)), getarg(.@i), getitemlink(getarg(.@i+1)));
                .@i++;
            }
            mes "";
        }
        return true;
    }
    return false;
}

-	script	#RecipeBook	NPC_HIDDEN,{
	function read_book;
	function read_cooking;
	function read_smithery;
    end;

function read_book {
    setnpcdialogtitle l(.book_name$);
    mesc l("This book has several bookmarks. Which one will you open?");
    next;
    menuint
        l("Cooking"), CRAFT_COOKING,
        l("Alchemy"), CRAFT_ALCHEMY,
        l("Smithery"), CRAFT_SMITHERY,
        l("Tailoring"), CRAFT_TAILORING,
        l("Jewelery"), CRAFT_JEWELERY;
    mes "";
    switch (@menuret) {
    case CRAFT_COOKING:
        read_cooking(); break;
    case CRAFT_SMITHERY:
        read_smithery(); break;
    default:
        mesc l("Unfortunately, there is nothing on this bookmark.");
        mesc l("Perhaps, in future, someone adds it to this world.");
        break;
    }
    next;
    return;
}

///////////////////////////////////////////////////////////////////////////////
function read_cooking {

    setnpcdialogtitle l("Cooking Recipes");

    mesc l("Eating is a necessity, but cooking is an art.");
    mesc l("(All items must be placed exactly in this order for cooking work.)");
    next;
    mesc l("List of known cooking recipes:");
    mes "";
    mes ".:: " + l("Sandwiches") + " ::.";
    mes "";
    showRecipe(CraftCarpSandwich, CarpSandwich,
                1, Bread,
                3, LettuceLeaf,
                2, Cheese,
                1, CommonCarp);
    showRecipe(CraftPioulegSandwich, PioulegSandwich,
                1, Bread,
                3, LettuceLeaf,
                2, Cheese,
                1, PiouLegs);
    showRecipe(CraftMananaSandwich, MananaSandwich,
                1, Bread,
                3, LettuceLeaf,
                2, Cheese,
                1, Manana);

    return;
}

///////////////////////////////////////////////////////////////////////////////
function read_smithery {

    setnpcdialogtitle l("Smithery Recipes");

    mesc l("You will trust your life to this, so you better do a good job!");
    mesc l("(All items must be placed exactly in this order.)");
    next;
    mesc l("List of known smithery recipes:");

    mes "";
    mes ".:: " + l("Helmets") + " ::.";
    mes "";
    showRecipe(CraftInfantryHelmet, InfantryHelmet,
               12, IronOre,
                3, Coal,
                2, Moss,
                1, Dagger);

    return;
}


OnUse:
    if (openbook())
        read_book();
    closeclientdialog();
    close;

OnInit:
    .book_name$ = getitemname(RecipeBook);
    .bodytype = BODYTYPE_1;
    .distance = 1;
    end;
}

//////////////////////////////////////////////////////
// Below this line are utils for Gacha. We use callfunc() on itemDB.
// Types: see constants.db - everything is a bitwise here
// Rarity: 1 - basic, 2 - intermediary, 4 - advanced, 8 - expert, 16 - master
// Rarity: 1 - training, 2 - basic, 4 - advanced, 8 - expert, 16 - legendary
// Keep in mind! Expert and Master blueprints must be restricted!
// MakeBlueprint(type, rarity)
function	script	MakeBlueprint	{
    .@type=getarg(0, -1);
    .@rarity=getarg(1, 1);

    if (.@type & CRAFT_COOKING) {

        // ----------------------------------
        if (.@rarity & CRAFT_BASIC) {
        }
        if (.@rarity & CRAFT_INTERMEDIARY) {
        }
        if (.@rarity & CRAFT_ADVANCED) {
        }
        if (.@rarity & CRAFT_EXPERT) {
        }
        if (.@rarity & CRAFT_MASTER) {
        }
        // ----------------------------------

    }
    else if (.@type & CRAFT_SMITHERY)
	{

        // ----------------------------------
        if (.@rarity & CRAFT_BASIC) {
        }
        if (.@rarity & CRAFT_INTERMEDIARY) {
                array_push(.@recipes, CraftInfantryHelmet);
        }
        if (.@rarity & CRAFT_ADVANCED) {
        }
        if (.@rarity & CRAFT_EXPERT) {
        }
        if (.@rarity & CRAFT_MASTER) {
        }
        // ----------------------------------

    }

	// We don't have a .@recipes array D:
	if (array_entries(.@recipes) <= 0) {
        dispbottom l("This blueprint was blank.");
		return;
	}

	// Select a recipe randomly
    .@rcp=any_of(.@recipes);

	// Double precision failsafe
    if (RECIPES[.@rcp])
        .@rcp=any_of(.@recipes);

	// Learn the recipe or lose the item (and gain some EXP)
    if (RECIPES_[.@rcp]) {
        dispbottom l("It was a recipe you already knew...");
        getexp (BaseLevel+JobLevel)*rand2(1,.@rarity), JobLevel+rand2(1,.@rarity);
    } else {
        dispbottom l("Learned a new recipe!");
        RECIPES[.@rcp]=true;
    }
    return;
}