// 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 // setarray @delitem_names$ Items to delete // @delitem_counts Counts of Items to delete // @getitem_names$ 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; if (getarraysize(@delitem_names$)) goto L_DelItemsLoop; goto L_CheckGet; L_DelItemsLoop: if(countitem(@delitem_names$[@delitem_loop]) >= @delitem_counts[@delitem_loop]) goto L_DelLoopAgain; goto L_ReturnMissing; L_DelLoopAgain: if((@delitems_loop + 1) == getarraysize(@delitems_names$)) goto L_CheckGet; set @delitems_loop, (@delitems_loop + 1); goto L_DelItemsLoop; L_CheckGet: if (getarraysize(@getitem_names$)) goto L_CheckWeight; goto L_DelCheck; L_CheckWeight: getinventorylist; if (@inventorylist_count < (101 - getarraysize(@getitem_names$))) goto L_ReturnSpace; goto L_GetItemsLoop; L_GetItemsLoop: if (checkweight(@getitem_names$, 1) == 0) goto L_GetLoopAgain; goto L_ReturnWeight; L_GetLoopAgain: if((@getitems_loop + 1) == getarraysize(@getitems_names$)) goto L_DelCheck; set @getitems_loop, (@getitems_loop + 1); goto L_GetItemsLoop; L_DelCheck: if (getarraysize(@delitem_names$)) goto L_DelLoop; goto L_CheckGet2; L_DelLoop: delitem @delitem_names$[@del_loop], @delitem_counts[@del_loop]; goto L_DelAgain; L_DelAgain: if((@del_loop + 1) == getarraysize(@delitems_names$)) goto L_GetLoop; set @del_loop, (@del_loop + 1); goto L_DelLoop; L_CheckGet2: if (getarraysize(@getitem_names$)) goto L_GetLoop; goto L_Return; L_GetLoop: getitem @getitem_names$[@get_loop], @getitem_counts[@get_loop]; goto L_GetAgain; L_GetAgain: if((@get_loop + 1) == getarraysize(@getitems_names$)) goto L_Return; set @get_loop, (@get_loop + 1); goto L_GetLoop; L_ReturnMissing: mes "\"You are missing required items.\""; set @check_fail, 1; goto L_Return; 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_names$, "", getarraysize(@delitem_names$); cleararray @getitem_names$, "", getarraysize(@getitem_names$); return; }