Miscellaneous wishlist...

What would you like to see in Freeciv? Do you have a good idea what should be improved or how?
Akechi
Posts: 34
Joined: Thu Dec 07, 2017 12:17 pm

Miscellaneous wishlist...

Postby Akechi » Fri Sep 07, 2018 2:10 pm

Since various ideas are written in this forum, so I write some also...

01. Attack_Bonus reference to attacker tile, defender unit type
..... make opposite side of Defend_Bonus.
..... ...or unit type stays attacker, to allow like: if Archers on Hills, then gets +50% Attack_Bonus.
02. Adjustable minimum healing in city setting: Min_City_Healing_Mod_Pct
..... current total healing rate in city is 1/3 (city) + 1/10 (fortified healing) + 1/10 (natural healing) = about 53.33% if land unit fortified. I think it is high...
..... e.g. minimum hp healed in city = (max hp * (100 + Min_City_Healing_Mod_Pct)) / (3 * 100)
03. CanNotNaturalHealing and CanNotFortifiedHealing unit flag (or effect? to have more flexibility) to prevent natural healing / fortified healing
04. Changeable quadratic part of hurrying production / upgrade cost setting: Unit_Buy_Cost_Quad_Mod_Pmd, Upgrade_Price_Quad_Mod_Pmd
..... unit buying cost is quadratic (it is civ1/2 rule), so if unit shield cost is higher, gold cost infration occurs...
..... e.g. unit buying cost = 2 * missing + ((double)missing * missing) * (10000 + Unit_Buy_Cost_Quad_Mod_Pmd) / (20 * 10000)
05. CityState requirements: Celebrating, Happy, Content (=not Celebrating, Happy, Unhappy), Unhappy, WasCelebrating (rapture is 1+), WasHappy (was_happy is true), WasContent (not WasCelebrating, WasHappy, WasUnhappy), WasUnhappy (anarchy is 1+)
..... e.g. if CityState is Happy, then gets +2 Unit_Recover, +2 History.
..... e.g. if CityState is WasHappy, then gets +10% Defend_Bonus.
06. Minimum happiness surplus requirements (Happy citizens - Unhappy citizens - 2 * Angry citizens)
..... e.g. if happiness surplus is 1 or more, then gets +1 Unit_Recover, +1 History.
07. Minimum trade allocation rate to gold, science, luxury requirements
..... e.g. if rate of luxury is 10% or more, then gets +1 Make_Content.
08. Additional variable getter and/or setter lua functions
..... e.g. player's government, each trade allocation rate, number of tech known, current science point, science point needed to acquire researching technology, unit's hp, mp, fuel, veteran level, moved flag (related to natural healing), activity, unit class, city's info(output, surplus, citizens nationality, etc.), tile's owner
09. Additional lua signals
..... e.g. when government changes, global warming occurs, nuclear winter occurs, spaceship launched, terrain changed, pillage completed
10. Changeable radius of nuclear blast (use bonuses, effect, firepower or other ideas) and Nuke_Proof effect
..... e.g. unit "Early Nuclear" has radius 0 (target tile only), unit "Late Nuclear" has radius 1 (3x3), unit "Tactical Thermonuclear" has radius 2 (5x5), etc.
11. Border expanding setting: population, culture, like a city vision effect or other ideas
12. Ruleset controls handicap of each AI level setting
13. Ruleset (or server option like contactturns?) controls ceasefire/armistice duration setting
14. Changeable civilization score weight
..... e.g. Each Great Wonder worth 20 points.
15. Adjust shield returning for disband damaged unit in city: return (shield cost * current hit points) / (2 * maximum hit points) shields
..... e.g. if 10hp catapult is now only 3hp and try to disband, these unit calculated by 3/10 shield cost.
..... (then (40 * 3) / (2 * 10) = 6 shields return)
..... (shouldn't affect upgrade cost...because hp ratio are kept)
16. Rendered mp decrease if transported: lose (max mp of transported unit) * (movement cost of transporter) / (max mp of transporter unit) mp (round up to minimum fragment)
..... to prevent ship hopping, or to fix time twisting.
..... e.g. if 1mp warriors transported by 5mp transport and transport moves ocean, transported warriors mp also decrease by 1*1/5 mp.
..... e.g. if 3mp armor transported by 4mp galleon and galleon moves ocean, transported armor mp also decrease by 3*1/4 mp.
17. Tired movement (movement version of tired attack...)
..... e.g. if 1mp warriors moved to 3mp cost mountain, then warriors need rest 2 more turns to reactivate.
..... e.g. if 2mp horsemen moved to 3mp cost mountain, then horsemen have only 1mp next turn, and if moved to another mountain tile, then horsemen need rest 1 more turn to reactivate.
..... Issue: it will cause problem in path finding...
18. Save food overflow and underflow in population grow or starve setting
..... e.g. if city grows at 31/30 foodbox and hasn't Granary, new foodbox is 1/40.
..... e.g. if city grows at 31/30 foodbox and has Granary, new foodbox is 21/40.
..... e.g. if city starves at -2/30 foodbox and has Granary, new foodbox is 9/20. (because foodbox needs -1 to starve so -2 means 1 less than normal starve...)
..... Issue: if new foodbox is equal or above maximum, or below 0 after city grow or starve, what happens? To prevent, limit new foodbox at maximum-1 and 0?
19. Part foodbox resetting in population grow or starve
..... In my memory, Civ3's Granary is only applicable in city growth.
..... e.g. if city grows with Granary, then 50% of foodbox saved, but if city starves, save nothing.
..... e.g. if city starves with Emergency Granary(?), then 50% of foodbox saved, but if city grows, save nothing.

15, 16, 17, 18 should be switchable (ruleset or server options?) to maintain current behavior...

Lachu
Elite
Posts: 421
Joined: Sat May 04, 2013 2:19 pm

Re: Miscellaneous wishlist...

Postby Lachu » Sat Sep 08, 2018 12:28 pm

I read about tired movement and decided that's idea about tired healing would be great, so unit will receive heal based on moved points it ends in previous turn.

nef
Hardened
Posts: 198
Joined: Mon Jun 25, 2018 5:01 pm

Re: Miscellaneous wishlist...

Postby nef » Mon Sep 10, 2018 3:22 pm

12. I would like to see all AI cheats/hobbles softcoded.

13. Changeable dipl periods. I would like to also see this available to the player i.e. one could negotiate the period. Also offer the option (to players) to extend the period. (With ceasefire you have to wait until it expires before you can negotiate a renewal)

16. MP decrease if transported. Long overdue. Would fix a lot of exploits. Forget about Civ * compliance. Exploits should be done away with.

17. Tired move. The concept I had considered was to simply maintain a move deficit. That is a 3mp move costs 3mp. A unit can move only if its current mp is >0. Each turn it recovers mp according to its max mp (and of course can never have more than this). All up I would not think this too difficult for path finding (probably easier in fact - one just adds up all the mp required). This would obviously need to be an option since it is non compliant.

19. Foodbox. My recollection of Civ I is that food does not magically appear in the foodbox when the city starves. This issue has been discussed before. Some irony since "disasters" new to 2.5 identify these as independent effects (consequences). Perhaps this suggests that more disasters (like starvation) should be softcoded as a "disaster". Same applies to plague vs pestilence. Additional reqs vector predicates would do this in a flash ?!?

Final point: current syntax is not so good on the parametric predicates relating to parametric effects. minyear, minsize (city) effects can get rather ugly, perhaps some rudimentary arithmetic is in order.

meme
Posts: 11
Joined: Wed Jan 31, 2018 2:38 pm

Re: Miscellaneous wishlist...

Postby meme » Tue Sep 11, 2018 2:49 am

16. Soldier are tired from a boat trip ; that's what happened on 6.6.1944.
Only because too windy and too much breakfast.
Easy way to stop cheating is to lose all moving points of a unit went transfered to a second boat.
Or even worse ; leave land move as it is (moving on land ; loading ; or boat to boat)
But give land units (or flying units) a different moving score on boat ( 3 boat-moves on trireme , 4 galleon , 5 transport/carrier) so that moving along with a boat will cost to loaded units boat-moves.
Any unit with no more boat-moves will still have its land moves but no boat will be able to transport it.

programming : Losing all move when transfered to a second boat seems easier to code but cheating is still possible as you can move with two different boat (don't need moves to defend a city OR sending canons to a far away enemy island with a city of your own)
If someone wants to code the second option (Hahaha la bonne blague) :
Be carefull that a unit that used 3 boat-moves on a trireme will have only one extra boat-move after transfered to a galleon
Be carefull not to mixe up boat-moves and see-moves ; flying units can spend flying-moves over see and can be carried (using boat-moves)

sveinung
Elite
Posts: 491
Joined: Wed Feb 20, 2013 4:50 pm

Re: Miscellaneous wishlist...

Postby sveinung » Fri May 22, 2020 9:45 pm

meme wrote:Easy way to stop cheating is to lose all moving points of a unit went transfered to a second boat.


That would require detecting the boat to boat transfer.

You can currently achieve it in 3.1 by sacrificing one of the actions "Transport Board" (enter a transport at the same tile) or "Transport Embark" (enter a transport at an adjacent tile). Use the Action_Success_Actor_Move_Cost effect to take all movement from a unit performing the sacrificed action. Use action enablers to forbid doing the other action while the actor unit already is transported.

With generalized actions (or fake generalization of "Transport Board" and/or "Transport Embark") you could use one action version for boat to boat detection and move removal and leave the other as normal. Head over to Feature #848708 and request it for the action(s) you would need it for if you are planning to do this in a real ruleset for 3.1.

sveinung
Elite
Posts: 491
Joined: Wed Feb 20, 2013 4:50 pm

Re: Miscellaneous wishlist...

Postby sveinung » Fri May 22, 2020 10:21 pm

Akechi wrote:08. Additional variable getter and/or setter lua functions
..... e.g. player's government, each trade allocation rate, number of tech known, current science point, science point needed to acquire researching technology, unit's hp, mp, fuel, veteran level, moved flag (related to natural healing), activity, unit class, city's info(output, surplus, citizens nationality, etc.), tile's owner

I committed tile owner earlier today. Does it count as listening to user feedback if I did something before I discovered that a user had asked for it?

Akechi wrote:10. Changeable radius of nuclear blast (use bonuses, effect, firepower or other ideas) and Nuke_Proof effect
..... e.g. unit "Early Nuclear" has radius 0 (target tile only), unit "Late Nuclear" has radius 1 (3x3), unit "Tactical Thermonuclear" has radius 2 (5x5), etc.

Blast radius part is planned. See Feature #854166. I think the main challenge will be graphics. Could be solved by displaying 3x3 animation no matter what the radius is.

Akechi wrote:15. Adjust shield returning for disband damaged unit in city: return (shield cost * current hit points) / (2 * maximum hit points) shields
..... e.g. if 10hp catapult is now only 3hp and try to disband, these unit calculated by 3/10 shield cost.
..... (then (40 * 3) / (2 * 10) = 6 shields return)
..... (shouldn't affect upgrade cost...because hp ratio are kept)


I don't think I have filed an issue for this yet but an effect to adjust shield return for "Help Wonder" and "Recycle Unit" has been on my TODO list since I made them action enabler controlled. Now that someone else has requested it I'll increase its priority.

sveinung
Elite
Posts: 491
Joined: Wed Feb 20, 2013 4:50 pm

Re: Miscellaneous wishlist...

Postby sveinung » Wed May 27, 2020 4:04 pm

sveinung wrote:
Akechi wrote:I don't think I have filed an issue for this yet but an effect to adjust shield return for "Help Wonder" and "Recycle Unit" has been on my TODO list since I made them action enabler controlled. Now that someone else has requested it I'll increase its priority.


I have now introduced the Unit_Shield_Value_Pct effect. I made it able to check unit state when calculating "Help Wonder" and "Recycle Unit" because of your suggestion. (This isn't exactly what you asked for. You may hate it. I therefore credited you for the input by saying what your input did in the commit message rather than putting requested by on the feature. That way you get credit for what you did but not blame for what I did do.)