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?
and
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.
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.