summaryrefslogblamecommitdiff
path: root/npc/functions/default_npc_checks.txt
blob: c8dbec477dcd377478dd3682348475e4e47d6c40 (plain) (tree)
1
2
3
4
5
6
7
8
9
10


                                         

                                                                               

                                            
                                                

                      





                                                                                             
                                         



                     
                      



                       
















































































                                                                                 
                                              












                                                                                                                                                                     
                                                   




                    
                                                    










                                                                  
function	script	PCtoNPCRange	{
    @npc_check = 0;
    if(!@npc_distance) set @npc_distance, getarg(0, 4); // <== default distance
    if(@npc_distance < 0) set @npc_distance, readparam2(UDT_ATKRANGE);
    .@x=getvariableofnpc(.x, strnpcinfo(0));
    .@y=getvariableofnpc(.y, strnpcinfo(0));
    if (isin(getmap(), .@x, .@y, @npc_distance))
        goto L_Return;
    @npc_check = 1;
    @dnpc_name$ = strnpcinfo(1);
    if(@dnpc_name$ != "") goto L_Named;
    message strcharinfo(0), "Server : ##BYou need to move closer to interact with this npc.";
    goto L_Return;

L_Named:
    npctalk3 l(b("Please move closer."));
    goto L_Return;

L_Return:
    @dnpc_name$ = "";
    @npc_distance = 0;
    if (@npc_check) {
        @npc_check = 0;
        end;
    }
    return;
}

function	script	CheckInventory	{
    @del_loop = 0;
    @get_loop = 0;
    @delitem_loop = 0;
    @getitem_loop = 0;
    @check_fail = 0;
    @msg_loop = 0;

    if (getarraysize(@delitem_ids))
        goto L_DelItemsLoop;
    goto L_CheckGet;

L_DelItemsLoop:
    if(countitem(@delitem_ids[@delitem_loop]) >= @delitem_counts[@delitem_loop])
        goto L_DelLoopAgain;
    goto L_ReturnMissing;

L_DelLoopAgain:
    @delitem_loop = (@delitem_loop + 1);
    if(@delitem_loop == getarraysize(@delitem_ids))
        goto L_CheckGet;
    goto L_DelItemsLoop;

L_CheckGet:
    if (getarraysize(@getitem_ids))
        goto L_CheckWeight;
    goto L_DelCheck;

L_CheckWeight:
    getinventorylist;
    if (100 < (@inventorylist_count + getarraysize(@getitem_ids)))
        goto L_ReturnSpace;
    goto L_GetItemsLoop;

L_GetItemsLoop:
    if (checkweight(@getitem_ids[@getitem_loop], @getitem_counts[@getitem_loop]))
        goto L_GetLoopAgain;
    goto L_ReturnWeight;

L_GetLoopAgain:
    @getitem_loop = (@getitem_loop + 1);
    if(@getitem_loop == getarraysize(@getitem_ids))
        goto L_DelCheck;
    goto L_GetItemsLoop;

L_DelCheck:
    if (getarraysize(@delitem_ids))
        goto L_DelLoop;
    goto L_CheckGet2;

L_DelLoop:
    delitem @delitem_ids[@del_loop], @delitem_counts[@del_loop];
    goto L_DelAgain;

L_DelAgain:
    @del_loop = (@del_loop + 1);
    if(@del_loop == getarraysize(@delitem_ids))
        goto L_GetLoop;
    goto L_DelLoop;

L_CheckGet2:
    if (getarraysize(@getitem_ids))
        goto L_GetLoop;
    goto L_Return;

L_GetLoop:
    misceffect FX_GETITEM, strcharinfo(0);
    getitem @getitem_ids[@get_loop], @getitem_counts[@get_loop];
    goto L_GetAgain;

L_GetAgain:
    @get_loop = (@get_loop + 1);
    if(@get_loop == getarraysize(@getitem_ids))
        goto L_Return;
    goto L_GetLoop;

L_ReturnMissing:
    @check_fail = 1;
    mesq l("You are missing required items.");
    goto L_MissingMsg;

L_MissingMsg:
    mes "[@@"+@delitem_ids[@msg_loop]+"|"+getitemlink(@delitem_ids[@msg_loop])+"@@] "+countitem(getitemlink(@delitem_ids[@msg_loop]))+"/"+@delitem_counts[@msg_loop];
    goto L_NextMsgCheck;

L_NextMsgCheck:
    @msg_loop = (@msg_loop + 1);
    if(@msg_loop == getarraysize(@delitem_ids))
        goto L_Return;
    goto L_MissingMsg;

L_ReturnWeight:
    mesq l("You need to be carrying less weight.");
    next;
    @check_fail = 1;
    goto L_Return;

L_ReturnSpace:
    mesq l("You need more room in your inventory.");
    next;
    @check_fail = 1;
    goto L_Return;

L_Return:
    cleararray @delitem_ids, "", getarraysize(@delitem_ids);
    cleararray @delitem_counts, "", getarraysize(@delitem_counts);
    cleararray @getitem_ids, "", getarraysize(@getitem_ids);
    cleararray @getitem_counts, "", getarraysize(@getitem_counts);
    return;
}