Cyberpunk 2077
warning Scheduled Downtime - On 3 August 2021 starting from 09:30 (GMT+1) until approximately 13:30 (GMT+1) our site and forums will be undergoing maintenance.

File information

Last updated

Original upload

Created by

DJ_Kovrik

Uploaded by

djkovrik

Virus scan

Safe to use

Tags for this mod

About this mod

Removes or reduces drop chances for chosen loot categories from in-game containers, NPCs and world placed objects, highly configurable.

Requirements
Permissions and credits
Changelogs
Donations
Info

  • Removes chosen loot categories from in-game containers, NPCs and world placed objects
  • Each loot category except weapons and clothing has its own setting which defines drop probability
  • Weapons and clothing have quality-based settings for drop probability
  • Additional option to enable or disable drop for weapons used by NPCs

Disclaimer

  • The mod does not remove items which have "Quest" tag but I can not guarantee that it is enough not to break the game so save often! Besides that it is not recommended to disable "Shards" category as it could break some Assault in Progress quests. 
  • Removed loot state persists in your savegames (i.e. if you save your game near the container which has some items removed then this save reload with disabled mod will not restore the loot) so, again, save often!
  • Also please keep in mind that perhaps default mod settings are too strict so check the settings file and tweak it as you like.

Loot Categories

  • Ammo, Clothing, Crafting materials, Cyberware, Edibles, Grenades, Healings (inhalers and injectors), Junk, Mods, Money, Schematics, Shards, Scripts (quickhacks), Skillbooks, Weapons.


How do the mod settings work

  • Generally speaking, all loot you will get depends on two rounds of probability checks. The first round is just normal drops with vanilla game chances and when it's finished and resulting loot list populated with items the mod runs its own round of checks. 
  • In this round each item compared to its drop chance declared in config section and then removed if probability check failed. In other words, the mod settings do not affect vanilla game items drop chances, it just decide remove or keep each dropped item. 
  • For example if some particular NPC drops legendary weapon with 25% chance and your config has 100 for legendary weapons, the drop chance will not change from 25% and just 100 means that weapon will not be removed if dropped.

How to install

  • Download the latest redscript release and unpack it into the game folder
  • Unpack the mod archive into the game folder
  • Please check that you do not have any previous version installed, delete r6\scripts\reducedLoot.reds file if you have it
  • (Optional) Open the config.reds file and configure values for loot categories

How to uninstall

  • Delete the Cyberpunk 2077\r6\scripts\ReducedLoot folder

Credits

  • jekky for the redscript compiler
  • barbor92r for the mod idea and testing
  • e256 for some particular quest related savegames and testing
  • CP77 modding discord

My mods


For redscript mod developers

// Added fields
@addField(PlayerPuppet)
public let m_preventDestroyingItemId_L: ItemID

// Added methods
@addMethod(gameLootContainerBase)
private func EvaluateLoot() -> Void

@addMethod(PlayerPuppet)
public func GetPreventedId_L() -> ItemID

@addMethod(PlayerPuppet)
public func PreventDestroying_L(id: ItemID) -> Void

@addMethod(ScriptedPuppet)
private func EvaluateLoot() -> Void 

// Replaced methods
@replaceMethod(gameLootContainerBase)
protected cb func OnEvaluateLootQuality(evt: ref<EvaluateLootQualityEvent>) -> Bool 

@replaceMethod(ScriptedPuppet)
protected cb func OnEvaluateLootQuality(evt: ref<EvaluateLootQualityEvent>) -> Bool

@replaceMethod(ScriptedPuppet)
public final static func ProcessLoot(self: wref<ScriptedPuppet>) -> Void

@replaceMethod(ScriptedPuppet)
public final static func DropHeldItems(self: wref<ScriptedPuppet>) -> Bool

@replaceMethod(ScriptedPuppet)
public final static func DropItemFromSlot(obj: wref<GameObject>, slot: TweakDBID) -> Void

@replaceMethod(ScriptedPuppet)
public final static func DropWeaponFromSlot(obj: wref<GameObject>, slot: TweakDBID) -> Void

@replaceMethod(ScriptedPuppet)
protected cb func OnItemAddedEvent(evt: ref<ItemAddedEvent>) -> Bool

@replaceMethod(VendingMachine)
protected func CreateDispenseRequest(shouldPay: Bool, item: ItemID) -> ref<DispenseRequest>

@replaceMethod(gameItemDropObject)
protected final func OnItemEntitySpawned(entID: EntityID) -> Void