Jump to content
Null 45

Allow More Building Styles - DLL Plugin

418 posts in this topic Last Reply

Highlighted Posts

Posted:
Last Online:  
 
16 hours ago, Null 45 said:

There is a fixed version in the staging branch, but I have no idea what other properties have been modified.

I took a look.  There are a ton of changes, frankly.  Additions for the Regional Supply mod, AMPS (and entirely new Electric Generator, Incinerator and Sewage Sanitizer buildings), Ordinance stuff, cleanups to the Hydro Electric and Geothermal generators to remove negative health impacts, and some other slight edits that I couldn't discern.  

Look, I get that the draft new_properties is still not ready for distribution.  There's a lot of new stuff there.  

That said, I think this is a critical fix that needs to be made.  I noticed that the current published new_properties.xml applies the 0x2004 style to industrial buildings as well, which, given the fact that industrial building styles act slightly differently in that it's either the style you selected or "build all styles at once", this is a particularly game-breaking thing for industry buildings.  I don't know if any industrial buildings have this obsolete blocker but I cannot believe this wasn't updated earlier.

@Tyberius06 , @Ulisse Wolf, what do you think?

For anyone who doesn't want to do the edits themselves, here's a new_properties.xml that fixes the Building Style Placeholder to the one used by the DLL Mod:

new_properties.xml

  • Thanks 1

Share this post


Link to post
Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    1 hour ago, Kel9509 said:

    I don't know when 0x2004 was added to PIM-X, maybe April?

    From a conversion on SC4E, it sounds like that new_properties.xml file was accidentally added in the June 2025 update. With instructions being disseminated somewhere to update from GitHub.

    Looking through the PIMX templates, there appears to be a way I can identify them as having been used, the templates set the Maxis ExemplarCategory property to the template id. I also plan to add a new marker property to the templates to allow me to distinguish between the old and new versions of PIMX.

    Those two things combined should give me a fully automatic way of detecting and ignoring the PIMX use of 0x2004 as a placeholder.

    • Like 1

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    19 minutes ago, Null 45 said:

    Those two things combined should give me a fully automatic way of detecting and ignoring the PIMX use of 0x2004 as a placeholder.

    I hate that this has to happen as we're losing 0x2004 forever as a community style.  

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    5 minutes ago, Kel9509 said:

    I hate that this has to happen as we're losing 0x2004 forever as a community style.  

    What I was trying to say is that I can use that combination of properties to detect the broken PIMX building templates and treat them as using Maxis styles. Other uses of the 0x2004 would be unaffected.

    Sorry if I worded that poorly.

    • Like 1

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Hi everybody!

    7 hours ago, Kel9509 said:

    I don't know when 0x2004 was added to PIM-X, maybe April?  It might only be a handful of buildings and they might be easily fixed.  I don't think it's worth it but again this is just further evidence that new_properties.xml needs to be updated ASAP.

    As far as I remember, it was coming with an update on the GitHUB branch back in December or early January, publicly it was released with the PIM-X v2025a back in 10 March 2025, but by that time it was getting into stuff, as I was working with the most recent version of the new_properties.xml, when I was updating stuff for restoring them on SC4Evermore. It was a not a problem for me until I saw that discussions made the ID involved with the community styles and marked it as one of the US/North American style. That's when I requested a new independent ID which is the 0x7b6bc069, but apparently this new ID only existed on GitHUB.

    On SC4Evermore there are some releases/restored contents that are affected by the 0x2004 ID being placeholder:

    SC4D LEX Legacy - BSC B62 Compilation 

    tomvsotis - Astor Theatre

    tomvsotis - Fish Creek Pub

    tomvsotis - Nimmo St Apartments

    SC4D LEX Legacy - BSC Jestarr Industrial, Freight Rail and Power Utilities Compilation 

    SC4D LEX Legacy - BSC Jestarr Commercial and Residential Compilation 

    SC4D LEX Legacy - BSC Gascooker Residential Compilation 

    SC4D LEX Legacy - BSC Gascooker Commercial Compilation

    SC4D LEX Legacy - BSC Gascooker Industrial Compilation

    These releases for growable lots are definitely using the 0x2004 as placeholder.

    From the T1/Tag_One Compilations onwards the growables were updated using the 0x7b6bc069 placeholder ID.

    23 hours ago, Null 45 said:

    In my opinion, there is no reason for the PIMX automatic templates to be setting the Building Styles property to any default value. If PIM-X requires it due to not allowing the user to add arbitrary properties like the Reader, then it sounds like the wrong program to use for building style editing.

    IIRC @Ulisse Wolf mentioned that when he tried to leave the value field empty for the template in the new_properties, PIM-X would have not generated the property into the building exemplar at all. That's why the first ID from the list was used as an intermitten solution. Also I previously understood (apparently wrongly), that the value field must have some "value" in the building exemplar for each properties. I checked now PIM-X out of curiosity and it did not have any problem when I manually removed the placeholder ID and the left the Building Styles property value field empty. In which case there was also a missunderstanding partially on my end too, as I was not aware of that value fields in the building exemplar can be left empty. To be fair I did not even try to leave it empty. If knew this previously I could have just manually removed the value at that time...

    Whooopsz...

    • Thanks 1

    I'm responsible for the Heretic uploads a.k.a. Heretic Projects, you may find updates about my ongoing projects into my development thread over at SimCity 4 DevotionTyberius Lotting Experiments or here on Simtropolis into the Tyberius (Heretic Projects) Lotting and Modding Experiments OR Show Us What You're Working On thread.

    Now I'm part of the NAM Team and the RTMT Team.
    I'm also working on some preservation and reorganization projects the behalf of non-anymore-active-developers and with the permission of the Staffs both on STEX and LEX. Current projects: SimcityPolska Restoration and WMP (WorkingManProduction) Restoration.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    9 hours ago, Tyberius06 said:

    To be fair I did not even try to leave it empty. If knew this previously I could have just manually removed the value at that time...

    Whooopsz...

    It would be ideal if the property was left blank, but to be honest I don't know if that's enough to revert back to Maxis styles (under the current version of the DLL mod).  I thought the existence of the building styles exemplar meant that Maxis occupant groups wouldn't be used at all, whether the exemplar has a value or not.  As @Null 45says, "When the property is present, the building will use custom and Maxis styles specified in the property and ignore the styles in the Occupant Groups property."  I assume this means that whether the exemplar has a value or not, Occupant Groups are ignored if the exemplar is there. 

    I notice that you have the Gascooker Industrial compilation there.  Industrial lots are either all or nothing when it comes to building styles. Unlike Residential and Commercial Buildings, the exemplar is not optional. It is mandatory - either off and hence uses all styles, or "on" and uses only the style in the exemplar.  Gascooker's Industrial compilation will never grow unless someone selects 0x2004 as a building style.

    It is a shame but all of those compilations (especially the Industrial compilation) will probably need to be updated.  When you told me earlier this year to hold off on updating them, I never bothered to do it for myself.  Maybe I should just do it anyway now?  If you want the files I can send them to you when I'm done.

    • Thanks 1

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    10 hours ago, Kel9509 said:

    It would be ideal if the property was left blank,

    Blank values are only supported by the text exemplar format, in which case the game treats it as a single item array with the value set to 0. While the Reader and possibly other tools let you create blank values for the binary format, it will corrupt the exemplar.

    10 hours ago, Kel9509 said:

    "When the property is present, the building will use custom and Maxis styles specified in the property and ignore the styles in the Occupant Groups property."

    There are a number of exceptions where the Maxis styles will be used, style ids that overlap reserved values, etc.

    • Like 1
    • Thanks 1

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    10 hours ago, Null 45 said:

    Blank values are only supported by the text exemplar format

    To clarify, the binary Exemplar format does support empty arrays. I think that's one of the main points of their format distinguishing between single values and multiple values – to account for the eventuality of an array being empty, so that not a single value can be read from the property. In such cases, GetCount returns 0 and RefUint32 yields a non-nullptr.

    It's just a bug in the Reader that it corrupts Exemplars when writing such a property. And that's perhaps an argument for avoiding such uses.

    • Thanks 1

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     

    Release version 3.6.0, which has the following changes:

    • A few fixes to the code that allows other DLLs to query the building style names.
    • Make the PIM-X 0x2004 placeholder style fall back to the Maxis styles.
    • Thanks 1

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    On 8/9/2025 at 6:48 AM, Null 45 said:

    Release version 3.6.0, which has the following changes:

    • A few fixes to the code that allows other DLLs to query the building style names.
    • Make the PIM-X 0x2004 placeholder style fall back to the Maxis styles.

    I was finally able to find time to test this and everything is working again.  Both lots with the 0x2004 placeholder and lots with the official placeholder of 0x7B6BC069 both revert back to Maxis styles.  Technically, I think the DLL is coded such that 0x2004 could possibly be used as a community style though, right?  Or is that forever off limits?

    • Like 1

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    1 hour ago, Kel9509 said:

    Technically, I think the DLL is coded such that 0x2004 could possibly be used as a community style though, right? 

    Correct.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Apologies if this has already been explained somewhere, but I wasn't able to find it.

    The UI adds the 'No kickout lower wealth' option. Does that mean the standalone 'No kickout lower wealth' DLL is unnecessary if you have the Building Styles DLL? If you have both installed, does the standalone one override unchecking it in the UI?

    Thanks.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    4 hours ago, junspud said:

    If you have both installed, does the standalone one override unchecking it in the UI?

    No, it will not. The standalone one just sets the default value to true.

    • Thanks 2

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    On 06/08/2025 at 11:07 AM, Tyberius06 said:

    Hi everybody!

    As far as I remember, it was coming with an update on the GitHUB branch back in December or early January, publicly it was released with the PIM-X v2025a back in 10 March 2025, but by that time it was getting into stuff, as I was working with the most recent version of the new_properties.xml, when I was updating stuff for restoring them on SC4Evermore. It was a not a problem for me until I saw that discussions made the ID involved with the community styles and marked it as one of the US/North American style. That's when I requested a new independent ID which is the 0x7b6bc069, but apparently this new ID only existed on GitHUB.

    On SC4Evermore there are some releases/restored contents that are affected by the 0x2004 ID being placeholder:

    SC4D LEX Legacy - BSC B62 Compilation 

    tomvsotis - Astor Theatre

    tomvsotis - Fish Creek Pub

    tomvsotis - Nimmo St Apartments

    SC4D LEX Legacy - BSC Jestarr Industrial, Freight Rail and Power Utilities Compilation 

    SC4D LEX Legacy - BSC Jestarr Commercial and Residential Compilation 

    SC4D LEX Legacy - BSC Gascooker Residential Compilation 

    SC4D LEX Legacy - BSC Gascooker Commercial Compilation

    SC4D LEX Legacy - BSC Gascooker Industrial Compilation

    These releases for growable lots are definitely using the 0x2004 as placeholder.

    From the T1/Tag_One Compilations onwards the growables were updated using the 0x7b6bc069 placeholder ID.

    IIRC @Ulisse Wolf mentioned that when he tried to leave the value field empty for the template in the new_properties, PIM-X would have not generated the property into the building exemplar at all. That's why the first ID from the list was used as an intermitten solution. Also I previously understood (apparently wrongly), that the value field must have some "value" in the building exemplar for each properties. I checked now PIM-X out of curiosity and it did not have any problem when I manually removed the placeholder ID and the left the Building Styles property value field empty. In which case there was also a missunderstanding partially on my end too, as I was not aware of that value fields in the building exemplar can be left empty. To be fair I did not even try to leave it empty. If knew this previously I could have just manually removed the value at that time...

    Whooopsz...

    Based on my SC4MoreBuildingStyles.log I can add to the list of unsupported style id 0x2004:

    From Barroco Hispano:

    * AGC One Canada Square 01

    * AGC Citigroup Centre 01

    * AGC 40 Bank Street 01

    * AGC 8 Canada Square 01

    * AGC 5 Canada Square 01

    * AGC 15 Canada Square 01

    And also:

    * BSC MEGA Props - Gascooker Vol01 v3

    The fix seems to work, so not sure it's still relevant.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    21 minutes ago, TiepiNL said:

    And also:

    * BSC MEGA Props - Gascooker Vol01 v3

    The fix seems to work, so not sure it's still relevant.

    Oh... Thanks for reporting back these. I completely forgot about the Props pack, where I updated some building exemplars. Good catch I fix those too, soon I need to do a small update on the Common Dependencies anyway.

    • Like 2

    I'm responsible for the Heretic uploads a.k.a. Heretic Projects, you may find updates about my ongoing projects into my development thread over at SimCity 4 DevotionTyberius Lotting Experiments or here on Simtropolis into the Tyberius (Heretic Projects) Lotting and Modding Experiments OR Show Us What You're Working On thread.

    Now I'm part of the NAM Team and the RTMT Team.
    I'm also working on some preservation and reorganization projects the behalf of non-anymore-active-developers and with the permission of the Staffs both on STEX and LEX. Current projects: SimcityPolska Restoration and WMP (WorkingManProduction) Restoration.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Hi @Null 45,

    Im not sure if I'm overseeing something, but it looks like in some cases the "Disable Lot Aggregation" option does not work. It worked fine for a while, but @mattb325 Modern Villa 3 seems to be bypassing it. I only recently added it to the building style I was using. Could it be that there's some property missing in the building exemplar of that lot that allows it to bypass the Disable Lot Aggregation option. I'm happy to file an issue on GitHub if you think this truly is a bug.

    aggregation.jpg.1f1b7ef170e7cce9fea28e7c909a9c21.jpg

    • Like 1

    Visit www.growifier.com for ploppable residentials

    Love playing hearts and other card games? Have a look at www.whisthub.com!

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    4 hours ago, smf_16 said:

    Could it be that there's some property missing in the building exemplar of that lot that allows it to bypass the Disable Lot Aggregation option.

    Possibly, but I didn't see anything from a quick look. The aggregation code path should not be running, so I have no idea what is going on. 

    If you can reliably reproduce it, try turning on the CandidateLots debug logging option in the INI file. I don't know if that would provide any insight into what is going on, but it is worth trying.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    I can pretty reliably reproduce it and have included the log below and a screenshot of the situation at that point. You can see where it goes wrong with the R$$$ lot towards the end of the log where it performs an aggregation, even though I've triple checked that I have disabled Lot Aggregation.

    Spoiler
    
    SC4MoreBuildingStyles v3.6.0
    Installed the building select window patch.
    Installed the lot configuration manager patch.
    Installed the building style algorithm patch.
    Failed to read the BuildingStyles INI file: No such node (BuildingStyles)
    Found 8 exemplar building styles and 0 INI file building styles.
    Registered the building_style.is_build_all_styles_at_once function
    Registered the building_style.get_years_between_style_changes function
    Registered the building_style.get_available_style_ids function
    Registered the building_style.get_available_style_name_id_pairs function
    Registered the building_style.is_style_available function
    Registered the building_style.get_active_style_ids function
    Registered the building_style.get_active_style_name_id_pairs function
    Registered the building_style.set_active_style_ids function
    Registered the building_style.get_style_name function
    Registered the building_style.get_wall_to_wall_mode function
    Registered the building_style.is_ui_button_checked function
    
    The Building Styles property in the following building exemplar(s) only has building styles that are not present in the UI, the building(s) will use the Maxis styles.
    Available UI styles: 0x2000 (Chicago 1890), 0x2001 (New York 1940), 0x2002 (Houston 1990), 0x2003 (Euro-Contemporary), 0x20A0 (Mediterranean), 0x20A1 (Rural & Far West), 0x20A2 (Art Deco), 0x20A3 (US Suburban), 0x20A5 (Mid-Century Modern), 0x2110 (mattb325), 0x2111 (mattb325 - suburban), 0x2112 (wannglondon).
    
    C:\Users\sebam\Documents\SimCity 4\Plugins\200-residential\wannglondon.medit-bldg-59.dark.1.0.0-1.sc4pac\Medit Flats 59_DN-0x6534284a-0x1c2d4663-0x538d8a99.SC4Desc: Building exemplar 0x6534284A, 0x1C2D4663, 0x538D8A99 only has unsupported style id(s): 0x2004.
    
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=123 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 123, 71, 123] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=123 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 123, 71, 123] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=123 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 123, 71, 123] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=123 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 123, 71, 123] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=122 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 122, 71, 122] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=121 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 121, 71, 121] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=120 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 120, 71, 120] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=120 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 120, 71, 120] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=120 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 120, 71, 120] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=120 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 120, 71, 120] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=122 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 122, 73, 122] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=122 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 122, 73, 122] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=122 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 122, 73, 122] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=122 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 122, 73, 122] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=121 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 121, 73, 121] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=120 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 120, 73, 120] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=120 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 120, 73, 120] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=120 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 120, 73, 120] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=120 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 120, 73, 120] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=123 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 123, 73, 123] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=127 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 127, 71, 127] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=127 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 127, 71, 127] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=127 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 127, 71, 127] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=127 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 127, 71, 127] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=125 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 125, 71, 125] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=124 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 124, 71, 124] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=124 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 124, 71, 124] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=124 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 124, 71, 124] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=124 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 124, 71, 124] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=68 | cellZ=88 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[67, 88, 68, 88] | lot-state=Vacant (4) | slope=0.000000 | score=0.000000
      Existing Lot: id=0xADE6F733 | name=R$2_1x2_JFM_Shotgun_BLU -- Building: id = 0x9C7A393A | exemplar-name = JFM_Shotgun_White_Version 2 | display-name = 10 Stall Street 
    Developer=R$$ | Development-type=Same Size Lot | cellX=68 | cellZ=89 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[67, 89, 68, 89] | lot-state=Vacant (4) | slope=0.000000 | score=0.000000
      Existing Lot: id=0xD8FD4195 | name=R$2_1x2_JFM_AbbyGlen_Green -- Building: id = 0xF884854F | exemplar-name = JFM_AbbyGlen_YLLW_02 | display-name = 670 Grove View Rd
    Developer=R$$ | Development-type=Same Size Lot | cellX=68 | cellZ=90 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[67, 90, 68, 90] | lot-state=Vacant (4) | slope=0.000000 | score=0.000000
      Existing Lot: id=0x1DE59D1C | name=R$2_1x2_JFM_BlueRidge_GRN_01 -- Building: id = 0x9885B0AE | exemplar-name = JFM_BlueRidge_Yellow_01 | display-name = Blue Ridge Homes by JMyers
    Developer=R$$ | Development-type=Same Size Lot | cellX=68 | cellZ=90 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[67, 90, 68, 90] | lot-state=Vacant (4) | slope=0.000000 | score=0.000000
      Existing Lot: id=0x1DE59D1C | name=R$2_1x2_JFM_BlueRidge_GRN_01 -- Building: id = 0x9885B0AE | exemplar-name = JFM_BlueRidge_Yellow_01 | display-name = Blue Ridge Homes by JMyers
    Developer=R$$ | Development-type=Same Size Lot | cellX=68 | cellZ=90 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[67, 90, 68, 90] | lot-state=Vacant (4) | slope=0.000000 | score=0.000000
      Existing Lot: id=0x1DE59D1C | name=R$2_1x2_JFM_BlueRidge_GRN_01 -- Building: id = 0x9885B0AE | exemplar-name = JFM_BlueRidge_Yellow_01 | display-name = Blue Ridge Homes by JMyers
    Developer=R$$ | Development-type=Same Size Lot | cellX=68 | cellZ=90 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[67, 90, 68, 90] | lot-state=Vacant (4) | slope=0.000000 | score=0.000000
      Existing Lot: id=0x1DE59D1C | name=R$2_1x2_JFM_BlueRidge_GRN_01 -- Building: id = 0x9885B0AE | exemplar-name = JFM_BlueRidge_Yellow_01 | display-name = Blue Ridge Homes by JMyers
    Developer=R$$ | Development-type=Lot Aggregation | cellX=68 | cellZ=90 | sizeX=2 | sizeZ=2 | facing=1 | bounds=[67, 89, 68, 90] | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=68 | cellZ=88 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[67, 88, 68, 88] | lot-state=Vacant (4) | slope=0.000000 | score=0.000000
      Existing Lot: id=0xADE6F733 | name=R$2_1x2_JFM_Shotgun_BLU -- Building: id = 0x9C7A393A | exemplar-name = JFM_Shotgun_White_Version 2 | display-name = 10 Stall Street 
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=124 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 124, 73, 124] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=124 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 124, 73, 124] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=124 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 124, 73, 124] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=124 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 124, 73, 124] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=125 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 125, 73, 125] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=125 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 125, 73, 125] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=125 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 125, 73, 125] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=73 | cellZ=125 | sizeX=1 | sizeZ=2 | facing=1 | bounds=[72, 125, 73, 125] | lot-state=Ready (1) | slope=0.000000 | score=1.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=70 | cellZ=90 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[70, 90, 71, 90] | lot-state=Vacant (4) | slope=0.000000 | score=0.000000
      Existing Lot: id=0x1E7E85C0 | name=R$2_1x2_Small Neighborhoods R$13 -- Building: id = 0x3E02C207 | exemplar-name = Small Neighborhoods R$13 | display-name = Building
    Developer=R$$$ | Development-type=Lot Aggregation | cellX=70 | cellZ=117 | sizeX=3 | sizeZ=4 | facing=3 | bounds=[70, 117, 73, 119] | score=8.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=65 | cellZ=61 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[65, 61, 66, 61] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=65 | cellZ=61 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[65, 61, 66, 61] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=65 | cellZ=61 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[65, 61, 66, 61] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    Developer=R$$ | Development-type=Same Size Lot | cellX=65 | cellZ=61 | sizeX=1 | sizeZ=2 | facing=3 | bounds=[65, 61, 66, 61] | lot-state=Ready (1) | slope=0.000000 | score=0.000000
    

    aggregation.jpg.f061da5f99b063265380b25005ef48ca.jpg

    I've also noticed that it's redeveloping some other lots, even though every single building is marked as historical. It could be that they got abandoned though, so I imagine this allows them to be redeveloped.

     


    Visit www.growifier.com for ploppable residentials

    Love playing hearts and other card games? Have a look at www.whisthub.com!

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    2 minutes ago, smf_16 said:

    It could be that they got abandoned though, so I imagine this allows them to be redeveloped.

    This part I can confirm in the vanilla game. The lot will remain historical, but anything can develop there. It'll even bypass NKO.


    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    3 hours ago, smf_16 said:

    I can pretty reliably reproduce it and have included the log below and a screenshot of the situation at that point. You can see where it goes wrong with the R$$$ lot towards the end of the log where it performs an aggregation, even though I've triple checked that I have disabled Lot Aggregation.

    I have no idea what is going on there. I can't get that building to grow in my test city due to the wrong conditions being present, even after I set it to low wealth stage 1. I also confirmed that the assembly code patch appears to be working, as far as I can tell. 

    4 hours ago, CorinaMarie said:

    This part I can confirm in the vanilla game. The lot will remain historical, but anything can develop there. It'll even bypass NKO.

    The TakeOverAbandoned function will bypass historical status, think of it as Maxis pursuing an extremely aggressive urban renewal campaign in the world they created. It may be possible to change that behavior, but I am not sure how useful it would be or if it would risk breaking the simulation in some way. But as this DLL can already be used to break the simulation and has evolved into an 'urban renewal control' project with things like the aggregation/subdivision options, it could be worth adding just as an experiment. I have no idea what to call the option, 'don't demolish abandoned'? 

    Also, an abandoned building by definition won't have any residents to kick out.

    • Like 1

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    3 minutes ago, Null 45 said:

    I can't get that building to grow in my test city due to the wrong conditions being present, even after I set it to low wealth stage 1.

    If you want, I can send you the city in a state where all you have to do to get it to grow is press unpause, together with my sc4pac-plugins.json file so you should be able to reproduce my plugins folder exactly. It was a test city in an empty region without neighbours anyway, so I think that should work.

    6 minutes ago, Null 45 said:

    But as this DLL can already be used to break the simulation and has evolved into an 'urban renewal control' project with things like the aggregation/subdivision options, it could be worth adding just as an experiment. I have no idea what to call the option, 'don't demolish abandoned'? 

    It would sure be a nice to have, because in that case you can choose when to demolish the abandoned buildings and hence control the building style of the replacement buildings. If you don't pay attention now, you can end up with an ugly mix if the replacement buildings were of the wrong building style, though this can be solved by manually deleting the replacement buildings of course. I would call it something like "Disable Automatic Redevelopment".

    • Like 1

    Visit www.growifier.com for ploppable residentials

    Love playing hearts and other card games? Have a look at www.whisthub.com!

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    1 minute ago, smf_16 said:

    If you want, I can send you the city in a state where all you have to do to get it to grow is press unpause, together with my sc4pac-plugins.json file so you should be able to reproduce my plugins folder exactly. It was a test city in an empty region without neighbours anyway, so I think that should work.

    Send it to me by PM.

    2 minutes ago, smf_16 said:

    I would call it something like "Disable Automatic Redevelopment".

    IMO that name would be confusing, as the feature would only affect abandoned buildings, not the automatic RCI redevelopment SC4 uses in other contexts.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
    Currently: Viewing Topic: Simtropolis Returns!
     
    20 hours ago, smf_16 said:

    that allows it to bypass the Disable Lot Aggregation option. I'm happy to file an issue on GitHub if you think this truly is a bug.

    This is similar that happened wih me in this post. :ooh:

    It's been almost 2 years and I haven't been able to do any more tests because of the RL. Time really does fly. :uhm:

    • Like 1
    • Thanks 1

    "Nenhum sucesso no mundo compensa o fracasso no lar." - "No other success can compensate for failure in the home."
    Como fazer da sua família um time de sucesso! - How to make your family a successful team!
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    7 hours ago, Null 45 said:

    I have no idea what to call the option, 'don't demolish abandoned'?

    Maybe Lock Abandoned Sites ? Or Protect Abandoned Properties ? (Personally I believe the current behavior is fine.)

    Long, long ago someone requested a mod which would have abandoned buildings catch on fire and I worked at that for quite a while with limited success. I also had ideas to create a For Sale sign override that would be super tall (like RTMT flags), but never got it finished. (There are two special Maxis For Sale Sign props. One was used on all their residential and one on some of their commercial which only appears when the building is distressed.)

    • Like 2

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    20 hours ago, CorinaMarie said:

    Personally I believe the current behavior is fine.

    So do I, it makes sense why it was designed to behave that way.

    20 hours ago, CorinaMarie said:

    Long, long ago someone requested a mod which would have abandoned buildings catch on fire and I worked at that for quite a while with limited success.

    Do you have a link to that post? I am not sure how that would be any different to the base game behavior, which I expect is to make buildings catch fire at random with the algorithm giving abandoned buildings a greater chance.

    Having a lot randomly catch fire when it gets abandoned could probably be implemented by a DLL, but as I mentioned above I think the base game already does so.

    I managed to find a fix for the bug @smf_16 reported, but I have no idea what caused it. It was the kind of bug that disappeared when I ran a debug version of the DLL or ran the game under a debugger, so for all I know it was caused by my compiler or a subtle timing error that running under the debugger fixed.

    • Like 4

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    6 hours ago, Null 45 said:

    Do you have a link to that post?

    I did find it and it turns out I partially mis-remembered.

    Here's the quote that started it:

    On 12/9/2019 at 10:02 PM, jeffryfisher said:

    I sometimes wish I could cause all vacant buildings to glow bright green (or whatever, like when schools glow), because some buildings do not stand out when they abandon, and I'd like a view that really highlights them for the bulldozer.

    And then I got involved starting here. That thread goes on for a few pages and (if you read thru) you can see as I slowly gain some knowledge about modding dataviews. 


    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     

    Release version 3.6.1, which works around a bug in the lot aggregation/subdivision blocking.

    • Like 4

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Automated Notice Message

    All posts after 1 March, 2026 @ 01:37 GMT were lost in the site crash.

    We've added this message thread divider in every topic across all forums for what were then active threads. (We decided active is if the most recent extant post (from the backup) was on or after 1 January, 2026.)

    This divider serves as notice that the conversation was interrupted. Answers and further discussion which used to be here have been lost. Keep this in mind when replying. Our hope is to rebuild what is missing.


    I am Lab Rat.

    Share this post


    Link to post
    Share on other sites

    Sign In or register to comment...

    To comment in reply, you must be a community member

    Sign In  

    Already have an account? Sign in here.

    Sign In Now

    Create an Account  

    Sign up to join our friendly community. It's easy!  

    Register a New Account


    ×

    Thank You for the Continued Support!

    Simtropolis depends on donations to fund site maintenance costs.
    Without your support, we just would not be in our 24th year online!  You really help make this a great community. *:thumb:

    But we still need your support to stay online. If you're able to, please consider a donation to help us stay up and running. This helps sustain a platform where we can share our community creations for years to come.

    Make a Donation, Get a Gift!

    Expand your city with the best from the Simtropolis Exchange.
    Make a Donation and get one or all three discs today!

    STEX Collections

    By way of a "Thank You" gift, we'd like to send you our STEX Collector's DVD. It's some of the best buildings, lots, maps and mods collected for you over the years. Check out the STEX Collections for more info.

    Each donation helps keep Simtropolis online, open and free!

    Thank you for reading and enjoy the site!

    More About STEX Collections