If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Bookworm Adventures

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Bookworm Adventures

Developer: PopCap Games
Publisher: PopCap Games
Platforms: Windows, Mac OS X
Released in US: November 28, 2006


CodeIcon.png This game has unused code.
DevTextIcon.png This game has hidden development-related text.
DebugIcon.png This game has debugging material.
Carts.png This game has revisional differences.
PiracyIcon.png This game has anti-piracy features.


NotesIcon.png This game has a notes page

Hmmm...
To do:

Bookworm Adventures is a word-based fairytale RPG of the classic Bookworm and also one of the most expensive casual games ever made, with a $700K budget. The developers on the public developer forum say the game was in development for two years! Wow!

Sub-Page

Miscellaneous tidbits that are interesting enough to point out here.
Notes

Unused Text

Hmmm...
To do:
Does an "expansion pack" exist?
After installing an expansion pack, any in-progress Arena Mode game you had is invalidated. Please start a new Arena Mode game.
We haven't implemented this feature yet. It will be in soon!

Unplayable Words

The following words are contained in the game's dictionary, but cannot be played in the actual game due to the fact that they contain a Q not immediately followed by a U:

BUQSHA(S)
FAQIRS
QANATS
QINDAR(S)/QINDARKA
QINTAR(S)
QIVIUT(S)
QWERTY(S)
SHEQEL/SHEQALIM
TRANQS
UMIAQS

The word list also contains words with 5 or more instances of the same letter, which are also impossible to play since the game never lets more than 4 of the same letter tile onto the board.

Debugging Material

Hmmm...
To do:
Enable this if possible.

Developer Cheats

scripts/cheat.luc appear to have developer cheats, functions are modify HP, level up, modify XP, instant kill, complete chapter, complete book, modify tile architectures, set particles, nuke profile, status testing, load debug profile, add items, beatdown multiplier modifiers, die, save, get selected chapter, modify treasure count, bypass/repeating tutorials, give player+enemy buffs/debuffs, enabling minigames, enabling bestiary, delete words, forcing an attack, and hiding treasures.

The game also looks for this file on bootup.

Enemy weakening?

Can't use TAB on the hydra/sphinx. Use DEL to weaken.

Sounds like a function to weaken enemies.

Forcing an enemy's attack?

CHEAT: FORCING THIS ATTACK

Saving

Player is nil, why are you trying to save right now?

Beta Support

Some files mention BETA_BUILD, likely referring to builds distributed from PopCap's game beta testing page and is also a flag for what current build type is used when released to the public.

LUA Error Handler

If a LUA has an error, the game will say this message:

Oops! A lua error occurred and the game needs to shut down. Please contact customer support and provide them with your lua.log file.

It will be created or replaced in the game's root install directory.

Bad String Handler

Hmmm...
To do:
Where is this detected? The LUC/LUAs and/or plaintext data?

If the game detects a bad string, this text from scripts/common.luc will show in red: Someone passed in a string with invalid characters. Probably because they forgot to save the file as plain text and it contains some specially formatted Word characters. This is bad. We can't render those. I'll let the program continue, but it may result in messed up text. This would probably be a bug for Steve if you get this. I'll let the program keep running though, as this is just cosmetic.

Cheat Detection

Hmmm...
To do:
What triggers this? Memory edits, developer cheats or both?

scripts/BattleEngine.luc mentions CHEAT and YOUCHEATED in flagging terms. The game would most likely detect the use of memory editing or some sort of cheat format and force your best and longest word to be CHEAT and YOUCHEATED (the latter of which is impossible in normal gameplay).

Developer Notes

Some Luc and XML files contain developer notes.

data/credits.xml

A documentation on Settings nodes.

		<!-- 	title: The credit heading, such as Programmer/Artist/etc
				bgpam: background PAM to use (minus extension), will crossfade from previous.				
				frame: PAM animation frame to play if using the above			
				bgimage: FILE name of image to use for background instead of pam
				y: Y coordinate to start drawing the background at. The BG will be clipped to a viewing region
					of x=0, y=195, width=800, height=215 so you can use this to offset the image.
				idlecount: how many frames to delay after the text fades in before the creature PAM attacks
				fadein: how fast the alpha fades in
				nextalpha: alpha value item must reach before the next item can fade in
		-->

A documentation on Entry nodes.

		<!--	pam: file name (minus extension) for character anim to use
				x, y: coordinates to draw at
				attack: specifies which attack to use. If not specified, won't attack.
				targetx: After the name gets attacked by the creature, the name flies at the creature. This specifies
					the X coordinate at which the name must reach to kill off the creature.
				priority: a greater value indicates that the anim should be drawn on top of those with a lower priority
		-->	

A note saying no codex entry is present and one will be used when possible, unfortunately, none was added at anytime...

<!-- currently missing codex entry: when we have one, use it -->

properties/resources.xml

<!-- GENERAL IMAGES NEEDED AT ALL TIMES -->
<!--			LOAD RESOURCES FOR TITLE SCREEN/MAIN MENU 		-->
<!-- astropop easter egg -->
<!-- BOOK RELATED UI IMAGES -->
<!-- LEVEL-UP RELATED UI IMAGES -->
<!-- WORD SCROLL STUFF -->
<!-- SOUNDS -->
<!-- UI sounds -->
<!-- SFX for lex -->
<!-- basic game sounds common to all books -->
<!-- overkill sounds -->

properties/config.xml

<!-- GAME CONSTANTS -->
<!-- OLD LETTER VALUES
	
	<String id=LetterValues>
		1, 4, 4, 3, 1, 5, 3, 5, 1, 8, 7, 2, 4, 2, 1, 4, 7, 2, 1, 2, 2, 5, 6, 8, 6, 10
	</String>
-->

properties/book2.xml

<!--									TODO: MODEL THE CHAPTER CRAP AFTER BOOK1 SO IT ONLY LOADS THE CHAPTERS IT NEEDS 		-->

properties/bookX.xml

<!-- Resources required after the book has been selected and the chapter screen is displaying -->
<!-- Resources for book X's map screen -->

properties/book1.xml

This also applies to book3.

<!-- load the hydra's special boss battle graphic -->

Marketing Modes

On builds of the game, partner.xml is present in properties, stating the marketing type, preferably for trials. These are multiple types of them, a .sig and .sig2 (for DRM) file also exist, to verify integrity of the file.

  • None: Nothing, PopCap's 60 min trial, custom OEM DRM or no DRM may be used.
  • 60Normal: 60 min trial (In-game DRM).
  • 60Trailer: 60 min trial (In-game DRM), restricting up to Chapter 8.
  • HydraTrailer: Infinite time (In-game DRM), restricting up to Chapter 8.
  • Hydra: Disables In-game DRM.

Copy Protection

Hmmm...
To do:
Try other modes.

If you remove or rename properties/partner.xml or remove the MarketingMode tag in it from your installation of the game and use the extracted game executable from the wrapper to play (to bypass set trial timers/lockouts), the game boots up fine but after clicking Adventure, the keyboard and main in-game GUI other than the pause button will stop working after about 2 seconds of gameplay, on the first level and battle of the game, spelling PLAY is impossible and you are softlocked when trying. This affects the entirety of the in-game GUI, and even the keyboard too. The pause menu also doesn't have the black background fade.

When set to a 60 minute trial with the animated trailer, loading the game without the trial wrapper or killing it when run will immediately lock out the game after loading saying the trial has expired.

Revision List

  • 1.0 = Initial release!
  • 1.0.1.100 = Bug fixes.

Two revisions were pushed. PopCap.com's CDN, CD-ROM, and Steam/GameHouse/Zylom all have the latest versions.

Developer Text

Game is in timed mode, but non-timed mode key requested: %s
Game isn't in timed mode, but timed mode key requested: %s
ERROR: StartLoadChapterResources called twice
LoadChapterResources taking an unnaturally long time
//////////////////////////////////////////////////////////////////
// This is a list of nudging offsets to be used in displaying creatures
// in the bestiary. You may set the values here or in the creatures'
// own lua file (by setting mNudgeX and mNudgeY).
//	ENTRIES IN THIS TABLE WILL OVERRIDE THOSE SET IN THE INDIVIDUAL LUA FILES.
//////////////////////////////////////////////////////////////////

Present in scripts/StatsBook.luc.

Interrupt state already exists
Arena class isn't loaded
somehow nothing found for TM_POTION_BONUS_TABLE
:gTimedMode == true but player and enemy aren't ready
Alchemy value not found in gem or metal table for: 
Invalid value: 
, passed to AddTimedModebonus

Present in scripts/BattleEngine.luc.

Base class can't be nil
Trying to merge non-serializable status effects
effectTable can not be nil in RespondToAttack
Can't set state to INTERRUPTED: Use CreatureBaseClass:InterruptState instead
FATAL ERROR: Couldn't find a suitable attack. Please rebalance and add another attack.
Incompatible interface passed to PurifyEffect:Copy

Present in scripts/effects/PurifyEffect.luc.

Hmmm...
To do:
Gold? Any traces of it?
Health bar is nil
DEPRECATED: gold no longer used

Present in scripts/Tutorial.luc.

Can't find the image specified in CreateArenaAnim
common.Append: lTable == nil
theTable can't be nil in AddTableEntry

Present in scripts/common.luc.

ERROR: Tried selecting a book that doesn't exist: book number 

Present in scripts/BookManager.luc.

DEPRECATED FUNCTION
****** ERROR: received fscommand:playsound for sound: 
, but the sound ID doesn't exist.
Tile:RemoveAttribute - Attrib not found. Intended?

Present in scripts/tile/Tile.luc.

Expected expiration time in *Tile:Init

Present in scripts/tile/*Tile.luc, replace "*" with Destroyed, Locked, Fire or Poisoned.

mWordLen and/or mDamageMult is nil in WordLengthEffect:Init
!!HEY: there's no icon for this WordLengthEffect, it has a damage mult of 
Incompatible interface passed to WordLengthEffect:Copy

Present in scripts/effects/WordLengthEffect.luc.

Incompatible interface passed to *Effect:Copy

Present in scripts/effects/*Effect.luc, replace "*" with WordLength, Heal, VowelToConsonant, HealingWord, Purify, DestroyedTile, LockTile, FireTile or PoisonTile.

ERROR

A string for a missing boss?

ALIGN:HEAD received but no owning creature found

Present in scripts/PAMAnimator.luc.

DO NOT START A WORD BUBBLE WITH THE NEWLINE CHARACTER! TEXT: 

Present in scripts/WordBubble.luc.

===========BEGIN DUMP OF LEX'S STATUS AILMENTS============
     [mStatusText] = 
     [mInvalidated] = TRUE
     [mInvalidated] = FALSE
     [mScriptName] = 
===========BEGIN DUMP OF ENEMY'S STATUS AILMENTS============
===========BEGIN DUMP OF LEX'S TREASURES============
Treasure *IS* enabled: 
Treasure is not enabled: 
, upgrades: 

Present in scripts/main.luc.

Definition File Support

Hmmm...
To do:
Decompress compressed.txt and set it to that?

The game's executable mentions the use of an uncompressed dictionary file or a definition file like the first game did. No such file exists in the game.

data/defs.bin

Lua Compilation Support

In the scripts directory after unpacking the game, the game can compile Lua files on its own if compiled Lua files are not present.

Removed Strings

Across localizations, some strings were cut from the game nor were leftover from development builds of the game. Unlike most PopCap games, string IDs are in the forms of hexadecimal offsets as strings.

String ID English French Italian Espansol German Possible explanation
0x00000069 B%d Chap %d Stage %d.bwa Mention for loading save data?
0x00000069 ARENA Stage %d.bwa Mention for loading Arena save data?
0x0000006b DebugKeysOn Possible call for enabling debug keys?
0x0000006c Cheat key pressed: Forcing game to pretend that the 60 minute trial has expired Triche activée : Faire semblant que la version d'essai de 60 minutes est expirée Cheat attivato: hai forzato il gioco ad esaurire i 60 minuti di prova Obvious text for overriding the free trial timer.

Internal Project Name

The internal name of the software is WinBAD, where Win is likely Windows and BAD speaks for itself.