Jump to content
mr_centipede

How to change time of day in a mission?

Recommended Posts

Hi just got ARMA Reforger, currently playing around in Workbench. I got a simple mission running already, but I don't come across anything to use for changing time and weather... Can someone help? Thank you.

Share this post


Link to post
Share on other sites
On 8/17/2022 at 7:48 AM, Blackheart_Six said:

Search for TimeAndWeatherManager.et in resource browser. 

 

 

 

Unfortunately that object is not editable through World Editor v1.1.0.42 anymore 😞

 

And if we drop another TimeAndWeatherManager in some editable layer, the game will be inconsistent, sometimes loading the default weather, sometimes the new weather.

 

I already tested it in a 6 player coop mission and for one of them, the weather was correct. For the others, another weather. Bizarre.

 

Share this post


Link to post
Share on other sites

EDITED: This is still broken in World Editor v1.1.0.42 ]

 

Another way and maybe more "centralized" to check the time and weather of the mission (bugged too) is inside the mission header:

  1. Open Your Reforger Tools;
  2. Select the desired project;
  3. In Enfusion Workbrench's Resource Browser, select your project folder, and then, the Missions folder;
  4. Open the header (<your_missions_name.conf>);
  5. Scrolling the main window until you find the Time and Weather options;
  6. Important: don't forget to select the "Override Scenario Time And Weather" option;

 

Share this post


Link to post
Share on other sites

You have 2 options to edit time and weather.

1. Duplicate the "TimeAndWeatherManager.et", and drag/drop into your world. Then edit.

 

or

 

2. You can add the "TimeAndWeatherHandlerComponent" to the game manager.

 


 

Share this post


Link to post
Share on other sites
On 4/30/2024 at 6:49 AM, Blackheart_Six said:

1. Duplicate the "TimeAndWeatherManager.et", and drag/drop into your world. Then edit.

 

This way is still broken in World Editor v1.1.0.42, @Blackheart_Six

On our server, some players are joining the mission at 12 pm (default time unchangeable of Eden world) meanwhile others joining at 5 am (time configured via the duplicated TimeAndWeatherManager.et on the Hierarchy column). The weather looks okay, but not the daylight time.

 

On 4/30/2024 at 6:49 AM, Blackheart_Six said:

2. You can add the "TimeAndWeatherHandlerComponent" to the game manager.

 

This apparently works flawlessly. I'll stress this feature on our dedicated server with more players and, after that, I come back here to bring the result.

[EDITED: 2024 May 11]: Working as gold in a dedicated server with multiple players seeing the same time and weather.

 

Share this post


Link to post
Share on other sites
On 4/30/2024 at 10:49 AM, Blackheart_Six said:

You can add the "TimeAndWeatherHandlerComponent" to the game manager. 

 

@Blackheart_Six could you expand on how one might do this...? I'm pretty new to this but eager to learn :) 

 

Thanks

 

Trip Hazzard

Share this post


Link to post
Share on other sites

Alternatively @thy_ are you able to provide more details regarding how you implemented this fix?

 

Share this post


Link to post
Share on other sites
9 hours ago, Trip Hazzard said:

Alternatively @thy_ are you able to provide more details regarding how you implemented this fix?

 

 

The entire process is described here:

All you need to do is go there and search for:

  • SCR_TimeAndWeatherHandlerComponent
  • Time And Weather

 

 

Share this post


Link to post
Share on other sites

Great guide! What you've written makes sense when creating a custom mission, but what I am trying to do isn't working. Any thoughts you might have as to why that is would be gratefully received. 

 

I'm using Combat Ops Everon as an example, but I'm trying to create a small mod that will override the default weather settings for any scenario. 

 

I've created a mod called Trip Hazzard - Weather and TOD ( ID : 61A2D4DD2642F958 ) and included a modified GameMode_Plain entity ( class : SCR_BaseGame_Mode ) in to which I have added an SCR_TimeAndWeatherHandlerComponent. I then set the Starting Hours to 7am and ensured that Random Starting Daytime, Random Starting Weather and Allow Header Settings are all UNTICKED. For good measure I have done the same with the GameMode_Base entity and the GameModeSF entity.

 

GameMode_Plain is the game mode entity used in the Coop_CombatOps_Eden world for the prefab named GameMode_CO_Eden ( class : SCR_BaseGame_Mode ). This entity is Enabled, has Starting Hours set to 12am, and Random Starting Daytime, Random Starting Weather and Allow Header Settings are all TICKED.

 

The mission header for Combat Ops Everon ( 26_CombatOpsEveron.conf ) has Override Scenario Time and Weather ticked, Starting Hours set to 8am, and Random Starting Daytime and Random Starting Weather both ticked.

 

Whenever I restart Combat Ops Everon the start time and weather are randomised. 

 

I've tried explicitly setting m_bRandomStartingDaytime 0, m_bRandomStartingWeather 0, and m_bAllowHeaderSettings 0 in all three entities to ensure that they are unticked, and I've tried both duplicating and overriding the entities in my mod, but regardless I can't get the mod to override the mission.

 

I have succeeded with something similar using the AISlot entity. I created a small mod called Trip Hazzard - Trainer ( ID : 6142D78E2E0701F3 ) that only includes the AISlot entity with AI Skill set to Rookie and Perception Factor set to 50%. It works as a training aid for new players or anyone looking for a slightly more relaxed experienced. Testing with a Perception Factor of 0% indicates that it successfully overrides the default ArmaReforger AISlot entity for any unit in any scenario using default settings.

 

Any thoughts as to what I'm missing here?

 

Regards

Share this post


Link to post
Share on other sites
On 6/17/2024 at 12:31 PM, Trip Hazzard said:

 

@Blackheart_Six could you expand on how one might do this...? I'm pretty new to this but eager to learn 🙂

 

Thanks

 

Trip Hazzard

Go to the bottom of the object properties panel and select +add component. Then search "Time", and a list of time components will show. 

Share this post


Link to post
Share on other sites
8 hours ago, Trip Hazzard said:

Great guide! What you've written makes sense when creating a custom mission, but what I am trying to do isn't working. Any thoughts you might have as to why that is would be gratefully received. 

 

I'm using Combat Ops Everon as an example, but I'm trying to create a small mod that will override the default weather settings for any scenario. 

 

I've created a mod called Trip Hazzard - Weather and TOD ( ID : 61A2D4DD2642F958 ) and included a modified GameMode_Plain entity ( class : SCR_BaseGame_Mode ) in to which I have added an SCR_TimeAndWeatherHandlerComponent. I then set the Starting Hours to 7am and ensured that Random Starting Daytime, Random Starting Weather and Allow Header Settings are all UNTICKED. For good measure I have done the same with the GameMode_Base entity and the GameModeSF entity.

 

GameMode_Plain is the game mode entity used in the Coop_CombatOps_Eden world for the prefab named GameMode_CO_Eden ( class : SCR_BaseGame_Mode ). This entity is Enabled, has Starting Hours set to 12am, and Random Starting Daytime, Random Starting Weather and Allow Header Settings are all TICKED.

 

The mission header for Combat Ops Everon ( 26_CombatOpsEveron.conf ) has Override Scenario Time and Weather ticked, Starting Hours set to 8am, and Random Starting Daytime and Random Starting Weather both ticked.

 

Whenever I restart Combat Ops Everon the start time and weather are randomised. 

 

I've tried explicitly setting m_bRandomStartingDaytime 0, m_bRandomStartingWeather 0, and m_bAllowHeaderSettings 0 in all three entities to ensure that they are unticked, and I've tried both duplicating and overriding the entities in my mod, but regardless I can't get the mod to override the mission.

 

I have succeeded with something similar using the AISlot entity. I created a small mod called Trip Hazzard - Trainer ( ID : 6142D78E2E0701F3 ) that only includes the AISlot entity with AI Skill set to Rookie and Perception Factor set to 50%. It works as a training aid for new players or anyone looking for a slightly more relaxed experienced. Testing with a Perception Factor of 0% indicates that it successfully overrides the default ArmaReforger AISlot entity for any unit in any scenario using default settings.

 

Any thoughts as to what I'm missing here?

 

Regards

For one, you cannot have 2 game modes for one scenario. If they allow you to create a mod with a game mod and override the game mode, then you would break the scenario. 

Share this post


Link to post
Share on other sites

I think I worked out where I'm going wrong with this.

 

Note : I am not trying to create multiple game modes in a scenario. What I am trying to do is override the default properties of any parent GameMode entity prefabs in an attempt to control time of day and weather in a scenario. By creating a version of an prefab in my mod I can override the default properties of any existing prefabs in the parent project, but what I can't do is override properties that are explicitly set in an instance of the prefab in the world.

 

Below you can see the object hierarchy for a GameMode_Plain prefab.

 

Untitled.png

  • Starting at the bottom, the ArmaReforger project has two prefabs : GameMode_Base and GameMode_Plain so I assume there's some inheritance happening there from Base to Plain.
  • My mod introduces a GameMode_Plain prefab that overrides the default properties of the prefabs in the ArmaReforger project.
    GameMode_Plain.et (TripHazzardWeatherandTOD) is where I add and set the default properties for the SCR_TimeAndWeatherHandlerComponent component. This component doesn't exist in either of the ArmaReforger GameMode prefabs.
  • My prefab is then overridden by an entity instance. An entity instance is a version of the entity prefab that has been inserted ( instantiated ) in the world. An entity instance will use the default components and properties provided by the underlying prefab hierarchy unless it is configured to override them. In this case, the instance also includes its own SCR_TimeAndWeatherHandlerComponent component and it is configured to override the default properties set by any preceding member of the prefab hierarchy, which is why my mod isn't able to override the weather and time of day settings using this method.

This approach worked well when I applied it to AI Skill and Perception in the SlotAI entity as all of the scenarios that I've used that with have largely or entirely used default settings for SlotAI instances ( as far as I can tell ). If I tried it with a scenario with a SlotAI instance that overrides its default properties, my mod would stop working for that instance. It seems fair to assume that GameMode entity instances are highly likely to be configured with some explicit properties and/or components. As such this approach will not work. I would have to investigate scripting instead to alter the GameMode Properties once the scenario had loaded, or use a loading screen like the one employed by NotSocrates in the Escapists scenario.

 

As it happens, time of day and weather are only really significant for some scenarios that I play online with friends and so I can just use Gamemaster mode to change the settings if the scenario chooses values that we're not happy with. I will continue to investigate a scripted solution as an academic exercise but this solves my immediate problem.

 

Trip

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×