Enhanced Ren'Py Inventory System v1.5 Is Almost Here – With Smart Item Checks & More!



🛠️ Dev Blog: PatchMonk’s Ren'Py Inventory System 1.5 – Experimental Version Now on GitHub

Hey folks, PatchMonk here!

Just dropping a quick update on what I’ve been building into the 1.5 experimental release of my Ren'Py Inventory System. This release focuses on a highly requested but simple-yet-powerful feature: an easy-to-use item check function that opens up huge gameplay potential. The experimental version is available on GitHub. After completing beta testing and resolving all the bugs, it will be released soon.

🔍 New Feature: has_item() – Small Function, Massive Possibilities

I’ve had quite a few requests for this, and it’s finally here. The new has_item() method is lightweight but super capable when it comes to branching logic, gameplay mechanics, and dynamic storytelling:

def has_item(self, item, quantity=1):     
    total = 0     
    for slot in self.slots:         
        if item in slot:             
            total += slot[item]     
    return total >= quantity 

It simply returns a boolean if the inventory has quantity or more of the item. That’s it. But that boolean can now power so much more.

⚙️ Real-World Use Cases

Let me show you exactly how this can be used to trigger real gameplay behavior and story actions.

❤️ Affection Gating

Reward players who pick the right gifts:

if inventory.has_item("rose"):     
    affection += 10     
    renpy.jump("romance_path") 

🧱 Comedic Interactions (Jump into LEGO Mode?)

Create weird fun checks:

if inventory.has_item("lego_boots"):     
    renpy.jump("lego_level") 
else:     
    renpy.jump("ouch_scene") 

🧾 Quest Requirements

Control flow based on collected items:

if inventory.has_item("ancient_scroll", 3):     
    renpy.jump("unlock_spell") else:     
    # You can use the default renpy notifications like this: renpy.notify("You need 3 scrolls to continue.")
    $ pm_notify("You need 3 scrolls to continue.", "default" ) # This is our custom notification integrated with the inventory With custom background image and sound.

👎 Penalty for Holding Bad Items

Give weight to inventory choices:

if inventory.has_item("cursed_idol"):     
    sanity -= 20     
    renpy.jump("hallucination_sequence") 

⚡️ Also in 1.5 Experimental: Tiny Notification System Upgrade

As a bonus, I’ve added a light ATL screen shake to the error-type notifications—just an experiment, really—to see what kind of UX we can bring into the Ren'Py space. Here's a quick look:

def shake():     
    renpy.with_statement(vpunch)  
def pm_notify(message, sound_type="default"):     
    ...     
    if sound_type == "error":         
        shake() 

This is not the full rewrite, just a little step forward. The real overhaul will come after 1.5 and will feature a queue-based notification system, built entirely based on user feedback.

🔗 Get Involved

📦 The 1.5 experimental branch is live on GitHub. Feel free to download, test, and break it. I’m doing all the final checks myself, so bug reports and feedback are gold right now.

🧪 Final version will release as soon as all major bugs are squashed and feature compatibility is locked in.

Thanks for sticking with the project and tossing me feedback; it does guide development. Once the final 1.5 is out, all eyes are on the next-gen notification system and further inventory expansion.

Keep your wits sharp and your software sharper,  PatchMonk!

Get Enhanced Renpy Inventory System

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.