Пример #1
0
class Healer( base.Monster ):
    name = "Healer"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 16, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 14, stats.PIETY: 18, stats.CHARISMA: 18 }
    SPRITENAME = "monster_spellcasters.png"
    FRAME = 16
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_BUILDING, context.SET_EVERY,
     context.DES_CIVILIZED, context.DES_SOLAR, context.DES_WATER, context.MTY_BOSS,
     context.MTY_HUMANOID, context.MTY_PRIEST, context.GEN_KINGDOM )
    ENC_LEVEL = 10
    TREASURE = treasuretype.HighItems( ( items.potions.PotionOfHealing, items.scrolls.Rank4Scroll, items.scrolls.Rank5Scroll ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = (NoviceWarrior,NovicePriest,Warrior)
    ATTACK = items.Attack( (3,6,0), element = stats.RESIST_SOLAR,
        hit_anim=animobs.YellowExplosion )
    TECHNIQUES = ( spells.priestspells.SMITE, spells.solarspells.MASS_CURE,
        spells.solarspells.MAXIMUM_CURE, invocations.MPInvocation( "Repent",
            effects.TargetIsAlly( on_true = (
                effects.Enchant( enchantments.BlessingEn, anim=animobs.GreenSparkle ),
                effects.TargetIsDamaged( on_true= (
                    effects.HealthRestore( dice=(3,12,12) ),
                ))
            ), on_false=(
                effects.TargetIsEnemy( on_true = (
                    effects.HealthDamage( (3,12,0), stat_bonus=stats.CHARISMA, element=stats.RESIST_WATER, anim=animobs.Bubbles ),
                )),
            )), shot_anim=animobs.BlueComet, com_tar=targetarea.Blast(radius=3),
            ai_tar=invocations.TargetEnemy(), mp_cost=12 )
        )
    def init_monster( self ):
        self.levels.append( base.Spellcaster( 6, self ) )
        self.levels.append( base.Defender( 4, self ) )
Пример #2
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 ) )
Пример #3
0
class ReptalArcher(base.Monster):
    name = "Reptal Archer"
    statline = { stats.STRENGTH: 15, stats.TOUGHNESS: 15, stats.REFLEXES: 13, \
        stats.INTELLIGENCE: 8, stats.PIETY: 9, stats.CHARISMA: 9 }
    SPRITENAME = "monster_draconic.png"
    FRAME = 4
    TEMPLATES = (stats.REPTILE, )
    MOVE_POINTS = 10
    VOICE = dialogue.voice.DRACONIAN
    HABITAT = (context.HAB_EVERY, context.SET_EVERY, context.DES_WATER,
               context.MTY_HUMANOID, context.MTY_FIGHTER, context.GEN_DRAGON)
    ENC_LEVEL = 4
    COMBAT_AI = aibrain.BasicTechnicalAI()
    TREASURE = treasuretype.Standard((items.ARROW, ))
    COMPANIONS = (ReptalWarrior, Reptal)
    ATTACK = items.Attack((1, 6, 0), element=stats.RESIST_CRUSHING)
    TECHNIQUES = (abilities.LONGBOW, )

    def init_monster(self):
        self.levels.append(base.Humanoid(4, self))
Пример #4
0
class NovicePriest( base.Monster ):
    name = "Novice Priest"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 13, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 13, stats.PIETY: 15, stats.CHARISMA: 12 }
    SPRITENAME = "monster_spellcasters.png"
    FRAME = 0
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_BUILDING, context.SET_EVERY,
     context.DES_CIVILIZED, context.DES_SOLAR, context.DES_AIR,
     context.MTY_HUMANOID, context.MTY_PRIEST, context.GEN_KINGDOM )
    ENC_LEVEL = 3
    TREASURE = treasuretype.Standard( ( items.scrolls.Rank1Scroll, items.scrolls.Rank2Scroll ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = (NoviceWarrior,)
    ATTACK = items.Attack( (1,6,0), element = stats.RESIST_CRUSHING )
    TECHNIQUES = ( spells.waterspells.FREEZE_FOE, spells.airspells.SILENCE,
        spells.solarspells.BLESSING, spells.solarspells.MINOR_CURE )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 3, self ) )
Пример #5
0
class Necromancer( base.Monster ):
    name = "Necromancer"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 12, stats.REFLEXES: 13, \
        stats.INTELLIGENCE: 15, stats.PIETY: 13, stats.CHARISMA: 12 }
    SPRITENAME = "monster_spellcasters.png"
    FRAME = 23
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_BUILDING, context.SET_EVERY,
     context.DES_CIVILIZED, context.DES_LUNAR,
     context.MTY_HUMANOID, context.MTY_MAGE, context.GEN_UNDEAD )
    ENC_LEVEL = 5
    TREASURE = treasuretype.HighItems( ( items.scrolls.Rank2Scroll, items.scrolls.Rank3Scroll ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = (undead.Ghoul,undead.SkeletonWithMorningstar)
    ATTACK = items.Attack( (1,6,0), element = stats.RESIST_CRUSHING )
    TECHNIQUES = ( spells.lunarspells.ENERVATE, spells.necrospells.ACID_CLOUD,
        spells.necrospells.TOUCH_OF_DEATH, spells.necrospells.RAISE_CORPSE )
    def init_monster( self ):
        self.levels.append( base.Spellcaster( 5, self ) )
Пример #6
0
class NoviceMage( base.Monster ):
    name = "Novice Mage"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 10, stats.REFLEXES: 13, \
        stats.INTELLIGENCE: 15, stats.PIETY: 13, stats.CHARISMA: 12 }
    SPRITENAME = "monster_spellcasters.png"
    FRAME = 21
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_BUILDING, context.SET_EVERY,
     context.DES_CIVILIZED, context.DES_LUNAR, context.DES_FIRE,
     context.MTY_HUMANOID, context.MTY_MAGE, context.GEN_KINGDOM )
    ENC_LEVEL = 3
    TREASURE = treasuretype.Standard( ( items.scrolls.Rank1Scroll, items.scrolls.Rank2Scroll ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = (NovicePriest,NoviceWarrior)
    ATTACK = items.Attack( (1,6,0), element = stats.RESIST_CRUSHING )
    TECHNIQUES = ( spells.firespells.FIRE_BOLT, spells.lunarspells.CURSE,
        spells.magespells.FIRE_ARC, spells.lunarspells.SLEEP )
    def init_monster( self ):
        self.levels.append( base.Spellcaster( 3, self ) )
Пример #7
0
class Heretic(base.Monster):
    name = "Heretic"
    statline = { stats.STRENGTH: 8, stats.TOUGHNESS: 10, stats.REFLEXES: 8, \
        stats.INTELLIGENCE: 12, stats.PIETY: 9, stats.CHARISMA: 13, \
        stats.PHYSICAL_DEFENSE: -20, stats.NATURAL_DEFENSE: -20, stats.MAGIC_ATTACK: -10 }
    SPRITENAME = "monster_chaos.png"
    FRAME = 17
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = (context.HAB_EVERY, context.SET_EVERY, context.DES_AIR,
               context.MTY_HUMANOID, context.MTY_MAGE, context.GEN_CHAOS)
    ENC_LEVEL = 3
    COMBAT_AI = aibrain.BasicTechnicalAI()
    TREASURE = treasuretype.Standard(
        (items.scrolls.Rank1Scroll, items.scrolls.Rank2Scroll))
    TECHNIQUES = (spells.firespells.IGNITE, spells.waterspells.FREEZE_FOE)
    ATTACK = items.Attack((1, 4, 0), element=stats.RESIST_CRUSHING)

    def init_monster(self):
        self.levels.append(base.Humanoid(3, self))
Пример #8
0
class EarthbindTester(monsters.base.Monster):
    name = "Earthbind Tester"
    statline = { stats.STRENGTH: 10, stats.TOUGHNESS: 12, stats.REFLEXES: 17, \
        stats.INTELLIGENCE: 80, stats.PIETY: 80, stats.CHARISMA: 4,
        stats.PHYSICAL_ATTACK: 5, stats.NATURAL_DEFENSE: 5 }
    SPRITENAME = "monster_animals.png"
    FRAME = 9
    TEMPLATES = ()
    MOVE_POINTS = 12
    VOICE = None
    HABITAT = (context.HAB_BUILDING, context.HAB_TUNNELS, context.SET_EVERY,
               context.DES_EARTH, context.DES_CIVILIZED, context.MTY_BEAST,
               context.MTY_CREATURE, context.GEN_NATURE)
    ENC_LEVEL = 1
    TECHNIQUES = (spells.earthspells.EARTHBIND, )
    COMBAT_AI = aibrain.BasicTechnicalAI()

    ATTACK = items.Attack((1, 4, 0), element=stats.RESIST_PIERCING)

    def init_monster(self):
        self.levels.append(monsters.base.Beast(1, self))
Пример #9
0
class Ranger( base.Monster ):
    name = "Ranger"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 12, stats.REFLEXES: 14, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 12, \
        stats.STEALTH: 24 }
    SPRITENAME = "monster_people.png"
    FRAME = 16
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_FOREST, context.SET_EVERY,
     context.MAP_WILDERNESS,
     context.MTY_HUMANOID, context.MTY_FIGHTER, context.GEN_NATURE, context.GEN_KINGDOM )
    ENC_LEVEL = 6
    TREASURE = treasuretype.Standard( ( items.ARROW, items.BOW ) )
    COMPANIONS = (NoviceDruid,)
    COMBAT_AI = aibrain.BasicTechnicalAI()
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_SLASHING )
    TECHNIQUES = ( abilities.LONGBOW, spells.earthspells.EARTHBIND )

    def init_monster( self ):
        self.levels.append( base.Humanoid( 5, self ) )
Пример #10
0
class Priest( base.Monster ):
    name = "Priest"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 14, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 13, stats.PIETY: 16, stats.CHARISMA: 12 }
    SPRITENAME = "monster_spellcasters.png"
    FRAME = 2
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_BUILDING, context.SET_EVERY,
     context.DES_CIVILIZED, context.DES_SOLAR, context.MTY_LEADER,
     context.MTY_HUMANOID, context.MTY_PRIEST, context.GEN_KINGDOM )
    ENC_LEVEL = 6
    TREASURE = treasuretype.HighItems( ( items.scrolls.Rank2Scroll, items.scrolls.Rank3Scroll, items.POTION ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = (NoviceWarrior,NovicePriest,Warrior)
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_CRUSHING )
    TECHNIQUES = ( spells.waterspells.FREEZE_FOE, spells.priestspells.HEALING_LIGHT,
        spells.solarspells.SUNRAY, spells.airspells.SILENCE,
        spells.priestspells.HEROISM, spells.priestspells.ARMOR_OF_FAITH )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 6, self ) )
Пример #11
0
class Conjuoror( base.Monster ):
    name = "Conjuoror"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 12, stats.REFLEXES: 13, \
        stats.INTELLIGENCE: 16, stats.PIETY: 14, stats.CHARISMA: 12 }
    SPRITENAME = "monster_spellcasters.png"
    FRAME = 10
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_BUILDING, context.SET_EVERY,
     context.DES_CIVILIZED, context.DES_LUNAR, context.DES_FIRE,
     context.MTY_HUMANOID, context.MTY_MAGE, context.GEN_KINGDOM )
    ENC_LEVEL = 7
    TREASURE = treasuretype.HighItems( ( items.scrolls.Rank3Scroll, items.scrolls.Rank4Scroll ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = (NovicePriest,NoviceWarrior,Warrior,Mercenary)
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_CRUSHING )
    TECHNIQUES = ( spells.magespells.LIGHTNING_BOLT, spells.lunarspells.SLEEP,
        spells.lunarspells.HELLBLAST, spells.firespells.EXPLOSION,
        spells.firespells.PYROTECHNICS
         )
    def init_monster( self ):
        self.levels.append( base.Spellcaster( 7, self ) )
Пример #12
0
class NoviceDruid( base.Monster ):
    name = "Novice Druid"
    statline = { stats.STRENGTH: 12, stats.TOUGHNESS: 13, stats.REFLEXES: 12, \
        stats.INTELLIGENCE: 14, stats.PIETY: 14, stats.CHARISMA: 12 }
    SPRITENAME = "monster_spellcasters.png"
    FRAME = 8
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_FOREST, context.SET_EVERY,
     context.MAP_WILDERNESS,
     context.DES_SOLAR, context.DES_EARTH, context.DES_FIRE,
     context.MTY_HUMANOID, context.MTY_PRIEST, context.GEN_NATURE )
    ENC_LEVEL = 4
    TREASURE = treasuretype.Standard( ( items.scrolls.Rank1Scroll, items.scrolls.Rank2Scroll ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = (animals.Wolf,animals.BlackBear)
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_CRUSHING )
    TECHNIQUES = ( spells.solarspells.MINOR_CURE, spells.earthspells.CALL_CRITTER,
        spells.earthspells.ACID_BOLT, spells.earthspells.BEASTLY_MIGHT )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 2, self ) )
        self.levels.append( base.Spellcaster( 2, self ) )
Пример #13
0
class OgreShaman( base.Monster ):
    name = "Ogre Shaman"
    statline = { stats.STRENGTH: 16, stats.TOUGHNESS: 16, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 10, stats.PIETY: 10, stats.CHARISMA: 5 }
    SPRITENAME = "monster_giants.png"
    FRAME = 3
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY, context.HAB_FOREST,
     context.SET_EVERY, context.SET_RENFAN,
     context.DES_WATER,
     context.MTY_HUMANOID, context.MTY_PRIEST, context.GEN_GIANT )
    ENC_LEVEL = 7
    TREASURE = treasuretype.LowItems( ( items.scrolls.Rank3Scroll, items.scrolls.Rank4Scroll, items.STAFF ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = ( Ogre, OgreChamp )
    LONER = True
    ATTACK = items.Attack( (1,12,0), element = stats.RESIST_CRUSHING )
    TECHNIQUES = ( spells.waterspells.WINTER_WIND, spells.solarspells.MODERATE_CURE,
    )
    def init_monster( self ):
        self.levels.append( base.Spellcaster( 8, self ) )
Пример #14
0
class BarbarianShaman( base.Monster ):
    name = "Barbarian Shaman"    
    statline = { stats.STRENGTH: 10, stats.TOUGHNESS: 12, stats.REFLEXES: 10, \
        stats.INTELLIGENCE: 12, stats.PIETY: 12, stats.CHARISMA: 10 }
    SPRITENAME = "monster_giants.png"
    FRAME = 7
    TEMPLATES = ()
    MOVE_POINTS = 10
    HABITAT = ( context.HAB_EVERY,
     context.SET_EVERY,
     context.MAP_WILDERNESS,
     context.MTY_HUMANOID, context.MTY_MAGE, context.GEN_GIANT )
    ENC_LEVEL = 5
    TREASURE = treasuretype.LowItems( ( items.scrolls.Rank1Scroll, items.scrolls.Rank2Scroll, items.STAFF ) )
    COMBAT_AI = aibrain.BasicTechnicalAI()
    LONER = True
    COMPANIONS = (Barbarian,BarbarianScout)
    ATTACK = items.Attack( (1,8,0), element = stats.RESIST_SLASHING )
    TECHNIQUES = ( spells.magespells.SHOCK_SPHERE, spells.earthspells.ACID_BOLT,
        spells.waterspells.FREEZE_FOE, spells.airspells.SHOUT
    )
    def init_monster( self ):
        self.levels.append( base.Humanoid( 5, self ) )
Пример #15
0
class CentaurKnight(base.Monster):
    name = "Centaur Knight"
    statline = { stats.STRENGTH: 16, stats.TOUGHNESS: 16, stats.REFLEXES: 14, \
        stats.INTELLIGENCE: 12, stats.PIETY: 14, stats.CHARISMA: 13, \
        stats.NATURAL_DEFENSE: 10, stats.MAGIC_DEFENSE: 10 }
    SPRITENAME = "monster_chaos.png"
    FRAME = 4
    TEMPLATES = ()
    MOVE_POINTS = 12
    VOICE = dialogue.voice.GREEK
    HABITAT = (context.HAB_EVERY, context.SET_EVERY, context.MAP_WILDERNESS,
               context.DES_SOLAR, context.MTY_HUMANOID, context.MTY_FIGHTER,
               context.MTY_LEADER, context.GEN_CHAOS)
    ENC_LEVEL = 7
    TREASURE = treasuretype.Standard((items.ARROW, ))
    COMBAT_AI = aibrain.BasicTechnicalAI()
    COMPANIONS = (Centaur, CentaurWarrior)
    ATTACK = items.Attack((2, 6, 0), element=stats.RESIST_SLASHING)
    TECHNIQUES = (abilities.COMPOSITEBOW, spells.solarspells.MAJOR_CURE,
                  spells.solarspells.CURE_POISON)

    def init_monster(self):
        self.levels.append(base.Humanoid(8, self))