• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Fixed Remove quest items

Grey Roger

Sea Dog
Staff member
Administrator
Storm Modder
Note to future quest writers: if you give the player an item for a quest, please remove it again unless there's a good reason to keep it. Take a look at this savegame, in which I've dumped everything dumpable into the chest in a tavern room, and see how much quest stuff is cluttering up the inventory. Some of it, e.g. the rifle, is useful; and some of it, e.g. keys, is not. It wouldn't be a problem except that quest items can't be sold, dropped into chests or tossed, you're stuck with them permanently.
 

Attachments

  • -=Player=- Concepcion.zip
    1.1 MB · Views: 97
Already done - see Updates. Most redundant quest items, e.g. the letter to Reynard Grueneveldt, were already removed anyway; I just arranged for a few more, e.g. the letter to Gregorio Montavez, to disappear as well.
 
I've only tidied up "Bartolomeu o Portugues". Other quests may still leave you with stuff that you don't need. "Hard Labours of an Assassin" gives you a whole load of stuff, formerly the property of Mateus Santos, and while the souvenir collection is interesting it would be nice if it were classed as plain Items rather than Quest Items, so you could keep it in your ship's chest rather than lugging it all around.
 
I'll set it as "Fix in Progress" then.

Maybe it would actually be possible to change the item types to something else in mid-game.
If you look at PROGRAM\Storyline\WoodesRogers\Reinit.c (I think), you'll see how item attributes can be changed.
 
"Hard Labours of an Assassin" gives you a whole load of stuff, formerly the property of Mateus Santos, and while the souvenir collection is interesting it would be nice if it were classed as plain Items rather than Quest Items, so you could keep it in your ship's chest rather than lugging it all around.
Here's some code I just tested with console:
Code:
  aref item;
   if (0)
   {
     GiveItem2Character(PChar, "Santos_Keys");
     GiveItem2Character(PChar, "Santos_Journal1");
     GiveItem2Character(PChar, "Santos_Journal2");
   }
   else
   {
     if (Items_FindItem("Santos_Keys", &item) >= 0) {
       item.groupID = OBJECT_ITEM_TYPE;
     }
     if (Items_FindItem("Santos_Journal1", &item) >= 0) {
       item.groupID = OBJECT_ITEM_TYPE;
     }
     if (Items_FindItem("Santos_Journal2", &item) >= 0) {
       item.groupID = OBJECT_ITEM_TYPE;
     }
   }
With the switch on 1, you get the items. Set it to 0 and they'll change from Quest Item Type to normal item type.
So that could be placed at the end of the sidequest so you can store these items elsewhere.
I'm not sure if they can be sold after doing this; if they can, then item.price = 0; should be added too.

Only problem I can think of with this is that when doing a Reinit (F11), they will change back to Quest Item Type.
But so be it. :shrug
 
Can't "initItems.c" be altered to make them general items rather than quest items? The attributes such as "skiprand" and "skipsell" could ensure that they won't be found for sale or in random treasure chests, or set the rarity to be 0.0 so they can't be found randomly at all.
 
It could be, yes. But preventing regular items from appearing tends to be harder than it should as the game likes to occasionally put them somewhere anyway.
With my above suggestion, they're Quest Items while they're needed and change to regular once the sidequest is completed.
 
You only get those items when the side quest is completed! They're part of your reward for finishing it.

Santos' ring is a regular item which can be sold, tossed or deposited in a chest. Why can't the rest be similar?
 
AH! Forgot about that.
Santos' Ring is initialized here:
Code:
  n = InitItem(n,"Santos_Ring", "",  8,12, 0.10,  5,  2400,  0,  0,  0, 1,  +2, +1,  0,  0,  0,  0,  0,  0,  0,  0,  0, 1, 1, 1); // Mateus Santos' Ring
But the other items are here:
Code:
  n = InitQuestItem(n,"Santos_Keys",   "Santos_Keys",       "",       8,   11,     0,0,   "","",   "","",     "","",""   );
  n = InitQuestItem(n,"Santos_Journal1","Santos_Journal1",     "",       4,    8,     0,0,   "","",   "","",     "","",""   );
  n = InitQuestItem(n,"Santos_Journal2","Santos_Journal2",     "",       4,    8,     0,0,   "","",   "","",     "","",""   );
 
My point is, why not treat them all the same? If that means moving the definitions of the keys and journals to the same place as the definition of the ring, fine - it's probably just a cut and paste, even I could probably do it. xD The main job is probably figuring out how much they're worth if you sell them...
 
Indeed. You'd be welcome to do that for sure. Should be relatively simple. :yes
 
You won't get them this evening because I'll hopefully be trying out the new version this evening. :D
 
You won't get them this evening because I'll hopefully be trying out the new version this evening. :D
I was hoping to get it before this evening so it will be IN the new version.
It is technically quite simple to do and should take only a few minutes, but if I spend my time making a new version, then I can't spend also those few minutes because I don't have them.
But you might. ;)
 
It would be nice to be able to put quest items into your ships chest after completing the relevant quests - just to keep your inventory tidy.
If anyone runs into any quest items they would like to get rid of, but can't, please report here.
This has to be fixed on a case-by-case basis so we need specific examples.
 
I wouldn't mind being able to store the rifle which you get at the end of "Bartolomeu". Beyond that, I'd like to go through all the side quests and see which quest items are left behind, then I'll return with a list...
 
Back
Top