MagisterCultuum
Great Sage
I know you said you plan to re-write the spell system at a latter time and so are not taking spell requests, but could you go ahead and take a couple anyway?
I really think that the new <iDelay> tag is just begging for a <iSpellDelayChange> tag for promotions, which (as the name suggests) would make modify the delay on spells. Mostly I'm thinking that these would allow units to cast these spells faster, nut it might also be nice if it could make caster's slower too. I'm not sure whether it should add a delay on spells that normally don't have one or not.
It might be good if specific units could have the same tag (with the same effect) too, instead or relying entirely on promotions.
I'd also like if individual units could have the <PromotionSummonPerk>, instead of needing to add a seperate promotion to certain units just to apply this.
I'd also still like the ability for promotions to change a spell's range. You could just borrow this from Broader Alignments. I'd still like to have the other tags Grey Fox added to Broader Alignments at my request (like pyPerTurn for units, and <PythonPostCombatWon> and <PythonPostCombatLost> for promotions) added too. I just realized though that these are included in Fall further now. I'll probably just use his SDK anyway, since Grey Fox isn't planning to work more on Broaderanymore but Vehem is, and especially since Vehem is adding this modcomp to Fall Further too I guess it isn't important that you add these then.
Unrelated, but I was also just thinking that it would be good if civics (I'm thinking Theocracy) could give free xp specifically to units of certain the state religion, instead of to everyone. It might also be good if buildings could give their free xp or promotions based on the unit's religion too. Giving them based on tier or promotions (including race, letting you move the free dwarven xp from Breweries and free demon xp from Demon's Altars to xml/SDK for slightly faster performance and better documentation) could be good too. On the other hand, this isn't hard to do just using python, so it isn't that important.
Hmm...did I forget to mention that I'd really like <UnitCombatTargets> and <UnitClassTargets> added to promotions? (I'm thinking that giving marsken spells that let then target different types of units would be cool) Also, a similar tag to target specific promotions (in both units and promotions defines) would be very nice.
I was just thinking that allowing multiple damage type for AirCombat would be nice. This tag isn't used at all in normal FfH, but will be used in my modmod to give archers and Dragons ranged attacks, in addition to my bird upgrades. When a land unit has AirCombat (like in the defense mod) it is not subject to being intercepted, so this is a very good representation of ranged units. I'm mostly thinking that the Dragons should fire damage at range, except Drifa who should do cold. It might also be good to let promotions modify the AirCombat values, of multiple damage types. (I'm also thinking that the Flaming Arrows promotion should add ranged fire strength, and a new poison arrows promo should allow ranged poison damage. If and when you do this, you should make sure that it passes on promotions correctly. (Poisoned mostly, but I'd like it changed so that other damage types can give promotions too)
It might also be good to let promotions change the AirCombatLimit. (They can already change range, intercept chance, and evasion chance)
I have a suspicion that the spell system could be tied into AirCombat eventually, to allow for targeted spells (it wouldn't let you target specific units, but targeting tiles would work faster and more elegantly than in vanilla FfH) that the AI can understand . When you get around to revamping the spell system, this may be something to consider.
It might be a good idea to allow units to have/detect multiple types of invisibility, and to also allow promotions to handle invisibility the same way. Some units could have multiple types of invisibility, and so be invisible unless a unit that can see both is nearby. (I was also just thinking of how cool it would be to have undersea monsters with INVISIBLE_SUBMARINE, which could be captured like Brigit, but only by units that can see them. These would be OO units, of course)
I think that Terrains and Improvements should have a <RequireResist> tag like Features do.
I'd also like it if you could set how much resistance a unit must have to enter the tile in the feature/terrain/improvement file instead of having one value (20%) declared in the global defines. For example, you could make flames require 20%, but an upgraded Inferno feature require 50% fire resistance. Also, Ice could require ~15% cold resistance, and the Letum Frigus add another 25% on top of that. Naturally, if a tile's terrain required resistance of one type, its feature of another, and its improvement of yet another, then the units would need all 3 resistances to enter.
I'd also love it if you could set Terrains/Features/Improvements to deal damage to units on them (probably both for staying there and for moving though). Ideally, you could set an amount (maybe range), type, and chance of damage. Maybe also a certain amount of resistance needed to avoid the damage. This way, Flames could injure units moving though them with fire damage, Ice/Tundra with (less) cold damage, Hell Terrains could do a little death or unholy damage, Jungles might poison some units, etc.
If this is added, also make sure that Poisoned (and other promotions that damage types might be made to grant) are granted no mater how the damage if dealt, not just in combat. (This is important for spells too.) It would also probably be better to make tag in the damage defines determining what promotion should be given (and maybe something modifying the chance of getting it. Perhaps the amount of the damage type that has to be done for the effect?), instead of having it semi-hardcoded in the SDK/CIV4GlobalDefinesAlt.xml
It might also be nice if the prerequisite level for entering a tile like the one with the Ring of Carcer were something set for the Improvement/Feature/Terrain, instead of being set in python.
It could also be nice to allow features/improvements to make normally impassible terrain passable. Requiring promotions for passibility on certain terrain/features/improvements could be good to. (I'm mostly thinking of some other people's recommendations for RoK tunnels)
Allowing a python function for terrains/features/improvements impassibility (and for units ability to enter certain tiles) would probably be too hard on the processor, wouldn't it? If an efficent way could be found, this could be quite useful.
Leaders should have a "HatedWonder" tag. This would basically be the same as FavoriteWonder, but with a diplomatic penalty instead of a bonus. It might be appropriate to block these leaders from building these wonders too.
You should be able to have And and OR tech prereqs for build orders.
I can't believe I forgot to request that you should be able to set the chances that a promotion will randomly apply a promotion. Some promotions that I'd like to use this to apply would be game breaking if they are added often.
I'd also like the ability for a promotion to randomly remove another promotion.
I really think that the new <iDelay> tag is just begging for a <iSpellDelayChange> tag for promotions, which (as the name suggests) would make modify the delay on spells. Mostly I'm thinking that these would allow units to cast these spells faster, nut it might also be nice if it could make caster's slower too. I'm not sure whether it should add a delay on spells that normally don't have one or not.
It might be good if specific units could have the same tag (with the same effect) too, instead or relying entirely on promotions.
I'd also like if individual units could have the <PromotionSummonPerk>, instead of needing to add a seperate promotion to certain units just to apply this.
I'd also still like the ability for promotions to change a spell's range. You could just borrow this from Broader Alignments. I'd still like to have the other tags Grey Fox added to Broader Alignments at my request (like pyPerTurn for units, and <PythonPostCombatWon> and <PythonPostCombatLost> for promotions) added too. I just realized though that these are included in Fall further now. I'll probably just use his SDK anyway, since Grey Fox isn't planning to work more on Broaderanymore but Vehem is, and especially since Vehem is adding this modcomp to Fall Further too I guess it isn't important that you add these then.
Unrelated, but I was also just thinking that it would be good if civics (I'm thinking Theocracy) could give free xp specifically to units of certain the state religion, instead of to everyone. It might also be good if buildings could give their free xp or promotions based on the unit's religion too. Giving them based on tier or promotions (including race, letting you move the free dwarven xp from Breweries and free demon xp from Demon's Altars to xml/SDK for slightly faster performance and better documentation) could be good too. On the other hand, this isn't hard to do just using python, so it isn't that important.
Hmm...did I forget to mention that I'd really like <UnitCombatTargets> and <UnitClassTargets> added to promotions? (I'm thinking that giving marsken spells that let then target different types of units would be cool) Also, a similar tag to target specific promotions (in both units and promotions defines) would be very nice.
I was just thinking that allowing multiple damage type for AirCombat would be nice. This tag isn't used at all in normal FfH, but will be used in my modmod to give archers and Dragons ranged attacks, in addition to my bird upgrades. When a land unit has AirCombat (like in the defense mod) it is not subject to being intercepted, so this is a very good representation of ranged units. I'm mostly thinking that the Dragons should fire damage at range, except Drifa who should do cold. It might also be good to let promotions modify the AirCombat values, of multiple damage types. (I'm also thinking that the Flaming Arrows promotion should add ranged fire strength, and a new poison arrows promo should allow ranged poison damage. If and when you do this, you should make sure that it passes on promotions correctly. (Poisoned mostly, but I'd like it changed so that other damage types can give promotions too)
It might also be good to let promotions change the AirCombatLimit. (They can already change range, intercept chance, and evasion chance)
I have a suspicion that the spell system could be tied into AirCombat eventually, to allow for targeted spells (it wouldn't let you target specific units, but targeting tiles would work faster and more elegantly than in vanilla FfH) that the AI can understand . When you get around to revamping the spell system, this may be something to consider.
It might be a good idea to allow units to have/detect multiple types of invisibility, and to also allow promotions to handle invisibility the same way. Some units could have multiple types of invisibility, and so be invisible unless a unit that can see both is nearby. (I was also just thinking of how cool it would be to have undersea monsters with INVISIBLE_SUBMARINE, which could be captured like Brigit, but only by units that can see them. These would be OO units, of course)
I think that Terrains and Improvements should have a <RequireResist> tag like Features do.
I'd also like it if you could set how much resistance a unit must have to enter the tile in the feature/terrain/improvement file instead of having one value (20%) declared in the global defines. For example, you could make flames require 20%, but an upgraded Inferno feature require 50% fire resistance. Also, Ice could require ~15% cold resistance, and the Letum Frigus add another 25% on top of that. Naturally, if a tile's terrain required resistance of one type, its feature of another, and its improvement of yet another, then the units would need all 3 resistances to enter.
I'd also love it if you could set Terrains/Features/Improvements to deal damage to units on them (probably both for staying there and for moving though). Ideally, you could set an amount (maybe range), type, and chance of damage. Maybe also a certain amount of resistance needed to avoid the damage. This way, Flames could injure units moving though them with fire damage, Ice/Tundra with (less) cold damage, Hell Terrains could do a little death or unholy damage, Jungles might poison some units, etc.
If this is added, also make sure that Poisoned (and other promotions that damage types might be made to grant) are granted no mater how the damage if dealt, not just in combat. (This is important for spells too.) It would also probably be better to make tag in the damage defines determining what promotion should be given (and maybe something modifying the chance of getting it. Perhaps the amount of the damage type that has to be done for the effect?), instead of having it semi-hardcoded in the SDK/CIV4GlobalDefinesAlt.xml
It might also be nice if the prerequisite level for entering a tile like the one with the Ring of Carcer were something set for the Improvement/Feature/Terrain, instead of being set in python.
It could also be nice to allow features/improvements to make normally impassible terrain passable. Requiring promotions for passibility on certain terrain/features/improvements could be good to. (I'm mostly thinking of some other people's recommendations for RoK tunnels)
Allowing a python function for terrains/features/improvements impassibility (and for units ability to enter certain tiles) would probably be too hard on the processor, wouldn't it? If an efficent way could be found, this could be quite useful.
Leaders should have a "HatedWonder" tag. This would basically be the same as FavoriteWonder, but with a diplomatic penalty instead of a bonus. It might be appropriate to block these leaders from building these wonders too.
You should be able to have And and OR tech prereqs for build orders.
I can't believe I forgot to request that you should be able to set the chances that a promotion will randomly apply a promotion. Some promotions that I'd like to use this to apply would be game breaking if they are added often.
I'd also like the ability for a promotion to randomly remove another promotion.