<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/github---katiahayati-lucasartsifier-static-analysis-for-sierra-adventure-games-finds-softlocks-by--wygcb13mf" -->

---
title: GitHub - katiahayati/lucasartsifier: Static analysis for...
description: A Python tool performs static analysis on decompiled Sierra SCI adventure games (Leisure Suit Larry 2, King's Quest IV/VI, Laura Bow 2) to find softlocks —...
canonical: https://daily.dev/posts/github---katiahayati-lucasartsifier-static-analysis-for-sierra-adventure-games-finds-softlocks-by--wygcb13mf
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: GitHub - katiahayati/lucasartsifier: Static analysis for Sierra adventure games: finds softlocks by abstract interpretation of decompiled SCI scripts, derives and verifies guards, recompiles them into | daily.dev
og:description: A Python tool performs static analysis on decompiled Sierra SCI adventure games (Leisure Suit Larry 2, King's Quest IV/VI, Laura Bow 2) to find softlocks —...
og:url: https://daily.dev/posts/github---katiahayati-lucasartsifier-static-analysis-for-sierra-adventure-games-finds-softlocks-by--wygcb13mf
og:image: https://api.daily.dev/og/posts/WYGcb13Mf.png
og:image:alt: GitHub - katiahayati/lucasartsifier: Static analysis for Sierra adventure games: finds softlocks by abstract interpretation of decompiled SCI scripts, derives and verifies guards, recompiles them into
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub - katiahayati/lucasartsifier: Static analysis for Sierra adventure games: finds softlocks by abstract interpretation of decompiled SCI scripts, derives and verifies guards, recompiles them into

**[Two Stop Bits](https://daily.dev/sources/twostopbits)** · 11 min read · 0 upvotes · 0 comments

## Summary

A Python tool performs static analysis on decompiled Sierra SCI adventure games (Leisure Suit Larry 2, King's Quest IV/VI, Laura Bow 2) to find softlocks — states where the game accepts input but victory is no longer reachable. It abstract-interprets decompiled scripts into a graph of room transitions, item movements and plot-flag writes, derives guard conditions, verifies they introduce no new softlocks, and recompiles patched scripts using a headless port of SCICompanion's compiler. No game-specific config is needed; start room, victory conditions, death signals and debug flags are all discovered automatically from each game's code. The project builds on sci-tools for decompilation and SCICompanion for compilation, and is released under MIT (with the SCICompanion port under GPL-2.0+).

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://github.com/katiahayati/lucasartsifier>

## Questions this post answers

### How does this tool distinguish an unavoidable softlock from a death you can still recover from in old adventure games?

It distinguishes unwinnable states from avoidable deaths by reachability, not by death conditions. If an item needed to survive a later hazard is still obtainable from the location where the death occurs, that death is left in as an intentional hint; if the requirement can no longer be met, the crossing that causes it is blocked at the last point where the player can still comply.

_Developers exploring program analysis techniques can follow projects like this on daily.dev._

### What toolchain is used to decompile and recompile Sierra SCI game scripts for patching?

Decompilation uses sci-tools (by sluicebox, MIT licensed), extended with a fork that adds a JSON typed control-flow AST output alongside the normal .sc source emitter. Recompilation uses SCICompanion's script compiler (by Philip Fortier, GPL-2.0+), ported to run headless on Linux via a compatibility layer replacing its MFC/Windows dependencies, then wrapped in Sierra's loose-patch header format.

_daily.dev surfaces open-source reverse-engineering projects for developers building similar analysis pipelines._

### Which Sierra SCI adventure games have been fully analyzed and patched for softlocks so far?

Four games have been analyzed, patched, and play-tested: Leisure Suit Larry 2 (1988, SCI0), King's Quest IV (1988, SCI0), King's Quest VI (1992, SCI1.1), and Laura Bow 2 (1992, SCI1.1). King's Quest V, which uses the SCI1-middle hybrid engine, is in progress on a separate branch, and no game-specific analysis code is required across titles.

_daily.dev helps developers track progress on niche open-source retro-game tooling projects like this one._

## Similar posts on daily.dev

- [Reverse Engineering SimTower](https://daily.dev/posts/reverse-engineering-simtower-hsuy1zx6s) · Hacker News · 0 upvotes · 0 comments
- [AGI-64 Brings Sierra Adventures to the Commodore 64](https://daily.dev/posts/agi-64-brings-sierra-adventures-to-the-commodore-64-xh4qnw0gr) · Two Stop Bits · 0 upvotes · 0 comments
- [Willy Tarreau's stuff: Find bugs in YOUR code using OpenCode, Llama.cpp and Qwen3.6](https://daily.dev/posts/willy-tarreau-s-stuff-find-bugs-in-your-code-using-opencode-llama-cpp-and-qwen3-6-cb1421mxy) · Lobsters · 1 upvotes · 0 comments
- [Detecting Vulnerabilities in Agent Skills with SkillSpector: From Green Checkmark to Real Security Judgment](https://daily.dev/posts/detecting-vulnerabilities-in-agent-skills-with-skillspector-from-green-checkmark-to-real-security-j-u6pwwx1n8) · Towards Data Science · 1 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python)

[View this post on daily.dev](https://daily.dev/posts/github---katiahayati-lucasartsifier-static-analysis-for-sierra-adventure-games-finds-softlocks-by--wygcb13mf)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"GitHub - katiahayati/lucasartsifier: Static analysis for Sierra adventure games: finds softlocks by abstract interpretation of decompiled SCI scripts, derives and verifies guards, recompiles them into","url":"https://daily.dev/posts/github---katiahayati-lucasartsifier-static-analysis-for-sierra-adventure-games-finds-softlocks-by--wygcb13mf","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/github---katiahayati-lucasartsifier-static-analysis-for-sierra-adventure-games-finds-softlocks-by--wygcb13mf"},"datePublished":"2026-08-19T19:28:22.876Z","dateModified":"2026-08-19T20:07:46.798Z","description":"A Python tool performs static analysis on decompiled Sierra SCI adventure games (Leisure Suit Larry 2, King's Quest IV/VI, Laura Bow 2) to find softlocks —...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5542609d5fa1a2a3b3b2ef44cf0f2eed?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5542609d5fa1a2a3b3b2ef44cf0f2eed?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Two Stop Bits","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Two Stop Bits","logo":"https://media.daily.dev/image/upload/s--BScjOU_Q--/f_auto/v1728977574/logos/twostopbits","url":"https://daily.dev/sources/twostopbits"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/github---katiahayati-lucasartsifier-static-analysis-for-sierra-adventure-games-finds-softlocks-by--wygcb13mf","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python","timeRequired":"PT11M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Two Stop Bits","item":"https://daily.dev/sources/twostopbits"},{"@type":"ListItem","position":3,"name":"GitHub - katiahayati/lucasartsifier: Static analysis for Sierra adventure games: finds softlocks by abstract interpretation of decompiled SCI scripts, derives and verifies guards, recompiles them into"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/github---katiahayati-lucasartsifier-static-analysis-for-sierra-adventure-games-finds-softlocks-by--wygcb13mf#faq","mainEntity":[{"@type":"Question","name":"How does this tool distinguish an unavoidable softlock from a death you can still recover from in old adventure games?","acceptedAnswer":{"@type":"Answer","text":"It distinguishes unwinnable states from avoidable deaths by reachability, not by death conditions. If an item needed to survive a later hazard is still obtainable from the location where the death occurs, that death is left in as an intentional hint; if the requirement can no longer be met, the crossing that causes it is blocked at the last point where the player can still comply. Developers exploring program analysis techniques can follow projects like this on daily.dev."}},{"@type":"Question","name":"What toolchain is used to decompile and recompile Sierra SCI game scripts for patching?","acceptedAnswer":{"@type":"Answer","text":"Decompilation uses sci-tools (by sluicebox, MIT licensed), extended with a fork that adds a JSON typed control-flow AST output alongside the normal .sc source emitter. Recompilation uses SCICompanion's script compiler (by Philip Fortier, GPL-2.0+), ported to run headless on Linux via a compatibility layer replacing its MFC/Windows dependencies, then wrapped in Sierra's loose-patch header format. daily.dev surfaces open-source reverse-engineering projects for developers building similar analysis pipelines."}},{"@type":"Question","name":"Which Sierra SCI adventure games have been fully analyzed and patched for softlocks so far?","acceptedAnswer":{"@type":"Answer","text":"Four games have been analyzed, patched, and play-tested: Leisure Suit Larry 2 (1988, SCI0), King's Quest IV (1988, SCI0), King's Quest VI (1992, SCI1.1), and Laura Bow 2 (1992, SCI1.1). King's Quest V, which uses the SCI1-middle hybrid engine, is in progress on a separate branch, and no game-specific analysis code is required across titles. daily.dev helps developers track progress on niche open-source retro-game tooling projects like this one."}}]}
```

