Ejemplo n.º 1
0
class Hydra( base.Monster ):
    name = "Hydra"    
    statline = { stats.STRENGTH: 21, stats.TOUGHNESS: 20, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 3, stats.PIETY: 10, stats.CHARISMA: 9,
        stats.PHYSICAL_ATTACK: 20 }
    SPRITENAME = "monster_default.png"
    FRAME = 3
    TEMPLATES = (stats.REPTILE,stats.EARTH,)
    MOVE_POINTS = 8
    HABITAT = ( context.HAB_EVERY, context.SET_EVERY,
     context.DES_EARTH, context.MTY_BOSS )
    ENC_LEVEL = 11
    VOICE = dialogue.voice.GREEK
    COMBAT_AI = aibrain.BruiserAI()
    TREASURE = treasuretype.Low()
    ATTACK = items.Attack( (2,10,0), element = stats.RESIST_PIERCING )
    TECHNIQUES = ( invocations.MPInvocation( "Poison Breath",
      effects.OpposedRoll( def_stat=stats.TOUGHNESS, on_success = (
        effects.HealthDamage( (3,6,0), stat_bonus=stats.TOUGHNESS, element=stats.RESIST_POISON, anim=animobs.PoisonCloud ),
        effects.TargetIs( effects.ALIVE, on_true=( effects.OpposedRoll( att_stat=None, def_stat=stats.TOUGHNESS, on_success = (
            effects.Enchant( enchantments.PoisonClassic )
        ,) ), ))
      ), on_failure = (
        effects.HealthDamage( (2,6,0), stat_bonus=None, element=stats.RESIST_POISON, anim=animobs.PoisonCloud )
      ,) ), com_tar=targetarea.Blast(radius=2), ai_tar=invocations.TargetEnemy(min_distance=3), mp_cost=20, shot_anim=animobs.GreenComet
    ), )
    def init_monster( self ):
        self.levels.append( base.Terror( 10, self ) )
        self.condition.append( enchantments.PermaMegaRegeneration() )
class LivingStatue( base.Monster ):
    name = "Living Statue"
    statline = { stats.STRENGTH: 14, stats.TOUGHNESS: 13, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 1, \
        stats.RESIST_FIRE: 155 }
    SPRITENAME = "monster_constructs.png"
    FRAME = 13
    TEMPLATES = (stats.CONSTRUCT,)
    MOVE_POINTS = 10
    VOICE = None
    HABITAT = ( context.HAB_BUILDING, context.HAB_TUNNELS, context.SET_EVERY,
     context.MTY_CONSTRUCT, 
     context.DES_FIRE, context.DES_SOLAR )
    ENC_LEVEL = 8
    TREASURE = treasuretype.Low()
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack( (1,6,0), element = stats.RESIST_SLASHING )
    TECHNIQUES = ( invocations.MPInvocation( "Magma Blast",
      effects.OpposedRoll( att_modifier=10, def_stat=stats.REFLEXES, on_success = (
        effects.HealthDamage( (2,8,0), stat_bonus=None, element=stats.RESIST_FIRE, anim=animobs.OrangeExplosion )
      ,), on_failure = (
        effects.HealthDamage( (1,6,0), stat_bonus=None, element=stats.RESIST_FIRE, anim=animobs.OrangeExplosion )
      ,) ), com_tar=targetarea.Line(), ai_tar=invocations.TargetEnemy(), mp_cost=1 ),
    )
    def init_monster( self ):
        self.levels.append( base.Defender( 7, self ) )
Ejemplo n.º 3
0
class Barbarian(base.Monster):
    name = "Barbarian"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 12, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 10 }
    SPRITENAME = "monster_giants.png"
    FRAME = 5
    TEMPLATES = ()
    MOVE_POINTS = 8
    HABITAT = (context.HAB_EVERY, context.SET_EVERY, context.MAP_WILDERNESS,
               context.MTY_HUMANOID, context.MTY_FIGHTER, context.GEN_GIANT)
    ENC_LEVEL = 3
    TREASURE = treasuretype.Low((items.SWORD, items.LIGHT_ARMOR))
    ATTACK = items.Attack((1, 8, 0), element=stats.RESIST_SLASHING)

    def init_monster(self):
        self.levels.append(base.Humanoid(3, self))
Ejemplo n.º 4
0
class Mercenary( base.Monster ):
    name = "Mercenary"
    statline = { stats.STRENGTH: 14, stats.TOUGHNESS: 14, stats.REFLEXES: 13, \
        stats.INTELLIGENCE: 10, stats.PIETY: 12, stats.CHARISMA: 12 }
    SPRITENAME = "monster_people.png"
    FRAME = 17
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.SET_EVERY,
     context.MAP_DUNGEON,
     context.MTY_HUMANOID, context.MTY_FIGHTER, context.GEN_KINGDOM )
    ENC_LEVEL = 6
    TREASURE = treasuretype.Low( (items.POLEARM,items.LIGHT_ARMOR) )
    ATTACK = items.Attack( (2,6,0), element = stats.RESIST_SLASHING, reach=2 )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 6, self ) )
Ejemplo n.º 5
0
class Berserker(base.Monster):
    name = "Berserker"
    statline = { stats.STRENGTH: 14, stats.TOUGHNESS: 14, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 10,
        stats.PHYSICAL_ATTACK: 10 }
    SPRITENAME = "monster_giants.png"
    FRAME = 18
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = (context.HAB_EVERY, context.SET_EVERY, context.MAP_WILDERNESS,
               context.MTY_HUMANOID, context.MTY_FIGHTER, context.GEN_GIANT)
    ENC_LEVEL = 6
    TREASURE = treasuretype.Low((items.AXE, ))
    ATTACK = items.Attack((2, 6, 0), element=stats.RESIST_SLASHING)

    def init_monster(self):
        self.levels.append(base.Defender(6, self))
Ejemplo n.º 6
0
class Cultist(base.Monster):
    name = "Cultist"
    statline = { stats.STRENGTH: 10, stats.TOUGHNESS: 10, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 10, \
        stats.PHYSICAL_ATTACK: 15 }
    SPRITENAME = "monster_chaos.png"
    FRAME = 1
    TEMPLATES = ()
    MOVE_POINTS = 10
    TREASURE = treasuretype.Low()
    HABITAT = (context.HAB_EVERY, context.HAB_BUILDING, context.SET_EVERY,
               context.MAP_DUNGEON, context.MTY_HUMANOID, context.GEN_CHAOS)
    ENC_LEVEL = 1
    ATTACK = items.Attack((1, 4, 0), element=stats.RESIST_PIERCING)

    def init_monster(self):
        self.levels.append(base.Humanoid(1, self))
Ejemplo n.º 7
0
class BarbarianScout(base.Monster):
    name = "Barbarian Scout"
    statline = { stats.STRENGTH: 10, stats.TOUGHNESS: 12, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 10 }
    SPRITENAME = "monster_giants.png"
    FRAME = 8
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = (context.HAB_EVERY, context.SET_EVERY, context.MAP_WILDERNESS,
               context.MTY_HUMANOID, context.GEN_GIANT)
    ENC_LEVEL = 3
    TREASURE = treasuretype.Low((items.BOW, items.ARROW))
    COMBAT_AI = aibrain.BasicTechnicalAI()
    ATTACK = items.Attack((1, 6, 0), element=stats.RESIST_SLASHING)
    TECHNIQUES = (abilities.SHORTBOW, )

    def init_monster(self):
        self.levels.append(base.Humanoid(3, self))
Ejemplo n.º 8
0
class Ettin(base.Monster):
    name = "Ettin"
    statline = { stats.STRENGTH: 20, stats.TOUGHNESS: 16, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 4, stats.PIETY: 8, stats.CHARISMA: 6, \
        stats.AWARENESS: 15 }
    SPRITENAME = "monster_giants.png"
    FRAME = 9
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = (context.HAB_EVERY, context.SET_EVERY, context.MAP_WILDERNESS,
               context.MTY_HUMANOID, context.MTY_FIGHTER, context.MTY_BOSS,
               context.GEN_GIANT, context.GEN_CHAOS)
    ENC_LEVEL = 9
    TREASURE = treasuretype.Low((items.GEM, items.HAT))
    ATTACK = items.Attack((2, 6, 0), element=stats.RESIST_CRUSHING)

    def init_monster(self):
        self.levels.append(base.Humanoid(12, self))
Ejemplo n.º 9
0
class Zombie( base.Monster ):
    name = "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 = 9
    TEMPLATES = (stats.UNDEAD,stats.FLESHY)
    MOVE_POINTS = 6
    VOICE = None
    HABITAT = ( context.HAB_EVERY, context.HAB_TUNNELS, context.SET_EVERY,
     context.MTY_UNDEAD, 
     context.DES_LUNAR, context.GEN_UNDEAD )
    ENC_LEVEL = 3
    TREASURE = treasuretype.Low()
    COMBAT_AI = aibrain.BrainDeadAI()
    ATTACK = items.Attack( (1,10,0), element = stats.RESIST_CRUSHING )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 3, self ) )
Ejemplo n.º 10
0
class NoviceWarrior( base.Monster ):
    name = "Novice Warrior"
    statline = { stats.STRENGTH: 13, stats.TOUGHNESS: 13, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 10, \
        stats.COUNTER_ATTACK: 5 }
    SPRITENAME = "monster_people.png"
    FRAME = 0
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_BUILDING, context.SET_EVERY,
     context.DES_CIVILIZED,
     context.MTY_HUMANOID, context.MTY_FIGHTER,
     context.GEN_CHAOS, context.GEN_KINGDOM, context.GEN_GIANT )
    ENC_LEVEL = 2
    TREASURE = treasuretype.Low()
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_SLASHING )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 2, self ) )
Ejemplo n.º 11
0
class Hurthling( base.Monster ):
    name = "Hurthling"
    statline = { stats.STRENGTH: 10, stats.TOUGHNESS: 8, stats.REFLEXES: 14, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 10,
        stats.NATURAL_DEFENSE: 5 }
    SPRITENAME = "monster_people.png"
    FRAME = 5
    TEMPLATES = ()
    MOVE_POINTS = 10
    VOICE = dialogue.voice.HURTHISH
    HABITAT = ( context.HAB_EVERY, context.HAB_FOREST, context.SET_EVERY,
     context.MAP_WILDERNESS,
     context.MTY_HUMANOID, context.MTY_THIEF, context.GEN_KINGDOM )
    ENC_LEVEL = 1
    TREASURE = treasuretype.Low()
    ATTACK = items.Attack( (1,4,0), element = stats.RESIST_PIERCING )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 1, self ) )
Ejemplo n.º 12
0
class SkeletonWithMorningstar( base.Monster ):
    name = "Skeleton"
    statline = { stats.STRENGTH: 10, stats.TOUGHNESS: 10, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 1 }
    SPRITENAME = "monster_skeletons.png"
    FRAME = 3
    TEMPLATES = (stats.UNDEAD,stats.BONE)
    MOVE_POINTS = 10
    VOICE = None
    HABITAT = ( context.HAB_EVERY, context.SET_EVERY, context.SET_RENFAN,
     context.MTY_UNDEAD, 
     context.DES_EARTH, context.GEN_UNDEAD )
    ENC_LEVEL = 3
    TREASURE = treasuretype.Low()
    COMPANIONS = (Skeleton,SkeletonWithDagger)
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_CRUSHING )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 3, self ) )