summaryrefslogblamecommitdiff
path: root/npc/guilds/logs.txt
blob: c81789fb5f2b921d7a002234e5a6166f9c66745f (plain) (tree)
1
2
3
4
5
6
7
8
9
10






                                                       
                       

                        
                         
                       



                                                         
                                                    
                                                
                                                    
                                                
                    
 





                                                            
                                                                                 
                                       


























                                                                                   

                                                           

                                  
 






                                                                                              
 
                                       
                      


                         

          

                                                            
                     





                                                                                   
                        




                                                                 
                                                                                            

                 
                                    







                                           
                                                                                                      


           





                                  



                                           




                    
                       
             














                                                                                                                         


                                                      
                                                                                                   









                                                                                                     
                                                                               




                               




                
// Moubootaur Legends Script
// Author:
//    Jesusalva
// Description:
//  Guild Facility - Contains recipe list

guilds,47,39,0	script	Guild Logs	NPC_NO_SPRITE,{
    function hudRecipe;
    function showRecipe;
    function calcRecipe;
    function clearRecipe;
    .@gid=getcharid(2);

    mes ".:: " + l("Alchemy Recipes") + " ::.";
    showRecipe(CraftPiberriesInfusion, PiberriesInfusion,
               5, Piberries, 1, Curshroom);
    showRecipe(CraftSacredManaPot, SacredManaPotion,
               1, GoldenApple, 15, CelestiaTea);
    showRecipe(CraftSacredLifePot, SacredLifePotion,
               1, GoldenApple, 1, ElixirOfLife);
    debugmes "Okay";

    if (getguildrole(.@gid, getcharid(3)) > GPOS_VICELEADER)
        close;
    do
    {
        select
            l("Do nothing"),
            rif(strcharinfo(0) == getguildmaster(.@gid), l("Raise max members")),
            l("Learn Alchemy Recipes");
        mes "";

        switch (@menu) {
            case 2:
                .@cur_lv=getguildlvl(.@gid);
                .@min_lv=(getskilllv(GD_EXTENSION)+1)*4;
                .@price=.@min_lv*274;
                if (.@cur_lv < .@min_lv)
                {
                    mesc l("Guild Level is not enough: @@/@@", .@cur_lv, .@min_lv);
                    next;
                    break;
                }
                mesc l("Raising this skill will allow to recruit 4 more members.");
                mesc l("The cost for Guild Vault is @@ GP.", .@price);
                next;
                select
                    rif($GUILD_BANK[.@gid] >= .@price, l("Upgrade it")),
                    l("Don't upgrade it");
                mes "";
                if (@menu == 1 && $GUILD_BANK[.@gid] >= .@price)
                {
                    $GUILD_BANK[.@gid]-=.@price;
                    skill GD_EXTENSION, getskilllv(GD_EXTENSION)+1, 0;
                    break;
                }
                break;
            case 3:
                mes ".:: " + l("Alchemy Recipes") + " ::.";
                do {
                    clearRecipe();

                    // Setup the Recipes
                    if (!showRecipe(CraftPiberriesInfusion, false))
                        calcRecipe(CraftPiberriesInfusion, 3, 10000, l("Piberries Infusion"));
                    if (!showRecipe(CraftSacredManaPot, false))
                        calcRecipe(CraftSacredManaPot, 5, 100000, l("Sacred Mana Potion"));
                    if (!showRecipe(CraftSacredLifePot, false))
                        calcRecipe(CraftSacredLifePot, 5, 100000, l("Sacred Life Potion"));

                } while (!hudRecipe());
                break;
        }

    } while (@menu != 1);
    close;

// showRecipe (Craft, Bonus, Req1No, Req1Id, Req2No, Req2Id)
// Bonus must NOT be zero to display text
function showRecipe {
    /*
    debugmes "Exist: %d", getd("$RECIPES_ALCHEMY_"+getcharid(2)+"["+getarg(0)+"]");
    debugmes "Seeking for slot %d on guild %d", getarg(0), getcharid(2);
    */
    if (getd("$RECIPES_ALCHEMY_"+getcharid(2)+"["+getarg(0)+"]")) {
        debugmes "Hooray! It exists! We have %d defined", getarg(1);
        if (getarg(1)) {
            mesn l("Craft @@", getitemlink(getarg(1)));
            mesc l("* @@ @@", getarg(2), getitemlink(getarg(3)));
            mesc l("* @@ @@", getarg(4), getitemlink(getarg(5)));
            mes "";
        }
        //debugmes "You got it: %d (global: %d)", getarg(0), $RECIPES_ALCHEMY[getcharid(2)];
        return 1;
    }
    //debugmes "Nope, nothing here";
    return 0;
}

// calcRecipe (CraftID, GLV, GGP, TXT)
function calcRecipe {
    array_push(@tmp_alcrep_id, getarg(0));
    array_push(@tmp_alcrep_glv, getarg(1));
    array_push(@tmp_alcrep_ggp, getarg(2));
    array_push(@tmp_alcrep_txt$, getarg(3) + " - GLV "+getarg(1)+", "+format_number(getarg(2))+" GP");
    return;
}

// clearRecipe ()
function clearRecipe {
    deletearray(@tmp_alcrep_id);
    deletearray(@tmp_alcrep_glv);
    deletearray(@tmp_alcrep_ggp);
    deletearray(@tmp_alcrep_txt$);
    @tmp_alcrep_id[0]=-1;
    @tmp_alcrep_glv[0]=-1;
    @tmp_alcrep_ggp[0]=-1;
    @tmp_alcrep_txt$[0]=l("Learn Nothing");
    return;
}

// hudRecipe ()
function hudRecipe {
    .@gid=getcharid(2);
    // Select
    select (implode(@tmp_alcrep_txt$, ":"));
    @menu=@menu-1;

    /* DEBUG prints
    debugmes "You choose: %d", @menu;
    debugmes getd("$RECIPES_ALCHEMY_"+.@gid);
    copyarray(.@v, getd("$RECIPES_ALCHEMY_"+.@gid), getarraysize(getd("$RECIPES_ALCHEMY_"+.@gid)) );
    debugmes "Width: %d (out of %d)", getarraysize(.@v), getarraysize(getd("$RECIPES_ALCHEMY_"+.@gid));
    debugmes "Slot 44: %d", .@v[44];
    debugmes "Slot 43: %d", .@v[43];
    debugmes "Slot 42: %d", .@v[42];
    debugmes "GLVL Options: %d-%d-%d-%d", @tmp_alcrep_glv[0], @tmp_alcrep_glv[1], @tmp_alcrep_glv[2], @tmp_alcrep_glv[3];
    */

    if (@tmp_alcrep_glv[@menu] <= 0)
        return 1;

    if (getguildlvl(.@gid) < @tmp_alcrep_glv[@menu]) {
        mesc l("Insufficient Guild Level! (@@/@@)", getguildlvl(.@gid), @tmp_alcrep_glv[@menu]), 1;
        next;
        return 0;
    }
    if ($GUILD_BANK[.@gid] < @tmp_alcrep_ggp[@menu]) {
        mesc l("Insufficient Guild Money! (Guild has: @@ GP)", format_number($GUILD_BANK[.@gid])), 1;
        next;
        return 0;
    }
    // All fine, proceed
    $GUILD_BANK[.@gid] -= @tmp_alcrep_ggp[@menu];
    setd("$RECIPES_ALCHEMY_"+getcharid(2)+"["+@tmp_alcrep_id[@menu]+"]", true);
    mesc l("Skill learnt!"), 2;
    next;
    return 0;
}

OnInit:
    .distance=2;
    end;
}