예제 #1
0
class FlamingSword(base.Monster):
    name = "Flaming Sword"
    statline = { stats.STRENGTH: 16, stats.TOUGHNESS: 14, stats.REFLEXES: 18, \
        stats.INTELLIGENCE: 12, stats.PIETY: 20, stats.CHARISMA: 14,
        stats.RESIST_SLASHING: 50, stats.MAGIC_DEFENSE: 50, stats.COUNTER_ATTACK: 50 }
    SPRITENAME = "monster_constructs.png"
    FRAME = 9
    TEMPLATES = (stats.CONSTRUCT, )
    MOVE_POINTS = 12
    VOICE = None
    HABITAT = (context.SET_EVERY, context.MTY_CONSTRUCT, context.DES_AIR,
               context.DES_FIRE, context.SUMMON_FLAMINGSWORD)
    ENC_LEVEL = 14
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack(
        (3, 8, 0),
        element=stats.RESIST_SLASHING,
        extra_effect=effects.OpposedRoll(on_success=(effects.HealthDamage(
            (3, 8, 0),
            stat_bonus=stats.INTELLIGENCE,
            element=stats.RESIST_FIRE,
            anim=animobs.RedCloud), effects.Enchant(enchantments.BurnLowEn)),
                                         on_failure=(effects.HealthDamage(
                                             (3, 8, 0),
                                             stat_bonus=None,
                                             element=stats.RESIST_FIRE,
                                             anim=animobs.RedCloud), )))

    def init_monster(self):
        self.levels.append(base.Defender(14, self))
예제 #2
0
class SkeletonHunter( base.Monster ):
    name = "Skeleton Hunter"
    statline = { stats.STRENGTH: 14, stats.TOUGHNESS: 12, stats.REFLEXES: 16, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 10,
        stats.NATURAL_DEFENSE: 10, stats.PHYSICAL_ATTACK: 5 }
    SPRITENAME = "monster_skeletons.png"
    FRAME = 9
    TEMPLATES = (stats.UNDEAD,stats.BONE)
    MOVE_POINTS = 8
    VOICE = None
    HABITAT = ( context.HAB_EVERY, context.SET_EVERY, context.SET_RENFAN,
     context.MTY_UNDEAD, context.MTY_HUMANOID, context.MTY_FIGHTER, context.MTY_BOSS, 
     context.DES_EARTH, context.GEN_UNDEAD )
    ENC_LEVEL = 6
    TREASURE = treasuretype.High((items.BOW,items.ARROW,items.ARROW))
    LONER = True
    COMPANIONS = (Shade,Ghast,SkeletonMage,SkeletonFighter,SkeletonThief,SkeletalHound)
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack( (2,6,0), element = stats.RESIST_CRUSHING )
    TECHNIQUES = ( invocations.Invocation( "Arrow",
      effects.PhysicalAttackRoll( att_stat=stats.REFLEXES, on_success = (
        effects.HealthDamage( (1,8,0), stat_bonus=None, element=stats.RESIST_PIERCING, anim=animobs.RedBoom ),
        effects.TargetIs( effects.ANIMAL, on_true=(
            effects.PercentRoll( roll_skill=stats.MAGIC_ATTACK, roll_stat=None, 
            roll_modifier=-5, target_affects=True, on_success=(
                effects.InstaKill( anim=animobs.CriticalHit )
            ,) )
        ,) ) 
      ), on_failure = (
        effects.NoEffect( anim=animobs.SmallBoom )
      ,) ), com_tar=targetarea.SingleTarget(reach=8), shot_anim=animobs.Arrow, ai_tar=invocations.TargetEnemy()
    ), )

    def init_monster( self ):
        self.levels.append( base.Humanoid( 5, self ) )
예제 #3
0
class AnimatedFlail(base.Monster):
    name = "Animated Flail"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 12, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 1, stats.PIETY: 10, stats.CHARISMA: 1,
        stats.RESIST_CRUSHING: 50 }
    SPRITENAME = "monster_constructs.png"
    FRAME = 17
    TEMPLATES = (stats.CONSTRUCT, )
    MOVE_POINTS = 10
    VOICE = None
    HABITAT = (context.SET_EVERY, context.MTY_CONSTRUCT, context.DES_EARTH)
    ENC_LEVEL = 7
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack((3, 6, 0), element=stats.RESIST_CRUSHING)

    def init_monster(self):
        self.levels.append(base.Beast(7, self))
예제 #4
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 ) )
예제 #5
0
class SkeletonThief( base.Monster ):
    name = "Skeleton Thief"
    statline = { stats.STRENGTH: 14, stats.TOUGHNESS: 12, stats.REFLEXES: 16, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 1,
        stats.STEALTH: 20 }
    SPRITENAME = "monster_skeletons.png"
    FRAME = 13
    TEMPLATES = (stats.UNDEAD,stats.BONE)
    MOVE_POINTS = 12
    VOICE = None
    HABITAT = ( context.HAB_EVERY, context.SET_EVERY, context.SET_RENFAN,
     context.MTY_UNDEAD, context.MTY_HUMANOID, context.MTY_THIEF, 
     context.DES_EARTH, context.GEN_UNDEAD )
    ENC_LEVEL = 4
    TREASURE = treasuretype.Standard()
    COMPANIONS = (SkeletonFighter,SkeletalBat)
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack( (1,6,0), element = stats.RESIST_PIERCING )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 4, self ) )
예제 #6
0
class SkeletonFighter( base.Monster ):
    name = "Skeleton Fighter"
    statline = { stats.STRENGTH: 16, stats.TOUGHNESS: 12, stats.REFLEXES: 14, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 1,
        stats.NATURAL_DEFENSE: 10 }
    SPRITENAME = "monster_skeletons.png"
    FRAME = 5
    TEMPLATES = (stats.UNDEAD,stats.BONE)
    MOVE_POINTS = 10
    VOICE = None
    HABITAT = ( context.HAB_EVERY, context.SET_EVERY, context.SET_RENFAN,
     context.MTY_UNDEAD, context.MTY_HUMANOID, context.MTY_FIGHTER, 
     context.DES_EARTH, context.GEN_UNDEAD )
    ENC_LEVEL = 4
    TREASURE = treasuretype.Standard()
    COMPANIONS = (SkeletonWithDagger,SkeletonWithMorningstar)
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_SLASHING )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 4, self ) )
예제 #7
0
class SkeletonGuard( base.Monster ):
    name = "Skeleton Guard"
    statline = { stats.STRENGTH: 15, stats.TOUGHNESS: 16, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 1,
        stats.NATURAL_DEFENSE: 10 }
    SPRITENAME = "monster_skeletons.png"
    FRAME = 6
    TEMPLATES = (stats.UNDEAD,stats.BONE)
    MOVE_POINTS = 8
    VOICE = None
    HABITAT = ( context.HAB_EVERY, context.HAB_DESERT,
     context.SET_EVERY, context.SET_RENFAN,
     context.MTY_UNDEAD, 
     context.DES_EARTH, context.DES_SOLAR, context.GEN_UNDEAD )
    ENC_LEVEL = 3
    TREASURE = treasuretype.High()
    COMPANIONS = (SkeletonWithDagger,SkeletonWithMorningstar)
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_PIERCING )
    def init_monster( self ):
        self.levels.append( base.Defender( 3, self ) )
예제 #8
0
class PewterGolem(base.Monster):
    name = "Pewter Golem"
    statline = { stats.STRENGTH: 17, stats.TOUGHNESS: 13, stats.REFLEXES: 8, \
        stats.INTELLIGENCE: 1, stats.PIETY: 11, stats.CHARISMA: 13 }
    SPRITENAME = "monster_constructs.png"
    FRAME = 10
    TEMPLATES = (stats.CONSTRUCT, )
    MOVE_POINTS = 8
    VOICE = None
    HABITAT = (
        context.HAB_BUILDING,
        context.SET_EVERY,
        context.MTY_CONSTRUCT,
    )
    ENC_LEVEL = 3
    COMBAT_AI = aibrain.SteadyAI()
    TREASURE = treasuretype.Standard()
    ATTACK = items.Attack((1, 6, 0), element=stats.RESIST_CRUSHING)

    def init_monster(self):
        self.levels.append(base.Defender(3, self))
예제 #9
0
class AnimatedCandlestick(base.Monster):
    name = "Candlestick"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 12, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 12 }
    SPRITENAME = "monster_constructs.png"
    FRAME = 19
    TEMPLATES = (stats.CONSTRUCT, )
    MOVE_POINTS = 10
    VOICE = None
    HABITAT = (context.HAB_BUILDING, context.SET_EVERY, context.MTY_CONSTRUCT,
               context.DES_FIRE)
    ENC_LEVEL = 7
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack(
        (2, 6, 0),
        element=stats.RESIST_PIERCING,
        extra_effect=effects.OpposedRoll(att_modifier=-10,
                                         on_success=(effects.Enchant(
                                             enchantments.BurnLowEn,
                                             anim=animobs.RedCloud), )))
    TECHNIQUES = (invocations.MPInvocation(
        "Fireball",
        effects.OpposedRoll(def_stat=stats.REFLEXES,
                            on_success=(effects.HealthDamage(
                                (1, 10, 0),
                                stat_bonus=None,
                                element=stats.RESIST_FIRE,
                                anim=animobs.RedCloud), ),
                            on_failure=(effects.HealthDamage(
                                (1, 6, 0),
                                stat_bonus=None,
                                element=stats.RESIST_FIRE,
                                anim=animobs.RedCloud), )),
        com_tar=targetarea.SingleTarget(),
        ai_tar=invocations.TargetEnemy(),
        shot_anim=animobs.Fireball,
        mp_cost=5), )

    def init_monster(self):
        self.levels.append(base.Beast(7, self))
예제 #10
0
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))
예제 #11
0
class CreepingCoins(base.Monster):
    name = "Creeping Coins"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 12, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 1, stats.PIETY: 10, stats.CHARISMA: 1, \
        stats.RESIST_COLD: 155 }
    SPRITENAME = "monster_constructs.png"
    FRAME = 18
    TEMPLATES = (stats.CONSTRUCT, )
    MOVE_POINTS = 6
    VOICE = None
    HABITAT = (context.HAB_CAVE, context.SET_RENFAN, context.MTY_CONSTRUCT,
               context.DES_ICE)
    ENC_LEVEL = 7
    TREASURE = treasuretype.High()
    COMBAT_AI = aibrain.SteadyAI()
    ATTACK = items.Attack((2, 6, 0), element=stats.RESIST_CRUSHING)
    TECHNIQUES = (invocations.MPInvocation(
        "Cold Blast",
        effects.OpposedRoll(att_modifier=10,
                            def_stat=stats.REFLEXES,
                            on_success=(effects.HealthDamage(
                                (1, 10, 0),
                                stat_bonus=None,
                                element=stats.RESIST_COLD,
                                anim=animobs.SnowCloud), ),
                            on_failure=(effects.HealthDamage(
                                (1, 6, 0),
                                stat_bonus=None,
                                element=stats.RESIST_COLD,
                                anim=animobs.SnowCloud), )),
        com_tar=targetarea.Cone(reach=5),
        ai_tar=invocations.TargetEnemy(),
        mp_cost=1), )

    def init_monster(self):
        self.levels.append(base.Defender(6, self))