From 623f98ef8f4efa72d6ff7355517b0ace7235ef72 Mon Sep 17 00:00:00 2001 From: wushin Date: Mon, 23 Jun 2014 18:57:52 -0500 Subject: Starting Area Redux * Tutorial is a quick funnel * Exits are obvious and open * New Side Quests ** Valon's Beast Mastery ** Zegas's Barrels ** Magic Wand * Some Quests stay open after tutorial is done * House Maggot & Tame Scorpion added * Made Magic usable for lowbies with Wand --- world/map/npc/functions/default_npc_checks.txt | 74 +++++++++++++++----------- 1 file changed, 44 insertions(+), 30 deletions(-) (limited to 'world/map/npc/functions/default_npc_checks.txt') diff --git a/world/map/npc/functions/default_npc_checks.txt b/world/map/npc/functions/default_npc_checks.txt index 4ddd00ca..efe8818b 100644 --- a/world/map/npc/functions/default_npc_checks.txt +++ b/world/map/npc/functions/default_npc_checks.txt @@ -3,16 +3,16 @@ // Range // Map, X, Y, Distance in Tiles -// setarray $@npc_loc, 24, 113, 4; +// 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)) + 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; @@ -22,9 +22,9 @@ L_Return: } // Inventory & Weight -// setarray @delitem_names$ Items to delete +// @delitem_ids Items to delete // @delitem_counts Counts of Items to delete -// @getitem_names$ Items to get +// @getitem_ids Items to get // @getitem_counts Counts of Items to get function|script|CheckInventory|, { @@ -33,78 +33,90 @@ function|script|CheckInventory|, set @delitem_loop, 0; set @getitem_loop, 0; set @check_fail, 0; + set @msg_loop, 0; - if (getarraysize(@delitem_names$)) + if (getarraysize(@delitem_ids)) goto L_DelItemsLoop; goto L_CheckGet; L_DelItemsLoop: - if(countitem(@delitem_names$[@delitem_loop]) >= @delitem_counts[@delitem_loop]) + if(countitem(@delitem_ids[@delitem_loop]) >= @delitem_counts[@delitem_loop]) goto L_DelLoopAgain; goto L_ReturnMissing; L_DelLoopAgain: - if((@delitems_loop + 1) == getarraysize(@delitems_names$)) + set @delitem_loop, (@delitem_loop + 1); + if(@delitem_loop == getarraysize(@delitem_ids)) goto L_CheckGet; - set @delitems_loop, (@delitems_loop + 1); goto L_DelItemsLoop; L_CheckGet: - if (getarraysize(@getitem_names$)) + if (getarraysize(@getitem_ids)) goto L_CheckWeight; goto L_DelCheck; L_CheckWeight: getinventorylist; - if (@inventorylist_count < (101 - getarraysize(@getitem_names$))) + if (100 < (@inventorylist_count + getarraysize(@getitem_ids))) goto L_ReturnSpace; goto L_GetItemsLoop; L_GetItemsLoop: - if (checkweight(@getitem_names$, 1) == 0) + if (checkweight(@getitem_ids[@getitem_loop], @getitem_counts[@getitem_loop])) goto L_GetLoopAgain; goto L_ReturnWeight; L_GetLoopAgain: - if((@getitems_loop + 1) == getarraysize(@getitems_names$)) + set @getitem_loop, (@getitem_loop + 1); + if(@getitem_loop == getarraysize(@getitem_ids)) goto L_DelCheck; - set @getitems_loop, (@getitems_loop + 1); goto L_GetItemsLoop; L_DelCheck: - if (getarraysize(@delitem_names$)) + if (getarraysize(@delitem_ids)) goto L_DelLoop; goto L_CheckGet2; L_DelLoop: - delitem @delitem_names$[@del_loop], @delitem_counts[@del_loop]; + delitem @delitem_ids[@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); + if(@del_loop == getarraysize(@delitem_ids)) + goto L_GetLoop; goto L_DelLoop; L_CheckGet2: - if (getarraysize(@getitem_names$)) + if (getarraysize(@getitem_ids)) goto L_GetLoop; goto L_Return; L_GetLoop: - getitem @getitem_names$[@get_loop], @getitem_counts[@get_loop]; + misceffect FX_GETITEM, strcharinfo(0); + getitem @getitem_ids[@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); + if(@get_loop == getarraysize(@getitem_ids)) + goto L_Return; goto L_GetLoop; L_ReturnMissing: - mes "\"You are missing required items.\""; set @check_fail, 1; - goto L_Return; + 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.\""; @@ -119,7 +131,9 @@ L_ReturnSpace: goto L_Return; L_Return: - cleararray @delitem_names$, "", getarraysize(@delitem_names$); - cleararray @getitem_names$, "", getarraysize(@getitem_names$); + 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; } -- cgit v1.2.3-60-g2f50