Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modding requests #3242

Open
yairm210 opened this issue Oct 7, 2020 · 440 comments
Open

Modding requests #3242

yairm210 opened this issue Oct 7, 2020 · 440 comments
Labels

Comments

@yairm210
Copy link
Owner

yairm210 commented Oct 7, 2020

There have been a lot of various requests to extend the modding in various ways.
Usually they're from one person, and have very little effect on the general playerbase, and they're kind of clogging up the issues.

So this is an issue to consolidate all those requests, as comments to this issue.

@GoldenBronze
Copy link
Contributor

  1. Making roads and railroads modifyable - currently, these seem hardcoded. Putting their parameters in TileResources.json and allowing Unciv to handle modded roads and railroads would be extremely beneficial for, say, a mod with several kinds of roads.

When described in the json, roads and railroads could have parameters like "Double movement rate" and "Triple movement rate upon researching [ ]". There's lots of opportunity here.

  1. Allowing terrain-tied resources - currently, resources stay the same if a terrain feature (most commonly Forest and Jungle) is removed. I'd like it if it were possible to set a (in TileResources.json) a resource such that it disappears if the terrain feature it occurs on is removed. Admittedly, this is not present in Civ 5 itself, but it would be extremely helpful to modders like me in putting resources like Cedarwood: I mean, you can't get cedarwood from a tile you've deforested, after all!

A unique for this, maybe "Is removed by [Remove Forest]".

  1. Selective improvement construction: currently, the Roman Legion has the "Can construct roads" unique. It would be great if this unique could be generalised so that it works with any improvement: not only would it make it easy to add the Legion's other ability of constructing forts, it would also be extremely fruitful for modders.

"Can construct [Road], [Fort]".

  1. Tile improvements unique to units: I'd like to be able to define a modded tile improvement as being unique to a non-Worker unit, so that the Worker can't build it.

Maybe a "UniquetoUnit" parameter inside the "uniques": in TileImprovents.json or something similar? This would also allow Oil Wells to be restricted to Workers and Offshore Platforms to be restricted to Work Boats, as in Civ 5, assuming that the "improvement": parameter in TileResources.json can handle more than one improvement.

@GoldenBronze
Copy link
Contributor

  1. Allow terrains, terrain features and resources to be restricted to spawn only on River tiles.

A unique to the effect of "Must be on [River]" or something similar would be great, especially for futureproofing Unciv for Civ 6 (if you eber get to that), and also for modding.

@ravignir
Copy link
Contributor

Here are some ideas for uniques.

"Can not be sold" - for buildings.

"Unlocks at [Era name]" - for buildings and units and improvements (already implemented for Policies).

"Food required for population growth +/- [x]%" - as nation and policy unique (also called civ-wide).

@ravignir
Copy link
Contributor

Just a clarification of what i've meant with the last idea.
Capture+_2020-10-20-16-45-14(1)
A way to interact with this parameter. Maybe call it "City growth rate +/-[value]%"

@ravignir
Copy link
Contributor

ravignir commented Nov 9, 2020

Another suggestions;
Modding unique that makes other policy trees non pickable:
i.e If i pick Piety, I can't pick Rationalism and vice versa;

"Unlocks at [era]" unique for buildings, units;

@Caballero-Arepa
Copy link
Contributor

This is already mentioned on the first comment but: A unique that allows units to build specific tile improvements, like "Can construct [Fort]".
Currently there is only: "can build improvements on tiles" and " Can construct Roads".

@Caballero-Arepa
Copy link
Contributor

A unique that let's you do canals for improvements or tiles. With this, we could make canals (like, suez canal) or make navigable rivers; or even the opposite, as bridges (like the one that ties scotland and ireland).
I imagine the unique could be as: "Acts as [Water]"
How it would is by allowing both land and water units move in such tile normally.

The problem I see with it is that AI would be very dumb to use it but what we care is for the player.

@AdityaMH
Copy link
Contributor

AdityaMH commented Jul 7, 2021

Any wiki tutorial how to mod m̶u̶s̶i̶c̶ sound?

@Caballero-Arepa
Copy link
Contributor

A unique for polices that gives you a free policy, but from a specific tree.

@ajustsomebody
Copy link
Contributor

allow tile filter to contain more than one tile

f.i allow this to work
"Must be next to [Desert]", "[+1 Food, +1 Production, +1 Gold] from [Desert] tiles without [Flood plains, Oasis, Hill] [in this city]"

this is my attempt to only make plain desert tiles get petra bonuses but it completely broke so it gives bonuses to all

@ajustsomebody
Copy link
Contributor

more than 1 techs required for a building
techrequired: "currency, sailing"

@ajustsomebody
Copy link
Contributor

add a property to improvements that is can be build by [unitFilter] so the mods can add more than 1 types of workers. this however should only be the case for worker units that are able to open up select improvements to build window rather than something like legions that have an ability to build only roads

@xlenstra
Copy link
Collaborator

xlenstra commented Aug 2, 2021

add a property to improvements that is can be build by [unitFilter] so the mods can add more than 1 types of workers. this however should only be the case for worker units that are able to open up select improvements to build window rather than something like legions that have an ability to build only roads

This is already implemented the other way around, as you can have the "Can build [improvementFilter] improvements" uniques for units, so this can allow building specific improvements or groups of improvements

@ajustsomebody
Copy link
Contributor

add a property to improvements that is can be build by [unitFilter] so the mods can add more than 1 types of workers. this however should only be the case for worker units that are able to open up select improvements to build window rather than something like legions that have an ability to build only roads

This is already implemented the other way around, as you can have the "Can build [improvementFilter] improvements" uniques for units, so this can allow building specific improvements or groups of improvements

is there a distinction between units than can open up build improvement screen and others? also do you need to do something like this "can build [mine]" "can build [farm] etc or can it directly do can build "[mine,farm,quarry]" etc.

@xlenstra
Copy link
Collaborator

xlenstra commented Aug 3, 2021

add a property to improvements that is can be build by [unitFilter] so the mods can add more than 1 types of workers. this however should only be the case for worker units that are able to open up select improvements to build window rather than something like legions that have an ability to build only roads

This is already implemented the other way around, as you can have the "Can build [improvementFilter] improvements" uniques for units, so this can allow building specific improvements or groups of improvements

is there a distinction between units than can open up build improvement screen and others? also do you need to do something like this "can build [mine]" "can build [farm] etc or can it directly do can build "[mine,farm,quarry]" etc.

Only units that have have the "Can build []" unique can open the "build improvement"-screen. Uniques don't support comma separation, so you need a different unique for each imrpovement

@ajustsomebody
Copy link
Contributor

comma seperation for uniques

@ajustsomebody
Copy link
Contributor

two uniquesets for anything that supports uniques, one for with religion on and one with religion off

like:
monastery(r on) = 2 culture 2 faith from incense/wine
monastery(r off) = 2 culture from incense/wine

or we can just make the game ignore anything about faith or gprop points when religion is disabled

@ajustsomebody
Copy link
Contributor

being able to put decimals in bonuses for instance.

[+0.50 Food] for [tundra] tiles for each adjacent [mountain] tiles [in all cities]
[-0.16 Food] for [tundra] tiles for each adjacent [snow] tiles without [mountain] tiles

for instance when calculating this you do math on each other and remove the decimal at the end of the calculation (or just allow decimals in [stats])
(0.50+0.50+0.50) - (0.32) which is 1.18.
if the value is less than 0 you round it down normally (0 if <50 1 if >50) if it is over 1 just remove the decimals and if it is 1.82 something round it to 2

@ajustsomebody
Copy link
Contributor

ajustsomebody commented Aug 8, 2021

add an option to hide certain uniques from showing up in descriptions like
uniques: "[HIDE] [+1 Gold, +1 Science] from every [grassland] with [jungle]", "[does something that dhows up in description]"

something something:
400Production
womething that shows up in description

@xlenstra
Copy link
Collaborator

xlenstra commented Aug 8, 2021

Use the replacementTextForUniques parameter, most major things have that

@hackedpassword
Copy link

UnitFilter: <Gains an upgrade>

<All [MapUnitFilter] units gain an upgrade>

To be able to award upgrades just as promotions are.

@AceHank
Copy link

AceHank commented Sep 22, 2024

I am once again requesting some uniques,

Unit Trigger Condition
"<upon gaining [promotion] promotion>"
"<upon losing [promotion] promotion>"
"upon defending" and/or please make "upon losing at least x hp" compatible with the "vs unit"

Thank you

@AceHank
Copy link

AceHank commented Sep 28, 2024

I am once again requesting some uniques,

I'm sorry but, because of my misunderstanding, I would like to request:
"upon gaining [status] status"
"upon losing [status] status"

And I don't know if it's a valid request but,
"upon damaging a [mapUnitFilter] unit" to be changed into [combatantFilter] instead. This aims so it can also trigger when damaging City.

Thank you!

@GeneralWadaling
Copy link
Contributor

<in cities with less than [amount] [populationFilter]> might be a good addition for population based conditionals

@GeneralWadaling
Copy link
Contributor

Annnd requesting the unique <for every [populationFilter] [cityFilter]>, for more combinations of population-based uniques.

@hackedpassword
Copy link

A bombing run unique would be cool. Applications beyond bombing runs possible including wide-beam attacks.

Would require start tile, range, destination tile. Path determined, perhaps shown like Connect road. Attack radius of R, where each tile [per path tile] is origin of R. Each tile in R affected once.

<Attack profile Bombing Run with a radius of [Radius]>

Possible evo: Random R option; R+1 linear spread option

@yairm210
Copy link
Owner Author

yairm210 commented Oct 6, 2024

I've been thinking for a long time of tile targetted triggers - i.e. special attacks, but the problem is mainly a UI one, and I don't enjoy UI

@GeneralWadaling
Copy link
Contributor

GeneralWadaling commented Oct 21, 2024

I'd like to ask for uniques that modifies city strength and city health by a flat value, while also accept conditionals
"[amount] city strength [cityFilter]"
"[amount] city health [cityFilter]"

@SpacedOutChicken
Copy link
Contributor

The <upon damaging a [mapUnitFilter] unit> trigger condition doesn't kick in when you damage a city. If it were changed from mapUnitFilter to combatantFilter, it could take effect on dealing damage to cities. Is this kind of change feasible?

@SpacedOutChicken
Copy link
Contributor

A modifier like <on [difficultyLevel] difficulty> would be cool, similar to the <on [speed] game speed> modifier. Just as an example, you could make special units and buildings that are only available to the AI on Deity level, for that extra challenge.

@prod0ad
Copy link

prod0ad commented Nov 7, 2024

A few requests/suggestions, though I'm sure not everything's new about them.

  • Unhardcode "Land units may cross [terrainName] tiles after the first [baseUnitFilter] is earned" from its second part, allow its use with other conditionals.
  • <upon pillaging a [improvementFilter]> (Unit)TriggerCondition.
  • <upon capturing a [mapUnitFilter]> (Unit)TriggerCondition.
  • Allow cities to Rebel under conditions, similarly to "Rebel units may spawn". Could be defined for each Civ with a revoltCiv attribute (Say Civ X has Civ Y as rebels) and/or could be checked (only) for cities with a different original owner. Similarly an equivalent to "Rebel units may spawn" could spawn revoltCiv or originalOwner units.
  • Allow triggers based on Local Happiness in Cities.
  • Population (City and Total) countable.
  • Allow an Any/AnyLand/AnyWater attribute for Tile Edge images. Useful to avoid clone images for say, a generic coastline.
  • Probably my most desired one: Allow cosmetic lists of Names for units per unit, unittype and Civ. Like each unit can have a named officer ( Like: Bob, Spearmen or Bob (Spearmen) ), Leader Units/Generals/Great People could pick names from a Civ-appropriate name pool, etc.

Was multiple leaders per Civ added? I thought I came across that but can't spot it anymore.

@SpacedOutChicken
Copy link
Contributor

I'd like to be able to stack the paradropping unique. If a unit has a unique that lets it paradrop 5 tiles away, and then gets a promotion that lets it drop 3 tiles away, I would like these to add together, giving the unit an 8-tile drop radius.

@yairm210
Copy link
Owner Author

There is no such thing as 'local happiness' in cities, if you're implementing that it would be with citywide resources and then you can use resource conditionals
Any attributes for tile edges already works though? It accepts any tile filter, so "Land" for example works
Population countable has entered the latest version :)
"After first X" as generic conditional is a good idea :) but I see that it's currently badly implemented and I can't be bothered to change that...
Multiple leaders per civ is doable via trickery - Have 2 civs that share a tag, and uniqueTo to that tag, but they'll need different names: "Washington's America" and "Roosevelt's America" for example, and they can appear together in the same map

@SeventhM
Copy link
Collaborator

SeventhM commented Nov 10, 2024

There is no such thing as 'local happiness' in cities

There's no such thing... in Unciv. In Civ 5, most happiness sources are local to that city, and you can't have more local happiness than the city's population

@yairm210
Copy link
Owner Author

I am aware ;)

@AceHank
Copy link

AceHank commented Nov 11, 2024

Two request regarding Events,

<after triggering [event] event> Conditional unique
<upon triggering [event] event> TriggerCondition unique

Thank you!

@yairm210
Copy link
Owner Author

What's your use case for "upon triggering event"? Sounds like something that can be done with event choices

@AceHank
Copy link

AceHank commented Nov 11, 2024

What's your use case for "upon triggering event"? Sounds like something that can be done with event choices

It will be mostly for UnitTriggerable. For example, an event that results in all available units gaining 15 XP, would require This Unit gain 15 XP upon triggering X event, or a malus event that stuns all of my units, This Unit lose 10 Movement upon X event, etc
Maybe there are ways to do it without requiring new said unique, but I don't see it. CMIIW.

@yairm210
Copy link
Owner Author

Checking all units for potential triggers is definitely not something I expected tbh, and I would definitely want to trigger this in another way - like "<for every [unitFilter] unit>" modifier on a trigger

@RealBamboolord
Copy link
Contributor

RealBamboolord commented Nov 12, 2024

  • Allow cities to Rebel under conditions, similarly to "Rebel units may spawn". Could be defined for each Civ with a revoltCiv attribute (Say Civ X has Civ Y as rebels) and/or could be checked (only) for cities with a different original owner. Similarly an equivalent to "Rebel units may spawn" could spawn revoltCiv or originalOwner units.

Yeah a triggerable unique for spawning a revolt would be neat

@prod0ad
Copy link

prod0ad commented Nov 15, 2024

A couple more:

  • could use a CivFilter/unhardcode, and an upon being declared war against variant.
  • Setting city originalOwner and diplomacy things in console.

Population countable has entered the latest version :)
Was this added? Doesn't seem to work.

Any attributes for tile edges already works though? It accepts any tile filter, so "Land" for example works
I thought such wouldn't work. A second example or overall more detailed documentation could help.

Yeah a triggerable unique for spawning a revolt would be neat
Yeah many ways this could be handled, but very desirable anyway.

@prod0ad
Copy link

prod0ad commented Nov 15, 2024

Can't edit: could use a CivFilter/unhardcode, and an upon being declared war against variant.

@prod0ad
Copy link

prod0ad commented Nov 15, 2024

Bah, it doesn't like the less/more signs, it's: upon declaring war with a major Civilization

@SpacedOutChicken
Copy link
Contributor

It would be handy to have "Golden Age points" as a stat that you can add to without adding happiness. As an example, you could have units that earn points towards a Golden Age for every unit they kill.

@prod0ad
Copy link

prod0ad commented Nov 23, 2024

A few more:

  • Starting with (specific) religion/pantheon adopted.
  • Uniques for religions.
  • Conditionals for: "Will not be chosen for new games" (explained bellow).

Since I plan for scenarios with different starting dates, I'd like some Civs include-able but not overloading the game (I've noticed too many Major Civs make the game slow, while City-states are much lighter). Say Athens is a (strong) playable in a 450 BC Scenario, while a (weak) city-state in a 200 BC one.

Noticed that Game Speeds can define the start date, so I tried a hack using them as starting eras (like "Game Speed 400 BC fast", "Game Speed 200 BC slow") with civs changing between major and city state, (or even being completely disabled) by "Will not be chosen for new games - on X Game Speed)", but didn't work:(

An edge case, I know, but if it's not much trouble I'd like it included.

@SpacedOutChicken
Copy link
Contributor

I would like to have events that affect all civilizations at once. Right now, events can only affect one civilization at a time whenever that civilization meets the conditions for the event. I request a way to make an event that affects every civilization in play at once.

@yairm210
Copy link
Owner Author

Not the first time this request is made, sounds simple enough to me

@prod0ad
Copy link

prod0ad commented Nov 26, 2024

Even more:

  • An alternative to unit name lists: A unique for promotions that sets unit name to (its) Promotion name. Those can be granted with background (autochoice) events to add such flavor, instead of implementing a completely new "(great people) names" file/system.
  • Policy conditionals currently display only for branches, not sure if WAD or oversight, but IMO they should be displayable. Hidden from users should be able to replicate current behavior anyway.
  • An "autosettle" console mass command would be timesaving for scenarios. All starting settlers settle in place, instead of removing them and adding 10 or 100 cities one by one. (Should ignore city distance I think).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests