Exemplo n.º 1
0
class PlagueRat(base.Monster):
    name = "Plague Rat"
    statline = { stats.STRENGTH: 10, stats.TOUGHNESS: 10, stats.REFLEXES: 13, \
        stats.INTELLIGENCE: 1, stats.PIETY: 9, stats.CHARISMA: 3 }
    SPRITENAME = "monster_animals.png"
    FRAME = 4
    TEMPLATES = ()
    MOVE_POINTS = 12
    VOICE = None
    HABITAT = (context.HAB_CAVE, context.HAB_BUILDING, context.HAB_TUNNELS,
               context.SET_EVERY, context.SET_RENFAN, context.DES_LUNAR,
               context.DES_CIVILIZED, context.MTY_BEAST, context.GEN_CHAOS,
               context.GEN_UNDEAD)
    ENC_LEVEL = 3
    COMPANIONS = (GiantRat, )

    ATTACK = items.Attack(
        (1, 6, 0),
        element=stats.RESIST_PIERCING,
        extra_effect=effects.SavingThrow(roll_skill=stats.MAGIC_DEFENSE,
                                         roll_stat=stats.TOUGHNESS,
                                         roll_modifier=15,
                                         on_failure=(effects.StatDamage(
                                             stats.TOUGHNESS,
                                             anim=animobs.GreenBoom), )))

    def init_monster(self):
        self.levels.append(base.Beast(2, self))
Exemplo n.º 2
0
class Fossil( base.Monster ):
    name = "Fossil"
    statline = { stats.STRENGTH: 24, stats.TOUGHNESS: 19, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 1, stats.PIETY: 14, stats.CHARISMA: 1,
        stats.RESIST_LUNAR: 155 }
    SPRITENAME = "monster_skeletons.png"
    FRAME = 27
    TEMPLATES = (stats.UNDEAD,stats.BONE)
    MOVE_POINTS = 6
    VOICE = None
    HABITAT = ( context.HAB_CAVE, context.SET_EVERY,
     context.DES_LUNAR, context.DES_EARTH,
     context.MTY_UNDEAD, context.MTY_BEAST, context.MTY_BOSS,
     context.GEN_UNDEAD, context.GEN_NATURE )
    ENC_LEVEL = 10

    COMBAT_AI = aibrain.BrainDeadAI()

    ATTACK = items.Attack( (3,8,0), element = stats.RESIST_CRUSHING )

    TECHNIQUES = ( invocations.MPInvocation( "Hellfire",
      effects.OpposedRoll( att_skill=stats.PHYSICAL_ATTACK, att_stat=stats.REFLEXES, att_modifier=10, def_stat=stats.REFLEXES, on_success = (
        effects.HealthDamage( (1,10,0), stat_bonus=stats.TOUGHNESS, element=stats.RESIST_LUNAR, anim=animobs.PurpleExplosion, on_success = (
            effects.SavingThrow( roll_skill=stats.RESIST_LUNAR, roll_stat=stats.TOUGHNESS, on_failure = (
                effects.StatDamage( stats.STRENGTH, anim=animobs.GreenBoom )
            ,))
         ,))
      ,), on_failure = (
        effects.HealthDamage( (1,6,0), stat_bonus=None, element=stats.RESIST_LUNAR, anim=animobs.PurpleExplosion )
      ,) ), com_tar=targetarea.Blast(radius=2), shot_anim=animobs.MysticBolt, ai_tar=invocations.TargetEnemy(), mp_cost=3
    ), )

    def init_monster( self ):
        self.levels.append( base.Beast( 16, self ) )
Exemplo n.º 3
0
class PoisonWepEn( Enchantment ):
    NAME = "Poison Weapon"
    def __init__( self ):
        super(PoisonWepEn, self).__init__(statline=stats.StatMod({stats.PHYSICAL_ATTACK:10}),dispel=(COMBAT,MAGIC))
    ATTACK_ON_HIT = effects.HealthDamage( (2,6,0), stat_bonus=None, element=stats.RESIST_POISON, anim=animobs.PoisonCloud, on_success=(
        effects.SavingThrow( roll_skill=stats.RESIST_POISON, roll_stat=stats.TOUGHNESS, on_failure = (
            effects.Enchant( PoisonClassic, anim=animobs.DeathSparkle )
        ,))
    ,) )
Exemplo n.º 4
0
class MageBlasterTrap(MultiTrap):
    NAME = "Mage Blaster"
    FX = effects.SavingThrow(
        on_success=(effects.NoEffect(anim=animobs.SmallBoom), ),
        on_failure=(effects.ManaDamage((10, 6, 0),
                                       stat_bonus=None,
                                       anim=animobs.PurpleSparkle), ),
        roll_modifier=-25)
    MIN_RANK = 5
    DIFFICULTY = 0
    ONE_SHOT = True
Exemplo n.º 5
0
class CrossbowTrap(SingleTrap):
    NAME = "Crossbow Bolt Trap"
    FX = effects.SavingThrow(
        on_success=(effects.NoEffect(anim=animobs.SmallBoom), ),
        on_failure=(effects.HealthDamage((2, 6, 0),
                                         stat_bonus=None,
                                         element=stats.RESIST_PIERCING,
                                         anim=animobs.RedBoom), ),
        roll_modifier=-5)
    MIN_RANK = 2
    DIFFICULTY = -15
    ONE_SHOT = True
Exemplo n.º 6
0
class BladeTrap(MultiTrap):
    NAME = "Blade Trap"
    FX = effects.SavingThrow(
        on_success=(effects.NoEffect(anim=animobs.SmallBoom), ),
        on_failure=(effects.HealthDamage((1, 6, 0),
                                         stat_bonus=None,
                                         element=stats.RESIST_SLASHING,
                                         anim=animobs.RedBoom), ),
        roll_modifier=20)
    MIN_RANK = 2
    DIFFICULTY = -15
    ONE_SHOT = True
Exemplo n.º 7
0
class BlockTrap(SingleTrap):
    NAME = "Stone Block Trap"
    FX = effects.SavingThrow(
        on_success=(effects.NoEffect(anim=animobs.SmallBoom), ),
        on_failure=(effects.HealthDamage((1, 6, 0),
                                         stat_bonus=None,
                                         element=stats.RESIST_CRUSHING,
                                         anim=animobs.RedBoom), ),
        roll_modifier=0)
    MIN_RANK = 1
    DIFFICULTY = -20
    ONE_SHOT = True
Exemplo n.º 8
0
class ShockTrap(SingleTrap):
    NAME = "Shocker Trap"
    FX = effects.SavingThrow(
        on_success=(effects.NoEffect(anim=animobs.SmallBoom), ),
        on_failure=(effects.HealthDamage((1, 8, 0),
                                         stat_bonus=None,
                                         element=stats.RESIST_LIGHTNING,
                                         anim=animobs.BlueZap), ),
        roll_modifier=-10)
    MIN_RANK = 3
    DIFFICULTY = -15
    ONE_SHOT = False
Exemplo n.º 9
0
class PoisonNeedleTrap(SingleTrap):
    NAME = "Poison Needle"
    FX = effects.SavingThrow(
        on_success=(effects.NoEffect(anim=animobs.SmallBoom), ),
        on_failure=(effects.HealthDamage((1, 4, 0),
                                         stat_bonus=None,
                                         element=stats.RESIST_POISON,
                                         anim=animobs.PoisonCloud),
                    effects.Enchant(enchantments.PoisonClassic)),
        roll_modifier=-10)
    MIN_RANK = 4
    DIFFICULTY = -5
    ONE_SHOT = True
Exemplo n.º 10
0
class GasBombTrap(MultiTrap):
    NAME = "Gas Bomb"
    FX = effects.SavingThrow(
        roll_stat=stats.TOUGHNESS,
        on_success=(effects.NoEffect(anim=animobs.SmallBoom), ),
        on_failure=(effects.HealthDamage((2, 4, 0),
                                         stat_bonus=None,
                                         element=stats.RESIST_POISON,
                                         anim=animobs.PoisonCloud),
                    effects.Enchant(enchantments.PoisonClassic)),
        roll_modifier=0)
    MIN_RANK = 6
    DIFFICULTY = 5
    ONE_SHOT = True
Exemplo n.º 11
0
class FireTrap(MultiTrap):
    NAME = "Fire Trap"
    FX = effects.SavingThrow(on_success=(effects.HealthDamage(
        (1, 6, 0),
        stat_bonus=None,
        element=stats.RESIST_FIRE,
        anim=animobs.OrangeExplosion), ),
                             on_failure=(effects.HealthDamage(
                                 (3, 6, 0),
                                 stat_bonus=None,
                                 element=stats.RESIST_FIRE,
                                 anim=animobs.OrangeExplosion), ),
                             roll_modifier=10)
    MIN_RANK = 4
    DIFFICULTY = -5
    ONE_SHOT = True
Exemplo n.º 12
0
class Shade( base.Monster ):
    name = "Shade"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 12, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 8, \
        stats.RESIST_SOLAR: -50, stats.RESIST_FIRE: -100, stats.STEALTH: 10 }
    SPRITENAME = "monster_undead.png"
    FRAME = 42
    TEMPLATES = (stats.UNDEAD,stats.INCORPOREAL)
    MOVE_POINTS = 6
    VOICE = None
    HABITAT = ( context.HAB_EVERY, context.SET_EVERY,
     context.MAP_DUNGEON,
     context.MTY_UNDEAD, 
     context.DES_AIR, context.GEN_UNDEAD )
    ENC_LEVEL = 5
    ATTACK = items.Attack( (2,4,0), element = stats.RESIST_ATOMIC, extra_effect=
        effects.SavingThrow( roll_skill=stats.RESIST_LUNAR, roll_stat=stats.TOUGHNESS, on_failure = (
            effects.StatDamage( stats.STRENGTH, anim=animobs.GreenBoom )
        ,))
    )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 5, self ) )
Exemplo n.º 13
0
class SkeletalBat( base.Monster ):
    name = "Skeletal Bat"
    statline = { stats.STRENGTH: 9, stats.TOUGHNESS: 9, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 1, stats.PIETY: 1, stats.CHARISMA: 1 }
    SPRITENAME = "monster_skeletons.png"
    FRAME = 24
    TEMPLATES = (stats.UNDEAD,stats.BONE)
    MOVE_POINTS = 12
    VOICE = None
    HABITAT = ( context.HAB_CAVE, context.SET_EVERY,
     context.DES_AIR, context.DES_LUNAR,
     context.MTY_UNDEAD, context.MTY_BEAST,
     context.GEN_UNDEAD )
    ENC_LEVEL = 3
    COMBAT_AI = aibrain.BrainDeadAI()
    ATTACK = items.Attack( (1,6,0), element = stats.RESIST_PIERCING, extra_effect=
        effects.SavingThrow( roll_skill=stats.RESIST_LUNAR, roll_stat=stats.TOUGHNESS, on_failure = (
            effects.StatDamage( stats.PIETY, anim=animobs.BloodSplat )
        ,))
    )
    def init_monster( self ):
        self.levels.append( base.Beast( 2, self ) )
Exemplo n.º 14
0
class PlagueZombie( base.Monster ):
    name = "Plague Zombie"
    statline = { stats.STRENGTH: 11, stats.TOUGHNESS: 14, stats.REFLEXES: 4, \
        stats.INTELLIGENCE: 2, stats.PIETY: 8, stats.CHARISMA: 1 }
    SPRITENAME = "monster_undead.png"
    FRAME = 10
    TEMPLATES = (stats.UNDEAD,stats.FLESHY)
    MOVE_POINTS = 6
    VOICE = None
    HABITAT = ( context.HAB_EVERY, context.HAB_TUNNELS,
     context.SET_EVERY, context.SET_RENFAN,
     context.MTY_UNDEAD, 
     context.DES_LUNAR, context.GEN_UNDEAD )
    ENC_LEVEL = 5
    TREASURE = treasuretype.High()
    COMPANIONS = (Zombie,Ghoul)
    COMBAT_AI = aibrain.BrainDeadAI()
    ATTACK = items.Attack( (1,10,0), element = stats.RESIST_CRUSHING, extra_effect=
        effects.SavingThrow( roll_skill=stats.RESIST_LUNAR, roll_stat=stats.TOUGHNESS, on_failure = (
            effects.StatDamage( stats.TOUGHNESS, anim=animobs.GreenBoom )
        ,))
    )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 6, self ) )