import animobs import stats import invocations import context # CIRCLE ONE FIRE_BOLT = Spell("Fire Bolt", "This attack does 1d8 fire damage to a single target.", effects.OpposedRoll(att_modifier=10, on_success=(effects.HealthDamage( (1, 8, 0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_FIRE, anim=animobs.OrangeExplosion), ), on_failure=(effects.HealthDamage( (1, 8, 0), stat_bonus=None, element=stats.RESIST_FIRE, anim=animobs.OrangeExplosion), )), rank=1, gems={FIRE: 1}, com_tar=targetarea.SingleTarget(), shot_anim=animobs.FireBolt, ai_tar=invocations.TargetEnemy()) BURNING_WEAPON = Spell( "Burning Weapon", "Magical flames burst from an ally's weapon, causing an extra 1-6 points of damge per hit. This effect lasts until the end of combat.", effects.Enchant(enchantments.FireWepEn, anim=animobs.RedSparkle), rank=1, gems={FIRE: 1},
from base import SOLAR, EARTH, WATER, FIRE, AIR, LUNAR, Spell import effects import targetarea import enchantments import animobs import stats import invocations # CIRCLE 1 BLESSING = Spell( "Blessing", "Increases the physical and magic attack scores of all allies within 6 tiles by +5%. This effect lasts until the end of combat.", effects.TargetIsAlly(on_true=(effects.Enchant( enchantments.BlessingEn, anim=animobs.YellowSparkle), )), rank=1, gems={SOLAR: 1}, com_tar=targetarea.SelfCentered(), ai_tar=invocations.TargetAllyWithoutEnchantment(enchantments.BlessingEn), mpfudge=-1) MINOR_CURE = Spell("Minor Cure", "This spell will heal one nearby ally for 1-10 damage.", effects.HealthRestore(dice=(1, 10, 0)), rank=1, gems={SOLAR: 1}, com_tar=targetarea.SingleTarget(reach=1), ai_tar=invocations.TargetWoundedAlly(), exp_tar=targetarea.SinglePartyMember()) # CIRCLE 2
from base import SOLAR, EARTH, WATER, FIRE, AIR, LUNAR, Spell import effects import targetarea import enchantments import animobs import stats import invocations import context # CIRCLE ONE AIR_ARMOR = Spell( "Shield of Wind", "Increases the physical and magical defense of all allies within 6 tiles by +5%. This effect lasts until the end of combat.", effects.TargetIsAlly(on_true=( effects.Enchant(enchantments.AirArmor, anim=animobs.BlueSparkle), )), rank=1, gems={AIR: 1}, com_tar=targetarea.SelfCentered(), ai_tar=invocations.TargetAllyWithoutEnchantment(enchantments.AirArmor)) PROBE = Spell("Probe", "This spell reveals secret knowledge about one target creature.", effects.NoEffect(anim=animobs.BlueSparkle, children=(effects.Probe(), )), rank=1, gems={AIR: 1}, mpfudge=-1, com_tar=targetarea.SingleTarget(), exp_tar=targetarea.SingleTarget())
from base import SOLAR, EARTH, WATER, FIRE, AIR, LUNAR, Spell from .. import effects from .. import targetarea from .. import enchantments from .. import animobs from .. import stats from .. import context from .. import invocations # CIRCLE 1 EARTHBIND = Spell( "Earthbind", "Conjures plants which grab at travelers, making passage through the area very difficult.", effects.PlaceField(enchantments.Entanglement, anim=animobs.OrangeSparkle), rank=1, gems={EARTH: 1}, com_tar=targetarea.Blast(radius=4), mpfudge=1, ai_tar=invocations.TargetEnemyWithoutField(enchantments.Entanglement, 5)) CALL_CRITTER = Spell( "Call Critter", "This spell will summon a small woodland creature to fight on your behaf.", effects.CallMonster( { context.MTY_CREATURE: True, context.DES_EARTH: context.MAYBE, context.GEN_NATURE: context.MAYBE }, 2,
CHAOS_BOLT = Spell( "Chaos Bolt", "This mystic bolt does 1d8 damage to health and an additional 1d8 damage to mana.", effects.OpposedRoll(on_success=( effects.HealthDamage((1, 8, 0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_SOLAR, anim=animobs.YellowExplosion), effects.ManaDamage((1, 8, 0), stat_bonus=stats.INTELLIGENCE, anim=animobs.PurpleExplosion), ), on_failure=( effects.HealthDamage((1, 4, 0), stat_bonus=None, element=stats.RESIST_SOLAR, anim=animobs.YellowExplosion), effects.ManaDamage((1, 4, 0), stat_bonus=None, anim=animobs.PurpleExplosion), )), rank=2, gems={ LUNAR: 1, SOLAR: 1 }, com_tar=targetarea.SingleTarget(), shot_anim=animobs.WizardMissile, ai_tar=invocations.TargetEnemy(), mpfudge=-3)
from .. import context # Mages get AIR, FIRE, and LUNAR magic. These spells use a combination of colors. # CIRCLE ONE FIRE_ARC = Spell( "Fire Arc", "Conjures an arc of intense heat which burns enemies for 1d6 damage. This spell has a short range but can affect several targets.", effects.OpposedRoll(on_success=(effects.HealthDamage( (1, 6, 0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_FIRE, anim=animobs.OrangeExplosion), ), on_failure=(effects.HealthDamage( (1, 2, 0), stat_bonus=None, element=stats.RESIST_FIRE, anim=animobs.OrangeExplosion), )), rank=1, gems={ FIRE: 1, LUNAR: 1 }, com_tar=targetarea.Cone(reach=3), ai_tar=invocations.TargetEnemy()) SHOCK_SPHERE = Spell( "Shock Sphere", "An electrical burst will deal 1-6 points of damage to all enemies within two tiles of the caster.", effects.TargetIsEnemy(on_true=(effects.OpposedRoll( on_success=(effects.HealthDamage((1, 6, 0),
# Druids get EARTH, FIRE, and SOLAR magic. These spells use a combination of # those colors. # CIRCLE ONE ACID_SPRAY = Spell( "Acid Spray", "A stream of acid sprays forth, burning enemies for 1d6 damage. This spell has a short range but can affect several targets.", effects.OpposedRoll(on_success=(effects.HealthDamage( (1, 6, 0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_ACID, anim=animobs.GreenExplosion), ), on_failure=(effects.HealthDamage( (1, 2, 0), stat_bonus=None, element=stats.RESIST_ACID, anim=animobs.GreenExplosion), )), rank=1, gems={ FIRE: 1, EARTH: 1 }, com_tar=targetarea.Cone(reach=3), ai_tar=invocations.TargetEnemy()) # CIRCLE TWO CALL_ANIMAL = Spell( "Call Animal", "This spell will summon a natural creature to fight on your behaf.",
import targetarea import enchantments import animobs import stats import context import invocations # Necromancers get EARTH, LUNAR, and WATER magic. These spells use at least two # of those colors. # CIRCLE ONE ICE_BOLT = Spell( "Icy Bolt", "This attack does 1d8 cold damage to a single target.", effects.OpposedRoll( att_modifier=15, on_success = ( effects.HealthDamage( (1,8,0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_COLD, anim=animobs.BlueExplosion ) ,), on_failure = ( effects.HealthDamage( (1,3,0), stat_bonus=None, element=stats.RESIST_COLD, anim=animobs.BlueExplosion ) ,) ), rank=1, gems={LUNAR:1,WATER:1}, com_tar=targetarea.SingleTarget(), shot_anim=animobs.BlueBolt, mpfudge=-1, ai_tar=invocations.TargetEnemy() ) RAISE_SKELETON = Spell( "Raise Skeleton", "You conjure dark forces to animate a skeleton which will fight on your behaf.", effects.CallMonster( {context.MTY_UNDEAD: True, context.DES_LUNAR: context.MAYBE, context.GEN_UNDEAD: context.MAYBE}, 2, anim=animobs.PurpleSparkle ), rank=1, gems={EARTH:1,LUNAR:1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot() ) # CIRCLE 2 RAISE_CORPSE = Spell( "Raise Corpse", "You conjure dark forces to animate a lesser undead creature which will fight on your behaf.", effects.CallMonster( {context.MTY_UNDEAD: True, context.DES_LUNAR: context.MAYBE, context.GEN_UNDEAD: context.MAYBE}, 4, anim=animobs.PurpleSparkle ), rank=2, gems={EARTH:1,LUNAR:1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge=4 )
from base import SOLAR, EARTH, WATER, FIRE, AIR, LUNAR, Spell from .. import effects from .. import targetarea from .. import enchantments from .. import animobs from .. import stats from .. import invocations # CIRCLE ONE CURSE = Spell( "Curse", "Decreases the physical attack score of enemies within 6 tiles by 5%. This effect lasts until the end of combat.", effects.TargetIsEnemy( on_true = ( effects.Enchant( enchantments.CurseEn, anim=animobs.PurpleSparkle ) ,) ), rank=1, gems={LUNAR:1}, com_tar=targetarea.SelfCentered(), ai_tar=invocations.TargetEnemyWithoutEnchantment(enchantments.CurseEn), mpfudge=-1 ) WIZARD_MISSILE = Spell( "Wizard Missile", "This mystic bolt always strikes its target for 1-6 damage.", effects.HealthDamage((1,6,0), stat_bonus=None, element=stats.RESIST_LUNAR, anim=animobs.PurpleExplosion ), rank=1, gems={LUNAR:1}, com_tar=targetarea.SingleTarget(), shot_anim=animobs.WizardMissile, ai_tar=invocations.TargetEnemy(), mpfudge=-1 ) # CIRCLE TWO SLEEP = Spell( "Sleep", "Causes living creatures in a 2 tile radius to fall asleep.", effects.TargetIs( pat=effects.ANIMAL, anim=animobs.PurpleSparkle, on_true = ( effects.OpposedRoll( att_modifier=0, on_success = ( effects.CauseSleep(), ))
from .. import effects from .. import targetarea from .. import enchantments from .. import animobs from .. import stats from .. import invocations from .. import context # CIRCLE ONE FREEZE_FOE = Spell( "Freeze Foe", "A single target will be frozen in its tracks, unable to act for 1 to 3 rounds.", effects.OpposedRoll( att_modifier=20, on_success=(effects.Paralyze(max_duration=3), ), on_failure=(effects.NoEffect(anim=animobs.SmallBoom), )), rank=1, gems={WATER: 1}, com_tar=targetarea.SingleTarget(), shot_anim=animobs.BlueComet, ai_tar=invocations.TargetMobileEnemy()) RESTORE_FLUIDITY = Spell( "Restore Fluidity", "This spell restores mobility to all allies within 6 tiles who have been paralyzed or sedated.", effects.TargetIsAlly(on_true=(effects.RestoreMobility( anim=animobs.GreenSparkle), )), rank=1, gems={WATER: 1}, com_tar=targetarea.SelfCentered())
# Priests get AIR, SOLAR, and WATER magic. These spells use a mixture of two # or more of those colors. # CIRCLE ONE ARMOR_OF_FAITH = Spell( "Armor of Faith", "The caster is infused with divine energy, healing wounds and bestowing protection.", effects.HealthRestore(dice=(3, 6, 0), anim=animobs.YellowSparkle, children=( effects.Enchant(enchantments.BlessingEn, anim=None), effects.Enchant(enchantments.AirArmor, anim=None), )), rank=1, gems={ SOLAR: 1, AIR: 1 }, com_tar=targetarea.SelfOnly(), ai_tar=invocations.TargetWoundedAlly(), mpfudge=-2) BLAST_UNDEAD = Spell( "Blast Undead", "This mystic bolt deals 1-6 damage to undead creatures.", effects.TargetIs(pat=effects.UNDEAD, on_true=(effects.HealthDamage(