Your Cheapest Ideas

Started by Tynan, October 09, 2013, 12:17:07 AM

Previous topic - Next topic

Jorlem

Quote from: b0rsuk on August 08, 2015, 02:29:56 AM
Hunting trophies could be made at... butchering tables.
Can the same table use different skills for certain jobs?  Because I'm not so sure cooking would be the right skill for making trophies.

king komodo

Quote from: kahlzun on August 07, 2015, 08:05:56 PM
I swear i played a previous version which allowed you to smooth walls in your base.

There was it was oddly my favorite feature in those versions.

ZeeOvenfresh

Why not a radio item that provides passive joy. It allows colonists that are incapped to be slightly not joy-deprived.
"How did you get into my house?"
-Morgan Freeman

AruBun

#2373
I commented earlier about the defect in the coolers, that they use more energy and produce more heat than they should when they are successful in maintaining their target temperature. I implemented the fixed cooler as a mod, it works perfectly and it doesn't use PushHeat or ControlTemperatureTempChange. I could make it more compact, but instead I made it lazier, and a little more verbose, so it doesn't perform certain calculations until necessary. This fix should completely defeat the workaround that I and probably others use abundantly, of always putting coolers together and staggering their target temperatures, and it's even more significant for people who like to put a cooler on every room or anything like that, and also for people who like to actually use the thermostat-style feature instead of just setting coolers to extremely low targets.

This segment here is suitable for copy+pasting directly into the Building_Cooler class, over existing code (for addition to vanilla core). It uses the same variable names that ILSpy gave me when possible, even though they're not the best. edit: I also compacted a few things things, like calculation of energyLimit.

if (compPowerTrader.PowerOn) {
    // This version is lazy, it saves time when possible
    IntVec3 intVec = Position + IntVec3.South.RotatedBy(Rotation);
    IntVec3 intVec2 = Position + IntVec3.North.RotatedBy(Rotation);
    if (!intVec2.Impassable() && !intVec.Impassable()) {
    // temperature (the red side) is not used, only temperature2 is needed
    float temperature2 = intVec.GetTemperature();

    if (temperature2 > compTempControl.targetTemperature) {
    Room roomBlue = RoomQuery.RoomAt(intVec);
    // energyTarget, and energyLimit, correspond to energy change of blue room; therefore, energyLimit is negative, energyTarget is too if cooling
    float energyTarget = (compTempControl.targetTemperature - temperature2) * roomBlue.CellCount;

    // this conditional is a simplification of (energyTarget < 0f && !Mathf.Approximately(energyTarget, 0f) )
    if (energyTarget <= -1.121039e-44f) {
        // not idle
        compTempControl.operatingAtHighPower = true;
        // energyPerSecond / 60f * 250f is energy per TickRare
        float energyLimit = compTempControl.props.energyPerSecond / 60f * 250f * Mathf.Max(0f, 1f + EfficiencyLossPerDegreeDifference * (Mathf.Min(temperature2, 40f) - intVec2.GetTemperature()));
        Room roomRed = RoomQuery.RoomAt(intVec2);

        if (energyLimit < energyTarget) {
            intVec.GetRoom().Temperature = compTempControl.targetTemperature;
            intVec2.GetRoom().Temperature -= energyTarget / roomRed.CellCount * HeatOutputMultiplier;
            compPowerTrader.PowerOutput = -compPowerTrader.props.basePowerConsumption * (compTempControl.props.lowPowerConsumptionFactor +
                (1 - compTempControl.props.lowPowerConsumptionFactor) * energyTarget / energyLimit);
        } else {
            intVec.GetRoom().Temperature += energyLimit / roomBlue.CellCount;
            intVec2.GetRoom().Temperature -= energyLimit / roomRed.CellCount * HeatOutputMultiplier;
            compPowerTrader.PowerOutput = -compPowerTrader.props.basePowerConsumption;
        }
        return;
    } } }
    // idle
    compTempControl.operatingAtHighPower = false;
    compPowerTrader.PowerOutput = -compPowerTrader.props.basePowerConsumption * compTempControl.props.lowPowerConsumptionFactor;
}


How's that for cheap?

(edit: there was a little problem in the paste, fixed it, forgot the two lines for idle)

FridayBiology

+1 radio joy item. Listen to music while your working or in bed with plague.

> Rain storm event.
Rains for a week, periods of high wind followed by no wind, full cloud cover for event.
Outside humidity increase causing greater deterioration of items.
Yes another god damn youtuber.
 https://www.youtube.com/user/FridayBiology

b0rsuk

Quote from: ZeeOvenfresh on August 09, 2015, 05:53:14 PM
Why not a radio item that provides passive joy. It allows colonists that are incapped to be slightly not joy-deprived.

That's a great idea. It would be balanced by needing power and using a single joy tolerance type. It would be bought, and later when Electronics resource is added, you could make your own too.

StorymasterQ

It'd be horrible if the only one radio station. And it's a 24-hour all-day-loop elevator song.
I like how this game can result in quotes that would be quite unnerving when said in public, out of context. - Myself

The dubious quotes list is now public. See it here

Jorlem

Quote from: AruBun on August 09, 2015, 09:29:57 PMsnip cooler mod code
Would you be willing to post that as an actual mod, for those of us that don't know our way around the game's code?

b0rsuk

#2378
* When copying stockpile settings, the name of the stockpile should be copied as well. If those names must be unique, increment a number. (For example a low priority stockpile named "Steel stays here" is copied to "Steel stays here 1", "Steel stays here 2"...)

* Trees should have HP proportional to their growth stage. It doesn't make sense that a 100% grown tree has as much HP as a sapling.

* Woodcutting should work by dealing damage to a tree's HP. Combined with the change above, it will mean small trees are fast to cut and it's easier to estimate how long a tree will take to cut. Also, trees damaged by lightning, explosions, gunfire will be easier to cut down later.

--------------

* When placing a Sunlamp, display the stats on soil covered. (For example, 7 rich soil, 12 soil, 9 lichen-covered soil...). It would be very convenient to have this information before the sunlamp is built.

* When placing a turret, display squares it won't see (because of line of sight) as black. Bonus points for shades of gray for squares partially obscured by obstacles. This feature might be a bit more work, but it will be educational and players will eagerly use it to learn about combat mechanics.

* When placing a growing zone (before releasing the mouse button), display stats on soil covered. For example, 12 gravel, 25 soil.

-----------------

Plants outside should receive a bonus (like +25%) to growth speed during a rain. A quick&dirty change which would make desert quite different from a rainforest. Even if you plan to implement a water system later, it could serve as a decent (and fun) placeholder.

AruBun

#2379
+1 for the music player feature, that sounds really nice. The balance trade off would be that it gives joy at a lower rate than anything else, a continuous trickle that's just enough to keep joy from dropping while bedridden, and only works while awake (and bedridden), so it's useless for any other purpose.

Quote from: Jorlem on August 10, 2015, 11:29:55 AMWould you be willing to post that as an actual mod, for those of us that don't know our way around the game's code?

Sure, but I've never made any mods other than this one just for me, and I don't know how it might interfere with other things. It's ugly, has no standard documentation or comments or anything, and I haven't really done any modding yet (no using mods, I mean), so I don't know about the protocol for that.

Okay, I just went through fun hoops to use "moddb", made an account, told me given info was invalid without giving a clue why, make up some bogus thumbnail image (that wasn't big enough for them at first), just to upload a small bug fix, forced to select an incorrect category because none of them pertained to mechanics or fixes, and... "currently awaiting authorisation. Authorisation can take a couple of days during which time a site administrator will check the file" what fun! No, sorry, guess I can't give it to you in mod form.

Maybe in a few days, but probably not.
http://www.moddb.com/games/rimworld/addons/arucooler

Oh, maybe the "mirrors" button will give it.

Mr.Cross

Quote from: AruBun on August 10, 2015, 03:29:48 PM-Some angry mutterings about Moddb.
Why not just use dropbox or something similar? Alot of mod users on this site have other options other than Moddb, and as an added bonus i'm pretty sure your file won't need to be authorized there.
Claims to know most things.

AruBun

Quote from: Mr.Cross on August 10, 2015, 04:26:38 PM
Why not just use dropbox or something similar? Alot of mod users on this site have other options other than Moddb, and as an added bonus i'm pretty sure your file won't need to be authorized there.

I went there first, it asked to install something on my computer, and I said nooo. I don't regularly upload files like this, they're all (upload sites) a hassle.

Jorlem

Quote from: AruBun on August 10, 2015, 05:05:16 PM
I went there first, it asked to install something on my computer, and I said nooo. I don't regularly upload files like this, they're all (upload sites) a hassle.
I use Mediafire, they don't require any installation of anything.

Edit:
Also, thank you.  :)

AruBun

That bedside music player needs to loop trololololo

AruBun

I forgot to mention, for Jorlem and if anyone else uses the cooler fix mod, it doesn't apply to existing coolers. So if you turn it on, load an existing game, then coolers you already have made aren't affected, but new coolers you make are. So if you replace them all via god mode, it'll affect them. This threw me for a few minutes, until the nice people in the chat told me that game saves with old coolers are still old coolers. After all, the original coolers are still in the core, the mod just adds a new cooler and points construction to the new one.