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




                               
                                 
                            

                      





                                             








                      
                               
                                            
                            
                                         
                              





                         
                     
 
                                   



                            
                                                                                



                            

                                                   
                        


                        
                                   




                           
                                                                  



                           
                                                                                 



                            

                                                   
                        


                        
                                   



                       
                                                                


                    
                                   

                                               


                   
                                   



                       

                                                                


                    
                                   

                                               


                   
                       











                                                                                                                                                                     













                                                    



                                                                  

           
// Default NPC Checks
// Author: Wushin

// Range
// Map, X, Y, Distance in Tiles
// setarray @npc_loc, 24, 113, 4;
function|script|PCtoNPCRange
{
    set @npc_check, 0;
    set @Nmap$, getmap() + ".gat";
    set @Nx1, (@npc_loc[0] - @npc_loc[2]);
    set @Ny1, (@npc_loc[1] - @npc_loc[2]);
    set @Nx2, (@npc_loc[0] + @npc_loc[2]);
    set @Ny2, (@npc_loc[1] + @npc_loc[2]);
    if (isin(@Nmap$, @Nx1, @Ny1, @Nx2, @Ny2))
        goto L_Return;
    set @npc_check, 1;
    goto L_Return;

L_Return:
    return;
}

// Inventory & Weight
// @delitem_ids Items to delete
// @delitem_counts Counts of Items to delete
// @getitem_ids Items to get
// @getitem_counts Counts of Items to get
function|script|CheckInventory
{
    set @del_loop, 0;
    set @get_loop, 0;
    set @delitem_loop, 0;
    set @getitem_loop, 0;
    set @check_fail, 0;
    set @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:
    set @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:
    set @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:
    set @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:
    set @get_loop, (@get_loop + 1);
    if(@get_loop == getarraysize(@getitem_ids))
        goto L_Return;
    goto L_GetLoop;

L_ReturnMissing:
    set @check_fail, 1;
    mes "\"You are missing required items.\"";
    goto L_MissingMsg;

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

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

L_ReturnWeight:
    mes "\"You need to be carrying less weight.\"";
    next;
    set @check_fail, 1;
    goto L_Return;

L_ReturnSpace:
    mes "\"You need more room in your inventory.\"";
    next;
    set @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;
}