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

Topics - Zhentar

#1
Bugs / [A17.1529] Blight kills ambrosia bushes
May 05, 2017, 09:21:29 PM
As the title says: Blight kills ambrosia bushes.

Maybe WAD; I can see an argument for it going either way, since it's not really a crop but it's also not really a native plant.
#2
Some of the time (but not all of the time), holding shift/ctrl to transfer larger quantities doesn't work in trade dialogs on the world map. I haven't noticed it ever failing on local map trade dialogs, and I have seen it work some of the time on the world map. I have not noticed any pattern to when it does or does not work.
#3
Inspired by this reddit thread: https://www.reddit.com/r/RimWorld/comments/5roii6/just_leave_the_meal/

I have seen the same behavior at least twice myself while playing: Occasionally, a colonist will decide to perform hauling as a higher priority task than it is actually configured as in the work settings. The colonist can be manually ordered to perform the higher priority work (in the reddit thread, it was cooking; I don't remember if the ones I saw were also cooking), and successfully complete the work (so it isn't an issue with the higher priority work being unavailable), but then immediately resumes hauling.

Unfortunately, the behavior did not reproduce after a save & reload, and I have not noticed any correlation between the events, so I cannot provide any sort of useful reproduction steps. I'm hoping someone else has noticed this too and contribute other details.
#4
I don't want to release these as finished mods, since they muck about with important parts of RimWorld's inner workings, and I have not given them particularly thorough testing. But I also know that these issues are seriously affecting some players' gameplay, so I want to put them out there for the people who are willing to accept some risk to try to find fixes.

World Pawn GC
"World" pawns are pawns that are kept around in the background, and simulated, tracked so that you can experience things like raiders coming back in later raids, or keep your colonist's family members in existence when they aren't on the map. A lot of them can build up over time; in a large, old colony they can easily make up 50% of the time taken to calculate each tick. When traveling on the world, with out any active colony maps, it can be 90% or more. This mod implements a garbage collector for world pawns. It looks over all of the world pawns, figures out which ones are related to "important" pawns (e.g. your colonists), and throws away the rest.

I suspect that this mod will have a larger impact over time than it will immediately after it is installed. Additionally, it will be able to delete more pawns if you butcher/incinerate raider corpses rather than having large graveyards.
https://drive.google.com/file/d/0B_iRcVI-TJMZZFpVcG45SGcwX00/view?usp=sharing&resourcekey=0-3x1FVttQeizTr7KoMMYJ7g

Memory Leak Fix
Each time a map is created & destroyed (e.g. during faction base raids), RimWorld leaks quite a bit of memory. This mod fixes one of the main causes and significantly mitigates another (unfortunately not fixed because I cannot for the life of me figure out how it is happening).

This will probably reduce or eliminate memory leaks and will probably not break anything. I think. (Note that this a test update to Zhentar's Vanilla Fixes, so it also includes the other fixes in there)
https://github.com/Zhentar/ZhentarFix/releases/download/v1.5alpha/ZhentarFix1.5_alpha.zip
#5
Zhentar's Vanilla Fixes
This mod aims to be the ultimate in "Vanilla Friendly": bug fixes. It fixes some of the bugs I've come across that I've thought were worth the effort to fix (i.e. they were very easy to fix), and the intended behavior is reasonably clear. I am not limiting myself to bugs that harm the player; bugs that benefit the player will be fixed as well, when I can find them.

A16
Download: https://github.com/Zhentar/ZhentarFix/releases/download/v1.4/ZhentarFix.v1.4.zip
v1.4 (1/13)

  • Fixes pawn gaydar (gay pawns would strongly prefer to attempt to romance straight pawns rather than other gay pawns)
  • Fixes pawns somewhat undervaluing nutrient paste dispensers (they will be correctly treated as equivalent to nutrient paste meals)
  • Fixes pawns always facing south while doing joy activities
  • Fixes the UI resolution changing on game load when UI scaling is used.
v1.3 (12/22)

  • Animal Hauling fix updated A16
  • All other fixes are no longer needed andhave been removed

A15
Download: https://github.com/Zhentar/ZhentarFix/releases/download/v1.2/ZhentarFix.v1.2.zip

License: MIT License
Source: https://github.com/Zhentar/ZhentarFix

Zhentar's Vanilla Tweaks
This mod is a collection of small changes I've made to address things that are bugging me, or to calm my minmax-ing heart when I feel driven by optimality to do something too tedious or unfun. The gameplay impact should generally be fairly small.

Features

  • Meal overlay for humanlike and insect meat
  • Pause on yellow envelope events when the Vanilla Pause on urgent letters setting is enabled. This can be disabled in the HugsLib mod settings menu. (HugsLib is optional, not a dependency. Unless you want to disable this.)
  • Distinct color for overhead mountain tiles in the show roof overlay
  • Sun lamp plan designator, with tile fertility display
  • Unlimited colonist and animal areas (identical to Fluffy's Area Unlocker)
  • Deep drills and smoothed stone floors can be designated outside of the construction boundaries, right up to the map edge

A16
Download: https://github.com/Zhentar/ZhentarTweaks/releases/download/v1.3/ZhentarTweaks.v1.3.zip

v1.3 (1/20)

  • Added meal overlay for humanlike and insect meat
  • Added pause on yellow envelope events when the Vanilla Pause on urgent letters setting is enabled.


A15
Download: https://github.com/Zhentar/ZhentarTweaks/releases/download/v1.1.1/ZhentarTweaks.v1.1.1.zip

License: MIT License
Source: https://github.com/Zhentar/ZhentarTweaks
#6
Bugs / [A15] Randy Never Drops Ship Chunks
October 26, 2016, 06:17:53 AM
I've never, not one single time, had a Ship Chunk drop in A15. Looking at the incidentdefs, the shipchunkdrop event has no baseChance, so I don't think it can ever occur - except that it also had no base chance in A14 and it did occur then.

Edit: we've at least confirmed that Cassandra drops ship chunks, but I still suspect Randy doesn't, so I've updated the title
#7
Outdated / [A15] [A16] Auto Flick Designation Sun Lamps
October 23, 2016, 01:01:21 AM
A16 Download Link: https://github.com/Zhentar/AutoFlicker/releases/download/v1.1/AutoFlicker.zip

A15 Download Link: https://drive.google.com/open?id=0B_iRcVI-TJMZb1JKenRzeTZyVmM

This mod adds an "Auto Flick" option to Sun Lamps and Switches. When enabled, they will automatically designate themselves to be flicked on in the morning (around 5:30, a little bit before plants finish resting), and to be flicked off at night (19:12, when plants start resting).

How is this mod different from other time of day switch mods? It aims to be a Vanilla-friendly micromanagement reduction. Because the actual flicking is still pawn performed, it does not give you any new capabilities or labor reductions that were not already available to a reasonably attentive player. But more importantly, because it is purely pawn powered (presumably using the same timekeeping device they use to follow work/rest schedules), it does not need to be research gated; it is available to your Tundra/Ice Sheet colony on Day 1.

Also, the flick designation is added via a CompProperty that could be used by other mods for other devices (and different hardcoded on/off times are supported).

License: MIT License
Source: https://github.com/Zhentar/AutoFlicker
#8
Neolithic caravan traders will sometimes sell personal shields and ranged weapons from higher tech levels.

Steps to reproduce: send in half a dozen neolithic trade caravans. Trade with them. Observe above behavior.


They sell personal shields because StockGenerator_Armor.IsValidThing always approves personal shields, regardlies of maxTechLevelGenerate. They sell ranged weapons because StockGenerator_WeaponsRanged.HandleThingDef checks the techLevel against maxTechLevelBuy, entirely ignoring maxTechLevelGenerate.
#9
Better Pathfinding

Vanilla pawns have a tendency to make some... odd... decisions when finding their way to their destination. Like going out of their way to avoid those nice, fast paths you built to slowly trudge through dirt, snow, and debris. Better Pathfinding brings an end to that, teaching pawns (friend and foe alike) to take sane, near-optimal paths - while trying to keep performance near Vanilla.

PathAvoid is compatible with Better Pathfinding.

A16
A16 1.5.2 Download
Version 1.5.2 Changelog

  • Fixes index out of bounds error
Version 1.5.1 Changelog

  • Fixes errors when pathing to large Things
Version 1.5 Changelog

  • Fix handing for negative path costs (floors that make pawns move faster)
  • Crazy good performance improvements in some edge cases
  • Better path quality in some edge cases
Version 1.4.3 Changelog

  • Fix broken foolery from 1.4.2
Version 1.4.2 Changelog

  • Improved path quality on easy paths
Version 1.4.1 Changelog

  • Fixed a bug where pawns would path through corners that should be impassible
  • Significantly improved performance and path quality when path costs are high (e.g. thick snow over ice or marsh, pathing outside of allowed areas)
Version 1.4 Changelog

  • Updated for A16
  • Fancy new "Bidirectional Pathmax" algorithm for big performance improvement in some cases
  • Improved performance when pathing outside of allowed areas
  • Fixed some errors

Note that for A16 I have to use a MapComponent to tie pathfinder instances to maps. This means disabling Better Pathfinding will cause an error to be logged when you load a game saved while Better Pathfinding was enabled, but it is benign and can be safely ignored. It can be safely added to existing games with no errors.

A15
Download Link: https://github.com/Zhentar/BetterPathfinding/releases/download/1.3.2/Better.Pathfinding.v1.3.2.zip

Version 1.3.2 Changelog

  • Fixed rare pathfinding failure

Version 1.3.1 Changelog

  • Probably fixed a bug

Version 1.3 Changelog

  • Prevents freezes & crashes with flooring that speeds up pawn movement.
  • Improves performance in some cases, particularly in open terrain.
  • Hopefully prevents pathfinding errors on very large maps.

Version 1.2.1 Changelog

  • Fixes exceptions cause by v1.2
  • Performance improvement

Version 1.2 Changelog

  • Fixes sapper pathfinding failure on very large, difficult to path maps.
  • Fixes Vanilla pathfinding bug where sappers thing they can walk on water
  • Improves pathfinding performance for "smart" raiders
  • Paths with impassible destination cells (e.g. mining, repairing) now use the improved logic, rather than falling back to Vanilla logic.


Version 1.1 Changelog

  • Fixed sapper pathfinding bug so that they won't try to go straight through rock. They will now be moderately smarter about pathfinding than Vanilla. (still planning to tweak this a bit, but wanted to get the fix out now)
  • Fixed a bug that was causing the funny diagonal bits in some paths, as well as some other sub-optimal pathfinding. Unfortunately, this had a significant performance cost in some cases
  • Taught the heuristic about doors. This doesn't improve paths but significantly improves performance on paths through or near doors, especially if the shortest path would be through a door that is forbidden.
  • Improved heuristic handling of rough terrain, significantly improving performance in open, outdoor areas.
  • Other misc small optimizations.


Comparison images:

Vanilla Pathfinding
The colored squares show which tiles the pathfider has examined while looking for the best path to the destination. You can clearly see the usual behavior for long paths here - it tries to go straight towards the destination, only going around when it runs into something. It didn't even try to avoid the marshy bit at the beginning of the path!

The path chose here is 10% longer than the optimal path.


If We Used A Naive Admissable Distance Heuristic
This test used a simple octile distance heuristic. This is the standard "right" way to implement an A* pathfinder, and it always chooses an optimal path.

You can see it looks at an awful lot more tiles (even though many are "obviously" stupid and not going to work), which carries a pretty significant performance cost. That performance cost is why this isn't how Vanilla works.


The "Better Pathfinding" Way
Like the octile distance, we get an optimal path here, but we only look at two thirds as many tiles! You can see it's quite a bit smarter - it knows there's a mountain in the way. It doesn't explore every nook and cranny hoping to find a way through the mountain, and it gives up on going around to the left when it finds the marsh. Most of the tiles explored are through the plains area, basically hoping to find a road to cross it faster. (This raises the obvious question, why didn't I put a road in for my promo pics to better demonstrate my algorithm's cleverness? This is why I'm a software developer and not a marketer)

Version 1.1 - Look at all the performance!

Vanilla & Admissable Heuristic
With very hard paths like this one, the Vanilla pathfinder and the simple optimal heuristic have very nearly identical performance. Both find the optimal path, by searching a very large area.


The "Better Pathfinding" Way
This round, I thought ahead and used a layout that better demonstrates the brilliance of my approach! On the right side, there's a door but it's forbidden. It knows that door is forbidden, so it doesn't even try to find a way through there; it knows not to to go down the dead ends.

However, you can also see that a number of the cells are more opaque than others. This is a new behavior in 1.1; sometimes it needs to revisit cells it has already visited once. This part isn't so clever, particularly since it's revisiting some of them half a dozen times, but in the end, it finds the optimal path in 1/4th the time that Vanilla takes.

License: Do whatever the hell you want with this. No credit required.
Source is on Github here: https://github.com/Zhentar/BetterPathfinding

#10
I spent my hard earned silvers requesting a trader caravan. Then a heat wave hit. The traders never showed up, which does make sense... but there wasn't any notification that it was cancelled, and no refund of my monies. That doesn't seem right.

[attachment deleted by admin - too old]
#11
Single beds, hospital beds, stools, and armchairs can all be sold to traders (that are willing to buy furniture). However, the three furniture items that can have art (Dining Chairs, Double Beds, and Royal Beds) cannot be sold to any trader. That doesn't make much sense, so I'm guessing the restriction is unintentional.
#12
Heat does not conduct through through doors; instead, heat passes through doors by "mixing" the temperature between the rooms connected by the door. But if the door does not connect to any other rooms... then there is no heat exchange. Thus, a double "wall" where the inner layer of the wall is made out of doors is a perfect insulator. Combined with the new alpha 15 deep equalization behavior, this makes it possible (among other things) to create a sealed off "deep freezer" which maintains a constant temperature with no power requirement.

See the attached screenshot for an example chamber.

[attachment deleted by admin - too old]
#13
While switched on, both the Electric Smelter and the Electric Crematorium are supposed to produce about as much heat as an electric heater. However, when I tested this via god mode, both failed to heat the room containing them at all.

Additionally, both are supposed to produce additional heat while in use. But neither produces any appreciable amount of heat while running. I know why this part doesn't work, though - in Building_WorkTable_HeatPush, heatPerTickWhileWorking gets divided by 30, rather than multiplied, turning it into heat per 900 ticks!