Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Maatss

#1
First of all, amazing work with the continued development of the game, me and my fiance loves your work!

Secondly, I can not help but notice several new entries in the debug actions menu, although some being placeholders? ("Award 4 royal favor", "Reduce royal title", "Set royal title", "Add techprint on project")
There are many references to ''Royalty", is this a preparation/teaser for an upcoming release/add-on perhaps?

Action: "Spawn Mech Cluster"
Result: print-out to devlog: "MechClusterGenerator.GenerateClusterSketch() requires Royalty installed.  /.../"

Also, seems unrelated to Royalty and might give some interesting feedback:
Action: "Spawn shuttle"
Result: print-out to devlog: "Root level exception in OnGUI(): System.NullReferenceException: Object reference not set to an instance of an object"

(Rimworld v1.1.2548 rev623)
#2
Ah I see, will look into it. Appreciate the quick answer.
#3
I've been bashing my head against this issue for the past two days now, tried everything I can think of.

The problem is:
I create any TerrainDef (a new floor)
Includes <Blocks#anyStoneType#> to its <costList>
Set <Beauty> to more than 1 (that is, higher than the vanilla stone tile)

Now no matter what I do, the game ALWAYS uses this floor over the vanilla stone tile (of the same stone type).
Doesn't matter if I change the cost to include 1000 Gold, silver, plasteel etc.

I've searched the forum and only found this thread
https://ludeon.com/forums/index.php?topic=34051.msg347133#msg347133

Which basically concludes that
QuoteRuins are generated using material selected by a method in RimWorld.BaseGen.BaseGenUtility called "RandomCheapWallStuff." It does pretty much exactly what it sounds like it does: it randomly selects an available material that can be used to make walls and isn't expensive.

and

QuoteIn order to be considered "cheap", the material needs to cost less than $5 per unit. However, small-volume materials are accounted for, meaning things like silver cost 10x their normal market value for the purpose of the cheapness function.

There's another parameter that will prevent it from using anything with 50% or more flammability, which I assume is true for ruins because you don't see ruins with wooden walls by default.

The third requirement is that it is in the list of stuffs that can be used to build walls.

Once it's picked out a wall material, it uses the first floor it can find that uses that material, or concrete as a fallback.

But according to my tests the cost of the tiles are never considered, nor the order of the floors inside the XML.
The only thing that seem to matter is that the resulting ruin floor is the one with the highest beauty and that its
recipe includes either a <Blocks#anyStoneType#> or <Steel> (In the cases where the ruin walls are steel walls)

I have not tested the flammability parameter as it doesn't make sense in my case.


So my question is how do I get around this without getting into C#?
At the very least, how do I make it use this floor at random and not 100% of the time  :'(

Side note:
I believe that the issue originates from this nasty if-statement inside the method CorrespondingTerrainDef in BaseGenUtility

if (allDefsListForReading[i].costList[j].thingDef == stuffDef && (terrainDef == null || ((!beautiful) ? (terrainDef.statBases.GetStatOffsetFromList(StatDefOf.Beauty) > allDefsListForReading[i].statBases.GetStatOffsetFromList(StatDefOf.Beauty)) : (terrainDef.statBases.GetStatOffsetFromList(StatDefOf.Beauty) < allDefsListForReading[i].statBases.GetStatOffsetFromList(StatDefOf.Beauty)))))
{
terrainDef = allDefsListForReading[i];
}



Also, thank you for taking your time to read all of this.