Modding Help Making Merchants sell Custom Weapons?

Discussion in 'Starbound Modding' started by Darkspinesupersonic8, Aug 12, 2016.

  1. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    So.. I've been wondering about how to get merchant NPCs you can run into or find in towns to sell weapons.

    I found the npc file for merchantpools, but im not exactly sure if its the only one or if it's even the CORRECT one, and even then I'm not sure if it'd also effect NPCs in towns.

    Is adding items to merchantpools all you need to do to make merchants sell custom weapons?
     
  2. Marinebeast

    Marinebeast Existential Complex

    If you're not sure if that's the correct file, nothing's stopping you from trying and finding out! The worst you could do is break something, and that's always fixed by undoing what you did.

    Once you figure out what file you're supposed to be working with, I'd personally do make my edits by means of a .patch-- that way, you're not editing core assets, and it's a lot easier to spread around if you intend to make it into / part of a mod. Direct it to the proper file and have it add the weapon values to the list of vanilla weapon values.
     
    Darkspinesupersonic8 likes this.
  3. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    First of all, thank you for the friendly and informative reply! ^.^

    Secondly, oh yes. I am well acquainted with .patch files.. and of course, you have a point. I was just worried as, it's a big hit or miss thing with merchants. You either find them or you don't, so it makes it really hard to test. Buut.. as you say, I can always continue to see if I can find out, right?

    If you have anything more to add I'd love to hear it <;3
     
  4. Inf_Wolf14

    Inf_Wolf14 Parsec Taste Tester

    Yup. merchantpools.config.
    Create a patch similar to:
    Code:
    [
      {
        "op" : "add",
        "path" : "/<POOLNAME>",
        "value" : [
          [0, [
           { "item" : { "name" : "<ITEMNAME>" }, "rarity" : 0.1 }
          ] ]
        ]
      }
    }
    
    Obviously replace keywords where necessary and then add your new pool to a merchant.
     
  5. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    Thank you for this!
     
    Inf_Wolf14 likes this.
  6. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    If anyone's listening in, is this a good .patch to add the item pools to the merchants? I keep testing it and so far ive gotten nothing (but I just upped teh rarity of the items in question, so who knows)

    Code:
    [
      { "op" : "add", "path" : "/categories/default", "value" : [
      "humanracialweapons",
      ] },
      { "op" : "add", "path" : "/categories/default", "value" : [
      "floranracialweapons",
      ] },
      { "op" : "add", "path" : "/categories/default", "value" : [
      "avianracialweapons",
      ] },
      { "op" : "add", "path" : "/categories/default", "value" : [
      "glitchracialweapons",
      ] },
      { "op" : "add", "path" : "/categories/default", "value" : [
      "apexracialweapons",
      ] },
      { "op" : "add", "path" : "/categories/default", "value" : [
      "hylotlracialweapons",
      ] }
    ]
     
  7. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    I know this is a triple post, but.. bump.
     
  8. Inf_Wolf14

    Inf_Wolf14 Parsec Taste Tester

    Code:
    [
      {
        "op" : "add",
        "path" : "/scriptConfig/merchant/categories/default/-",
        "value" : "apexracialweapons"
      }
    ]
    
    Taken from a patch of mine, structure-wise, but you get the idea.

    Sorry if its invalid and throws an error. I don't have any time to test it.
     
  9. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    I actually figured that one out on my own after having my 'aha' moment. Buut.. it's the actual treasurepool patch I'm ahving problem,s with now.

    Like, this. I'm not sure what I'm doing wrong with it, my merchant patches are correct but this apparently isn't.. Any ideas?
    Code:
    [
      {
        "op" : "add",
        "path" : "/humanracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "humantier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "humantier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "humantier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "humantier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "humantier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "humantier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "humantier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "humantier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "humantier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "humantier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "humantier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "humantier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "humantier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "humantier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "humantier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "humantier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/apexracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "apextier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "apextier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "apextier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "apextier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "apextier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "apextier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "apextier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "apextier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "apextier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "apextier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "apextier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "apextier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "apextier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "apextier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "apextier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "apextier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/avianracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "aviantier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "aviantier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "aviantier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "aviantier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "aviantier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "aviantier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "aviantier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "aviantier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "aviantier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "aviantier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "aviantier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "aviantier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "aviantier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "aviantier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "aviantier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "aviantier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/glitchracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "glitchtier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "glitchtier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "glitchtier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "glitchtier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "glitchtier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "glitchtier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "glitchtier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "glitchtier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "glitchtier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "glitchtier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "glitchtier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "glitchtier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "glitchtier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "glitchtier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "glitchtier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "glitchtier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/hylotlracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "hylotltier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "hylotltier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "hylotltier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "hylotltier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "hylotltier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "hylotltier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "hylotltier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "hylotltier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "hylotltier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "hylotltier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "hylotltier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "hylotltier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "hylotltier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "hylotltier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "hylotltier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "hylotltier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/floranracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "florantier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "florantier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "florantier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "florantier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "florantier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "florantier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "florantier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "florantier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "florantier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "florantier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "florantier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "florantier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "florantier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "florantier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "florantier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "florantier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      }
    ]
     
  10. Inf_Wolf14

    Inf_Wolf14 Parsec Taste Tester

    All I can suggest for now is to check the patch through an online validator like JsonLint or another equivalent. That'll solve mostly any errors with the format if any.
    Besides that, checking your log will always tell you what else is throwing an error.

    (If you don't get it figured out tonight, I'll help tomorrow. I'm pretty swamped tonight.)
     
  11. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    I still haven't figured it out as of yet, sadly... sigh.
     
  12. LordBaconator

    LordBaconator Scruffy Nerf-Herder

    I'm working on changing the inventories of the colony tenants.
    I'm adding items directly into the various pools; my add lines look like this:

    Code:
    {    "op": "add", "path": "/geodemerchant/0/1/-", "value": {"item" : {"name" : "biorock"                    }, "rarity" : 0.3 }    },
    The first /0 will be the array for the planet tier. When you look through the pools there are different arrays for different tiers that look like [1.9, [contents]], [2.9, [contents]] that determine loot pools based on planetary tier. Tier 0 is used for colonist merchants in my case. The /1/ cause it to insert the items into the actual array of stuff [0,X], [2.9, X] where basically the first number for planet tier acts an access key. the /- causes the add command to insert the items directly at the bottom of the list.

    Most of that information should be relevant to your work. So far I've got all of my stuff working. The only problem I'm having is I don't know how to prevent pools from generating duplicate items from the total allotment of randomly inserted items (values that have a "rarity"). If anyone has any tips on that I could use them.

    Also it's worth noting that each merchant has a set cap number for total number of items that it generates in its inventory. Items that doesn't have listed rarity in a pool are guaranteed items and will always fill up part of the cap. The cap can be found inside the merchantX.npctype files under ./npcs/.

    Currently I am modifying the cap quantity for the NPCS using this:
    Code:
    [
    {    "op": "replace", "path": "/scriptConfig/merchant/numItems", "value": 5}
    ]
    
    However some of the NPCS I need to change don't have the number set by default so I need to add the value instead of replacing it.

    Edit: Use http://json-schema-validator.herokuapp.com/jsonpatch.jsp to validate your patches. It's incredibly useful.
     
    Darkspinesupersonic8 likes this.
  13. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    That very validator had a fit when I tried to compare my merchantpools.patch to the real merchantpools, so I couldn't use it. IT had a fit about the original merchant pools, making me unable to actually test my JSON. But thank you anyways.

    As for what you said, it is useful, but I'm not sure how to apply it to MY Situation, where the game doesn't even seem to register the merchantpools.patch at all. As far as I'm aware at least my merchant.npctype and what not patches work, but the .patches for merchantpools have a bug in them I might have gotten wrong.

    Unless you mean that the planet tier fact is why mine are failing? I've been testing it by going to any planet and slapping the wandering merchant or merchant type NPCs in swarms in front of me testing if any of them sell even one of the weapons -- but none do out of the ten i usually spawn. ... Hm.
     
  14. LordBaconator

    LordBaconator Scruffy Nerf-Herder

    Recommend you use a regular colonist tenant merchant to test with. If you configure a room properly you can just delete and remove the deed to respawn a mechant with a repopulated inventory. The NPCs try to save as much data about their inventories as they can so it doesn't always get patched over on a pre-existing inventory (noticed this when I was trying to change the NPC sell multiplier).

    In regards to adding a new named pool to merchantpools.config I would create the new pool with format:

    Code:
    "poolName" :
    [0 (<- the tier (0 is lowest level/default), [
    { "item1" : { "name" : "itemName" } },
    {"item2" : { "name" : "itemName" } }
    ]],
    [1.9 (lowest planet tier), [{this item set is for all planets of this tier, overwrites default 0 tier, every tier past this overwrites this tier afaik}
    ]]
    ]
    I don't think the patches like adding entire arrays of contents at once though so I would create blank named pool first then populate it with the blank ararys [0, [items] [1.9, [items] etc. and then populate those arrays using the

    Code:
    {    "op": "add", "path": "/poolname/0/1/-", "value": {"item" : {"name" : "itemname"                    }, "rarity" : 0.3 }    },
    patch where the like I said before the 0 will access the [0], change that to a 1 to access [1.9] etc. and the /1/ will access the set of items contained within the pair of [tierNum, [items]].

    Fair warning I'm still super new at this, this is literally my first day doing this but so far this is all of the information I've worked through trying to do a similar process.

    If you come back with a copy of some stuff to debug I'll probably look at it as soon as I catch it while I'm awake.
     
    Darkspinesupersonic8 likes this.
  15. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    Yeah.. honestly that entire thing is confusing.. so I can't really follow.. I don't know why there isn't just one that makes certain objects appear for all tiers so this doesn't have to be a problem.. if that even is the problem.

    but I already posted the very code i need debugged once already, here it is again.

    Code:
    [
      {
        "op" : "add",
        "path" : "/humanracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "humantier1broadsword" }, "rarity" : 1.48 },
          { "item" : { "name" : "humantier1hammer" }, "rarity" : 1.48 },
          { "item" : { "name" : "humantier1spear" }, "rarity" : 1.48 },
          { "item" : { "name" : "humantier2broadsword" }, "rarity" : 1.48 },
          { "item" : { "name" : "humantier2hammer" }, "rarity" : 1.48 },
          { "item" : { "name" : "humantier2spear" }, "rarity" : 1.48 },
          { "item" : { "name" : "humantier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "humantier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "humantier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "humantier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "humantier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "humantier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "humantier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "humantier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "humantier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "humantier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "humantier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "humantier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "humantier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "humantier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "humantier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "humantier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "humantier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "humantier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/apexracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "apextier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "apextier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "apextier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "apextier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "apextier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "apextier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "apextier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "apextier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "apextier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "apextier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "apextier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "apextier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "apextier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "apextier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "apextier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "apextier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "apextier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "apextier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/avianracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "aviantier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "aviantier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "aviantier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "aviantier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "aviantier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "aviantier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "aviantier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "aviantier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "aviantier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "aviantier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "aviantier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "aviantier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "aviantier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "aviantier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "aviantier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "aviantier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "aviantier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "aviantier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/glitchracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "glitchtier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "glitchtier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "glitchtier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "glitchtier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "glitchtier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "glitchtier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "glitchtier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "glitchtier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "glitchtier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "glitchtier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "glitchtier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "glitchtier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "glitchtier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "glitchtier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "glitchtier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "glitchtier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "glitchtier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "glitchtier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/hylotlracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "hylotltier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "hylotltier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "hylotltier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "hylotltier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "hylotltier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "hylotltier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "hylotltier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "hylotltier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "hylotltier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "hylotltier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "hylotltier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "hylotltier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "hylotltier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "hylotltier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "hylotltier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "hylotltier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "hylotltier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "hylotltier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      },
      {
        "op" : "add",
        "path" : "/floranracialweapons",
        "value" : [
        [0, [
          { "item" : { "name" : "florantier1broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier1hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier1spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier2broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier2hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier2spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier3broadsword" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier3hammer" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier3spear" }, "rarity" : 0.48 },
          { "item" : { "name" : "florantier4broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "florantier4hammer" }, "rarity" : 0.37 },
          { "item" : { "name" : "florantier4spear" }, "rarity" : 0.37 },
          { "item" : { "name" : "florantier5broadsword" }, "rarity" : 0.37 },
          { "item" : { "name" : "florantier5hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier5spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier6broadsword" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier6hammer" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier6spear" }, "rarity" : 0.37 },
         { "item" : { "name" : "florantier7broadsword" }, "rarity" : 0.25 },
         { "item" : { "name" : "florantier7hammer" }, "rarity" : 0.25 },
         { "item" : { "name" : "florantier7spear" }, "rarity" : 0.25 },
         { "item" : { "name" : "florantier8broadsword" }, "rarity" : 0.15 },
         { "item" : { "name" : "florantier8hammer" }, "rarity" : 0.15 },
         { "item" : { "name" : "florantier8spear" }, "rarity" : 0.15 },
         { "item" : { "name" : "florantier9broadsword" }, "rarity" : 0.12 },
         { "item" : { "name" : "florantier9hammer" }, "rarity" : 0.12 },
         { "item" : { "name" : "florantier9spear" }, "rarity" : 0.12 },
         { "item" : { "name" : "florantier10broadsword" }, "rarity" : 0.08 },
         { "item" : { "name" : "florantier10hammer" }, "rarity" : 0.08 },
         { "item" : { "name" : "florantier10spear" }, "rarity" : 0.08 }
        ]]
        ]
      }
    ]
     
  16. LordBaconator

    LordBaconator Scruffy Nerf-Herder

    Sorry, bit tired. Now I see what you're doing with the pools.

    To get the NPCs to generate stuff using the custom pools you created try patching merchant.npctype under /npcs. There is a section under "merchant" containing "categories" where it adds in all the various pools for each race. I believe that file defines all of the generic npc merchants in the game. Generic tenant merchants will extend all of their basic information from there as well.

    Code:
    [
    {    "op": "add", "path": "/scriptConfig/merchant/categories/<categoryname>/-", "value": "<poolname>"}
    ]
    
    Got that snippet to insert a value into the end of the "generic" category when I tried it. <categoryname> is the name of the racial category inside the file you want to add to and <poolname> is your custom pool name.
     
    Darkspinesupersonic8 likes this.
  17. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    I already have, actually!

    it's nice and clean (Thanks to Inf_Wolf) and works as much as I hope it would.

    It looks like this;

    merchant.npctype.patch

    Code:
    [
      {
        "op" : "add",
        "path" : "/scriptConfig/merchant/categories/default/-",
        "value" : "apexracialweapons"
      },
        {
        "op" : "add",
        "path" : "/scriptConfig/merchant/categories/default/-",
        "value" : "humanracialweapons"
      },
        {
        "op" : "add",
        "path" : "/scriptConfig/merchant/categories/default/-",
        "value" : "avianracialweapons"
      },
        {
        "op" : "add",
        "path" : "/scriptConfig/merchant/categories/default/-",
        "value" : "floranracialweapons"
      },
        {
        "op" : "add",
        "path" : "/scriptConfig/merchant/categories/default/-",
        "value" : "glitchracialweapons"
      },
        {
        "op" : "add",
        "path" : "/scriptConfig/merchant/categories/default/-",
        "value" : "hylotlracialweapons"
      }
    ]
     
    Last edited: Aug 12, 2016
  18. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    Well. I've been trying different things all day.. and it still has not worked.

    I've ran it through JSON verifiers, it checks out. But the NPCs refuse to sell what I've been trying to make them sell. I'm now trying to get a patch (thanks to a suggestion from a mod) to replace the merchant files so they'll only actually read MY item pools and see if it works.

    Buut.. problem is.. even if it does, I don't even know what to do from there./ They work, but NPCs discriminate my items like they're the plague unless they can't sell anything else. and if it doesn't, I'm right back where I started..
    Sigh..

    EDIT: Yep. I just used replace operations with .patches, and they did nothing. Absolutely nothing. NPCs are still selling their generic stuff.

    Seriously there has to be SOMEONE out there who has worked with this sort of thing, there can't just be people looking this topic through, seeing my problem and just going "i don't know how to help" and leaving.. not all of them. I know I'm either doing something wrong or something is very wrong with the situation, but I have no way of finding out.

    I'm pretty much close to giving up as it's starting to get very, very frustrating with how it seems to not be working.. for no reason at all, and with no clear indicator of me doing something wrong (I wouldn't be surprised if I am doing something wrong, though) it just makes it worse..
     
    Last edited: Aug 13, 2016
  19. LordBaconator

    LordBaconator Scruffy Nerf-Herder

    Assuming you tested against completely brand new NPCs after you patched it I wouldn't know why myself. Have you tried just adding the items into the default pools for the items ex. randomweapons instead of using a new one? I had no trouble at all adding things to the default pools to get tenants to do what I wanted them to.
     
    Darkspinesupersonic8 likes this.
  20. Darkspinesupersonic8

    Darkspinesupersonic8 Pangalactic Porcupine

    I - ...

    You.. ... you know

    ... that. ... ... oh my god >:rofl:

    For one, THANK YOU for returning! It means a lot! ^.^

    Secondly, yes, I was. Freshly spawned~ Still no dice.

    But.. no.. I really.. genuinely.. haven't tried that. ... I'm.. just gonna go do that right now and see what happens... I can't BELIEVE I never tried it before.... Okay.. here's to hoping it works. Thank you!!
     

Share This Page