Modding Help Help with object interaction. Creating new keg recipes. No references to some items.

Discussion in 'Mods' started by jivex5k, Mar 15, 2016.

  1. jivex5k

    jivex5k Intergalactic Tourist

    So I've extracted every XNB file using XNBnode and have been looking through them.
    I've figured out some of the CraftingRecipe.yaml format:

    Code:
    itemID amountRequired / Placement? / ?? / requiredSkill requiredLevel
    There are also references to the keg in BigCraftablesInformation, but they are almost identical to the loom:
    Code:
    12: "Keg/50/-300/Crafting -9/Place a fruit or vegetable in here. Eventually it will turn into a beverage./true/true/0" #!String
    17: "Loom/50/-300/Crafting -9/Turns raw wool into fine cloth./true/true/0" #!String
    The only difference is the name, description, and lead number.

    Anyway, so I'm looking into how beer or wine relates to the keg. It doesn't.
    I've searched every extracted xnb file for references to eggplant juice, not a single one. Curious, I searched for Red Pepper Jelly which I see in the game right now that I extracted the data from. Nothing. Not a single reference in every yaml file.

    I searched the description "gooey" and found a standard Jelly listed in objectinformation.yaml:
    Code:
    Line 259:     344: "Jelly/160/-300/Basic -26/Gooey." #!String
    So somewhere outside of a yaml file it's telling the game how to create red pepper jelly. Could it be in tbin file possibly?

    Any nudge in the right direction would be awesome.
     
    • taintedwheat

      taintedwheat Master Astronaut

      Ohh. i think if you're doing this would be cool. I was thinking there should be hella hipster craft beer by adding multiple ingredients to the keg.
       
      • keyten

        keyten Cosmic Narwhal

        Hardcoded in exe. Here how it is made:
        else if (this.name.Equals("Keg"))
        {
        string a;
        if ((a = dropIn.Name) != null)
        {
        if (a == "Wheat")
        {
        this.heldObject = new Object(Vector2.Zero, 346, "Beer", false, true, false, false);
        if (!probe)
        {
        this.heldObject.name = "Beer";
        Game1.playSound("Ship");
        Game1.playSound("bubbles");
        this.minutesUntilReady = 1750;
        who.currentLocation.temporarySprites.Add(new TemporaryAnimatedSprite(Game1.animations, new Rectangle(256, 1856, 64, 128), 80f, 6, 999999, this.tileLocation * (float)Game1.tileSize + new Vector2(0f, (float)(-(float)Game1.tileSize * 2)), false, false, (this.tileLocation.Y + 1f) * (float)Game1.tileSize / 10000f + 0.0001f, 0f, Color.Yellow * 0.75f, 1f, 0f, 0f, 0f, false)
        {
        alphaFade = 0.005f
        });
        }
        return true;
        }
        if (a == "Hops")
        {
        this.heldObject = new Object(Vector2.Zero, 303, "Pale Ale", false, true, false, false);
        if (!probe)
        {
        this.heldObject.name = "Pale Ale";
        Game1.playSound("Ship");
        Game1.playSound("bubbles");
        this.minutesUntilReady = 2250;
        who.currentLocation.temporarySprites.Add(new TemporaryAnimatedSprite(Game1.animations, new Rectangle(256, 1856, 64, 128), 80f, 6, 999999, this.tileLocation * (float)Game1.tileSize + new Vector2(0f, (float)(-(float)Game1.tileSize * 2)), false, false, (this.tileLocation.Y + 1f) * (float)Game1.tileSize / 10000f + 0.0001f, 0f, Color.Yellow * 0.75f, 1f, 0f, 0f, 0f, false)
        {
        alphaFade = 0.005f
        });
        }
        return true;
        }
        }
        int category = dropIn.Category;
        if (category == -79)
        {
        this.heldObject = new Object(Vector2.Zero, 348, dropIn.Name + " Wine", false, true, false, false);
        this.heldObject.Price = dropIn.Price * 3;
        if (!probe)
        {
        this.heldObject.name = dropIn.Name + " Wine";
        Game1.playSound("Ship");
        Game1.playSound("bubbles");
        this.minutesUntilReady = 10000;
        who.currentLocation.temporarySprites.Add(new TemporaryAnimatedSprite(Game1.animations, new Rectangle(256, 1856, 64, 128), 80f, 6, 999999, this.tileLocation * (float)Game1.tileSize + new Vector2(0f, (float)(-(float)Game1.tileSize * 2)), false, false, (this.tileLocation.Y + 1f) * (float)Game1.tileSize / 10000f + 0.0001f, 0f, Color.Lavender * 0.75f, 1f, 0f, 0f, 0f, false)
        {
        alphaFade = 0.005f
        });
        }
        return true;
        }
        if (category == -75)
        {
        this.heldObject = new Object(Vector2.Zero, 350, dropIn.Name + " Juice", false, true, false, false);
        this.heldObject.Price = (int)((double)dropIn.Price * 2.25);
        if (!probe)
        {
        this.heldObject.name = dropIn.Name + " Juice";
        Game1.playSound("bubbles");
        Game1.playSound("Ship");
        this.minutesUntilReady = 6000;
        who.currentLocation.temporarySprites.Add(new TemporaryAnimatedSprite(Game1.animations, new Rectangle(256, 1856, 64, 128), 80f, 6, 999999, this.tileLocation * (float)Game1.tileSize + new Vector2(0f, (float)(-(float)Game1.tileSize * 2)), false, false, (this.tileLocation.Y + 1f) * (float)Game1.tileSize / 10000f + 0.0001f, 0f, Color.White * 0.75f, 1f, 0f, 0f, 0f, false)
        {
        alphaFade = 0.005f
        });
        }
        return true;
        }
        }
         
        • jivex5k

          jivex5k Intergalactic Tourist

          Whoa! Thanks for this information, this is extremely helpful!
          I wonder if the Storm API can access these functions. Going to dig into it tomorrow.
           

          Share This Page