Modding Help regarding blueprint unlocks...

Discussion in 'Starbound Modding' started by sayter, Jun 4, 2014.

  1. sayter

    sayter The Waste of Time

    Allright, I am going insane trying to figure out what is up here:

    So, in short, I am making items unlock after pickup of another item. Which should just...work. But it isn't.

    I'll attach samples. Easier this way.

    the first item in the chain

    Code:
    {
      "itemName" : "ff_diamondplating",
      "rarity" : "Common",
      "inventoryIcon" : "ff_diamondplating.png",
      "description" : "Diamond and Alloy. Ultra-Hard!",
      "shortdescription" : "Diamond Plating",
      "learnBlueprintsOnPickup" : [ "ff_diamondarmorchest", "ff_diamondarmorpants", "ff_diamondarmorhead" ]
    }
    
    so, I have the unlocking of blueprints in there.

    Code:
      "learnBlueprintsOnPickup" : [ "spikesword" ],
    and again in this case, along with dozens of others.



    Yet, for some reason, the Matter Assembler station I have shows all recipes even on a new character, no matter what I do.

    Do I, in some fashion, need to restructure how my files work or is this something else entirely? Anyone else faced the same issue with this? I'd like it fixed, even if it isn't critical.



    it should be noted that I have SOME things doing it properly. My stations seem to properly unlock each other in sequence. But pretty much everything else... not so much.



    and in case it's requested, here's the station in question
    Code:
    {
      "objectName" : "prototyper",
      "rarity" : "Common",
      "interactAction" : "OpenCraftingInterface",
      "interactData" : {
        "config" : "/interface/windowconfig/prototyper.config",
        "filter" : [ "prototyper" ]
      },
      "printable" : false,
      "description" : "Create weapons and equipment.",
      "shortdescription" : "Matter Assembler",
      "race" : "generic",
      "category" : "crafting",
      "price" : 450,
      "learnBlueprintsOnPickup" : [ "chemlab" ],
      "apexDescription" : "A Prototyper.",
      "avianDescription" : "A Prototyper.",
      "floranDescription" : "A Prototyper.",
      "glitchDescription" : "Identify. Prototyper.",
      "humanDescription" : "a Prototyper.",
      "hylotlDescription" : "a Prototyper.",
    
      "inventoryIcon" : "prototypericon.png",
      "orientations" : [
    
        {
          "dualImage" : "prototyper.png:<color>.<frame>",
          "imagePosition" : [-64, 0],
          "frames" : 4,
          "animationCycle" : 0.75,
    
          "spaceScan" : 0.1,
          "fgAnchors" : [ [0, -1] ],
          "collision" : "platform"
        }
      ]
    
    }
    

    and since it's relevant, my entire player.config

    Code:
    {
      "__merge" : [],
      "defaultBlueprints" : {
        "tier1" : [ 
        { "item" : "ffguide" },   
        { "item" : "extractionlab" },
        { "item" : "bambooplatform" },
        { "item" : "bamboobed" },
        { "item" : "bamboodoor" },
        { "item" : "bambootable" },
        { "item" : "bamboochair" },
        { "item" : "bamboochest" }
                  ]
      }
    }
    
    
     
    Last edited: Jun 4, 2014
  2. prodamn

    prodamn Spaceman Spiff

    just to make that clear, are you using the recipenames, though the filenames, or the itemnames ?

    if you're using the itemnames set in the file it won't do it

    i had some problems like this before, too. i had to change the itemnames and the filenames to fix it.
    They weren't unlocked before, the names were completely new ones but it didn't do it.
    i dunno why but the game didn't seem to recognize it - weird.
     
    sayter likes this.
  3. sayter

    sayter The Waste of Time

    Itemnames are being used, not recipe names. Nor am I using -recipe in this instance since that isn't the behavior I want.

    I'm not sure what you mean by the post though. Could you elaborate on what you mean?

    I'm assuming what you are saying , in short, is "try renaming all the ItemID and filenames to something new, and sorcery of code shall make it work"

    Which, sadly, might actually be the case. I'll test it with a few items when I get in tonight. At worst, it won't do a thing. At best, it will do exactly what I want. Though I shouldn't HAVE to do this, it might be necessary.
     
    Last edited: Jun 4, 2014
  4. prodamn

    prodamn Spaceman Spiff

    let's see.

    Item file a is named ItemA.item

    code of ItemA.item looks like this:

    Code:
    {
      "itemName" : "UnlockEet",
      "rarity" : "Legendary",
      "inventoryIcon" : "ItemA.png",
      "description" : "This is a test item you shall not use it.",
      "shortdescription" : "UnlockEet",
    
      "learnBlueprintsOnPickup" : [
      ]
    }
    Item file b is named ItemB.item

    code of ItemB.item looks like this:

    Code:
    {
      "itemName" : "Unlockme",
      "rarity" : "Legendary",
      "inventoryIcon" : "ItemB.png",
      "description" : "This is a test item you shall not use it.",
      "shortdescription" : "UnlockMe",
    
    }
    i want ItemA.item to unlock the recipe of ItemB.item.
    the recipe file of ItemB.item is named whokadingdongbangdong.recipe

    the code of whokadingdongbangdong.recipe looks like this:

    Code:
    {
      "input" : [
        { "item" : "Money", "count" : 1000 }
      ],
      "output" : {
        "item" : "UnlockMe,
        "count" : 1
      },
      "groups" : ["This is an testGroup and is completely irrelevant"]
    }

    i totally exaggerated right there, just to really point it out.

    if i want ItemA.item to unlock the recipe ItemB.item i will need to put whokadingdongbangdong
    in the code of ItemA.item even though ItemB.item is called Unlockme in the file.
    The game will recognize the item which you want to craft by the ItemName of the output you set.
    Which is in fact "UnlockMe" which IS ItemB.item.

    if you would put "ItemB" as output, the game will laugh at you and give you a perfectly generic item to craft.

    3 complete different names which do not in any way refer to each other.

    Code:
    {
      "itemName" : "UnlockEet",
      "rarity" : "Legendary",
      "inventoryIcon" : "ItemA.png",
      "description" : "This is a test item you shall not use it.",
      "shortdescription" : "UnlockEet",
    
      "learnBlueprintsOnPickup" : [
           "whokadingdongbangdong"
      ]
    }
    that's what i meant with

    it also won't do it if you throw the name of the itemfile in there.


    i don't know from where you got this "ItemID".. it's nowhere stated. the only ID which can be set i've seen before is for matitems or materials. But not items. it clearly says "ItemName". Confusing.

    if you're trying to just give the player the item, won't work. You need to unlock THE recipe which in the example above is named "whokadingdongbangdong" to actually HAVE a recipe to craft ItemB.item.

    the game won't unlock the recipe of ItemB.item when you're either using "ItemB" or "Unlockme" as unlock phrase in ItemA.item's code.
     
    Last edited: Jun 4, 2014
  5. sayter

    sayter The Waste of Time

    okay... so what you're saying is ...

    Code:
    {
    "itemName" : "ff_diamondplating",
    "rarity" : "Common",
    "inventoryIcon" : "ff_diamondplating.png",
    "description" : "Diamond and Alloy. Ultra-Hard!",
    "shortdescription" : "Diamond Plating",
    "learnBlueprintsOnPickup" : [ "ff_diamondarmorchest", "ff_diamondarmorpants", "ff_diamondarmorhead" ]
    }
    
    if ff_diamondarmorchest is the item name, instead I would use ff_recipename ? That sounds good on paper. Except that the recipe name is the same in this instance. So it should, by all rights, still function as normal. (ie: recipe name is ff_diamondarmorchest.recipe, and the item it creates is ff_diamondarmorchest )

    I'll give it a try , regardless. I've tried everything else, at this point. its not a huge deal to change recipe file names, since in the end it's irrelevant as to what they are named in terms of the way the game reads the files.


    and yes, i mean ItemName when i say ItemID. Mis-phrased :)

    In any case, if it is that simple it should be easy enough to fix the problem. Hope that this is the case.


    It is curious, however, that some of the things I've set to do this a long while ago work just fine.. and their recipe file names match the item file names. Silly starbound.
     
    Last edited: Jun 4, 2014
  6. sayter

    sayter The Waste of Time

    Gave your suggestion a try. No dice. Still seeing all my weapons and armor already unlocked, regardless of how I try to pull it off. Renamed all of my recipe files. No errors in the log. Still seeing them all. It's rather annoying. My stations seem to unlock as intended, but nothing else follows suit.

    Might be a game bug. Unsure.
     
  7. prodamn

    prodamn Spaceman Spiff

    hm, i'm clueless. hope you figure it out though :up:
     
  8. sayter

    sayter The Waste of Time

    I'll sacrifice virgins to the dark things beyond. That usually helps.
     
    prodamn likes this.
  9. sayter

    sayter The Waste of Time

    okay so. heres one of the offending bits. Looks perfectly fine. Recipe file name weapon_siliconspear.recipe

    Code:
    {
      "input" : [
        { "item" : "ff_silicon", "count" : 12 },
        { "item" : "ff_diamondplating", "count" : 8 },
        { "item" : "aegisaltbar", "count" : 6 }
      ],
      "output" : {
        "item" : "siliconspear",
        "count" : 1
      },
      "groups" : [ "prototyper", "weapons", "all" ]
    }
    

    and here's the item that unlocks it:

    Code:
    {
      "itemName" : "ff_silicon",
      "rarity" : "Rare",
      "inventoryIcon" : "ff_silicon.png",
      "description" : "This will definitely be useful.",
      "shortdescription" : "Silicon",
      "learnBlueprintsOnPickup" : [ "weapon_siliconspear" ]
    }
    


    So yea... no idea why this crap is not working.
     
    Last edited: Jun 5, 2014

Share This Page