Fidcal on 13/11/2005 at 10:49
I've posted recently about steal objectives not checking off properly. I thought it was when not in Dromed but that was simply because when testing in Dromed I entered next to the object and took it straight away. Then it does work. These are the results I get. First, my objective 13 (yes I get the same for my objective 14 if you're feeling superstitious)...
quest_create_mis goal_state_13, 0 ; not yet complete
quest_create_mis goal_visible_13, 1 ; visible in objectives list
quest_create_mis goal_type_13, 1 ; steal
quest_create_mis goal_target_13, 1617 ; item number
If first loot stolen then the objectives checks off correctly.
If other loot stolen first and then object 1617 then it does not check the objective. It doesn't matter if the previous loot completes the separate objective of minimum loot or not.
Item 1617 is a quest item, MaskPrecursor2 (-5575) so I retested using just an ordinary bit of loot: a small statue. I got exactly the same result. If I steal it first then it is OK. Steal any other loot first then the statue objective can never be completed.
Then I tried an ordinary non-loot item: a papyrus. This works fine, whether first taken or not! Then I turned it into loot and now it fails again! Only when I REMOVED the property: Combine type: Loot, did it work again. With just Dark Gamesys: Loot n n n it works OK but the loot goes separately in the inventory.
Incidentally, how do I get loot sounds? I added S > Scripts: LootSounds and script to the inventory world action but it doesn't seem to work. Looking at the statue loot I see it has move only under world action so I can't see how that works.
So, Plan B is resort to just using a qvartrap to check the objective but it is ridiculous that this most standard of objectives doesn't seem to be of use in my mission. There has to be a reason as it must work in all other missions.
Yandros on 13/11/2005 at 14:16
This is a classic objective problem. You can't use a loot item with a "steal object x" objective because when it combines with the other loot you've already taken, I think it gets the object number of the first loot item you picked up, so it will never trigger the objective. I'd suggest you make it a non-loot item (I mean, it seems like loot, but doesn't combine with the others or count towards loot total) and adjust the loot objectives if necessary to account for it not being loot.
Fidcal on 13/11/2005 at 17:40
OK thanks. Just relieved it's a known problem and not just me that's going crazy!
Vigil on 13/11/2005 at 17:42
However, the OMs had special 'quest' loot items that you had to pick up for an objective but that still counted as loot and combined with the regular loot in the inventory. So you can still do what you intended originally, without needing to rip out the Loot property from the object and having it combine separately (though in some cases you'd still want to).
Because of the object-type problems that Yandros outlined, LGS had to implement a kind of obscure system for this. There is a separate objective type for it: <code>goal_special_<var>n</var> <var>SpecialNum</var></code>, where <var>n</var> is the objective number and <var>SpecialNum</var> corresponds to the value of the Special flag that you set in the Dark Gamesys->Loot properties on the loot item you want to use for the objective.
Here's an example of how to set it up:
* Add a new objective: <code>quest_create_mis goal_special_1 1</code>;
* Edit the loot item you want for this objective and add/edit the <code>Dark Gamesys->Loot</code> property;
* Set "Special" to "Special 1" in that property.
Yandros on 13/11/2005 at 20:52
Good point Vigil, I forgot about the special goal types.
Fidcal on 14/11/2005 at 22:07
Wish I'd logged on earlier now as in the end I kept them as loot and added StdButton script to qvartraps with the objectives declared without type and this is working OK. I'm certainly saving your info though for my mission 2. Thanks Vigil.
trefoilknot on 16/8/2017 at 21:41
Quote Posted by Yandros
I'd suggest you make it a non-loot item (I mean, it seems like loot, but doesn't combine with the others or count towards loot total) and adjust the loot objectives if necessary to account for it not being loot.
How does one do this? In all my attempts, if I make the item not treated as loot (and not combined with loot in the inventory), then NONE of my loot combines in my inventory. (or even, none of the loot can be picked up at all.) It's like turning off the loot properties for one item deprecates all the other loot in the game. How do I avoid this? (In case it matters, the serpentile torc is the item I wish to make a non-loot item).
john9818a on 17/8/2017 at 00:19
Select a non loot item such as a wood goblet and change the model to that of the serpentile torc. Change the Inventory type from Junk to Item, and give the object it's own object name in the strings.str file. In your objectives use the object number of the object you just made as the 'do not steal' object.
trefoilknot on 17/8/2017 at 02:05
Excellent, that works! Cheers!
For future reference, is there no easy way to remove the loot properties from an object? I suppose it's almost certainly easier to change the model of some non-loot object (ex ante). That is, if you haven't already coded up all the objectives using another object number :p
john9818a on 17/8/2017 at 03:14
AFAIK there's no way to remove the loot value from an object. It wouldn't be the same as adding a parameter that is already on the Archetype and then unchecking the box on that parameter.