예제 #1
0
class Behir( base.Monster ):
    name = "Behir"    
    statline = { stats.STRENGTH: 26, stats.TOUGHNESS: 21, stats.REFLEXES: 13, \
        stats.INTELLIGENCE: 7, stats.PIETY: 14, stats.CHARISMA: 12, \
        stats.RESIST_LIGHTNING: 150, stats.AWARENESS: 50, stats.CRITICAL_HIT: 10 }
    SPRITENAME = "monster_by_Joe.png"
    FRAME = 5
    TEMPLATES = ()
    MOVE_POINTS = 12
    HABITAT = ( context.HAB_EVERY, context.SET_EVERY,
     context.MAP_DUNGEON,
     context.DES_AIR,
     context.MTY_BOSS )
    ENC_LEVEL = 10
    TREASURE = treasuretype.Swallowed(scale=1,swag_chance=20)
    ATTACK = items.Attack( (2,4,0), element = stats.RESIST_PIERCING )
    TECHNIQUES = ( invocations.MPInvocation( "Lightning Breath",
      effects.OpposedRoll( att_stat=stats.REFLEXES, def_stat=stats.REFLEXES, on_success = (
        effects.HealthDamage( (7,6,0), stat_bonus=None, element=stats.RESIST_LIGHTNING, anim=animobs.Spark )
      ,), on_failure = (
        effects.HealthDamage( (3,7,0), stat_bonus=None, element=stats.RESIST_LIGHTNING, anim=animobs.Spark )
      ,) ), com_tar=targetarea.Line(reach=5), ai_tar=invocations.TargetEnemy(), mp_cost=30
    ), )
    def init_monster( self ):
        self.levels.append( base.Terror( 9, self ) )
예제 #2
0
class Ankheg(base.Monster):
    # OGL monster http://www.d20srd.org/srd/monsters/ankheg.htm
    name = "Ankheg"
    statline = { stats.STRENGTH: 21, stats.TOUGHNESS: 17, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 1, stats.PIETY: 13, stats.CHARISMA: 6,
        stats.STEALTH: 30 }
    SPRITENAME = "monster_bugs.png"
    FRAME = 40
    TEMPLATES = (stats.BUG, )
    MOVE_POINTS = 10
    VOICE = None
    TREASURE = treasuretype.Swallowed(swag_chance=35)
    HABITAT = (context.HAB_CAVE, context.HAB_TUNNELS, context.SET_EVERY,
               context.DES_EARTH, context.MTY_BOSS, context.MTY_BEAST,
               context.MTY_CREATURE, context.GEN_NATURE)
    ENC_LEVEL = 5
    ATTACK = items.Attack((2, 6, 3),
                          element=stats.RESIST_SLASHING,
                          extra_effect=effects.HealthDamage(
                              (1, 6, 0),
                              stat_bonus=None,
                              element=stats.RESIST_ACID,
                              anim=animobs.GreenExplosion))
    TECHNIQUES = (invocations.MPInvocation(
        "Acid Breath",
        effects.OpposedRoll(att_skill=stats.PHYSICAL_ATTACK,
                            att_stat=stats.REFLEXES,
                            def_stat=stats.REFLEXES,
                            on_success=(effects.HealthDamage(
                                (4, 4, 0),
                                stat_bonus=None,
                                element=stats.RESIST_ACID,
                                anim=animobs.GreenExplosion), ),
                            on_failure=(effects.HealthDamage(
                                (1, 8, 0),
                                stat_bonus=None,
                                element=stats.RESIST_ACID,
                                anim=animobs.GreenExplosion), )),
        com_tar=targetarea.Line(reach=5),
        ai_tar=invocations.TargetEnemy(),
        mp_cost=10), )

    def init_monster(self):
        self.levels.append(base.Defender(2, self))
        self.levels.append(base.Beast(2, self))
예제 #3
0
class Crocodile(base.Monster):
    name = "Crocodile"
    statline = { stats.STRENGTH: 25, stats.TOUGHNESS: 18, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 1, stats.PIETY: 10, stats.CHARISMA: 1 }
    SPRITENAME = "monster_animals.png"
    FRAME = 24
    TEMPLATES = (stats.REPTILE, )
    MOVE_POINTS = 8
    VOICE = None
    TREASURE = treasuretype.Swallowed()
    HABITAT = (context.HAB_TUNNELS, context.SET_EVERY, context.DES_WATER,
               context.MTY_BEAST, context.MTY_CREATURE, context.GEN_NATURE,
               context.GEN_DRAGON)
    ENC_LEVEL = 8
    ATTACK = items.Attack((1, 12, 0), element=stats.RESIST_PIERCING)

    def init_monster(self):
        self.levels.append(base.Beast(8, self))
예제 #4
0
class GiantFrog(base.Monster):
    name = "Giant Frog"
    statline = { stats.STRENGTH: 13, stats.TOUGHNESS: 15, stats.REFLEXES: 11, \
        stats.INTELLIGENCE: 1, stats.PIETY: 5, stats.CHARISMA: 1 }
    SPRITENAME = "monster_animals.png"
    FRAME = 13
    TEMPLATES = (stats.REPTILE, )
    MOVE_POINTS = 12
    VOICE = None
    TREASURE = treasuretype.Swallowed()
    HABITAT = (context.HAB_CAVE, context.SET_EVERY, context.DES_WATER,
               context.MTY_BEAST, context.MTY_CREATURE, context.MTY_BOSS,
               context.GEN_NATURE)
    ENC_LEVEL = 3
    ATTACK = items.Attack((1, 8, 0), element=stats.RESIST_PIERCING)

    def init_monster(self):
        self.levels.append(base.Beast(3, self))
예제 #5
0
class DragonTurtle(base.Monster):
    name = "Dragon Turtle"
    statline = { stats.STRENGTH: 28, stats.TOUGHNESS: 36, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 6, stats.PIETY: 14, stats.CHARISMA: 6, \
        stats.RESIST_WATER: 50 }
    SPRITENAME = "monster_animals.png"
    FRAME = 34
    TEMPLATES = (stats.REPTILE, stats.DRAGON, stats.WATER)
    MOVE_POINTS = 6
    VOICE = None
    TREASURE = treasuretype.Swallowed()
    HABITAT = (context.HAB_EVERY, context.SET_EVERY, context.DES_WATER,
               context.MTY_BEAST, context.MTY_CREATURE, context.MTY_BOSS,
               context.GEN_NATURE, context.GEN_DRAGON)
    ENC_LEVEL = 18
    ATTACK = items.Attack((4, 6, 0), element=stats.RESIST_CRUSHING)
    TECHNIQUES = (invocations.MPInvocation(
        "Steam Breath",
        effects.OpposedRoll(att_skill=stats.PHYSICAL_ATTACK,
                            att_stat=stats.REFLEXES,
                            def_stat=stats.REFLEXES,
                            on_success=(effects.HealthDamage(
                                (10, 10, 0),
                                stat_bonus=None,
                                element=stats.RESIST_FIRE,
                                anim=animobs.Steam), ),
                            on_failure=(effects.HealthDamage(
                                (2, 20, 0),
                                stat_bonus=None,
                                element=stats.RESIST_FIRE,
                                anim=animobs.Steam), )),
        com_tar=targetarea.Cone(reach=8),
        ai_tar=invocations.TargetEnemy(),
        mp_cost=15), )

    def init_monster(self):
        self.levels.append(base.Beast(18, self))
예제 #6
0
class Roc(base.Monster):
    name = "Roc"
    statline = { stats.STRENGTH: 35, stats.TOUGHNESS: 24, stats.REFLEXES: 18, \
        stats.INTELLIGENCE: 2, stats.PIETY: 13, stats.CHARISMA: 12 }
    SPRITENAME = "monster_animals.png"
    FRAME = 30
    TEMPLATES = ()
    MOVE_POINTS = 16
    VOICE = None
    TREASURE = treasuretype.Swallowed()
    HABITAT = (context.HAB_FOREST, context.HAB_DESERT, context.SET_EVERY,
               context.MAP_WILDERNESS, context.MTY_BEAST, context.MTY_CREATURE,
               context.GEN_NATURE, context.DES_AIR, context.DES_SOLAR)
    ENC_LEVEL = 14
    ATTACK = items.Attack((3, 8, 0), element=stats.RESIST_PIERCING)
    TECHNIQUES = (invocations.MPInvocation(
        "Wing Sweep",
        effects.OpposedRoll(att_skill=stats.PHYSICAL_ATTACK,
                            att_stat=stats.REFLEXES,
                            def_stat=stats.REFLEXES,
                            on_success=(effects.HealthDamage(
                                (3, 6, 0),
                                stat_bonus=stats.TOUGHNESS,
                                element=stats.RESIST_WIND,
                                anim=animobs.Spiral), ),
                            on_failure=(effects.HealthDamage(
                                (1, 8, 0),
                                stat_bonus=None,
                                element=stats.RESIST_WIND,
                                anim=animobs.Spiral), )),
        com_tar=targetarea.Cone(reach=4),
        ai_tar=invocations.TargetEnemy(),
        mp_cost=10), )

    def init_monster(self):
        self.levels.append(base.Beast(14, self))