Skip to content

Commit

Permalink
Update v0.9.4
Browse files Browse the repository at this point in the history
New Feature: Object Broken State
- Thermostats break down over time and can break completely
- Thermostats will last between 200-1000 sim hours in automatic mode depending on how often it's on or off
- Broken thermostats can be repaired or replaced, or you can hire someone to repair it
- New textures provide visual cues for broken thermostats: The control buttons will darken and the status ring will show a red X

New Feature: Unbreakable Upgrade
- The Crytacoo Casing upgrade costs 2 common upgrade parts and 2 electronic parts
- Alternatively, you can use 4 eco upgrade parts (if you have the required DLC)
- Deluxe thermostats are unbreakable out of the box and will not need to be upgraded

New Feature: Inverted Operation Mode
- Idea by infallible_stonebraker72 on CurseForge
- This feature inverts the heating and cooling operations of the automatic mode
- It can be used for challenges, hard mode saves, or just for fun
- It is only accessible with testingcheats enabled
- Shift + click the thermostat and select Pack Cheats > Operations > Invert
- To return to normal operation, select Pack Cheats > Operations > Normal

Changes:
- Fixed power usage accuracy (changed from base game default of 9.99 to 10 units of power)
- Thermostats in the AutoOn/Off state now use 0.5 units of power
- Added and implemented cheats pie menu categories
- Reorganized display order for upgrade interactions and cheats
- Energy efficiency now affects the lot's eco footprint
- Added Set Thermostat debug interactions for testing purposes

Bug Fixes:
- Thermostats with the AutoState_On state remain on if the electricity bill is delinquent (Officially fixed in v0.9.3b but that verson was not tracked)

Misc:
- Moved thermostat buffs from Automatic Mode broadcaster to appropriate action loot tuning files for consistency with base game behavior
- Removed unnecessary tests from autmoatic mode broadcaster for code optimization
- Changed names and instance IDs for object definitions, catalog entries, and material states to fit current naming conventions and for clearer exception logging
- Replaced Auto/Off material state lightmap texture with a proper one that does not have any transparency
- Changed instance ID for auto/off lightmap texture
- Replaced redundant upgrade statistic tunings and object states with built-in ones for optimization
- Changed Instance ID of the name string for auto mode unlock cheat
- Changed set thermostat interactions to have one instance instead of two for code optimization
- Updated Readme.md to reflect new version changes
  • Loading branch information
halfwolf102 authored Dec 6, 2023
2 parents 7879104 + 40b7e30 commit a3ebcf0
Show file tree
Hide file tree
Showing 101 changed files with 3,438 additions and 523 deletions.
37 changes: 26 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,48 @@ Downloads available on [Nexus Mods](https://www.nexusmods.com/thesims4/mods/1917

Files and file names are set up for import to Sims 4 Studio
## Description
This mod makes thermostats upgradeable and includes two upgrades:
This mod makes thermostats upgradeable, breakable, and includes three upgrades:

### TEMPERATURE SENSOR
- The temperature sensor allows thermostats to run automatically and set its temperature based on the weather
- It requires level 7 handiness, as well as 2 common upgrades parts, and 3 electronic upgrade parts (or 5 eco upgrade parts if you have Eco Lifestyle)
- It requires level 7 handiness, as well as 2 common upgrades parts, and 3 electronic upgrade parts (or 5 eco upgrade parts if you have Eco Lifestyle).
- This is automatically unlocked for apartments, rental lots, and all lots your household doesn't own.
- Automatic is set by default for all lots your household doesn't own, including rental lots.
- Automatic is set by default for rental lots and all lots your household doesn't own. It is also set by default for the Deluxe thermostat.
- Automatic can be shut off by changing the thermostat to any other setting.


### ENERGY EFFICIENCY MODULE
- The energy efficiency module allows the thermostat to run more efficiently, decreasing energy usage.
- The energy efficiency module allows the thermostat to run more efficiently, decreasing energy usage. It also give the lot a more green eco footprint.
- Energy usage multipliers are 0.8 for heating and 0.75 for cooling, meaning heating uses 80% of its normal power usage and cooling uses 75% of its normal power usage.
- It requires level 5 handiness, as well as 2 common upgrade parts and 1 electronic upgrade part (or 3 eco upgrade parts if you have Eco Lifestyle)
- It requires level 5 handiness, as well as 2 common upgrade parts and 1 electronic upgrade part (or 3 eco upgrade parts if you have Eco Lifestyle).
- This is automatically unlocked for apartments, rental lots, and all lots your household doesn't own.

### CRYTACOO CASING
- The crytacoo casing makes the thermostat unbreakable.
- It requires level 8 handiness, as well as 2 common upgrade parts and 2 electronic upgrade parts (or 4 eco upgrade parts if you have Eco Lifestyle).
- This is automatically unlocked for rental lots and lots your household doesn't own.

### BOTH upgrades can be unlocked with cheats.
Turn testingcheats on (press ctrl + shift + C on your keyboard), shift-click (hold shift and left-click) the thermostat, select the "Pack Cheats..." menu, and click on the upgrade you wish to unlock.
### ALL upgrades can be unlocked with cheats.
Turn testingcheats on (press ctrl + shift + C on your keyboard), shift-click (hold shift and left-click) the thermostat, select "Pack Cheats..." then "Upgrades", and click on the upgrade you want to unlock.


## OTHER FEATURES
### Introducing the EcoDisc 51M-5A Deluxe!
The EcoDisc 51M-5A Deluxe is the latest revision of the popular EcoDisc 51M-5. For just 200 simoleons you get all the same features, plus it comes with a temperature sensor pre-installed and is more energy-efficient than the basic model. (It can be found in the gold colored swatches of the original thermostat)
The EcoDisc 51M-5A Deluxe is the latest revision of the popular EcoDisc 51M-5. For just 200 simoleons you get all the same features, plus it comes with a temperature sensor pre-installed and is more durable and energy-efficient than the basic model. (It can be found in the gold colored swatches of the original thermostat)

### Thermostats can break with use
- Thermostats now break down over time and can become broken like many other electronics.
- Thermostats will last at least 400 sim hours depending on usage. Heating and cooling decreases durability by 0.25% per hour and AutoOn/Off mode decreases it by 0.1% per hour.
- Broken thermostats can be repaired or replaced.

### New thermostat status indicator textures
- Thermostats that are set to automatic mode will have the bottom half of the status indicator show green while the top half still shows whether the thermostat is off, cooling, or heating as usual.
- Thermostats that are broken will show a red "X" in the status indicator and the button controls will darken.

### New thermostat status indicator
Thermostats that are set to automatic mode will have the bottom half of the status indicator show green while the top half still shows whether the thermostat is off, cooling, or heating as usual.
## Inverted Operation Mode
- Idea by infallible_stonebraker72 on CurseForge
- This mode will swap the heating and cooling for automatic mode and can be used for challenges, hard mode saves, or just for fun.
- To enable it, turn testingcheats on (press ctrl + shift + C on your keyboard), shift-click (hold shift and left-click) the thermostat, then select "Pack Cheats...", "Operations", and "Invert".
- To disable it, turn testingcheats on (press ctrl + shift + C on your keyboard), shift-click (hold shift and left-click) the thermostat, then select "Pack Cheats...", "Operations", and "Normal".

## NOTES
- Translations are made using Google Translate and may not be accurate. Please let me know if there are any issues.
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed Source/00B2D882!00000000!8F5AAF32882BDC94.DSTImage.dds
Binary file not shown.
Binary file not shown.
Binary file modified Source/01661233!00000000!2AC174E15A8A2253.Model
Binary file not shown.
Binary file modified Source/01D10F34!00000000!2AC174E15A8A2253.ModelLOD
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="PieMenuCategory" i="pie_menu_category" m="interactions.pie_menu_category" n="Halfwolf102:PieMenuCategory_Cheats_Upgradeable_Thermostat_settings" s="10015729071011407770">
<T n="_collapsible">False</T>
<T n="_display_name">0x47F62B1E<!--Settings--></T>
<T n="_display_priority">5</T>
<T n="_parent">274721<!--pieMenuCategory_Cheats_Main--></T>
</I>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="PieMenuCategory" i="pie_menu_category" m="interactions.pie_menu_category" n="Halfwolf102:PieMenuCategory_Cheats_Upgradeable_Thermostat_upgrades" s="12963585796761045834">
<T n="_collapsible">False</T>
<T n="_display_name">0x73505E23<!--Upgrades--></T>
<T n="_display_priority">9</T>
<T n="_parent">274721<!--pieMenuCategory_Cheats_Main--></T>
</I>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="PieMenuCategory" i="pie_menu_category" m="interactions.pie_menu_category" n="Halfwolf102:PieMenuCategory_Cheats_Upgradeable_Thermostat_operations" s="13778854194702472627">
<T n="_collapsible">False</T>
<T n="_display_name">0x32ED1350<!--Operations--></T>
<T n="_display_priority">1</T>
<T n="_parent">274721<!--pieMenuCategory_Cheats_Main--></T>
</I>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<L n="loot_actions">
<V t="state_change">
<U n="state_change">
<T n="state_value">2610234671876013873<!--Halfwolf102:upgrade_Thermostat_EnergyEfficiency_Completed--></T>
<T n="state_value">233852<!--upgrade_Completed__EcoUpgrades_EnergyEfficientDrive--></T>
<V t="participant" n="subject">
<E n="participant">Object</E>
</V>
Expand All @@ -12,7 +12,7 @@
<V t="statistics">
<V n="statistics" t="statistic_set">
<U n="statistic_set">
<T n="stat">6449505511987140016<!--Halfwolf102:statistic_Object_Upgrade_Thermostat_EnergyEfficiency--></T>
<T n="stat">233874<!--statistic_Object_Upgrade_EcoUpgrades_EnergyEfficientDrive--></T>
<V t="participant" n="subject">
<E n="participant">Object</E>
</V>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="LootActions" i="action" m="interactions.utils.loot" n="Halfwolf102:loot_cheat_Thermostat_LockBrokenness_Unlock" s="1113255378666864450">
<L n="loot_actions">
<V t="state_change">
<U n="state_change">
<T n="state_value">15384<!--Upgrade_Generic_LockBrokenness_Completed--></T>
<V t="participant" n="subject">
<E n="participant">Object</E>
</V>
</U>
</V>
<V t="statistics">
<V n="statistics" t="statistic_set">
<U n="statistic_set">
<T n="stat">16683<!--statistic_Object_Upgrade_GenericLockBrokenness--></T>
<V t="participant" n="subject">
<E n="participant">Object</E>
</V>
<T n="value">100</T>
</U>
</V>
</V>
</L>
</I>
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,13 @@
</U>
</V>
</V>
<V t="buff">
<U n="buff">
<U n="buff">
<T n="buff_type">190657<!--buff_Thermostat_Hidden_GlobalBuff_Medium--></T>
</U>
<E n="subject">AllInstancedSims</E>
</U>
</V>
</L>
</I>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<L n="loot_actions">
<V t="state_change">
<U n="state_change">
<T n="state_value">4076055836307821283<!--Halfwolf102:upgrade_Thermostat_Auto_Completed--></T>
<T n="state_value">275005<!--upgrade_Completed_Generic_Slot1--></T>
<V t="participant" n="subject">
<E n="participant">Object</E>
</V>
Expand All @@ -12,7 +12,7 @@
<V t="statistics">
<V n="statistics" t="statistic_set">
<U n="statistic_set">
<T n="stat">15047392364791015610<!--Halfwolf102:statistic_Object_Upgrade_Thermostat_Auto--></T>
<T n="stat">275009<!--statistic_Object_Upgrade_Generic_Slot1--></T>
<V t="participant" n="subject">
<E n="participant">Object</E>
</V>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="LootActions" i="action" m="interactions.utils.loot" n="Halfwolf102:loot_cheat_Thermostat_Opstate_Inverted" s="9963602332804936780">
<L n="loot_actions">
<V t="state_change">
<U n="state_change">
<T n="state_value">15465489218942015149<!--Halfwolf102:thermostat_opstate_inverted--></T>
<V t="participant" n="subject">
<E n="participant">Object</E>
</V>
</U>
</V>
</L>
</I>
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,13 @@
</U>
</V>
</V>
<V t="buff">
<U n="buff">
<U n="buff">
<T n="buff_type">190656<!--buff_Thermostat_Hidden_GlobalBuff_Low--></T>
</U>
<E n="subject">AllInstancedSims</E>
</U>
</V>
</L>
</I>
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,13 @@
</U>
</V>
</V>
<V t="buff">
<U n="buff">
<U n="buff">
<T n="buff_type">190651<!--buff_Thermostat_Hidden_GlobalBuff_High--></T>
</U>
<E n="subject">AllInstancedSims</E>
</U>
</V>
</L>
</I>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="LootActions" i="action" m="interactions.utils.loot" n="Halfwolf102:loot_cheat_Thermostat_Opstate_Normal" s="16515476325937759562">
<L n="loot_actions">
<V t="state_change">
<U n="state_change">
<T n="state_value">15958921087716997919<!--Halfwolf102:thermostat_opstate_normal--></T>
<V t="participant" n="subject">
<E n="participant">Object</E>
</V>
</U>
</V>
</L>
</I>
Binary file modified Source/220557DA!80000000!00713FA979A09162.English .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!01713FA979A09162.Chinese .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!02713FA979A09162.Chinese .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!03713FA979A09162.Czech .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!04713FA979A09162.Danish .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!05713FA979A09162.Dutch .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!06713FA979A09162.Finnish .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!07713FA979A09162.French .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!08713FA979A09162.German .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!0B713FA979A09162.Italian .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!0C713FA979A09162.Japanese .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!0D713FA979A09162.Korean .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!0E713FA979A09162.Norwegian.StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!0F713FA979A09162.Polish .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!11713FA979A09162.Portuguese .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!12713FA979A09162.Russian .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!13713FA979A09162.Spanish .StringTable
Binary file not shown.
Binary file modified Source/220557DA!80000000!15713FA979A09162.Swedish .StringTable
Binary file not shown.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<SimData version="0x00000101" u="0x0000001A">
<Instances>
<I name="Halfwolf102:PieMenuCategory_Cheats_Upgradeable_Thermostat_settings" schema="PieMenuCategory" type="Object">
<T name="_collapsible">0</T>
<T name="_display_name">0x47F62B1E</T>
<T name="_display_priority">5</T>
<T name="_icon">00000000-00000000-0000000000000000</T>
<T name="_parent">274721</T>
<T name="_special_category">0</T>
<T name="always_show_disabled_interactions">0</T>
<L name="mood_overrides" />
</I>
</Instances>
<Schemas>
<Schema name="PieMenuCategory" schema_hash="0xE2EAA141">
<Columns>
<Column name="_collapsible" type="Boolean" flags="0x00000000" />
<Column name="_display_name" type="LocalizationKey" flags="0x00000000" />
<Column name="_display_priority" type="Int32" flags="0x00000000" />
<Column name="_icon" type="ResourceKey" flags="0x00000000" />
<Column name="_parent" type="TableSetReference" flags="0x00000000" />
<Column name="_special_category" type="Int64" flags="0x00000000" />
<Column name="always_show_disabled_interactions" type="Boolean" flags="0x00000000" />
<Column name="mood_overrides" type="Vector" flags="0x00000000" />
</Columns>
</Schema>
</Schemas>
</SimData>
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<SimData version="0x00000101" u="0x0000001A">
<Instances>
<I name="Halfwolf102:PieMenuCategory_Cheats_Upgradeable_Thermostat_upgrades" schema="PieMenuCategory" type="Object">
<T name="_collapsible">0</T>
<T name="_display_name">0x73505E23</T>
<T name="_display_priority">9</T>
<T name="_icon">00000000-00000000-0000000000000000</T>
<T name="_parent">274721</T>
<T name="_special_category">0</T>
<T name="always_show_disabled_interactions">0</T>
<L name="mood_overrides" />
</I>
</Instances>
<Schemas>
<Schema name="PieMenuCategory" schema_hash="0xE2EAA141">
<Columns>
<Column name="_collapsible" type="Boolean" flags="0x00000000" />
<Column name="_display_name" type="LocalizationKey" flags="0x00000000" />
<Column name="_display_priority" type="Int32" flags="0x00000000" />
<Column name="_icon" type="ResourceKey" flags="0x00000000" />
<Column name="_parent" type="TableSetReference" flags="0x00000000" />
<Column name="_special_category" type="Int64" flags="0x00000000" />
<Column name="always_show_disabled_interactions" type="Boolean" flags="0x00000000" />
<Column name="mood_overrides" type="Vector" flags="0x00000000" />
</Columns>
</Schema>
</Schemas>
</SimData>
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<SimData version="0x00000101" u="0x0000001A">
<Instances>
<I name="Halfwolf102:PieMenuCategory_Cheats_Upgradeable_Thermostat_operations" schema="PieMenuCategory" type="Object">
<T name="_collapsible">0</T>
<T name="_display_name">0x32ED1350</T>
<T name="_display_priority">1</T>
<T name="_icon">00000000-00000000-0000000000000000</T>
<T name="_parent">274721</T>
<T name="_special_category">0</T>
<T name="always_show_disabled_interactions">0</T>
<L name="mood_overrides" />
</I>
</Instances>
<Schemas>
<Schema name="PieMenuCategory" schema_hash="0xE2EAA141">
<Columns>
<Column name="_collapsible" type="Boolean" flags="0x00000000" />
<Column name="_display_name" type="LocalizationKey" flags="0x00000000" />
<Column name="_display_priority" type="Int32" flags="0x00000000" />
<Column name="_icon" type="ResourceKey" flags="0x00000000" />
<Column name="_parent" type="TableSetReference" flags="0x00000000" />
<Column name="_special_category" type="Int64" flags="0x00000000" />
<Column name="always_show_disabled_interactions" type="Boolean" flags="0x00000000" />
<Column name="mood_overrides" type="Vector" flags="0x00000000" />
</Columns>
</Schema>
</Schemas>
</SimData>
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="ObjectStateValue" i="object_state" m="objects.components.state" n="UTMSAutoWarmer" s="845028481" />
<I c="ObjectStateValue" i="object_state" m="objects.components.state" n="Halfwolf102:thermostat_MatState_Broken" s="2904110076" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="ObjectStateValue" i="object_state" m="objects.components.state" n="Halfwolf102:thermostat_MatState_AutoHigh" s="3736178502" />
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="ObjectStateValue" i="object_state" m="objects.components.state" n="UTMSAutoOff" s="4129536882" />
<I c="ObjectStateValue" i="object_state" m="objects.components.state" n="Halfwolf102:thermostat_MatState_AutoLow" s="3751480432" />
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<I c="ObjectStateValue" i="object_state" m="objects.components.state" n="UTMSAutoCooler" s="4075121725" />
<I c="ObjectStateValue" i="object_state" m="objects.components.state" n="Halfwolf102:thermostat_MatState_AutoOff" s="3902331901" />
Loading

0 comments on commit a3ebcf0

Please sign in to comment.