nicked on 5/11/2016 at 19:17
I've got a conversation set up - it's pretty basic:
* The Actor is a Genie.
* The conversation is just to remove a Metaproperty from an archetype (to thereby remove it from all instances of the object).
It works fine in Dromed. It also works fine in Thief2.exe but only before a load. If you activate the conversation, ensure it has worked (metaproperty removed), then quick save and quick load, the metaproperty will have been reapplied as if the conversation never happened.
I have tried it with SaveConversation ticked and unticked. I've also tried adding a line to the conversation to remove the metaproperty from a concrete instance of the object, in case it was a problem to do with removing it from the archetype, but the same result.
Not sure what else to try, short of completely redoing the conversation from scratch and brute-forcing it by teleporting/destroying objects rather than removing metaproperties...
LarryG on 5/11/2016 at 19:47
I don't think you can save a change in the gamsys (i.e. the archetypes) in thief. I think that when you load a save you load a fresh copy of the gamsys too. You might do better to find another way to propagate the metaprop removal from the concretes and leave the archetype alone.
nicked on 5/11/2016 at 20:10
Damn, figured that might be the case...
Edit: Although, trying to Remove a Metaproperty from a concrete object doesn't appear to be functioning at all.
nicked on 5/11/2016 at 21:10
Yep, just replaced the whole conversation with a bunch of deletetraps. Problem solved, though I'd be interested to know if there was a solution with the initial setup.
R Soul on 5/11/2016 at 21:28
LarryG's suggestion would have been the best solution. If it didn't work when you tried it, you either made a mistake or there's something about your setup that prevents it. The most common mistake is relying on object IDs in Argument 3, when concrete names are better because they don't change.
If you post what you did, it should be possible for someone to work out why it didn't work. I'd also be interested to know what you're doing now so I can have a go at you for not doing it in the most efficient way in case there's a better way that'll be easier to deal with if you want to make changes later on.
LarryG on 5/11/2016 at 21:33
If the conversation thing doesn't work, you can always use NVMetaTrap to add/remove a metaprop from a concrete. Maybe propagate a stim to hit them all if you don't want to use a relay trap of some sort with cd links to trigger the NVMetaTraps.
nicked on 5/11/2016 at 22:29
Oh I see what I did - I set it to remove the Metaproperty from the concrete object, but I didn't remove the metaproperty from the archetype, so it still defaulted to having the metaproperty.
nicked on 5/11/2016 at 22:32
For my initial conversation, I removed the metaproperty entirely from the objects in question, created an invisible proxy object, added the metaprop to that, and then had the trigger delete the proxy. Not super elegant, but it works.
For a similar conversation elsewhere that had the same problem, it was trying to remove FrobInert, so I've now swapped it out for a TrapFrobInert setup (tnhscript). That one is probably more elegant than I had it before.