Ring of Flames

Bringa

King
Joined
Jan 23, 2006
Messages
678
Question: I haven't actually dug into the spell system, but I've had a look at Ring of Flames in the xml and python. Can someone explain to me if I'm reading this right?

Code:
            <Type>SPELL_RING_OF_FLAMES</Type>
            <Description>TXT_KEY_SPELL_RING_OF_FLAMES</Description>
            <Civilopedia>TXT_KEY_SPELL_RING_OF_FLAMES_PEDIA</Civilopedia>
            <Strategy>NONE</Strategy>
            <Help>TXT_KEY_SPELL_RING_OF_FLAMES_HELP</Help>
            <PromotionPrereq1>PROMOTION_FIRE2</PromotionPrereq1>
            <PromotionPrereq2>PROMOTION_DIVINE</PromotionPrereq2>
            <iRangeSelectNum>-1</iRangeSelectNum>
            <SpellFlavors>
                <SpellFlavor>
                    <SpellType>SPELLTYPE_DAMAGE</SpellType>
                    <iSpellType>2</iSpellType>
                </SpellFlavor>
                <SpellFlavor>
                    <SpellType>SPELLTYPE_RANGE_FLAT</SpellType>
                    <iSpellType>1</iSpellType>
                </SpellFlavor>
                <SpellFlavor>
                    <SpellType>SPELLTYPE_COLLATERAL</SpellType>
                    <iSpellType>4</iSpellType>
                </SpellFlavor>
            </SpellFlavors>

and

Code:
def spellRingofFlames(caster):
	doCast(caster)
	iX = caster.getX()
	iY = caster.getY()
	iDmg = 30
	if caster.getUnitType() == gc.getInfoTypeForString('UNIT_MESHABBER'):
		iDmg = iDmg * 2	
	iPlayer = caster.getOwner()
	pPlayer = gc.getPlayer(iPlayer)
	eTeam = pPlayer.getTeam()
	for iiX in range(iX-1, iX+2, 1):
		for iiY in range(iY-1, iY+2, 1):
			if not (iiX == iX and iiY == iY):
				pPlot = CyMap().plot(iiX,iiY)
				for i in range(pPlot.getNumUnits()):
					pUnit = pPlot.getUnit(i)
					insDmg = (iDmg / 2) + CyGame().getSorenRandNum(iDmg, "Ring of Flames")
					cf.FFHDoDamage(pUnit, "Fire", insDmg, caster)
				if (pPlot.getFeatureType() == gc.getInfoTypeForString('FEATURE_FOREST') or pPlot.getFeatureType() == gc.getInfoTypeForString('FEATURE_JUNGLE') or pPlot.getFeatureType() == gc.getInfoTypeForString('FEATURE_FOREST_NEW')):
					if CyGame().getSorenRandNum(100, "Fire Spread") <= gc.getDefineINT('FIRE_EFFECT_SPREAD_CHANCE'):
						pPlot.setImprovementType(gc.getInfoTypeForString('IMPROVEMENT_SMOKE'))

Does this mean that Ring of Flames does a PERCENTAGE amount of damage to all units around the caster? Between 15 and 45 percent?

In-game I definitely get the message "unit damaged xx% by fire damage", and a quick test shows that ring of flames defeats strong and weak units at slightly different rates.

I'd like to get a quick description of how RoF actually works before we can go about trying to balance it. I think we agree that it is heavily unbalanced right now? A stack of cheap units (say about 10 confessors) can kill ANY size of enemy stack. Hell, if you came with 5000 Arquebus units, they'd be killed just as quickly as a single Arquebus by our trusty 10 confessors. This is clearly broken.

Before you post and give me your strategies for countering RoF, I'm sure there are many, but that's entirely besides the point.
 
Yeah, you are reading it right. Its 15-45% before its passed into the dodamage function which applies a lot of its own modifiers.

I want to add a few new attributes for damage spells like the collateral damage. The ability to set in a max amount of damage (so some spells cant kill but can injure units down to a certain percentage) and a max amount of targets a spell can effect.
 
Dont you simply need a CONCT for that which is checked each time damage if taken, and if it goes over that you simply subtract from the damage...
 
Yeah, you are reading it right. Its 15-45% before its passed into the dodamage function which applies a lot of its own modifiers.

I want to add a few new attributes for damage spells like the collateral damage. The ability to set in a max amount of damage (so some spells cant kill but can injure units down to a certain percentage) and a max amount of targets a spell can effect.

That would be awesome, Kael. As it is, RoF is incredibly powerful. Because I really really LIKE the spell though (especially now that it sets stuff on fire; gotta love collateral damage!) I decided to rebalance it for our own game. I reduced iDmg to 12 after some experimenting and that seems to do the trick for now. Any reasonable amount of Confessors (say less than 10) only damages a stack. Still, your solution would be perfect.

As it stands, the balance problem is quite simply that from a certain number of RoF priests on, they are uncounterable, because the amount of units you bring does not matter at all.

I don't know how much work this would be, but instead of setting a hard max unit cap, do you think it'd be possible to "spread" the damage among the affected units? As in, if you bring more units, they'll soak the damage, and a single RoF will have less effect on any one unit?
 
Does this mean that Ring of Flames does a PERCENTAGE amount of damage to all units around the caster? Between 15 and 45 percent?
[...]
I'd like to get a quick description of how RoF actually works before we can go about trying to balance it. I think we agree that it is heavily unbalanced right now? A stack of cheap units (say about 10 confessors) can kill ANY size of enemy stack. Hell, if you came with 5000 Arquebus units, they'd be killed just as quickly as a single Arquebus by our trusty 10 confessors. This is clearly broken.

First off, if your reasoning is true (percentage damage) and I think it is, then these units shouldn't be killed. Second, I think balance-wise you should be more worried about Fireballs, since they can strike 4 tiles away while the Rings of Flames only work on adiacent tiles, not to mention they hit your own units, have chances to burn forests all around, cause neutral civs walking around to declare war on you, etc etc...

As it stands, the balance problem is quite simply that from a certain number of RoF priests on, they are uncounterable, because the amount of units you bring does not matter at all.

Uhm, this is questionable to the VERY least.
 
I want to add a few new attributes for damage spells like the collateral damage. The ability to set in a max amount of damage (so some spells cant kill but can injure units down to a certain percentage) and a max amount of targets a spell can effect.

If you guys manage to get this, may I make a suggestion for a couple of other fire spells? About fireball and meteor shower, perhaps instead of creating units that attack directly to do damage with collateral damage as a side effect, they should be changed to instead only be able to do collateral damage by targeting a location like how pillar of fire targets a location. Remove a fireball and meteor's ability to move (and scout) and when a mage with spell extension casts the spell, give the fireball or meteor spell extension as well instead of mobility (alternatively, make fireballs and meteors only able to defend like the Trojan Horse and give them mobility).

The effects from this change that I foresee is that fire would not really serve as an absolute replacement for siege weapons, there would no longer be a war weariness penalty for exploding fireballs, units do not gain experience by getting hit by fireballs, and the AI would not be afraid to sacrificing fireballs this way.
 
If you guys manage to get this, may I make a suggestion for a couple of other fire spells? About fireball and meteor shower, perhaps instead of creating units that attack directly to do damage with collateral damage as a side effect, they should be changed to instead only be able to do collateral damage by targeting a location like how pillar of fire targets a location. Remove a fireball and meteor's ability to move (and scout) and when a mage with spell extension casts the spell, give the fireball or meteor spell extension as well instead of mobility (alternatively, make fireballs and meteors only able to defend like the Trojan Horse and give them mobility).

The effects from this change that I foresee is that fire would not really serve as an absolute replacement for siege weapons, there would no longer be a war weariness penalty for exploding fireballs, units do not gain experience by getting hit by fireballs, and the AI would not be afraid to sacrificing fireballs this way.

Fireballs dont increase war weariness or grant XP. The AI can currently use targeted spells (like pillar of flames) so if we made this change they wouldnt be able to use them at all.
 
Fireballs dont increase war weariness or grant XP. The AI can currently use targeted spells (like pillar of flames) so if we made this change they wouldnt be able to use them at all.

Really? Well as far as I know fireballs count as units so I figured that when they attack they go into a fast forwarded but otherwise regular combat phase like a siege unit (so it counts as a fight on foreign land). I guess that's not true now?

Also I figured for the AI that at some point later on you guys are also going to find a way to make the AI be able to use targeted spells.
 
Really? Well as far as I know fireballs count as units so I figured that when they attack they go into a fast forwarded but otherwise regular combat phase like a siege unit (so it counts as a fight on foreign land). I guess that's not true now?

Also I figured for the AI that at some point later on you guys are also going to find a way to make the AI be able to use targeted spells.

Yeah, we had to add in some special SDK code to keep summoned units from raising war weariness.
 
First off, if your reasoning is true (percentage damage) and I think it is, then these units shouldn't be killed. Second, I think balance-wise you should be more worried about Fireballs, since they can strike 4 tiles away

Percentage of the maxhp, not the actual hp.

Fireballs. Yeah. Right.
Let me explain that balance thing again: a certain amount of confessors (around 7 or so) can kill 23 million macemen in one turn. To phrase it like Doctor Cox: You reheheheheheeeeeeeally don't have to think long to detect the problems arising with that.

Uhm, this is questionable to the VERY least.

Feel free to question that the next time you play against someone abusing confessors. And then you burn in righteous flames.
 
While I'm not questioning the overpoweredness of Ring of Fire - especially when it comes to taking out the AI - who in their right mind would put a stack of 23 million macemen within striking range of a confessor group?

Send a few hundred thousand in to draw rings of fire, then finish off the confessors with the remaining 22+ million. (Cavalry is preferrable for the follow-up strike, but macemen could work as long as you have usable roads.)
 
The problem is just that even tho 10 confessors are enough to kill the 23 million macemen those won't be the only confessors your enemy has. Because on top of being as deadly as Cthulhu's tentacles they are cheaper than your average high tier combat unit.
 
An easy way to win:
Get about 6 Confessors , all with ring of flames and +1 movement, one adapt with hast and +1 movement, and one highly promoted defensive units (with +1 movement) and you have a stack of three movement units that should be able to incinerate 1 City a turn, every turn. If you promote all your Confessors with combat one, assassins won't even be able to kill them (If the AI is smart enough to come up that that many assassins that quickly). I think it would make much more sense if ring of flames couldn't kill units, just knock them down to almost nothing. Then you would still need support units and couldn't rely on Confessors alone.

This technique should work all the time, every time against the AI and is would be barely counter able even against another equally skilled human.
 
I assume it's not possible to make it so that it does percent damage based on current hit points?
 
It seems to me this issue would be fixed if a % of the current unit health was used for RoF. It would still be a very powerful initial strike (or three) but quickly lose effectiveness after that. The same mechanic worked great with the static field spell in Diablo 2 :P

But even as RoF is now, it probably wouldn't be such an issue if the cavalry research path was more attractive... Adepts + haste with 2 move confessors takes a fair amount of work to set up and I'd think even the AI can handle throwing base 3 move cavalry at confessors and other spellcasters 'til they're dead.
 
Simple fix - just make Ring of Flames affect your units as well (Sphere of Flames?). Give the confessors some fire resistance. Each application of the spell damages the enemy stacks as well as your stack with your confessors. The enemy will die before you do because of your fire resistance, but you'll have to wait and heal up your confessors before casting it again.
 
the AI is quite good at killing stacks of confessors and high priests with rangers, a shame more players are unable to match it heh. as for it being overpowered, its usually wise to compare them to mages or conjurers, and frankly, you can do insane amounts of damage with a stack of 10 of those as well.

rather than a &#37; of remaining health, itd be better as a diminishing % related to the amount of strength, such that itd work the same against perhaps 4 strength units, but half damage against 8 strength units, and 1/3 compared to 12 strength, etc. health% * PriestStrength/TargetStrength

that way itd keep its current nice cleaning up ability (great for taking out large amounts of tier 1 or 2 units that would be time consuming otherwise), but would be less useful against superior forces.

the real fix that is actually needed tho is either a popup that asks you if you want to declare war when it will hurt someone you're at peace with (hate when a scout of an ally slips into range without notice) or that makes it not work when an ally is in range.

also, gaining fire strength points should provide fire resistance (like having orthus axe should be somewhat better at surviving fire damage given that they handle it often) and units that have it naturally like pyre zombies, should be immune. also, fireballs collateral damage is not fire damage, since it can hurt dragons.
 
Does this mean that Ring of Flames does a PERCENTAGE amount of damage to all units around the caster? Between 15 and 45 percent?
No. All units have 100 HP to start with; for aesthetic reasons, this is scaled to look differently to the user. On the other hand, if you're talking percentage of maximum (not current) HP, you're correct. Also note that the feature I'm calling Base damage (which this uses) can alter the damage by up to +35, in the correct circumstances, as well as modifying the final number downwards on a percentage basis.
Finally, the range of damage for Ring of Flames (ignoring Meshabber) is 15-44)

In-game I definitely get the message "unit damaged xx% by fire damage", and a quick test shows that ring of flames defeats strong and weak units at slightly different rates.
Yep. Look at Base damage. Level and defensive strength matter for the defender (as well as the more obvious Fire Resistance).
I'd like to get a quick description of how RoF actually works before we can go about trying to balance it. I think we agree that it is heavily unbalanced right now? A stack of cheap units (say about 10 confessors) can kill ANY size of enemy stack. Hell, if you came with 5000 Arquebus units, they'd be killed just as quickly as a single Arquebus by our trusty 10 confessors. This is clearly broken.
This is when you look for Fire Immune units.
Before you post and give me your strategies for countering RoF, I'm sure there are many, but that's entirely besides the point.
Personally, I'd just add a damage, limit, like is done with Siege Weapons.
 
Back
Top Bottom