summaryrefslogtreecommitdiff
path: root/world/map/npc/items
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/items')
-rw-r--r--world/map/npc/items/launcher_ammo.txt18
-rw-r--r--world/map/npc/items/unequipcb.txt8
2 files changed, 11 insertions, 15 deletions
diff --git a/world/map/npc/items/launcher_ammo.txt b/world/map/npc/items/launcher_ammo.txt
index 3b0b21f8..79cf057b 100644
--- a/world/map/npc/items/launcher_ammo.txt
+++ b/world/map/npc/items/launcher_ammo.txt
@@ -2,9 +2,10 @@
// Ammo Needs to know Launcher and vice versa.
//
// Behavior:
-// Ammo is always unequipped
+// - If only one is equipped, do nothing
+// - If incompatible launcher and ammo are equipped, unequip the ammo
//
-// Variables passed to this script:
+// Variables passed to these scripts:
//
// @LauncherType, @AmmoType
//
@@ -12,14 +13,8 @@
function|script|CheckLauncher|,
{
- set @AmmoEquip, (getequipid(equip_arrow) + 1);
- if (@AmmoEquip)
- goto L_Return;
-
-L_NoAmmoEquip:
- set @LauncherType, 0;
-
-L_Return:
+ if (getequipid(equip_arrow) == -1)
+ set @LauncherType, 0;
return;
}
@@ -28,9 +23,10 @@ function|script|CheckAmmo|,
if ((@LauncherType == @AmmoType) || (!@LauncherType))
goto L_Return;
-L_Unequip:
callfunc "UnequipLater";
L_Return:
+ set @LauncherType, 0;
+ set @AmmoType, 0;
return;
}
diff --git a/world/map/npc/items/unequipcb.txt b/world/map/npc/items/unequipcb.txt
index ec185f02..62dc7715 100644
--- a/world/map/npc/items/unequipcb.txt
+++ b/world/map/npc/items/unequipcb.txt
@@ -6,7 +6,7 @@ botcheck.gat,0,0,0|script|UnequipCB|-1,-1,-1
{
OnUnequip:
- unequipbyid (@unequip_slot -1);
+ unequipbyid (@unequip_slot - 1);
set @unequip_slot, 0;
end;
}
@@ -14,11 +14,11 @@ OnUnequip:
// Paired with unequipcb
function|script|UnequipLater|,
{
- if(@unequip_slot)
+ // if there are multiple items that want to be removed,
+ // only schedule one timer - scripts will be called again
+ if (@unequip_slot)
goto L_Return;
- goto L_ReturnTimer;
-L_ReturnTimer:
set @unequip_slot, (@slotId + 1);
addtimer 0, "UnequipCB::OnUnequip";