diff options
author | wushin <pasekei@gmail.com> | 2013-10-25 12:20:26 -0500 |
---|---|---|
committer | wushin <pasekei@gmail.com> | 2013-10-25 12:20:26 -0500 |
commit | c3912f6f0ebdc0de532d0a5190d4c652993e054b (patch) | |
tree | 2c8c48a2a67ad00980d0d44c423e6313974b061d /world/map/npc | |
parent | fe6734cc128de24dfb553d9a48bab311f566a27b (diff) | |
download | serverdata-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.txt | 12 | ||||
-rw-r--r-- | world/map/npc/items/restricted_item.txt | 3 | ||||
-rw-r--r-- | world/map/npc/items/unequipcb.txt | 27 | ||||
-rw-r--r-- | world/map/npc/items/unreleased_item.txt | 10 | ||||
-rw-r--r-- | world/map/npc/scripts.conf | 1 |
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 |