Original discussion on tt-forums: viewtopic.php?f=26&t=57688
Just a quick thought that went through my head, that I don't think I've seen proposed before. A NewGRF which replaces the base house and office buildings with decayed, crumbling buildings if a town isn't regularly serviced.
A house NewGRF can check the percent passengers/mail transport this month/last month. So it could show crumbled houses when there are no passengers transported last month nor this month.
You can also use town persistent storage to store more stats and information. Houses can then check it to decide their state.
I think this could be well implemented in existing newGRFs
Personally I think run down / derelict wouldn't look too great if it was constantly changing.
It would be nice to see at the start of the game all towns only have small houses and will only build small houses unless the town is provided with transportation. The town can then choose to build progressively bigger buildings as more and more passengers are transported. This would require no new graphics and would be nice as a parameter option in certain sets, Hint* Hint*...
Along the derelict line perhaps if a town revives no service in a year or so the 'large' buildings (ie those that only could be built if transport was provided at some point) could become derelict
Yeah, combined with callback 0x148 there's a lot you could do.
Is it possible to check delivery of food/goods/etc?
You can in principle check for any cargo being delivered: http://newgrf-specs.tt-wiki.net/wiki/Va ... s_.2864.29
Do cities actually decrease in size when they had a good service and lose that service?
towns have a growth rate based on number of active stations, and a decay rate based on number of houses (and their lifetime). towns will shrink if the latter is larger than the former.
I think this sounds interesting! It's a bit like SimCity 4, although that example was a bad way of implementing it. But being given sort of an incentive, (?), in order to avoid towns decaying, only adds an even more interesting part to the game itself...
If you don't overdo it-like Simcity it will be nice. I mean that it will be OK to have a number of decayed buildings but not many, unless you create a specific script with rapid decrease in town population-hmm a nice challenge scenario? And in the past it has been proposed to create aging buildings anyway.
It has been awhile since I worked with City sets.
A house NewGRF can check the percent passengers/mail transport this month/last month. ...
AFAIK, only the fact that cargo was received can be checked, but not how much of it.
You can also use town persistent storage to store more stats and information ...
AFAIK, only industries have persistent storage.
Is it possible to check delivery of food/goods/etc?
You cann check for any cargo type that the house accepts, but only whether it has, but not how much.
It would be possible in a way, but I don't think it will look good. We are talking about changes happening all the time, but have no way to store important information between cycles.
I do have another idea, which I am going to try for my new CanCity. It will include buildings being demolished or decaying, after that they will be rebuilt, i.e. houses > town houses > high rise. I'll outline the concept when I have more time.
So there's no way to keep a history of how long a house has been without service?
The way I see this working (in theory) is to check if it's been more than, say, 12 months since a house has received goods. If so, then the house is essentially vacant/abandoned and then reverts to a depiction of a dilapidated property.
The history is limited to the following (extract from GRF Specifications)
Cargo acceptance history of nearby stations (64)
The parameter of this variable is a cargo identifier. GRFv=7 If your GRF is version 7 or later and has
a cargo translation table, this is an index to that table; otherwise, it's a cargo slot number. Additionally,
GRF register 100h should contain an offset relative to the current tile (use 0 for the current tile).
The lowest byte contains the signed X offset and the next higher byte the signed Y offset.
The returned value looks like this:
Bit number Meaning
0 This cargo was accepted in a nearby station some time in the past
1 This cargo was accepted in a nearby station last month
2 This cargo was accepted in a nearby station this month
3 This cargo was accepted in a nearby station since the last periodic processing (which happens every 250 ticks)
4 This cargo is one of the types that triggered callback 148 (only during callback 148)
other bits undefined; reserved for future use
A station is considered nearby if the selected tile is inside its acceptance area. That's why you can give an offset -
other tiles of your multi-tile building may have different stations "nearby".
You have available the following information :
0) Was the cargo ever accepted ? [would be true most certainly, if there was activity]
1) Was cargo accepted last month ?
2) Was cargo accepted this month ?
3) Was the cargo accepted within the last 6,75 seconds ?
4) The cargo triggered callback 148 !
But, you'll never know how much cargo.
... to check if it's been more than, say, 12 months since a house has received goods.
That information is not available. The best I can offer you is this :
Let's say we are in April; you would only know, whether there was no cargo delivered between March 1 and the current day in April.
The cargo in question has never been accepted; but this could also be the case, if the house was just built recently (you would have to take the building's age into account).
It is very tricky; do we know whether there are any stations nearby at all ? I don't think that information is available. If there aren't any stations, you may destroy an entire town, because there was no cargo accepted ever. A bit problematic early in a game.EDIT
I was thinking about it a bit last night. There is a way, that you could cover, say, a 12 month period of inactivity and then deicide the house is vacant and should decay. However, my idea would depend on how you see that idea implemented.
Can you document the various visual stages as you see them implemented, including what you'd like to happen to the population count, the cargo acceptability, what should happen in the end etc. Starting with:
Stage 1 construction
Stage 2 construction
Stage 3 construction
For construction stages, doesn't need to be elaborate - if the house sees there hasn't been a delivery of ANY cargo/food/passengers in the last 12 months, then simply swap out the normal house graphic for one which looks like an abandoned property - not very colorful, boarded up windows, weeds growing. If there is delivery, then put back the tile that was previously there, if possible.
Population would be reduced by whatever population was previously represented by that tile. Not sure if it's possible, but I wouldn't want to see the decay happen too fast, any way to see if a decayed house tile was placed within the last three months? I think that would be decent to show a slow decay of an area.
That sounds doable ... I may, if I may, include your idea as a feature, when I update NACity.
/me envisions a player's ranking busted from "Tycoon" all the way down to "Slumlord"
Plus you made a good suggestion for the ranking here in the forums. Let us say from 2 up to 10 posts?