title: stackable items and how to change their quantity in order to display using interpolated data?
body: <p>I'm not very experienced, and I have a lovely working inventory that I've built in renpy/python. I have run into some struggles when trying to make my items stackable. I have been trying to get my class item object to have an editable variable/integer I'm not sure if it's a syntax I'm looking for, or if I need to arrange my classes differently, and if so, how? Previously, the inventory would just add an identical item (and icon) into my display screen. This is what I want to display in my designated text:</p>
  
  <pre><code>class item(object):
          def __init__(self, name, img, himg, THIS THING):
              self.name = name
              self.img = img
              self.himg = himg
              self.THIS THING = THIS THING
  </code></pre>
  
  <p>The closest I have come without getting a 'name is not defined' error despite the name clearly being defined or some kind of garbled "%item.amountd" text appearing in my field instead is this:</p>
  
  <pre><code>label start:
       show screen inventory
       pause
       "adding another item"
       $ backpack.add_item(popcorn)
       jump start
  
  return
  
  
  
  default popcorn = item("popcorn", "inventory/ragepop_idle.png", "inventory/ragepop_hover.png", 0)
  default money = 50
  default backpack = container()
  default inv = []
  
  
  
  ######screen
  screen inventory():
      zorder 2
      add "images/inventory/inventorybg.png"
      modal True
      text "Money: [money]0" xpos 310 ypos 60 color("#FFFFFF")
  
      hbox:
          xpos 298 ypos 113
          spacing 7
          xmaximum 695
          box_wrap True
          for thing in backpack.inv:
              imagebutton idle thing.item.img hover thing.item.himg action Null
              text "{b}[thing.item.amt]{/b}" size 20 color("#FFFFFF") xoffset -30 yoffset 5
  
  
      imagebutton:
          idle "inventory/invpois.png"
          hover "inventory/invpois2.png"
          focus_mask True
          action Hide("inventory")
  
  ##amt is what I settled on for the THIS THING
  init python:
      class item(object):
          def __init__(self, name, img, himg, amt):
              self.name = name
              self.img = img
              self.himg = himg
              self.amt = amt
  
      class invitem(object):
          def __init__(self, item, amount):
              self.item = item
              self.amount = amount
  
  
      class container(object):
          def __init__(self):
              self.inv = []
  
  
  ## Disregard these add/remove methods as I have to change these once I figure out how to $ amt+=1
  ##As they stand now, they serve to put the icon in the inventory the old unstackable way.
  
          def add_item(self, item, amount=1):
              self.inv.append(invitem(item, amount))
              return("success")
  
          def has_item(self, item, amount=1):
              if item in [i.item for i in self.inv]:
                  if self.finditem(item).amount &gt;= amount:
                      return(self.finditem(item).amount)
                  else: return(False)
              else:
                  return(False)
  
          def finditem(self, item):
              return(self.inv[[i.item for i in self.inv].index(item)])
  
          def remove_item(self, item, amount=1):
              if self.has_item(item):
                  self.finditem(item).amount -= amount
                  if self.finditem(item).amount &lt;= 0:
                      self.inv.pop(self.inv.index(self.finditem(item)))
                      return ("gone")
                  else:
                      return ("more left")
              else:
                  return ("not found")
  </code></pre>
  
  <p>When I run this, the inventory display screen is first empty, and then the item appears in there like this:
  <a href="https://i.stack.imgur.com/x2CV9.png" rel="nofollow noreferrer">example run</a></p>
  
  <p>Unfortunately, that 0 would be anything I put in there and I can't figure out how to add or subtract to ''amt'' during game play either by calling the item or trying to get the item to call an easily edited variable and display that as it's ''amt''. </p>
  
  <p>This is the part where I'm supposed to tell you what all I've tried. This is tough for me, because I've tried so many variations of so many different things that I can't get into specifics of exactly what was typed. Essentially I played around with all the variations of interpolating the amt I could find through the documentation and other peoples' forum results and trying to make it work with my items, and mostly got a bunch of "class item doesn't have attribute amt" and "name amt is not defined". After that failed, i tried to convince my item to get its amt from a completely separate variable. I have successfully and easily used interpolated text to display the money on that inventory screen. it just asks for "text "money: [money].0" and changes easily during gameplay with $ money 1+10, etc. I just haven't been able to convince it to work properly if the interpolated information I'm trying to get from it is in an item class. </p>
  
  <p>Thanks in advance for any ideas you may have about what i'm doing wrong!</p>