summaryrefslogtreecommitdiff
path: root/world/map/npc
diff options
context:
space:
mode:
authorwushin <pasekei@gmail.com>2013-10-25 12:20:26 -0500
committerwushin <pasekei@gmail.com>2013-10-25 12:20:26 -0500
commitc3912f6f0ebdc0de532d0a5190d4c652993e054b (patch)
tree2c8c48a2a67ad00980d0d44c423e6313974b061d /world/map/npc
parentfe6734cc128de24dfb553d9a48bab311f566a27b (diff)
downloadserverdata-c3912f6f0ebdc0de532d0a5190d4c652993e054b.tar.gz
serverdata-c3912f6f0ebdc0de532d0a5190d4c652993e054b.tar.bz2
serverdata-c3912f6f0ebdc0de532d0a5190d4c652993e054b.tar.xz
serverdata-c3912f6f0ebdc0de532d0a5190d4c652993e054b.zip
Required Stats, Restricted Items, and Unreleased
Items properly Unequip on condition failure Bonuses or Bonus Bugs do not appear Item stays unequipped Added unequipcb script Added Timer to RequireStat, RestrictedItem and UnreleasedItem
Diffstat (limited to 'world/map/npc')
-rw-r--r--world/map/npc/items/require_stat.txt12
-rw-r--r--world/map/npc/items/restricted_item.txt3
-rw-r--r--world/map/npc/items/unequipcb.txt27
-rw-r--r--world/map/npc/items/unreleased_item.txt10
-rw-r--r--world/map/npc/scripts.conf1
5 files changed, 45 insertions, 8 deletions
diff --git a/world/map/npc/items/require_stat.txt b/world/map/npc/items/require_stat.txt
index 77a518b1..8629b686 100644
--- a/world/map/npc/items/require_stat.txt
+++ b/world/map/npc/items/require_stat.txt
@@ -11,9 +11,15 @@
function|script|RequireStat|,
{
set @bStatVal, readparam(@bStat);
- // If the requirement isn't met, then we end the script.
- // Hence, subsequent item modifiers won't be applied.
+ // If the requirement isn't met, we set an unequip trigger.
+ // The item is now removed.
if (@bStatVal < @minbStatVal)
- end;
+ goto L_Unequip;
+ goto L_Return;
+
+L_Unequip:
+ callfunc "UnequipLater";
+
+L_Return:
return;
}
diff --git a/world/map/npc/items/restricted_item.txt b/world/map/npc/items/restricted_item.txt
index 2aa69c7e..7e3213c0 100644
--- a/world/map/npc/items/restricted_item.txt
+++ b/world/map/npc/items/restricted_item.txt
@@ -11,11 +11,10 @@ function|script|RestrictedItem|,
if (!@minLvl) set @minLvl, 60;
if (debug || getgmlevel() >= @minLvl) goto L_Return; // If the active character is staff, do nothing.
message strcharinfo(0), "This item repells you with extreme force. It does not seem to be meant for you.";
- unequipbyid @slotId;
+ callfunc "UnequipLater";
if (getgmlevel()) goto L_Return;
gmcommand "@wgm Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'.";
gmcommand "@l Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'.";
- end;
L_Return:
return;
diff --git a/world/map/npc/items/unequipcb.txt b/world/map/npc/items/unequipcb.txt
new file mode 100644
index 00000000..ec185f02
--- /dev/null
+++ b/world/map/npc/items/unequipcb.txt
@@ -0,0 +1,27 @@
+// For now this has to use a real map name, but the effect happens
+// on any map because of the -1s at the end.
+// Note: the client (I think) has a display bug if this is called
+// during the intial connection's equip hook
+botcheck.gat,0,0,0|script|UnequipCB|-1,-1,-1
+{
+
+OnUnequip:
+ unequipbyid (@unequip_slot -1);
+ set @unequip_slot, 0;
+ end;
+}
+
+// Paired with unequipcb
+function|script|UnequipLater|,
+{
+ if(@unequip_slot)
+ goto L_Return;
+ goto L_ReturnTimer;
+
+L_ReturnTimer:
+ set @unequip_slot, (@slotId + 1);
+ addtimer 0, "UnequipCB::OnUnequip";
+
+L_Return:
+ return;
+}
diff --git a/world/map/npc/items/unreleased_item.txt b/world/map/npc/items/unreleased_item.txt
index 708cc1e0..457c2bcb 100644
--- a/world/map/npc/items/unreleased_item.txt
+++ b/world/map/npc/items/unreleased_item.txt
@@ -5,8 +5,12 @@
function|script|UnreleasedItem|,
{
- if (debug || getgmlevel()) end; // If the server allows equipping unreleased items or if the active character is staff, do nothing.
+ // If the server allows equipping unreleased items or if the active character is staff, do nothing.
+ if (debug || getgmlevel())
+ goto L_Return;
message strcharinfo(0), "You have difficulties equipping this item, as if it is not yet fully in this world.";
- unequipbyid @slotId;
- end;
+ callfunc "UnequipLater";
+
+L_Return:
+ return;
}
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
index 26a0b0b4..70f06098 100644
--- a/world/map/npc/scripts.conf
+++ b/world/map/npc/scripts.conf
@@ -29,6 +29,7 @@ npc: npc/items/unreleased_item.txt
npc: npc/items/require_stat.txt
npc: npc/items/restricted_item.txt
npc: npc/items/warpTowels.txt
+npc: npc/items/unequipcb.txt
import: npc/_import.txt