yairm210 / Unciv

Open-source Android/Desktop remake of Civ V
Mozilla Public License 2.0
8.26k stars 1.55k forks source link

Add Situation Feature from Stellaris #11691

Open AutumnPizazz opened 2 months ago

AutumnPizazz commented 2 months ago

Before creating

Problem Description

Inspired by the Stellaris game, I would like to add a Situation feature.

  1. Add a new Situations.json file to define Situations.
  2. The Situation is represented as a long integer, constrained by maxSituationPoints and minSituationPoints.
  3. Situations are categorized into national and global, determined by the isNationalAndNotGlobal constraint (Boolean value).
  4. Add trigger-based unique, such as "Change [±amount] points for [SituationName]".
  5. Add a new template for the overview button to display Situations, with an option to change the display to the world screen in the settings. I believe Situations are different from Resources, at least for players who are not familiar with the game. PLEASE! PLEASE! PLEASE!

Related Issue Links

No response

Desired Solution

See above.

Alternative Approaches

See above.

Additional Context

No response

AutumnPizazz commented 2 months ago

It's about #3242.

yairm210 commented 2 months ago

I really have no idea what you're even talking about. National situation sounds 100% like stackable resources to me, so far, global sounds like a third level of resource (so they'll be city-civ-global resources, e.g. Pollution / global warming / alien contact)

Can you give an example of a Situation?

AutumnPizazz commented 2 months ago

like this:

_[ { "name":"example_situation1", "type":"global",//only available for "global", "national" and "urban" "Range":[-100,200], "uniques":[ "Nullifies [Science] [in all cities] <when below [0] [example_situation1]>", "Nullifies [Culture] [in all cities] <when below [0] [example_situation1]>", "[+1 Production] [in all cities] <when between [0] and [100] [example_situation1]>", "[+50]% [Science] <when above [100] [example_situation1]>", "[+50]% [Culture] <when above [100] [example_situation1]>", "Change [+1] [example_situation1] <when above [0] [Happiness]>", "Change [-1] [example_situation1] <upon being defeated a [Warrior] unit>", "Heal this unit by [50] HP <by changing [-10] [examplesituation1]>",//this should be in Units.json ] } ]

BUT what I wanna emphasize is to 'Add a new template for the overview button to display Situations, with an option to change the display to the world screen in the settings.'

yairm210 commented 2 months ago

Okay, then yeah, this is really just another scoped resource The only new "fields" would be the range, and that can be within the unique defining the resource as a "situation" or however we'd want to call this

The advantages of not creating a new file are numerous:

Regarding UI, that'll need special attention any way we decide to save the data, so doesn't make much of a difference

SomeTroglodyte commented 2 months ago

Whut? I have no interest in commercial games not available DRM- and Spyware-free... Oh wait, Stellaris is free - though I see no Situations in its description...

AutumnPizazz commented 2 months ago

Not stellarium, but Paradox's Stellaris It's a game like Civ5, which means they have many similar features, like Tradition for Policy, Habitable Planet for City, Monthly Settlements for Turn. I have just played it for one month on steam and wanna make a mod to recurrent it in Unciv. ❛‿˂̵✧

SomeTroglodyte commented 2 months ago

I know, I've looked it up, so I knew about "commercial games not available DRM- and Spyware-free..." - then came the joke. Since steam starts out with fraud - sudo apt install steam DOESNT install steam but a downloader (that then refuses to respect privacy protections and fails)... Will continue to prefer Endless Sky to it. Or Master of Orion II.