Bring gameplay closer to the original Yoda Stories engine based on
analysis of the WebFun reference implementation:
Combat:
- Monsters shoot projectiles at hero (same row/col, 4-tile range, 6/7 chance)
- Melee attacks hit 3-tile spread (forward + 2 diagonals)
- The Force stuns NPCs instead of dealing damage
- Killed monsters drop loot items at death position
Monster AI:
- Add Patrol behavior (waypoint-following movement)
- Add Animation behavior (frame cycling without movement)
Health system:
- Scale to 768 HP (3 lives x 256, matching original)
- 3-segment color gradient health gauge (green/yellow/red)
- Proportionally scaled weapon damage values
Script engine:
- Implement Wait instruction (pause/resume next tick)
- Implement HideHero/ShowHero instructions
- Fix RequiredItemIs, EndingIs, FindItemIs, HasAnyRequiredItem conditions
- Fix IsVariable/SetVariable to use XOR addressing
Game loop:
- Double script evaluation per tick (before and after NPC updates)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change TILE_LOCATOR from 512 to 794 (the actual R2D2 tile in zones)
- Remove fake NPC spawning - R2D2 now collected from zone tiles
- Add pickup when player walks over R2D2 tile
- Add left-click on inventory items to select/use them
- Left-clicking R2D2 in inventory triggers hint system
- Add GetInventorySlotAtPosition for mouse click detection
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enable R2D2 spawning in Dagobah zones (was commented out)
- Remove auto-give of locator - player must collect from R2D2
- Extract correct Indiana Jones palette from DESKADV.EXE
- Use BGR format for palette data (was incorrectly RGB)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update animation cycles: 0xA0-8, 0xE0-5, 0xE5-9 (fast), 0xEE-6, 0xF4-2 (slow)
- Matches webfun reference documentation
Note: Indy palette colors are in game EXE, not DAW file.
Using shared Desktop Adventures palette as fallback.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CI/CD pipeline section with build artifacts table
- Document Save Game Editor feature
- Add native menu bar and inventory scrolling
- Update project structure with IndyNG engine
- Add Palette.cs to rendering section
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use net use with \192.168.100.22\releases and credentials
- Deploy to R:\$CI_PROJECT_NAME\$CI_COMMIT_REF_NAME
- Clean up drive mapping after deploy
- Manual trigger on main branch
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Single build job cross-compiles for win-x64, linux-x64, osx-x64
- Package job creates zip for each platform
- Deploy copies to SMB share \192.168.100.22\pool\releases\YodaStoriesNG
- All jobs run on win10 shell runner
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- deploy:windows - Uses SMB mount on win10 runner
- deploy:linux - Uses NFS mount on debian runner
- deploy:macos - Uses NFS mount on darwin runner
- All deploy to 192.168.100.22:/pool/releases/YodaStoriesNG
- Files set to 755 permissions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Windows: win10 + shell tags (PowerShell)
- Linux: debian tag
- macOS: darwin + shell tags
- Package and deploy on debian runner
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix palette animation for both Yoda Stories and Indiana Jones
- Track animated tiles and refresh only those when palette cycles
- Use streaming texture for dynamic updates
- Water, lava, and other effects now animate properly
- Fix Indiana Jones palette
- Load embedded palette from DAW file STUP section
- Remove incorrect 85% brightness reduction
- Colors now match original game
- Add GitLab CI/CD pipeline
- Build unified binaries for Windows, Linux, macOS
- Package releases into zip files
- Deploy to NFS share at 192.168.100.22:/pool/releases
- Improve bot mission solving and NPC handling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Renamed SaveGameInspector to SaveGameEditor
- Window title now "Save Game Editor"
- Menu shows "Save Editor (F8)"
- Added [+] Add Item button to add items to inventory
- Added [+] Add Weapon button to add weapons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- R2D2/Locator now given automatically at game start (original behavior)
- No LocatorItem zone objects exist in Dagobah - R2D2 was never placed
- Disabled bot auto-start to allow manual testing
- Save Inspector: variables now show names (OnDagobah, ZoneInit, ZoneSolved, etc.)
- Save Inspector: inventory and weapons are now editable
- Save Inspector: improved status bar shows edit state
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Save Inspector now editable: click yellow fields to edit values
- Added SaveGameManager.SaveGameData() for direct save file editing
- Press Ctrl+S to save edits, Enter to apply, Escape to cancel
- Status bar shows unsaved changes state
Bot improvements:
- Added GetDirectionTowardZone() for multi-zone BFS pathfinding
- Bot now navigates to R2D2's zone if not directly adjacent
- Block X-Wing positions at startup to prevent accidental travel
- Added debug logging for R2D2 search diagnostics
New debug windows:
- Zone Editor (F9) for viewing zone tiles and objects
- Save Inspector (F8) for editing save game data
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Menu System:
- Add NativeMenuBar using Win32 API for proper DPI/scaling support
- Native menus work correctly at all graphics scales (1x, 2x, 4x)
- Uses WndProc subclassing to intercept WM_COMMAND messages
Bot Improvements:
- Increase stuck threshold from 3s to 5s to reduce false positives
- Increase max stuck retries from 5 to 10
- Increase zone exit attempts from 3 to 10 before marking blocked
- Make blocked zone exits temporary - retry after visiting 3 other zones
- Clear unreachable positions when entering new zones
- Better zone change tracking for retry logic
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Inventory panel now shows 16 slots (4x4 grid) with scroll support
- Added mouse wheel scrolling when hovering over sidebar
- PageUp/Down and [/] keys scroll inventory
- Number keys 1-9,0 work with scroll offset
Weapon ammo system:
- Light blasters: 30 ammo, 50 damage
- Heavy blasters: 15 ammo, 75 damage
- The Force: unlimited ammo
- Grenades/bombs: single-use, 100 damage
- Ammo bar displayed in HUD next to weapon slot
- Weapons auto-switch when depleted
- Save/load persists weapon ammo state
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add HighScoreManager to save/load scores per game type
- Add HighScoreWindow with tabs for Force Factor and Indy Quotient
- Add "High Scores" menu item under About
- Save high score when completing 15-mission cycle
- Bot now prioritizes picking up R2D2/locator at game start
- Update About menu text to "Desktop Adventures NG"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix menu mouse offset at different scale factors (divide by scale)
- Add .daw filter to data file dialog for Indiana Jones
- Fix About window size and legal notice text
- Fix Reset Defaults button size in keyboard controls
- Fix README F-key assignments (F2=Map, F3=Script, F4=Asset)
- Update About window title to "Desktop Adventures NG"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add separate world generation sections for Yoda and Indy games
- Add dual-column ratings table with game-specific titles
- Fix ScoreWindow to show Indy Quotient ratings for Indiana Jones
- Add screenshot placeholders for new features (score screen, palette, R2D2)
- Note that Mission Bot is currently Yoda-specific
- Fix graphics scaling consistency (2x/4x)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add dual game support for Yoda Stories (.dta) and Indiana Jones (.daw)
- Implement color palette cycling animation for water, lava, fire effects
- Add Force Factor / Indy Quotient end-game score calculation and display
- Add ScoreWindow with ratings (Legendary Hero to Beginner)
- Implement R2D2 context-sensitive help system with GetR2D2ContextHint()
- Complete all 30+ script opcodes (EnterByPlane, HeroIsAt, hotspots, etc.)
- Update README with new features and score system documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Press E to toggle edit mode (view/edit)
- In edit mode, click on condition or instruction text to edit
- Text editing with cursor navigation (arrows, Home, End)
- Enter to save changes, Escape to cancel
- Visual highlighting of editable items in edit mode
- Status bar shows edit mode state and unsaved changes
- Supports shift for uppercase and common symbols
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add GameType enum to distinguish Yoda Stories vs Indiana Jones
- Update DtaParser to detect game type from filename (DESKTOP.DAW vs YODESK.DTA)
- Add secondary detection from version field (1.x = Indy, 2.x = Yoda)
- Update Program.cs to search for both game data files
- Update GameEngine to use game-specific window title and weapon tiles
- Update TitleScreen to support game-specific fallback text
- Rename X-Wing flyby to generic vehicle flyby for future Indy support
Ref: https://github.com/IceReaper/DesktopAdventuresToolkit
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Weapon Progression:
- Start with basic lightsaber (tile #18)
- After 5 missions: Yoda gives upgraded lightsaber (tile #510)
- After 10 missions: Yoda gives The Force (tile #511)
- After 15 missions: Victory screen, cycle complete
The Force:
- Added as ranged weapon (can attack from a distance)
- Uses same lightsaber animation for melee appearance
- Projectile spawns when attacking with The Force
Mission Flow:
- Each mission completion returns to Dagobah
- Yoda gives weapon upgrades at milestones (5, 10)
- Progress tracked as X/15 missions
- Press R to start next mission or new cycle
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added DisableLogicalSize/RestoreLogicalSize methods to GameRenderer
- Menu bar now renders without SDL logical scaling
- Menu stays at consistent physical size when switching between 1x/2x/4x
- Added CurrentScale property to track current graphics scale
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
About Window:
- New popup window with game info, version, and legal notice
- Clickable GitHub link to sp00nznet/YodaStoriesNG
- Removed "GitHub Repository" menu item
- Legal notice explaining fan project status
Title Screen:
- X-Wing now flies IN FRONT of the logo instead of behind
- Fixed visual issue where X-Wing disappeared into space background
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Title Screen:
- Add X-Wing flyby animation using actual game tiles (948-951)
- X-Wing flies across screen with slight wave motion
- Add twinkling star field background
- Stars use pseudo-random positions with brightness animation
Startup Flow:
- Game no longer requires DTA file to be in expected location
- If DTA file not found, prompts user with file picker dialog
- Program.cs shows informative message instead of exiting with error
- Allows sharing the executable without bundled game data
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add KeyBindings system with JSON persistence to %APPDATA%
- ControlsWindow now allows clicking to rebind keys (click left/right for primary/alternate)
- Press DEL/Backspace to clear a binding, Reset Defaults button to restore
- Add 1x graphics scale option (original tile size) alongside 2x and 4x
- Fix Asset Viewer click handling - MenuBar now checks window ID
- Add RenderSetLogicalSize at initialization for consistent scaling
- Add screenshots to README (title, gameplay, world map, script editor, asset viewer)
- Remove placeholder comments from README
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add FileDialogHelper.cs with P/Invoke to Windows common dialogs
- Save Game (quick save) saves to default location
- Save As... shows file picker for custom save location
- Load Game loads from default file, or shows picker if not found
- Select Data File shows Windows file picker for .dta files
- Menu updated with separate Save/Save As options
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Major new features:
- Menu bar with File/Debug/Config/About menus
- Title screen with game startup image from STUP section
- Config menu with 2x/4x graphics scaling (SDL_RenderSetLogicalSize)
- Controls window showing keyboard and Xbox controller mappings
- Save/Load game functionality with JSON serialization
Debug tools:
- Map Viewer (F4) shows full world grid with zone types
- Script Editor (F3) for browsing IACT action scripts
- Asset Viewer (F2) for tile and character browsing
World generation:
- X-tra Large world size with 15x15 grid support
- Dynamic grid sizing in MapGenerator and WorldGenerator
- Scaled puzzle counts for larger worlds
Technical improvements:
- Graphics scaling using SDL_RenderSetLogicalSize for proper content scaling
- Dynamic grid size support throughout codebase
- Updated README with comprehensive documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Features:
- Debug tools (press I): dumps game state, zone info, IACT scripts,
inventory, and mission progress to console
- Map visualizer: shows 10x10 world grid with sector types on startup
- SectorType enum matching WebFun's world generation system
- TypeMap and OrderMap for proper puzzle placement tracking
Bot improvements:
- Permanent blocklist for X-Wing positions to prevent teleport loops
- Committed exploration targets to prevent zone switching
- Fixed state overwriting in MoveToAdjacent
- Added FindTileItem() for tile-based item detection
Also includes:
- IndyNG.Engine scaffold for Indiana Jones Desktop Adventures
- Enhanced DtaParser with better tile name extraction
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Filter planet grid to only use 18x18 outdoor zones (exclude 9x9 rooms)
- Add room exit detection in MissionSolver
- Auto-start bot for debugging
- Add zone grid visualization
- Improve zone connection logging
- Fix HandleBotAction direction handling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix HandleBotAction to use direction when coords are (0,0)
- Fix edge detection mismatch in MissionBot (use consistent <=2 threshold)
- Update puzzle parser to look for IPUZ markers inside PUZ2 section
- Add debug logging for zone connections
- Improve puzzle chain building with zone filtering
- Add FUTURE_FEATURES.md for WebFun-style development tools
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Track unreachable NPCs to avoid infinite retries
- Clear unreachable list when changing zones
- Add name-based hostility detection for NPCs
- Check top layer tiles for walkability
- Fix MissionSolver to skip likely hostile NPCs by name patterns
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New Bot system with:
- Pathfinder.cs: A* pathfinding for zone navigation
- BotActions.cs: Action execution (move, attack, talk, use item)
- MissionSolver.cs: Mission logic and puzzle chain tracking
- MissionBot.cs: Main orchestrator with state machine
Features:
- Press B to toggle bot on/off
- Bot status bar display when active
- Automatic mission progression (talk to Yoda, travel, solve puzzles)
- Combat detection and enemy engagement
- Stuck detection and recovery
- Console logging for debugging
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Major features:
- Mission/quest system with puzzle chains (Trade/Use/Goal puzzles)
- IZAX entity parsing for NPC item handoff (fixes R2D2 pickup)
- Widescreen layout with sidebar HUD
- Xbox controller support with analog stick movement
- Parser fixes for variable argument counts
UI changes:
- Game area (576x576) with 220px sidebar on right
- Inventory grid (2x4 layout) in sidebar
- Controls help section in HUD
- Messages/dialogue stay in game area
Controller mapping:
- Left stick/D-pad: Move
- A: Action, B: Cancel, X: Travel, Y: Objective
- LB/RB: Toggle weapon, Start: Restart
Also adds README with project documentation.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add swing feedback when attacking empty space
- Show message when selecting empty inventory slot
- Show selected item name when selecting inventory
- Give player starting weapon (lightsaber)
- Show zone summary (NPC count, item count) on entry
- Add welcome message with hints
- Clear messages on new game
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Message System:
- Add MessageSystem class for displaying game messages
- Support for Info, Pickup, Combat, Dialogue, and System messages
- Timed messages with fade out
- Dialogue box with dismiss on Space
Sound Manager:
- Add SoundManager class for audio playback
- Sound loading and mute toggle (M key)
- Common sound effect IDs defined
NPC Dialogue:
- Friendly NPCs can be talked to with Space
- Random dialogue responses from NPCs
- NPCs face player during conversation
Visual Feedback:
- Pickup messages when collecting items
- Combat hit/defeat messages
- Zone entry notifications
- Game over message
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add zone info bar at top showing planet indicator
- Add damage flash overlay (red) when player takes damage
- Add attack flash overlay (yellow) when player attacks
- Planet-colored indicators for different worlds
- Visual polish for combat feedback
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Improved HUD with scaled inventory slots and weapon slot
- Add zone item rendering (CrateItem, CrateWeapon)
- Track collected objects per zone to prevent re-pickup
- Items disappear from ground once collected
- Highlight selected item in inventory
- Show weapon in dedicated slot on left
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add NPCBehavior enum (Wandering, Chasing, Fleeing, Stationary)
- Implement NPC AI movement patterns
- NPCs wander within radius of spawn point
- Enemy NPCs chase and attack player
- Add player attack system (Space key)
- NPCs take damage and can be defeated
- Set NPC behavior based on character type (Enemy/Friendly)
- Apply character weapon/aux data for health and damage
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove excessive console logging to make output cleaner while
keeping essential loading statistics.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add NPC class to track NPC instances in zones
- Parse zone objects with correct 12-byte format
- Render NPCs using character sprites or direct tile IDs
- Initialize NPCs from PuzzleNPC zone objects
- Track NPC list in GameState for each zone
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use character 0 (Luke Skywalker) as hero fallback
- Add spawn point detection when loading zones
- Improve door transitions to find matching entrance points
- Add character debug output showing names and tile IDs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rewrite zone parsing to scan for IZON markers instead of using broken length fields
- Fix character parsing to read 84-byte chunks without count field
- Add proper section length handling for CHWP, CAUX, TNAM sections
- Now loads 658 zones and 77 characters correctly
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SDL2-based rendering with tile atlas
- DTA file parser for tiles, zones, sounds, puzzles
- Correct color palette from goda-stories project
- 658 zones loading and rendering correctly
- Basic game loop with zone navigation (N/P keys)
- HUD with health bar and inventory slots
Still needs: character parsing, IACT scripts, gameplay mechanics
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>