Ejemplo n.º 1
0
class Unicorn(base.Monster):
    name = "Unicorn"
    statline = { stats.STRENGTH: 16, stats.TOUGHNESS: 18, stats.REFLEXES: 16, \
        stats.INTELLIGENCE: 16, stats.PIETY: 20, stats.CHARISMA: 18, \
        stats.RESIST_LUNAR: 100, stats.MAGIC_DEFENSE: 25 }
    SPRITENAME = "monster_animals.png"
    FRAME = 31
    TEMPLATES = ()
    MOVE_POINTS = 12
    VOICE = None
    HABITAT = (context.HAB_FOREST, context.SET_EVERY, context.DES_SOLAR,
               context.MTY_BEAST, context.MTY_CREATURE, context.MTY_LEADER,
               context.MTY_BOSS, context.GEN_NATURE)
    ENC_LEVEL = 13
    ATTACK = items.Attack((3, 6, 0), element=stats.RESIST_PIERCING)
    TECHNIQUES = (invocations.MPInvocation(
        "Radiance",
        effects.HealthRestore(dice=(5, 8, 20)),
        mp_cost=7,
        com_tar=targetarea.SingleTarget(reach=10),
        ai_tar=invocations.TargetWoundedAlly(),
        exp_tar=targetarea.SinglePartyMember(),
        shot_anim=animobs.YellowVortex), )

    def init_monster(self):
        self.levels.append(base.Defender(12, self))
Ejemplo n.º 2
0
    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

MODERATE_CURE = Spell("Moderate Cure",
                      "This spell will heal one nearby ally for 6-20 damage.",
                      effects.HealthRestore(dice=(2, 8, 4)),
                      rank=2,
                      gems={SOLAR: 2},
                      com_tar=targetarea.SingleTarget(reach=1),
                      ai_tar=invocations.TargetWoundedAlly(),
                      exp_tar=targetarea.SinglePartyMember(),
                      mpfudge=-2)

# CIRCLE 3
Ejemplo n.º 3
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},
    com_tar=targetarea.SinglePartyMember(),
    ai_tar=invocations.TargetAllyWithoutEnchantment(enchantments.FireWepEn))

# CIRCLE 2

BLINDING_FLASH = Spell(
    "Blinding Flash",
    "A sudden flash of light will daze, and possibly stun, all enemies within 4 tiles.",
    effects.TargetIsEnemy(on_true=(
        effects.Enchant(enchantments.BlindedEn, anim=animobs.RedSparkle),
        effects.OpposedRoll(att_modifier=-20,
                            on_success=(effects.Paralyze(max_duration=2), )))),
    rank=2,
    gems={FIRE: 2},
    com_tar=targetarea.SelfCentered(radius=4),
    ai_tar=invocations.TargetEnemy())
Ejemplo n.º 4
0
    )),
    rank=3, gems={LUNAR:1,WATER:1}, com_tar=targetarea.SelfCentered(),
    ai_tar=invocations.TargetAllyWithoutEnchantment(enchantments.ProtectFromGoodEn) )


# CIRCLE FOUR

RAISE_UNDEAD = Spell( "Raise Undead",
    "You conjure dark forces to animate an undead creature which will fight on your behaf.",
    effects.CallMonster( {context.MTY_UNDEAD: True, context.DES_LUNAR: context.MAYBE, context.GEN_UNDEAD: context.MAYBE}, 8, anim=animobs.PurpleSparkle ),
    rank=4, gems={EARTH:1,LUNAR:2}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge=6 )

ICE_WEAPON = Spell( "Icy Weapon",
    "One ally's weapon will glow with magical cold, causing an extra 1-10 points of damge per hit and potentially freezing enemies solid. This effect lasts until the end of combat.",
    effects.Enchant( enchantments.FrostWepEn, anim=animobs.PurpleSparkle ),
    rank=4, gems={LUNAR:1,WATER:1}, com_tar=targetarea.SinglePartyMember(),
    ai_tar=invocations.TargetAllyWithoutEnchantment(enchantments.FrostWepEn) )


# CIRCLE FIVE

# CIRCLE SIX

RAISE_SPIRIT = Spell( "Raise Spirit",
    "You conjure dark forces to animate and command a powerful undead creature which will fight on your behaf.",
    effects.CallMonster( {context.MTY_UNDEAD: True, context.DES_LUNAR: context.MAYBE, context.GEN_UNDEAD: context.MAYBE}, 12, anim=animobs.PurpleSparkle ),
    rank=6, gems={EARTH:2,LUNAR:2}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge=8 )

ACID_RAIN = Spell( "Acid Rain",
    "Conjures a storm of corrosive slime. All targets caught within a 5 tile radius take 10d4 acid damage.",
    effects.OpposedRoll( on_success = (
Ejemplo n.º 5
0
class LivingPotion(base.Monster):
    name = "Living Potion"
    statline = { stats.STRENGTH: 10, stats.TOUGHNESS: 10, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 1,
        stats.RESIST_SLASHING: 25, stats.RESIST_PIERCING: 25, stats.RESIST_WATER: 200 }
    SPRITENAME = "monster_constructs.png"
    FRAME = 15
    TEMPLATES = (stats.CONSTRUCT, )
    MOVE_POINTS = 12
    VOICE = None
    HABITAT = (context.SET_EVERY, context.MTY_CONSTRUCT, context.DES_WATER)
    ENC_LEVEL = 7
    TREASURE = treasuretype.Standard((items.POTION, ))
    COMBAT_AI = aibrain.SteadySpellAI()
    ATTACK = items.Attack((1, 6, 0), element=stats.RESIST_CRUSHING)
    TECHNIQUES = (invocations.MPInvocation(
        "Acid Blast",
        effects.OpposedRoll(att_modifier=10,
                            def_stat=stats.REFLEXES,
                            on_success=(effects.HealthDamage(
                                (2, 6, 0),
                                stat_bonus=None,
                                element=stats.RESIST_ACID,
                                anim=animobs.GreenCloud), ),
                            on_failure=(effects.HealthDamage(
                                (1, 6, 0),
                                stat_bonus=None,
                                element=stats.RESIST_ACID,
                                anim=animobs.GreenCloud), )),
        com_tar=targetarea.SingleTarget(),
        ai_tar=invocations.TargetEnemy(),
        shot_anim=animobs.GreenSpray,
        mp_cost=1),
                  invocations.MPInvocation(
                      "Poison Blast",
                      effects.OpposedRoll(att_modifier=10,
                                          def_stat=stats.REFLEXES,
                                          on_success=(effects.HealthDamage(
                                              (2, 6, 0),
                                              stat_bonus=None,
                                              element=stats.RESIST_POISON,
                                              anim=animobs.PoisonCloud), ),
                                          on_failure=(effects.HealthDamage(
                                              (1, 6, 0),
                                              stat_bonus=None,
                                              element=stats.RESIST_POISON,
                                              anim=animobs.PoisonCloud), )),
                      com_tar=targetarea.SingleTarget(),
                      ai_tar=invocations.TargetEnemy(),
                      shot_anim=animobs.GreenComet,
                      mp_cost=1),
                  invocations.MPInvocation(
                      "Healing Potion",
                      effects.HealthRestore(dice=(3, 8, 0)),
                      com_tar=targetarea.SingleTarget(reach=10),
                      ai_tar=invocations.TargetWoundedAlly(),
                      exp_tar=targetarea.SinglePartyMember(),
                      shot_anim=animobs.YellowVortex,
                      mp_cost=1))

    def init_monster(self):
        self.levels.append(base.Spellcaster(7, self))