Skip to main content

What mods can do

CapabilityAdd newReplace existing
Visitor appearance (clothing, hair, faces, bodies)Yes: duplicate, rename, Generate data key tag; joins the generator pools, Selection Weight on the assetYes: a duplicate of the base asset keeps its Key Tag Data and replaces it. See Visitor appearance
Checkpoint staff skinsn/aYes: QzStaticNPCSkinDataAsset per NPC tag
SymptomsYes: auto-included into the day pool (see Symptoms)Yes: same Symptom.* tag wins over base
ToolsYes: auto-granted to the player at day start (or hand it out yourself: class Qz Tool Data Asset (Manual Grant))Yes: same Tool.* tag wins over base and is granted when the campaign grants the base tool
MapsYes: ship a map plus a QzLevelDataAsset (Level.* tag, soft reference to the map) and reference that tag from your campaignn/a
CampaignsYes: QzCompanyDataAsset + QzDayDataAsset days; on your own map or on a base level (Level.Chicago, Level.Miami). See Making your own campaignNot by key; make a copy under your own Company.* tag
NPC profiles, baggage, contraband, handbookYes: picked up by asset scanningKey-based content only
Custom GameplayTagsYes: Config\Tags\*.ini inside the modn/a

Checkpoint staff skins​

Create a QzStaticNPCSkinDataAsset and set NPCTag to one of:

  • NPC.Skin.Doc
  • NPC.Skin.Usmon
  • NPC.Skin.UsmonWhite
  • NPC.Skin.Military (all soldiers)
  • NPC.Skin.Scientist (the X-ray zone surgeon)

Optionally set a replacement Mesh and per-slot material overrides. Only one mod can own a given NPC.Skin.* tag: if two mods set the same tag, only one applies, and which one is not defined. Staff skins apply in every campaign, including the official ones. Remove test skins before you publish. Story NPCs (Schultz, Torres, the Major, MrWhite) are not moddable. For a step-by-step walkthrough see the skin mod tutorial.

Visitor appearance​

Visitor looks (clothing, hair, faces, bodies) are collected into pools by key. The key is the asset's Key Tag Data field; you cannot type it in the details panel.

  • Replace a base item: duplicate the base asset into your mod. The copy keeps the base Key Tag Data and replaces the base item everywhere, including when saves are restored. Any asset from a mod with the same key as a base asset replaces it; the Generator Data Source field does not matter for that.

  • Add a new item:

    1. Duplicate a base asset into your mod and rename it. The copy still holds the base key in Key Tag Data.
    2. Save the asset first. The Generate data key tag button does nothing on an unsaved new asset.
    3. Press Generate data key tag. Key Tag Data becomes Generator.DataKey.<Layer>.<AssetName>.
    4. The editor writes that tag line into the kit's QZSim\Config\Tags\Generator.ini, not into your mod. Move the line into your mod's Config\Tags\<ModName>Tags.ini (template: Custom GameplayTags) and remove it from the kit file, then save. Package Mods then includes the ini.
    5. A duplicated base asset may have Use Only Custom Profile ticked. Untick it if the item should appear on random visitors.

    The new item joins the generation pool automatically; its Selection Weight controls how often it appears.

    A duplicated hat asset whose Key Tag Data still holds the base key

    Before: the duplicate still holds the base key (...DA_Hats_Beer_helmet).

    The same asset after pressing Generate data key tag

    After: Key Tag Data is Generator.DataKey.Accessory.Hat.DA_Hats_MyFirstHat.

For accessories that spawn an actor (QzNPCAttachment Blueprint), give the actor an NPC.Accessory.* tag declared in your tags ini. Without it the item is chosen but never shown.

Symptoms​

A QzSymptomDataAsset with your own tag (declare the tag in your mod's Config\Tags\<YourMod>Tags.ini) is automatically included into the day pool, unless its Levels list excludes the level, and only if its Section is in the campaign's Supported Sections. The same tag as a base symptom means your version replaces it. The ability Blueprint that runs on infected visitors goes into Symptom Custom Logic.

Tools​

A QzToolDataAsset with your own Tool.* tag and an item definition is granted to the player automatically at the start of every day, and from then on it is in the save.

The same tag as a base tool is a replacement: it is given when the campaign gives the base tool (not on day 1).

To hand a new tool out yourself instead:

  1. Create the data asset with the class Qz Tool Data Asset (Manual Grant) (Data Asset → pick that class; set Tag and Item Data Asset as usual).
  2. Call Get Game Flow → Add Tools from your own Blueprint (for example something in your mod's level, or an item found during inspection). It takes an array of tags: pass your Tool.* tag through Make Array.

The tool is then saved and stays on the following days. Manual Grant tools are usually handed out by your own campaign with the day modifier Give Tools. A mod cannot edit the base game's levels. Your own maps can contain any actors. To run your own logic in base campaigns, the game must create an object from your data, for example a symptom ability, a tool, a visitor accessory or a checkpoint staff skin (see Running your own logic). A tool that was already auto-granted in a campaign stays in that save, so test Manual Grant in a new campaign.

Maps​

Ship the map in your mod plus a QzLevelDataAsset (Level.* tag and Level soft reference) and reference the tag from your campaign's QzCompanyDataAsset. The easiest start is to duplicate a base gameplay level into your mod: it must keep the gameplay actors (game flow, NPC manager, inspection points, queue spawn points, bed). Then replace the environment, for example with sub-levels.

Running your own logic​

Mods use Blueprints. Your code runs when the game creates an object from your data:

  • a symptom's ability Blueprint (Symptom Custom Logic; runs on infected visitors);
  • a tool actor (when the player equips it);
  • a visitor accessory actor;
  • actors placed in your own map;
  • the Post Process Anim Blueprint of a checkpoint staff skin mesh (runs wherever that NPC appears; keep the anim graph passing the input pose to the output, and spawn at most one manager actor).

Input​

Add your own Input Action and Input Mapping Context and call Add Mapping Context from your actor. Pick a key the game does not use (for example T). Do not rebind E or other game keys.

Reading game state​

  • Visitors: Get NPC Data BP, Get State, Get Final Goal.
  • Player focus: Get Actor In Focus.
  • Save and day: Get Gameplay Save Object -> Get Current Day, Get Game Flow.

Interactive objects​

Use the game's interaction components (Focus, Context Actions, an Ability Set / Gameplay Ability), or make child Blueprints of base objects (bed, cat, auto doors). Child Blueprints of base content can break when the base Blueprint changes.

Custom GameplayTags​

Put them in Config\Tags\*.ini inside the mod (every .ini in that folder is loaded). They register automatically at mount and are staged automatically by Package Mods. Example Config\Tags\<YourMod>Tags.ini:

[/Script/GameplayTags.GameplayTagsList]
GameplayTagList=(Tag="Symptom.MyMod.GreenSkin",DevComment="")

Not moddable​

Story NPCs (Schultz, Torres, the Major, MrWhite) cannot be re-skinned or replaced. Your Blueprints can still read their data, and your own campaign can reuse the base story days and quests.

UI: your mod can add its own widgets and, inside your own campaign, use its own Player Controller and widget registry. Changing the base game's widgets at runtime is possible but unsupported: it can break with any game update.