Skip to content

ContentTool 1.2.1

Choose a tag to compare

@UberMorgott UberMorgott released this 10 Sep 22:11
· 168 commits to main since this release

ContentTool 1.2.1 lists shipped sounds by name and extracts loose audio as WAV files so you can find the sound you want to replace.

Find a sound by name or id

  • ct_list audio [filter] now shows every shipped sound by name, read at runtime from the game's own SoundbanksInfo.xml in <install>\PhoenixPointWin64_Data\StreamingAssets\Audio\GeneratedSoundBanks\Windows\.
  • Each row is <id> <name> <bank> loose|in-bank, for example: 6372602 5_IND_Taunt_03 Barks loose.
  • The filter is a case-insensitive substring of the name, the id or the bank: ct_list audio taunt, ct_list audio 6372602, ct_list audio Barks.
  • Media in several banks show their bank names joined with + and match any of them.
  • The list covers 7691 named media: 3105 loose .wem files are extractable; 4591 inside .bnk soundbanks are listed as in-bank so you can find their ids, but are not extractable.
  • The pane shows the first 10 rows and then names a file; the whole list is always written to <persistentDataPath>\ContentTool\Logs\ct_list-audio-<stamp>.txt. A capture such as PPCLI still receives every row.
  • If the XML is missing, the header ends with - NO NAMES: <reason> and rows fall back to numeric names.

Extract one sound or all loose audio

  • ct_extract audio <mediaId> now also writes <ShortName>__<id>.wav beside the byte-for-byte .wem.
  • Use ct_extract audio --all [filter] to decode every loose media the filter matches into ...\ContentTool\Extracted\audio\<ShortName>__<id>.wav.
  • Bulk extraction writes index.csv with columns id,shortName,bank,loose,wav, covering all media including the in-bank ones.
  • Progress is reported every 200 files. The whole library is 3105 decodes.
  • The final line is extracted N of M loose media (K in-bank skipped) into <dir>.
  • A failing decode is counted and named, never fatal.

Use the media id for replacements

  • The Wwise MEDIA id is the number in a loose .wem filename. It is what ContentTool replaces and what these commands take.
  • The Wwise EVENT id is AK.Wwise.Event in the game's defs. It is never a loose filename.
  • If the only id you have is an event id, search the sound's name in the list instead.
  • Replacing a sound is unchanged: the manifest row and the file still use the media id.

Follow the updated guides

  • The sounds guide now covers finding and extracting sounds. The old ct_list audio confirm example is gone: it could never match anything because the list held only numbers.
  • The find-content guide has also been rewritten.

Keep long output visible

  • The game's mod logger creates a console text object with shadow per call. One call over roughly 8 000 characters throws Mesh can not have more than 65000 vertices, losing the frame's console geometry. Splitting at 8 000 characters still failed: five parts, five throws.
  • ContentTool now sends one bounded message per command, at most 5 000 characters: verdict head, ... N line(s) not shown, last lines including ct_project: …, and the full-text file path <persistentDataPath>\ContentTool\Logs\log-<stamp>.txt. The console pane shows the same bounded text. ct_list audio keeps 10 rows plus ct_list-audio-<stamp>.txt; a capture such as PPCLI receives every line.
  • Verified in game: long-verdict ct_project, ct_list audio, and enabled project startup bake; zero exceptions, trailer visible.

Install

  • Unzip so that Mods\ContentTool\ContentTool.dll and Mods\ContentTool\meta.json exist under your Phoenix Point Mods folder.
  • Enable ContentTool in the in-game mod manager, then restart.
  • Mods that depend on ContentTool list com.morgott.ContentTool in their meta.json Dependencies.