Esempio n. 1
0
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
Esempio n. 3
0
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),
Esempio n. 7
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(