the Sim Settlements forums!

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Fixed warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan

J.C. Hamlin

New Member
Messages
3
After upgrading to Sim Settlements from 2.x to 3.x (I'm on 3.1.1 now, and running no expansions, just the base mod) my Papyrus.0.Log is littered with warnings of some object trying to inject Property fRequiredSupplyMultiplier and PrimaryWorkshopResourceProvided into various SimSettlements scripts. I'm a mod developer, so having to look around all these issues while looking for the ones I care about is problematic. Is there a way to get rid of these issues from the log? I know I could try the nuclear option (uninstalling Sim Settlements, load a save, letting all my sim communities go away, saving, and then reinstalling and starting over). But is there a better way?

Code:
[02/01/2018 - 10:22:49AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00350D) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:49AM] warning: Property PrimaryWorkshopResourceProvided on script simsettlements:simbuildingplan attached to  (0C006203) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:49AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5AF) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:49AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00BA8F) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property PrimaryWorkshopResourceProvided on script simsettlements:simbuildingplan attached to  (0C00A81D) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B5) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B4) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B7) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B6) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00E6E2) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C8) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C9) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property PrimaryWorkshopResourceProvided on script simsettlements:simbuildingplan attached to  (0C00A81A) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5BC) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5BA) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C2) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property PrimaryWorkshopResourceProvided on script simsettlements:simbuildingplan attached to  (0C00A81:cool: cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C1) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C0) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5BD) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5A:cool: cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5AE) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B2) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B1) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B0) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5BE) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C3) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B3) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B:cool: cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C5) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C4) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5BF) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00DF16) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C6) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5C7) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property PrimaryWorkshopResourceProvided on script simsettlements:simbuildingplan attached to  (0C00620F) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5A8) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5A9) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B9) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5B8) cannot be initialized because the script no longer contains that property
[02/01/2018 - 10:22:50AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to  (0C00D5AC) cannot be initialized because the script no longer contains that property
 
Last edited:
You want a way to toggle debug info from Sim Settlements off? Is that right?
This is of course a question for @kinggath.

In the meantime, a workaround could be to use Notepad++ for inspecting the logs. If set-up for papyrus scripting, it's very good at detecting keywords. So if you have an unique identifier in your debug output, like "simsettlements" in the above dump, then Notepad++ will mark all occurrences of it when you select that indentifier/keyword in the log file. Thus making it easy to spot yours.
 
The only way to clear those is to clean save the mod out of the save. Those warnings are generated by the engine.
 
If your goal is to make it easier to find your own debug information, have you worked with Debug.TraceUser? You can set up a separate log file to dump only your own debug messages - makes it much less of a hassle to deal with all of the garbage the game prints out.
 
The only way to clear those is to clean save the mod out of the save. Those warnings are generated by the engine.

Thanks for the super-fast reply! So, if I go the route to nuke all my settlements and start over (by uninstalling and making a save without the mod, and then reinstalling), is there a way to quickly restore buildings and upgrades without having to wait for them to be available to upgrade? I was looking for information on how long it takes things to be ready for upgrade, and/or a way to fast-track them through the upgrade process, but couldn't find information on either topic. How long does it take for a level 1 building to be ready to upgrade to level 2? And to level 3? And is there a way to speed it up so I can try to get my settlements restored quicker?

Also, I did some more digging. These are not related to my save. Even on a clean save these log lines appeared. These are actual issues with SimSettlements.esm. Let's look at this one for example:

[02/01/2018 - 10:22:49AM] warning: Property fRequiredSupplyMultiplier on script simsettlements:cityplan attached to (0C00350D) cannot be initialized because the script no longer contains that property

When I examine SimSettlements.esm record referenced by this log line kgSIM_ScrapPlan_Sanctuary "Sanctuary Hills Scrap Plan" [MISC:0C00350D] in FO4Edit, and look at its VMAD record, I see that the first script it defines is SimSettlements:CityPlan, and the first property it has declared in the script is fRequiredSupplyMultiplier, Float, Edited, 1.000000. And when I look at the decompiled CityPlan.psc and examine the script ScriptName SimSettlements:CityPlan extends MiscObject, there is no property named fRequiredSupplyMultiplier defined. So, the ESM still defines a property in the VMAD section of the MISC record, but the script source itself does not have that property. When the game engine processes the MISC record and tries to inject the property fRequiredSupplyMultiplier into the script SimSettlements:CityPlan it fails because the script does not define that property, and the engine logs out that warning into the Papyrus.0.Log. I repeated the problem with a handful of the log entries, and they all appear to have the same root cause: variables were removed from the psc files, but were not also removed from the .esm.

I had trouble trying to find a way to delete a script property in the CreationKit UI. It lets you add and edit properties, but I couldn't find any option to delete. You may have to edit the VMAD records in FO4Edit and remove them there. The IDs and property names logged out by the Papyrus.0.Log make it pretty easy to jump right to them by ID in FO4Edit and remove them. I was able to do it in about 5 minutes, and indeed all the log warnings are now gone from my Papyrus.0.Log. So, that definitely is the fix. Maybe you can fix this in the next update of SimSettlements?
 
Last edited:
You want a way to toggle debug info from Sim Settlements off? Is that right? This is of course a question for @kinggath. In the meantime, a workaround could be to use Notepad++ for inspecting the logs. If set-up for papyrus scripting, it's very good at detecting keywords. So if you have an unique identifier in your debug output, like "simsettlements" in the above dump, then Notepad++ will mark all occurrences of it when you select that indentifier/keyword in the log file. Thus making it easy to spot yours.

I don't want to turn of the SimSettlements debugging off, rather, I'm actually seeing these as real SimSettlements issues (see my previous post), that if fixed, will make the issue go away. I fixed them in my local copy by removing the injected variables from the offending VMAD records in SimSettlements.esm. I'm hoping @kinggath will do the same in the next version of SimSettlements since it only took about 5 minutes for me to manually make the fix with FO4Edit.

And thanks for the tip on Notepad++. I've setup both Sublime Text 3 and Notepad++ for Papyrus scripting using the instructions on the CreationKit wiki. There are sections in both the fallout4 and the base version of the CreationKit wiki, and if you follow both sets of instructions you get a pretty good environment in both editors. I think Sublime Text 3 has a bit better integration with the compiler and a bit better completion capabilities. Do you have a link on setting up Notepad++ for log monitoring with keyword highlighting?

If your goal is to make it easier to find your own debug information, have you worked with Debug.TraceUser()? You can set up a separate log file to dump only your own debug messages - makes it much less of a hassle to deal with all of the garbage the game prints out.

With the exception of the SimSettlements warnings, my Papyrus.0.Log is actually very clean. I use both Debug.OpenUserLog() and Debug.TraceUser(), but that comes with two problems: your exception stack traces don't go to your user log they end up in the Papyrus.0.Log, so you lose the context of the exception without merging the two logs together by timestamp. As well, all of the other highly useful Debug.* commands like Debug.DumpEventRegistrations(self) do not have a User variant. Too bad that Debug.OpenUserLog() doesn't just send all the normal Debug.* commands to the user log, and also send exceptions from your script into the user log as well. But that's why I use both logs. The version I ship only writes to the UserLog, but while I'm in development, I also write to the Papyrus.0.Log because it makes it easier to debug seeing the output from the other Debug.* functions and exception traces mixed in with my script's other logs. For those of you Papyrus scripters that are interested, here are the functions I use for logging:

Code:
bool Function InDevelopmentMode() DebugOnly
    return False
EndFunction

Function OpenLog() DebugOnly
    Debug.OpenUserLog("TaggingAssistant")
EndFunction

Function DisplayDebugMessage(string asMessage) DebugOnly
    LogMessage(asMessage, 0)
    If (InDevelopmentMode())
        Debug.Notification(asMessage)
    EndIf
EndFunction

Function LogMessage(string asMessage, int aiSeverity = 0) DebugOnly
    If (InDevelopmentMode())
        Debug.Trace(self + ": " + asMessage, aiSeverity)
    EndIf
    Debug.TraceUser("TaggingAssistant", self + ": " + asMessage, aiSeverity);
EndFunction

Function LogInfo(string asMessage) DebugOnly
    LogMessage(asMessage, 0)
EndFunction

Function LogWarning(string asMessage) DebugOnly
    LogMessage(asMessage, 1)
EndFunction

Function LogError(string asMessage) DebugOnly
    LogMessage(asMessage, 2)
EndFunction
 
Last edited:
Well that took way too long! I finally realized these were on the Scrap Plans, not the City Plans....
 
Top