Item Stacking

KiwiClint

New Member
Reaction score
2
I know this is a very common question, but when I searched the forum, I ended up mostly confused (but that might just be my fault...)

Anyways, I want to make a certain item stackable. It's basically a quest required item; you walk around the map and collect them, and once you have 5 you return to quest giver. It's not an item with charges really, and it doesn't do anything except sit in your inventory.

After you've picked one up, how do I make it so when you pick up another one it occupies the same inventory space (but you still have 2 items). Am I supposed to make it so the item has charges, and it basically stacks the charges (despite the fact it has no ability)? And then what sort of trigger would I use? Help's appreciated.
 

Aedes

Member
Reaction score
8
Mmm. Confusing. Hehe. :D ... So you want something that when the unit picks the second or third item, it stacks with the first one making it a single item? (but still have 2 items) .. making it as a charge item is the solution (to show that its a level 2 or 3 item). but wait, may i ask what kind of item is it? weapon? consumable? item with skill? etc. ..
 

KiwiClint

New Member
Reaction score
2
Well, technically...it's a plant. Like a cactus. It's not consumable, and it doesn't add any effects to your character. But once you have 5 charges or whatever, you can walk over to this quest-giver and they go "oh yay you collected all 5 good job here's a reward" and then the catci disappear.
 

Archideas

Active Member
Reaction score
32
This is from an older post of mine.

I recently added an item combinating "system" to my map as well. It's actually very simple but works very well. Here's how it looks, feel free to copy it.

Trigger:
  • Stack Items
    • Events
      • Unit - A unit Acquires an item
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Item-type of (Item being manipulated)) Equal to Scroll of Time
              • (Item-type of (Item being manipulated)) Equal to Scroll of Time
              • (Item-type of (Item being manipulated)) Equal to Slumber Sand
              • (Item-type of (Item being manipulated)) Equal to Lifeblood Potion
              • (Item-type of (Item being manipulated)) Equal to Lifeblood Potion
              • (Item-type of (Item being manipulated)) Equal to Lifeblood Potion
              • (Item-type of (Item being manipulated)) Equal to Spiritual Potion
              • (Item-type of (Item being manipulated)) Equal to Spiritual Potion
              • (Item-type of (Item being manipulated)) Equal to Spiritual Potion
              • (Item-type of (Item being manipulated)) Equal to Potion of Unending Fury
              • (Item-type of (Item being manipulated)) Equal to Potion of Refreshment
        • Then - Actions
          • For each (Integer A) from 1 to 6, do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Item-type of (Item carried by (Hero manipulating item) in slot (Integer A))) Equal to (Item-type of (Item being manipulated))
                  • (Item carried by (Hero manipulating item) in slot (Integer A)) Not equal to (Item being manipulated)
                • Then - Actions
                  • Item - Set charges remaining in (Item carried by (Hero manipulating item) in slot (Integer A)) to ((Charges remaining in (Item carried by (Hero manipulating item) in slot (Integer A))) + (Charges remaining in (Item being manipulated)))
                  • Item - Remove (Item being manipulated)
                • Else - Actions
        • Else - Actions


*EDIT*

This basically checks if you've got i.e 1 Lifeblood Potion and buy/pick up say, 4 more. It'll then combine 1+4 and make it a stack of 5.
 

KiwiClint

New Member
Reaction score
2
Thank you very much for your help, I have just one question...How do I make it so that when the item has 5 charges, he cannot pick up more items? Or, at least, something like that...I want a limit to the amount of charges it can have, and also I want it to be so that when he has 5 charges, all the items remaining on board dissapear (or something similar). Any help?
 

Nighthawk

New Member
Reaction score
9
This is my foolproof GUI stacking system, some of it seems unnecessary but I can assure you that this will work no matter what inven slot the item is in and work if the player drops the item as well:

Trigger:
  • Mana Draught Stack
    • Events
      • Unit - A unit Acquires an item
    • Conditions
      • (Item-type of (Item being manipulated)) Equal to |c00FF7F00Clarity Draught|r
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Manapot_Boolean[(Player number of (Owner of (Hero manipulating item)))] Equal to False
        • Then - Actions
          • Set Manapot_Boolean[(Player number of (Owner of (Hero manipulating item)))] = True
        • Else - Actions
          • Set ConsumableBoolean_Temp[(Player number of (Owner of (Hero manipulating item)))] = True
          • Set Charges_Temp = (Charges remaining in (Item being manipulated))
          • Item - Remove (Item being manipulated)
          • Item - Set charges remaining in (Item carried by (Hero manipulating item) of type |c00FF7F00Clarity Draught|r) to ((Charges remaining in (Item carried by (Hero manipulating item) of type |c00FF7F00Clarity Draught|r)) + Charges_Temp)
          • Wait 0.10 seconds
          • Set ConsumableBoolean_Temp[(Player number of (Owner of (Hero manipulating item)))] = False



Trigger:
  • Mana Draught Lost
    • Events
      • Unit - A unit Loses an item
    • Conditions
      • (Item-type of (Item being manipulated)) Equal to |c00FF7F00Clarity Draught|r
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ConsumableBoolean_Temp[(Player number of (Owner of (Hero manipulating item)))] Equal to False
        • Then - Actions
          • Set Manapot_Boolean[(Player number of (Owner of (Hero manipulating item)))] = False
        • Else - Actions




Forgot to mention, this system will not allow the item to stack if you have six full inventory slots, so the player will have to have a free one to get the item in.

If you wanted to make it not go above 5 charges then:

Trigger:
  • Mana Draught Stack
    • Events
      • Unit - A unit Acquires an item
    • Conditions
      • (Item-type of (Item being manipulated)) Equal to |c00FF7F00Clarity Draught|r
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Manapot_Boolean[(Player number of (Owner of (Hero manipulating item)))] Equal to False
        • Then - Actions
          • Set Manapot_Boolean[(Player number of (Owner of (Hero manipulating item)))] = True
        • Else - Actions
          • Set ConsumableBoolean_Temp[(Player number of (Owner of (Hero manipulating item)))] = True
          • Set Charges_Temp = (Charges remaining in (Item being manipulated))
          • Item - Remove (Item being manipulated)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Charges remaining in (Item carried by (Hero manipulating item) of type |c00FF7F00Clarity Draught|r)) Less than 5
            • Then - Actions
              • Item - Set charges remaining in (Item carried by (Hero manipulating item) of type |c00FF7F00Clarity Draught|r) to ((Charges remaining in (Item carried by (Hero manipulating item) of type |c00FF7F00Clarity Draught|r)) + Charges_Temp)
            • Else - Actions
              • Quest - Display to (All players) the Warning message: YOU ONLY NEED 5!!!
          • Wait 0.10 seconds
          • Set ConsumableBoolean_Temp[(Player number of (Owner of (Hero manipulating item)))] = False



As far as removing the item, do you mean its an item you pick up off the ground and you want to remove them all from the map, or do you mean remove all other items from the heroes inventory?

If its from the map do a pick every item and then throw in an if/then, like so:
(Put this in the "Else" statement of the above trigger)

Trigger:
  • Item - Pick every item in (Playable map area) and do (Actions)
    • Loop - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Item-type of (Picked item)) Equal to |c00FF7F00Clarity Draught|r
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Hero manipulating item) has (Picked item)) Equal to False
            • Then - Actions
              • Item - Remove (Picked item)
            • Else - Actions
        • Else - Actions



If its from an inventory: (again in the else statement)

Trigger:
  • For each (Integer A) from 1 to 6, do (Actions)
    • Loop - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Item-type of (Item carried by (Hero manipulating item) in slot (Integer A))) Not equal to |c00FF7F00Clarity Draught|r
        • Then - Actions
          • Item - Remove (Item carried by (Hero manipulating item) in slot (Integer A))
        • Else - Actions
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top