class GemOfHolograms(Consumable): true_name = "Gem of Holograms" true_desc = "This gem may be used to summon an illusory monster to aid you in combat." itemtype = GEM mass_per_q = 3 cost_per_q = 600 tech = invocations.Invocation( "Create Illusion", effects.CallMonster({(context.HAB_EVERY, context.SET_EVERY): True}, 5, anim=animobs.BlueSparkle), com_tar=targetarea.SingleTarget(reach=5), ai_tar=invocations.TargetEmptySpot(), exp_tar=None)
element=stats.RESIST_FIRE, anim=animobs.DragonFire), )), rank=5, gems={FIRE: 3}, com_tar=targetarea.Cone(), ai_tar=invocations.TargetEnemy()) # CIRCLE 6 CALL_FIRE_ELEMENTAL = Spell( "Call Fire Elemental", "This spell will call forth a living vortex of fire to serve you for the duration of combat.", effects.CallMonster( { context.DES_FIRE: True, context.SUMMON_ELEMENTAL: True }, 12, anim=animobs.RedSparkle), rank=6, gems={FIRE: 3}, com_tar=targetarea.SingleTarget(reach=5), ai_tar=invocations.TargetEmptySpot(), mpfudge=12) # CIRCLE SEVEN DISINTEGRATION = Spell( "Disintegration", "The primal flames of the universe are called forth to reduce a single target to dust. This spell does 10d10 atomic damage on a successful hit.", effects.OpposedRoll(
(3, 12, 0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_SOLAR, anim=animobs.YellowExplosion), )), ), on_false=(effects.NoEffect(anim=animobs.Caption), )), rank=6, gems={AIR: 2}, com_tar=targetarea.SingleTarget(), shot_anim=animobs.MysticBolt) CALL_AIR_ELEMENTAL = Spell( "Call Air Elemental", "This spell will summon a living embodiment of the skies to fight on your behalf.", effects.CallMonster({ context.DES_AIR: True, context.SUMMON_ELEMENTAL: True }, 12, anim=animobs.BlueSparkle), rank=6, gems={AIR: 3}, com_tar=targetarea.SingleTarget(reach=5), ai_tar=invocations.TargetEmptySpot(), mpfudge=12) # CIRCLE SEVEN # CIRCLE EIGHT THUNDER_STORM = Spell( "Thunder Storm", "Calls down the wrath of the heavens. All targets within a 5 tile radius will be struck for 10d8 lightning damage.",
"Earthbind", "Conjures plants which grab at travelers, making passage through the area very difficult.", effects.PlaceField(enchantments.Entanglement, anim=animobs.OrangeSparkle), rank=1, gems={EARTH: 1}, com_tar=targetarea.Blast(radius=4), mpfudge=1, ai_tar=invocations.TargetEnemyWithoutField(enchantments.Entanglement, 5)) CALL_CRITTER = Spell( "Call Critter", "This spell will summon a small woodland creature to fight on your behaf.", effects.CallMonster( { context.MTY_CREATURE: True, context.DES_EARTH: context.MAYBE, context.GEN_NATURE: context.MAYBE }, 2, anim=animobs.OrangeSparkle), rank=1, gems={EARTH: 1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge=3) # CIRCLE 2 ACID_BOLT = Spell( "Acid Bolt", "This attack does 2d5 acid damage to a single target, and may corrode the target's armor.", effects.OpposedRoll(
# of those colors. # CIRCLE ONE ICE_BOLT = Spell( "Icy Bolt", "This attack does 1d8 cold damage to a single target.", effects.OpposedRoll( att_modifier=15, on_success = ( effects.HealthDamage( (1,8,0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_COLD, anim=animobs.BlueExplosion ) ,), on_failure = ( effects.HealthDamage( (1,3,0), stat_bonus=None, element=stats.RESIST_COLD, anim=animobs.BlueExplosion ) ,) ), rank=1, gems={LUNAR:1,WATER:1}, com_tar=targetarea.SingleTarget(), shot_anim=animobs.BlueBolt, mpfudge=-1, ai_tar=invocations.TargetEnemy() ) RAISE_SKELETON = Spell( "Raise Skeleton", "You conjure dark forces to animate a skeleton which will fight on your behaf.", effects.CallMonster( {context.MTY_UNDEAD: True, context.DES_LUNAR: context.MAYBE, context.GEN_UNDEAD: context.MAYBE}, 2, anim=animobs.PurpleSparkle ), rank=1, gems={EARTH:1,LUNAR:1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot() ) # CIRCLE 2 RAISE_CORPSE = Spell( "Raise Corpse", "You conjure dark forces to animate a lesser undead creature which will fight on your behaf.", effects.CallMonster( {context.MTY_UNDEAD: True, context.DES_LUNAR: context.MAYBE, context.GEN_UNDEAD: context.MAYBE}, 4, anim=animobs.PurpleSparkle ), rank=2, gems={EARTH:1,LUNAR:1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge=4 ) TOUCH_OF_DEATH = Spell( "Touch of Death", "You touch one opponent, delivering the chill of the grave. The target suffers 2d5 cold damage and may be paralyzed.", effects.OpposedRoll( att_modifier=10, on_success = ( effects.HealthDamage( (2,5,0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_COLD, anim=animobs.BlueExplosion ), effects.Paralyze( max_duration = 3 ) ,), on_failure = (
# CIRCLE ONE ACID_SPRAY = Spell( "Acid Spray", "A stream of acid sprays forth, burning enemies for 1d6 damage. This spell has a short range but can affect several targets.", effects.OpposedRoll( on_success = ( effects.HealthDamage( (1,6,0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_ACID, anim=animobs.GreenExplosion ) ,), on_failure = ( effects.HealthDamage( (1,2,0), stat_bonus=None, element=stats.RESIST_ACID, anim=animobs.GreenExplosion ) ,) ), rank=1, gems={FIRE:1,EARTH:1}, com_tar=targetarea.Cone(reach=3), ai_tar=invocations.TargetEnemy() ) # CIRCLE TWO CALL_ANIMAL = Spell( "Call Animal", "This spell will summon a natural creature to fight on your behaf.", effects.CallMonster( {context.MTY_CREATURE: True, context.DES_EARTH: context.MAYBE, context.GEN_NATURE: context.MAYBE, context.DES_SOLAR: context.MAYBE}, 4, anim=animobs.OrangeSparkle ), rank=2, gems={EARTH:1,SOLAR:1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge = 4 ) # CIRCLE THREE CALL_CREATURE = Spell( "Call Creature", "This spell will summon a large natural creature to fight on your behaf.", effects.CallMonster( {context.MTY_CREATURE: True, context.DES_EARTH: context.MAYBE, context.GEN_NATURE: context.MAYBE, context.DES_SOLAR: context.MAYBE}, 6, anim=animobs.OrangeSparkle ), rank=3, gems={EARTH:2,SOLAR:1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge = 6 ) SLIMY_WEAPON = Spell( "Slimy Weapon", "One ally's weapon will be coated in caustic slime which causes an extra 1d10 acid damage and may corrode an opponent's armor.", effects.Enchant( enchantments.AcidWepEn, anim=animobs.OrangeSparkle ), rank=3, gems={EARTH:1}, com_tar=targetarea.SingleTarget(), ai_tar=invocations.TargetAllyWithoutEnchantment(enchantments.AcidWepEn) )
anim=animobs.Pearl), )), )), rank=6, gems={ AIR: 1, SOLAR: 2 }, com_tar=targetarea.SelfCentered(), mpfudge=3) DIVINE_AID = Spell( "Divine Aid", "A celestial being will answer your call to aid you in this combat.", effects.CallMonster( { context.MTY_CELESTIAL: True, context.DES_SOLAR: context.MAYBE, context.DES_WATER: context.MAYBE }, 12, anim=animobs.YellowSparkle), rank=6, gems={ WATER: 2, SOLAR: 2 }, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge=12) # CIRCLE SEVEN # CIRCLE EIGHT
"Burns all enemies within 6 tiles with a flaming sigil, doing 2d4 damage and preventing them from hiding.", effects.TargetIsEnemy( on_true = ( effects.OpposedRoll( on_success = ( effects.HealthDamage( (2,4,0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_FIRE, anim=animobs.RedCloud ) ,), on_failure = ( effects.HealthDamage( (1,4,1), stat_bonus=None, element=stats.RESIST_FIRE, anim=animobs.RedCloud ) ,)), effects.Enchant( enchantments.FireSignEn, anim=None ) ) ), rank=3, gems={AIR:1,FIRE:1}, com_tar=targetarea.SelfCentered(), ai_tar=invocations.TargetEnemy() ) # CIRCLE FOUR ANIMATION = Spell( "Animation", "This spell will temporarily imbue inanimate objects with life.", effects.CallMonster( {context.MTY_CONSTRUCT: True, context.DES_AIR: context.MAYBE, context.DES_FIRE: context.MAYBE}, 8, anim=animobs.RedSparkle ), rank=4, gems={AIR:1,FIRE:1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge = 10 ) INCINERATE = Spell( "Incinerate", "Eldritch flames envelop a single foe, doing 6d6 fire damage and possibly setting the target alight.", effects.OpposedRoll( on_success = ( effects.HealthDamage( (6,6,0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_FIRE, anim=animobs.RedCloud ), effects.Enchant( enchantments.BurnLowEn ) ), on_failure = ( effects.HealthDamage( (2,8,1), stat_bonus=None, element=stats.RESIST_FIRE, anim=animobs.RedCloud ), ) ), rank=4, gems={FIRE:1,LUNAR:1}, com_tar=targetarea.SingleTarget(), shot_anim=animobs.FireBolt, ai_tar=invocations.TargetEnemy() ) # CIRCLE FIVE # CIRCLE SIX
effects.HealthDamage((1,8,0), stat_bonus=stats.INTELLIGENCE, element=stats.RESIST_SOLAR, anim=animobs.YellowExplosion ), effects.ManaDamage((1,8,0), stat_bonus=stats.INTELLIGENCE, anim=animobs.PurpleExplosion ), ), on_failure = ( effects.HealthDamage((1,4,0), stat_bonus=None, element=stats.RESIST_SOLAR, anim=animobs.YellowExplosion ), effects.ManaDamage((1,4,0), stat_bonus=None, anim=animobs.PurpleExplosion ), )), rank=2, gems={LUNAR:1,SOLAR:1}, com_tar=targetarea.SingleTarget(), shot_anim=animobs.WizardMissile, ai_tar=invocations.TargetEnemy(), mpfudge=-3 ) # CIRCLE THREE CHAOTIC_AID = Spell( "Chaotic Aid", "This spell calls forth a servant of chaos to aid you in battle.", effects.CallMonster( {context.GEN_CHAOS: True, context.MTY_FIGHTER: True}, 5, anim=animobs.OrangeSparkle ), rank=3, gems={EARTH:1,AIR:1}, com_tar=targetarea.SingleTarget(reach=2), ai_tar=invocations.TargetEmptySpot(), mpfudge = 3 ) # CIRCLE FOUR # CIRCLE FIVE # CIRCLE SIX # CIRCLE SEVEN