def DupeWeapon(self, weapon: unrealsdk.UObject) -> unrealsdk.UObject: # We keep a map of duped weapons so that swapping doesn't reload them if weapon in self.WeaponMap: return self.WeaponMap[weapon] new_weapon = weapon.CreateClone() new_weapon.AmmoPool.PoolManager = weapon.AmmoPool.PoolManager new_weapon.AmmoPool.PoolIndexInManager = weapon.AmmoPool.PoolIndexInManager new_weapon.AmmoPool.PoolGUID = weapon.AmmoPool.PoolGUID new_weapon.AmmoPool.Data = weapon.AmmoPool.Data new_weapon.InvManager = weapon.InvManager self.WeaponMap[weapon] = new_weapon return new_weapon
def DupeWeapon(self, weapon: unrealsdk.UObject) -> unrealsdk.UObject: """ We save a map of existing duped weapons to try make sure you get the same one back For one this helps keep memory usage down, but more importantly it means when you switch back you'll have the same amount of ammo left in the mag - you can't get free offhand reloads just by switching to another gun + back """ if weapon in self.WeaponMap: return self.WeaponMap[weapon] newWeapon = weapon.CreateClone() newWeapon.AmmoPool.PoolManager = weapon.AmmoPool.PoolManager newWeapon.AmmoPool.PoolIndexInManager = weapon.AmmoPool.PoolIndexInManager newWeapon.AmmoPool.PoolGUID = weapon.AmmoPool.PoolGUID newWeapon.AmmoPool.Data = weapon.AmmoPool.Data newWeapon.InvManager = weapon.InvManager self.WeaponMap[weapon] = newWeapon return newWeapon