About this mod
Know who or what you're looting.
- Requirements
- Permissions and credits
-
Translations
- Portuguese
- French
- Changelogs
- Donations

Looting QoL modifies the title in the looting UI, depending on who or what you're looting.
- Containers: The name of the container is shown instead of "CONTENTS", above the items.
- Items: The title is absent. Because, as it turns out, the "CONTENTS" of an item are indeed the item.
- Defeated enemies: Their affiliation and name are displayed--and they are marked deceased, if dead.
- Scanned defeated enemies: Their actual name is displayed--and they are marked deceased, if dead.
- If for some reason something is unnamed, "LOOT" will be displayed as a title.
- If you are a mod author, you can use redscript to give containers or NPCs custom names, dynamically. See below.
Looting QoL pairs well with ...
- Loot Icons Extension - More diverse and customizable loot icons that can reorder themselves to loot in the loot window.
- Numerals Get Commas - Also a QoL mod. If you'd like numbers in the loot window and elsewhere to be comma-delineated.
- Flavorful Descriptions - Also a QoL mod. If you'd like vanilla lore text on more of your loot.
Changelog
- v1.0: Initial release
- v1.1: Added custom naming functionality for mod authors (see below)
- v1.2: Added Codeware as a mod dependency
- v1.3: Minor stability improvements
- v1.4: Improved death detection logic when marking enemies deceased
- v1.5: Minor stability and efficiency improvements
- v1.6: Added a check for duplicated faction name vs. display/archetype name
Mod Conflicts
- This mod may conflict with anything that modifies the looting UI.
Requirements
- ArchiveXL
- Redscript
- Codeware
Mod Dev Info
// Conditional Import:
@if(ModuleExists("LootingQoL"))
import LootingQoL.*
// To change an NPC faction name (which appears before the display name, followed by a space):
@if(!ModuleExists("LootingQoL"))
public static func SetCustomFactionName(gameObject: ref<GameObject>, s: String) { return; }
@if(ModuleExists("LootingQoL"))
public static func SetCustomFactionName(gameObject: ref<GameObject>, s: String) { gameObject.m_customFactionName = s; }
// To change an NPC or container display name:
@if(!ModuleExists("LootingQoL"))
public static func SetCustomDisplayName(gameObject: ref<GameObject>, s: String) { return; }
@if(ModuleExists("LootingQoL"))
public static func SetCustomDisplayName(gameObject: ref<GameObject>, s: String) { gameObject.m_customDisplayName = s; }
// To make an NPC faction name override the name given after scanning:
@if(!ModuleExists("LootingQoL"))
public static func SetCustomFactionNameOverridesScanner(gameObject: ref<GameObject>, b: Bool) { return; }
@if(ModuleExists("LootingQoL"))
public static func SetCustomFactionNameOverridesScanner(gameObject: ref<GameObject>, b: Bool) { gameObject.m_customFactionNameOverridesScanner = b; }
// To make an NPC display name override the name given after scanning:
@if(!ModuleExists("LootingQoL"))
public static func SetCustomDisplayNameOverridesScanner(gameObject: ref<GameObject>, b: Bool) { return; }
@if(ModuleExists("LootingQoL"))
public static func SetCustomDisplayNameOverridesScanner(gameObject: ref<GameObject>, b: Bool) { gameObject.m_customDisplayNameOverridesScanner = b; }
// To make an NPC faction name appear only after they were scanned:
@if(!ModuleExists("LootingQoL"))
public static func SetCustomFactionNameOnlyIfScanned(gameObject: ref<GameObject>, b: Bool) { return; }
@if(ModuleExists("LootingQoL"))
public static func SetCustomFactionNameOnlyIfScanned(gameObject: ref<GameObject>, b: Bool) { gameObject.m_customFactionNameOnlyIfScanned = b; }
// To make an NPC display name appear only after they were scanned:
@if(!ModuleExists("LootingQoL"))
public static func SetCustomDisplayNameOnlyIfScanned(gameObject: ref<GameObject>, b: Bool) { return; }
@if(ModuleExists("LootingQoL"))
public static func SetCustomDisplayNameOnlyIfScanned(gameObject: ref<GameObject>, b: Bool) { gameObject.m_customDisplayNameOnlyIfScanned = b; }
// Lastly, to simply check whether or not Looting QoL is installed, add this boolean to your ScriptableSystem:
@if(!ModuleExists("LootingQoL"))
public static const let bLootingQoL: Bool = false;
@if(ModuleExists("LootingQoL"))
public static const let bLootingQoL: Bool = true;
My Cyberpunk Mods
- Android_Malfunction
- Armed Apartments
- Atone - Reset Your Street Cred
- Cop Killer
- Endgame Rewards Expanded
- Gamepad Button Hold Indicator Fix
- Gen Teleport Command
- Gorilla Grapple
- In Cold Blood - NPC Execution Fix
- Judy Flirts on Dates
- Loot Icons Extension
- Looting QoL
- Mute Bolt Perk Weapon Charge Sfx
- Mute Deadeye Perk Headshot Sfx
- Mute Focus Perk Chime Sfx
- Mute Overclock Perk Activation Sfx
- Pariah
- Passenger Targeting Fix
- Plan C
- Retrothrusters QoL
- Slaught-O-Matic Platinum
- Slaught-O-Matic QoL
- Streetwalker Minidress - Archive XL
- Throttled Activity Log