.modfile naming pattern. Each type corresponds to different game assets and uses specific character or scene IDs.
Mod type overview
The application identifies mod types using regex patterns defined insrc/models/models.py:50-59. Each mod type has a specific naming convention that must be followed.
IDLE mods
IDLE mods replace character idle animations and standard character assets. Naming pattern:char{character_id}.modfile
Regex: ^char(\d+)\.modfile$ (case-insensitive)
Examples:
character_id is used to look up character information from the characters.csv data file.
CUTSCENE mods
CUTSCENE mods replace character cutscene animations. Naming pattern:cutscene_char{character_id}.modfile
Regex: cutscene_char(\d+)\.modfile$ (case-insensitive)
Examples:
character_id maps to entries in characters.csv.
SCENE mods
SCENE mods replace special illustrations, story packs, or special scene assets. Naming pattern:{prefix}{scene_id}[_{optional}].modfile
Valid prefixes: specialillust, illust_special, storypack
Regex: (?:specialillust|illust_special|storypack)(\d+)(?:_?\d+)?\.modfile$ (case-insensitive)
Examples:
scene_id is stored but scene data lookup is currently not fully implemented in game_data.py:138-139.
NPC mods
NPC mods replace non-player character assets and talk illustrations. Naming pattern:npc{npc_id}.modfile or illust_talk{npc_id}.modfile
Regex: ^(?:npc(\d+)|illust_talk(\d+))\.modfile$ (case-insensitive)
Examples:
npc_id is used to look up NPC information from npcs.csv. Some NPCs are linked to specific characters through the character_id field in the NPC data.
DATING mods
DATING mods replace dating scene illustrations. Naming pattern:illust_dating{dating_id}.modfile
Regex: ^illust_dating(\d+)\.modfile$ (case-insensitive)
Examples:
dating_id is used to look up the associated character from datings.csv, which maps dating IDs to character IDs.
ID mapping
The mod type system uses several types of IDs to map mods to game assets:Character ID
Used by IDLE and CUTSCENE mods. Directly references a character incharacters.csv.
Format: Usually 6 digits (e.g., 000101, 000234)
Lookup: game_data.get_character_by_id(character_id)
Scene ID
Used by SCENE mods. References special illustrations or story packs. Format: Variable digits (e.g.,001, 042, 123)
Lookup: Currently returns empty Scene object
NPC ID
Used by NPC mods. References NPCs innpcs.csv, which may link to a character.
Format: Variable digits (e.g., 001, 042, 123)
Lookup: game_data.get_npc_by_id(npc_id) (may also resolve to a character)
Dating ID
Used by DATING mods. Maps to a character ID throughdatings.csv.
Format: Variable digits (e.g., 001, 042, 123)
Lookup: game_data.get_character_by_dating_id(dating_id)
Unknown mod types
If a.modfile doesn’t match any of the recognized patterns, the mod type is set to None and a warning is logged in models.py:72: