Skip to content

Commit 0f92db4

Browse files
committed
Make weather more robust
1 parent cb0ea90 commit 0f92db4

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

Brio/Game/World/WeatherService.cs

+14-5
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,20 @@ public bool WeatherOverrideEnabled
3131

3232
public unsafe byte CurrentWeather
3333
{
34-
get => _weatherSystem->TargetWeather;
34+
get
35+
{
36+
var system = (*_weatherSystem);
37+
if(system == null) return 0;
38+
return system->TargetWeather;
39+
}
3540
set
3641
{
37-
_weatherSystem->TargetWeather = value;
38-
_weatherSystem->TransitionTime = DefaultTransitionTime;
42+
var system = (*_weatherSystem);
43+
if(system != null)
44+
{
45+
(*_weatherSystem)->TargetWeather = value;
46+
(*_weatherSystem)->TransitionTime = DefaultTransitionTime;
47+
}
3948
}
4049
}
4150

@@ -44,7 +53,7 @@ public unsafe byte CurrentWeather
4453
private delegate void UpdateTerritoryWeatherDelegate(IntPtr a1, IntPtr a2);
4554
private Hook<UpdateTerritoryWeatherDelegate> _updateTerritoryWeatherHook = null!;
4655

47-
private unsafe WeatherSystem* _weatherSystem;
56+
private unsafe WeatherSystem** _weatherSystem;
4857

4958
private List<Weather> _territoryWeatherTable = new();
5059

@@ -60,7 +69,7 @@ public unsafe WeatherService()
6069
public unsafe override void Start()
6170
{
6271
IntPtr rawWeather = Dalamud.SigScanner.GetStaticAddressFromSig("4C 8B 05 ?? ?? ?? ?? 41 8B 80 ?? ?? ?? ?? C1 E8 02");
63-
_weatherSystem = *(WeatherSystem**)rawWeather;
72+
_weatherSystem = (WeatherSystem**)rawWeather;
6473

6574
UpdateWeathersForCurrentTerritory();
6675

0 commit comments

Comments
 (0)