From 83c20836ad16c59f359cbc7321e754d47c00c678 Mon Sep 17 00:00:00 2001 From: koritsa Date: Thu, 4 Jun 2026 20:11:13 +0300 Subject: [PATCH] added test city, added embarrassment loss resolver and sleep for energy loss --- Content/Maps/L_EquipmentPreview.umap | 4 ++-- Content/Test/Maps/L_Apartment.umap | 3 +++ Content/Test/Maps/L_Apartment1.umap | 3 +++ Content/Test/Maps/L_Test.umap | 4 ++-- Content/Test/Maps/L_TestApartment.umap | 3 +++ Content/Test/Maps/L_TestCity.umap | 3 +++ .../0/PV/YB3AXE9JG1TI8MMXOSV2A1.uasset | 3 +++ .../4/PK/YAA8OJKV3WU6ACCEHSF7FI.uasset | 3 +++ .../6/JY/5D51XRJHAWHTQEMXJV02PY.uasset | 3 +++ .../6/MR/1Z59L94W54Y9YGFY2XUWG2.uasset | 3 +++ .../8/0O/SUYDQH1JSG7U970S182D7O.uasset | 3 +++ .../8/9W/WMOHD7EARJZBTRB1Q4DMY8.uasset | 3 +++ .../9/I9/O0L8ET2P9K52NV7C88WKTN.uasset | 3 +++ .../A/CU/Z7Y37IR94KJADUFU650KT5.uasset | 3 +++ .../B/D7/DGC9TF7F16RTVRTU22A4Q4.uasset | 3 +++ .../B/H8/7O5CFJHRGJ2FQRGQOVOEVG.uasset | 3 +++ .../E/B3/19NKZU4DY7X3OH1XCO0ZUX.uasset | 3 +++ .../E/Z4/5C0XHYDHZSCYWRREDWEE77.uasset | 3 +++ .../Global/SessionLossResolver.cpp | 20 ++++++++++++++++++- Source/NakedDesire/Stats/StatsManager.cpp | 11 ++++++++++ Source/NakedDesire/Stats/StatsManager.h | 5 +++++ 21 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 Content/Test/Maps/L_Apartment.umap create mode 100644 Content/Test/Maps/L_Apartment1.umap create mode 100644 Content/Test/Maps/L_TestApartment.umap create mode 100644 Content/Test/Maps/L_TestCity.umap create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/0/PV/YB3AXE9JG1TI8MMXOSV2A1.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/4/PK/YAA8OJKV3WU6ACCEHSF7FI.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/6/JY/5D51XRJHAWHTQEMXJV02PY.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/6/MR/1Z59L94W54Y9YGFY2XUWG2.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/8/0O/SUYDQH1JSG7U970S182D7O.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/8/9W/WMOHD7EARJZBTRB1Q4DMY8.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/9/I9/O0L8ET2P9K52NV7C88WKTN.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/A/CU/Z7Y37IR94KJADUFU650KT5.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/B/D7/DGC9TF7F16RTVRTU22A4Q4.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/B/H8/7O5CFJHRGJ2FQRGQOVOEVG.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/E/B3/19NKZU4DY7X3OH1XCO0ZUX.uasset create mode 100644 Content/__ExternalActors__/Test/Maps/L_TestApartment/E/Z4/5C0XHYDHZSCYWRREDWEE77.uasset diff --git a/Content/Maps/L_EquipmentPreview.umap b/Content/Maps/L_EquipmentPreview.umap index 9e405cf6..0a50d820 100644 --- a/Content/Maps/L_EquipmentPreview.umap +++ b/Content/Maps/L_EquipmentPreview.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6af638e1be56189dde54c1977829145a39bdbc39210a23690377762d17761297 -size 85299 +oid sha256:585d4ba37bf23e9736d19f7dac53ef4709b02fdbb94e81fa8b813ad7f59311dc +size 85451 diff --git a/Content/Test/Maps/L_Apartment.umap b/Content/Test/Maps/L_Apartment.umap new file mode 100644 index 00000000..97897a0f --- /dev/null +++ b/Content/Test/Maps/L_Apartment.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ab5e845d3e40095403675adc19bec3bbe6f488b2daf5c262042ee1373acda50 +size 1319 diff --git a/Content/Test/Maps/L_Apartment1.umap b/Content/Test/Maps/L_Apartment1.umap new file mode 100644 index 00000000..ed7bed58 --- /dev/null +++ b/Content/Test/Maps/L_Apartment1.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84b158cf4095134143f712426b294b778484c4bf732a659f76aa138b05cf83e1 +size 1308 diff --git a/Content/Test/Maps/L_Test.umap b/Content/Test/Maps/L_Test.umap index d8c0b6c2..fb32fba0 100644 --- a/Content/Test/Maps/L_Test.umap +++ b/Content/Test/Maps/L_Test.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d50c0b04fef38f987250ece6f2a9bf5c6e51bec6242b3d95472aedda3bdef300 -size 240234 +oid sha256:7def52c39d53d099a4bda435ed081145342748c25d98094435c1e594bdc5981f +size 211834 diff --git a/Content/Test/Maps/L_TestApartment.umap b/Content/Test/Maps/L_TestApartment.umap new file mode 100644 index 00000000..18961a31 --- /dev/null +++ b/Content/Test/Maps/L_TestApartment.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:936e7682b5bd240080788b193b072fe6655afb54985d85b10b40d5bd5017ac7e +size 8781 diff --git a/Content/Test/Maps/L_TestCity.umap b/Content/Test/Maps/L_TestCity.umap new file mode 100644 index 00000000..e8c2164c --- /dev/null +++ b/Content/Test/Maps/L_TestCity.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fdfc7e604cb74b37f82481c978197391bdfec0cd55527150573b4e52acfffbc +size 295783 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/0/PV/YB3AXE9JG1TI8MMXOSV2A1.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/0/PV/YB3AXE9JG1TI8MMXOSV2A1.uasset new file mode 100644 index 00000000..314e2166 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/0/PV/YB3AXE9JG1TI8MMXOSV2A1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5c90e81afdaca559a3b6dbbbc9e2d5977fc304fdf05d3c052377394a45cfe40 +size 4378 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/4/PK/YAA8OJKV3WU6ACCEHSF7FI.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/4/PK/YAA8OJKV3WU6ACCEHSF7FI.uasset new file mode 100644 index 00000000..309659ce --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/4/PK/YAA8OJKV3WU6ACCEHSF7FI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be99747f1be28630d671227e70c78449a5a855b0b0a4ac5be6bed8a072397187 +size 4378 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/6/JY/5D51XRJHAWHTQEMXJV02PY.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/6/JY/5D51XRJHAWHTQEMXJV02PY.uasset new file mode 100644 index 00000000..58735db0 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/6/JY/5D51XRJHAWHTQEMXJV02PY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2948980ad7c30a0d1cec4c2eca053a9719165bc64085bd47d5fcc401668f5a6 +size 4378 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/6/MR/1Z59L94W54Y9YGFY2XUWG2.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/6/MR/1Z59L94W54Y9YGFY2XUWG2.uasset new file mode 100644 index 00000000..4f87b00e --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/6/MR/1Z59L94W54Y9YGFY2XUWG2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9345224da4d64669ad1cd13d5bc6b2b7daeb0aa7248517d42c1d8581ff2e227a +size 4303 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/8/0O/SUYDQH1JSG7U970S182D7O.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/8/0O/SUYDQH1JSG7U970S182D7O.uasset new file mode 100644 index 00000000..7a93a107 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/8/0O/SUYDQH1JSG7U970S182D7O.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81a5131007eeaa298da43b1a4c20d0c11951dae828b28e8f36caaded6869b61d +size 6143 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/8/9W/WMOHD7EARJZBTRB1Q4DMY8.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/8/9W/WMOHD7EARJZBTRB1Q4DMY8.uasset new file mode 100644 index 00000000..9a81cf21 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/8/9W/WMOHD7EARJZBTRB1Q4DMY8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebe62174b0a8d4c9fee3bb5524762436466a4d1d8deb281763180bd387e3d04e +size 4264 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/9/I9/O0L8ET2P9K52NV7C88WKTN.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/9/I9/O0L8ET2P9K52NV7C88WKTN.uasset new file mode 100644 index 00000000..4156ac64 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/9/I9/O0L8ET2P9K52NV7C88WKTN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5936746fae1d61559c71dc7c7a7abaa8ba92ab03222ac6819c265cf6fb38663 +size 4378 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/A/CU/Z7Y37IR94KJADUFU650KT5.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/A/CU/Z7Y37IR94KJADUFU650KT5.uasset new file mode 100644 index 00000000..7731fd73 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/A/CU/Z7Y37IR94KJADUFU650KT5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a58511e7fde0c3e18dce4165ed2fa2b0fae99c6670c3516f1ce1125ad1c64990 +size 3724 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/B/D7/DGC9TF7F16RTVRTU22A4Q4.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/B/D7/DGC9TF7F16RTVRTU22A4Q4.uasset new file mode 100644 index 00000000..74183e18 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/B/D7/DGC9TF7F16RTVRTU22A4Q4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7cca09fca423382e2bdb776b1c7cbe189880460eaaea77715b47b746ca8faf8 +size 4057 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/B/H8/7O5CFJHRGJ2FQRGQOVOEVG.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/B/H8/7O5CFJHRGJ2FQRGQOVOEVG.uasset new file mode 100644 index 00000000..34e1919d --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/B/H8/7O5CFJHRGJ2FQRGQOVOEVG.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5081968c5f19144456f5584c60262cd2f0381726ad557818512c329aa6ba4b0 +size 4225 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/E/B3/19NKZU4DY7X3OH1XCO0ZUX.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/E/B3/19NKZU4DY7X3OH1XCO0ZUX.uasset new file mode 100644 index 00000000..744e3780 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/E/B3/19NKZU4DY7X3OH1XCO0ZUX.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28b43a20df5b0b4276fec9e9810cf9a2f4b166639c80d863b4c3b621e0a094b9 +size 4264 diff --git a/Content/__ExternalActors__/Test/Maps/L_TestApartment/E/Z4/5C0XHYDHZSCYWRREDWEE77.uasset b/Content/__ExternalActors__/Test/Maps/L_TestApartment/E/Z4/5C0XHYDHZSCYWRREDWEE77.uasset new file mode 100644 index 00000000..ddf755f9 --- /dev/null +++ b/Content/__ExternalActors__/Test/Maps/L_TestApartment/E/Z4/5C0XHYDHZSCYWRREDWEE77.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7a01df0dca737f101d429885c7807bfd4fb9f7c6539e3b92718e3d34f7142bf +size 4264 diff --git a/Source/NakedDesire/Global/SessionLossResolver.cpp b/Source/NakedDesire/Global/SessionLossResolver.cpp index 1512920f..7ca2618c 100644 --- a/Source/NakedDesire/Global/SessionLossResolver.cpp +++ b/Source/NakedDesire/Global/SessionLossResolver.cpp @@ -10,12 +10,15 @@ #include "LossPresentationConfig.h" #include "MovieSceneSequencePlaybackSettings.h" #include "NakedDesireGameInstance.h" +#include "TimeOfDaySubsystem.h" #include "GameFramework/Character.h" #include "GameFramework/CharacterMovementComponent.h" #include "GameFramework/PlayerStart.h" #include "Kismet/GameplayStatics.h" #include "NakedDesire/Clothing/ClothingItemInstance.h" #include "NakedDesire/Interactables/ItemPickup.h" +#include "NakedDesire/Player/NakedDesireCharacter.h" +#include "NakedDesire/Stats/StatsManager.h" #include "NakedDesire/SaveGame/GlobalSaveGameData.h" #include "NakedDesire/SaveGame/SaveSubsystem.h" @@ -58,15 +61,21 @@ void USessionLossResolver::ResolveLoss(ESessionLossCause Cause) case ESessionLossCause::EmbarrassmentMax: // Fade to apartment with no extra cost — no time skip, money, or rep hit. + LoseAllWorldClothing(); break; case ESessionLossCause::EnergyZero: // Forced sleep cycle: everything left outside the apartment is guaranteed lost. - LoseAllWorldClothing(); + if (UTimeOfDaySubsystem* Time = GetWorld()->GetSubsystem()) + { + Time->Sleep(); + } + ResolveSleepLoss(); break; case ESessionLossCause::PoliceCapture: { + LoseAllWorldClothing(); UGlobalSaveGameData* Save = GetSave(); if (Save && Save->Money >= PoliceCaptureMoneyPenalty) { @@ -246,6 +255,15 @@ void USessionLossResolver::TeleportPlayerHome() Movement->StopMovementImmediately(); } } + + // A new day starts at home: clear embarrassment and refill energy / stamina (§4.4). + if (const ANakedDesireCharacter* Character = Cast(PlayerPawn)) + { + if (UStatsManager* Stats = Character->StatsManager) + { + Stats->ResetStats(); + } + } } void USessionLossResolver::Autosave() const diff --git a/Source/NakedDesire/Stats/StatsManager.cpp b/Source/NakedDesire/Stats/StatsManager.cpp index faecc4a2..41ea6a74 100644 --- a/Source/NakedDesire/Stats/StatsManager.cpp +++ b/Source/NakedDesire/Stats/StatsManager.cpp @@ -160,3 +160,14 @@ void UStatsManager::RestoreEnergy() EnergyUpdate.Broadcast(Energy, MaxEnergy); } +void UStatsManager::ResetStats() +{ + Embarrassment = 0.0f; + Energy = MaxEnergy; + Stamina = MaxStamina; + + EmbarrassmentUpdate.Broadcast(Embarrassment, MaxEmbarrassment); + StaminaUpdate.Broadcast(Stamina, MaxStamina); + EnergyUpdate.Broadcast(Energy, MaxEnergy); +} + diff --git a/Source/NakedDesire/Stats/StatsManager.h b/Source/NakedDesire/Stats/StatsManager.h index 3c9cf5e6..50891f7f 100644 --- a/Source/NakedDesire/Stats/StatsManager.h +++ b/Source/NakedDesire/Stats/StatsManager.h @@ -65,6 +65,11 @@ public: void DecreaseEnergy(float Amount); void RestoreEnergy(); + // Restore every attribute to its full / baseline value (Embarrassment cleared, Energy and + // Stamina refilled). Called when the player is sent home after a session loss (GDD §4.4). + UFUNCTION(BlueprintCallable) + void ResetStats(); + UPROPERTY(BlueprintAssignable) FAttributeUpdateSignature EmbarrassmentUpdate;