I found a huge bug. you might want to fix this immediately. I cannot go to any vendor and buy anything so the problem is worse and I first thought

154shadow

Member
Jul 21, 2022
13
1
30
Version: 0.9.058-BACKER-ELECTRON#3462

Message:
PlaceholderArmor requires it's canMergeWith call to be overridden if it has dynamic properties.

Stack:
TiTSException: PlaceholderArmor requires it's canMergeWith call to be overridden if it has dynamic properties.
at r (file:///C:/Users/Simon%20Jacobsen/Saved%20Games/Simon's%20private%20game's/TiTS-backer-0.9.058-win/resources/app/main.90a83b93.js:1:9704141)
at o.value (file:///C:/Users/Simon%20Jacobsen/Saved%20Games/Simon's%20private%20game's/TiTS-backer-0.9.058-win/resources/app/main.90a83b93.js:1:5771118)
at file:///C:/Users/Simon%20Jacobsen/Saved%20Games/Simon's%20private%20game's/TiTS-backer-0.9.058-win/resources/app/main.90a83b93.js:1:11821285
at Array.filter ()
at file:///C:/Users/Simon%20Jacobsen/Saved%20Games/Simon's%20private%20game's/TiTS-backer-0.9.058-win/resources/app/main.90a83b93.js:1:11821193
at Array.forEach ()
at o.value (file:///C:/Users/Simon%20Jacobsen/Saved%20Games/Simon's%20private%20game's/TiTS-backer-0.9.058-win/resources/app/main.90a83b93.js:1:11821043)
at o.value (file:///C:/Users/Simon%20Jacobsen/Saved%20Games/Simon's%20private%20game's/TiTS-backer-0.9.058-win/resources/app/main.90a83b93.js:1:11825734)
at o.value (file:///C:/Users/Simon%20Jacobsen/Saved%20Games/Simon's%20private%20game's/TiTS-backer-0.9.058-win/resources/app/main.90a83b93.js:1:11826923)
at Za (file:///C:/Users/Simon%20Jacobsen/Saved%20Games/Simon's%20private%20game's/TiTS-backer-0.9.058-win/resources/app/vendors.e9590ab4.js:1:549834)

```
 

Gedan

BUTTS BUTTS BUTTS
Staff member
Aug 26, 2015
8,008,896
8,008,326
The canMergeWith error hints that an item has had its classInstance changed in the save data. Usually when this crops up, it's because somebody has been editing their save.

Most of the time we don't save the full object for items, because they are all standardized. We have a handful of items that can be more complicated, and when using these items we flip a setting on them that makes their full stats save because these values can be changed by the game - this is the dynamic properties bit. With how we've built out the UI for inventory management, we try to compress items down into the minimal number of stacks to make seeing at a glance what you actually have easier. canMergeWith is a special function that we have to write for each item we know will have dynamic properties, so that we can accurately determine if two items with the same class but dynamic properties are actually the same or not, and we don't have a generic method to handle this because items can be very complex, and we want the implementations of these checks to be as direct to the point as possible - otherwise we can merge items in a way that loses data.

I think a lot of people open up the save file, find an item that has its full stat block (because they want to mess around), flip its classInstance to something else, and then blow up the game because the classInstance they are using doesn't have a canMergeWith implementation, because that item will, in the normal course of play, never need it. The pistol given to TechSpecs during creation is usually the weapon that gets this treatment, and it's easy to tell because it has a unique name that can only come from character creation.