Question Where is information about ores like smelting time, bar per ores,... written on xnb files?

takisama

Tiller
I tried to make some changes on the xnb files game but I couldn't find where ores information are. I search on GG for hours but it didn't help much. Anybody knows where it is located? Thanks a lot!
 

BlaDe

Farmer
This is not in an xnb file.

This is hardcoded into Object::performObjectDropInAction, starting from a line where this.name.Equals("Furnace")

C#:
else if (this.name.Equals("Furnace"))
{
if (who.IsLocalPlayer && this.GetTallyOfObject(who, 382, big_craftable: false) <= 0)
{
    if (!probe && who.IsLocalPlayer && Object.autoLoadChest == null)
    {
        Game1.showRedMessage(Game1.content.LoadString("Strings\\StringsFromCSFiles:Object.cs.12772"));
    }
    return false;
}
if (this.heldObject.Value == null)
{
    if ((int)dropIn.stack < 5 && (int)dropIn.parentSheetIndex != 80 && (int)dropIn.parentSheetIndex != 82 && (int)dropIn.parentSheetIndex != 330 && (int)dropIn.parentSheetIndex != 458)
    {
        if (!probe && who.IsLocalPlayer && Object.autoLoadChest == null)
        {
            Game1.showRedMessage(Game1.content.LoadString("Strings\\StringsFromCSFiles:Object.cs.12777"));
        }
        return false;
    }
    int toRemove = 5;
    switch (dropIn.ParentSheetIndex)
    {
    case 378:
        this.heldObject.Value = new Object(Vector2.Zero, 334, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 30;
        }
        break;
    case 380:
        this.heldObject.Value = new Object(Vector2.Zero, 335, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 120;
        }
        break;
    case 384:
        this.heldObject.Value = new Object(Vector2.Zero, 336, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 300;
        }
        break;
    case 386:
        this.heldObject.Value = new Object(Vector2.Zero, 337, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 480;
        }
        break;
    case 80:
        this.heldObject.Value = new Object(Vector2.Zero, 338, "Refined Quartz", canBeSetDown: false, canBeGrabbed: true, isHoedirt: false, isSpawnedObject: false);
        if (!probe)
        {
            this.minutesUntilReady.Value = 90;
            toRemove = 1;
        }
        break;
    case 82:
        this.heldObject.Value = new Object(338, 3);
        if (!probe)
        {
            this.minutesUntilReady.Value = 90;
            toRemove = 1;
        }
        break;
    case 458:
        this.heldObject.Value = new Object(277, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 10;
            toRemove = 1;
        }
        break;
    case 909:
        this.heldObject.Value = new Object(910, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 560;
        }
        break;
    default:
        return false;
    }
    ...
}
 

takisama

Tiller
This is not in an xnb file.

This is hardcoded into Object::performObjectDropInAction, starting from a line where this.name.Equals("Furnace")

C#:
else if (this.name.Equals("Furnace"))
{
if (who.IsLocalPlayer && this.GetTallyOfObject(who, 382, big_craftable: false) <= 0)
{
    if (!probe && who.IsLocalPlayer && Object.autoLoadChest == null)
    {
        Game1.showRedMessage(Game1.content.LoadString("Strings\\StringsFromCSFiles:Object.cs.12772"));
    }
    return false;
}
if (this.heldObject.Value == null)
{
    if ((int)dropIn.stack < 5 && (int)dropIn.parentSheetIndex != 80 && (int)dropIn.parentSheetIndex != 82 && (int)dropIn.parentSheetIndex != 330 && (int)dropIn.parentSheetIndex != 458)
    {
        if (!probe && who.IsLocalPlayer && Object.autoLoadChest == null)
        {
            Game1.showRedMessage(Game1.content.LoadString("Strings\\StringsFromCSFiles:Object.cs.12777"));
        }
        return false;
    }
    int toRemove = 5;
    switch (dropIn.ParentSheetIndex)
    {
    case 378:
        this.heldObject.Value = new Object(Vector2.Zero, 334, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 30;
        }
        break;
    case 380:
        this.heldObject.Value = new Object(Vector2.Zero, 335, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 120;
        }
        break;
    case 384:
        this.heldObject.Value = new Object(Vector2.Zero, 336, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 300;
        }
        break;
    case 386:
        this.heldObject.Value = new Object(Vector2.Zero, 337, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 480;
        }
        break;
    case 80:
        this.heldObject.Value = new Object(Vector2.Zero, 338, "Refined Quartz", canBeSetDown: false, canBeGrabbed: true, isHoedirt: false, isSpawnedObject: false);
        if (!probe)
        {
            this.minutesUntilReady.Value = 90;
            toRemove = 1;
        }
        break;
    case 82:
        this.heldObject.Value = new Object(338, 3);
        if (!probe)
        {
            this.minutesUntilReady.Value = 90;
            toRemove = 1;
        }
        break;
    case 458:
        this.heldObject.Value = new Object(277, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 10;
            toRemove = 1;
        }
        break;
    case 909:
        this.heldObject.Value = new Object(910, 1);
        if (!probe)
        {
            this.minutesUntilReady.Value = 560;
        }
        break;
    default:
        return false;
    }
    ...
}
So basically we couldn't do anything to change this except using mods right?
Btw, is this code decompiled or it is public somewhere? And is there a way that I can edit this but don't use mod. I am a web developer and could use C# well.
 
Top