// 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;
}