diff --git a/tpdata/templeplus/lib/templeplus/constants.py b/tpdata/templeplus/lib/templeplus/constants.py index 570ff5a81..63976150f 100644 --- a/tpdata/templeplus/lib/templeplus/constants.py +++ b/tpdata/templeplus/lib/templeplus/constants.py @@ -3222,6 +3222,7 @@ spell_waves_of_fatigue = 1003 spell_waves_of_exhaustion = 1004 spell_fire_shield_mass = 1005 +spell_prismatic_ray = 1006 # Reserved for Sagenlicht 1050-1199 spell_sound_lance = 1050 spell_critical_strike = 1051 diff --git a/tpdatasrc/tpgamefiles/mes/help/spell_compendium_help.tab b/tpdatasrc/tpgamefiles/mes/help/spell_compendium_help.tab index d38ab9f98..525e70aac 100644 --- a/tpdatasrc/tpgamefiles/mes/help/spell_compendium_help.tab +++ b/tpdatasrc/tpgamefiles/mes/help/spell_compendium_help.tab @@ -94,6 +94,7 @@ TAG_SPELLS_ORB_OF_FIRE TAG_SPELLS TAG_SORCERER_4 TAG_WIZARD_4 TAG_WARMAGE_4 Orb TAG_SPELLS_ORB_OF_SOUND TAG_SPELLS TAG_SORCERER_4 TAG_WIZARD_4 TAG_WARMAGE_4 Orb of Sound ~Conjuration~[TAG_MAGIC_SCHOOLS_CONJURATION](Creation)[Sound] Level: ~Sorcerer~[TAG_SORCERERS]/~Wizard~[TAG_WIZARDS] 4, ~Warmage~[TAG_WARMAGES] 4 Components: V, S Casting Time: 1 ~standard action~[TAG_STANDARD_ACTION] Range: Close (25 ft. +5 ft./2 levels) Target: One creature Duration: Instantaneous Saving Throw: ~Fortitude~[TAG_FORTITUDE] partial; see text Spell Resistance: No An orb of sound about 3 inches across shoots from your palm at its target, dealing 1d6 points of sonic damage per caster level (maximum 15d6). You must succeed on a ~ranged touch attack~[TAG_TOUCH_ATTACK] to hit your target. In addition, a creature struck by an orb of sound must make a ~Fortitude save~[TAG_FORTITUDE] or be ~deafened~[TAG_DEAFENED] for 1 round. TAG_SPELLS_PHANTOM_FOE TAG_SPELLS TAG_ASSASSIN_2 TAG_SORCERER_2 TAG_WIZARD_2 Phantom Foe ~Illusion~[TAG_MAGIC_SCHOOLS_ILLUSION](Phantasm)[Mind-Affecting] Level: ~Assassin~[TAG_ASSASSINS] 2, ~Sorcerer~[TAG_SORCERERS]/~Wizard~[TAG_WIZARDS] 2 Components: V, S Casting Time: 1 ~standard action~[TAG_STANDARD_ACTION] Range: Touch Target: One Creature Duration: 1 round/level Saving Throw: ~Will~[TAG_WILL] negates Spell Resistance: No By waving around a tiny pewter figurine and picturing in your mind the figurine attacking the target creature, you complete the spell. You feel a phantasmal force leap from the figurine toward your target. If the target creature fails its saving throw, this spell creates in the subject's mind an illusory double of whichever creature currently threatens it that it deems most dangerous. The form of this phantom foe changes as appropriate whenever the target perceives a different threatening creature more dangerous than the last. This illusory double provides two effects. First, the subject believes it is being ~flanked~[TAG_FLANKED] by the phantom foe and the real creature the foe duplicates. Thus, the duplicated creature is always considered to be flanking the subject in melee. A creature that can't be flanked is immune to this aspect of the spell. Second, the subject of the spell is unable to determine that the phantom foe is not a real threat, and whenever the subject attempts to attack the creature duplicated by the phantom foe, that creature benefits from a 50% miss chance against attacks from the subject of the spell. Because this miss chance comes from the subject's inability to tell the phantom foe from the original, it is rolled separately from any miss chance that applies due to displacement or concealment. Creatures other than the subject cannot see the phantom foe, although they can attempt to guess its location by how the target acts. If the subject is not threatened by any creature at the start of its turn, the spell ends. TAG_SPELLS_PHANTOM_THREAT TAG_SPELLS TAG_BARD_1 Phantom Threat ~Illusion~[TAG_MAGIC_SCHOOLS_ILLUSION](Phantasm)[Mind-Affecting] Level: ~Bard~[TAG_BARDS] 1 Components: V, S Casting Time: 1 ~standard action~[TAG_STANDARD_ACTION] Range: Close (25 ft. + 5 ft./ 2 levels) Target: One Creature Duration: 1 round/level Saving Throw: ~Will~[TAG_WILL] negates Spell Resistance: Yes Reaching out to your foe's mind, you cause him to feel as though a threat looms close behind no matter which way he turns. You create the sensation in the subject's mind that it is threatened by more foes than it actually faces. Though the subject doesn't actually perceive any additional enemies (and thus doesn't waste any attacks on the phantasm), a creature affected by this spell is considered ~flanked~[TAG_FLANKING], even if not threatened by other creatures. No amount of convincing by others can help the subject of this spell avoid its effect-only a successful ~saving throw~[TAG_SAVING_THROW_DESC] against the spell when initially cast can help the target. A creature that can't be flanked is immune to this spell. +TAG_SPELLS_PRISMATIC_RAY TAG_SPELLS TAG_WIZARD_5 TAG_SORCERER_5 Prismatic Ray ~Evocation~~[TAG_MAGIC_SCHOOLS_EVOCATION] Level: ~Sorcerer~[TAG_SORCERERS] 5 ~Wizard~[TAG_WIZARDS] 5 Components: V, S Casting Time: 1 ~standard action~[TAG_STANDARD_ACTION] Range: Medium (100 ft. + 10 ft./ 2 levels) Target: One Creature Duration: Instantaneous Saving Throw: See Text Spell Resistance: Yes A single beam of brilliantly colored light shoots from your outstretched hand. On a successful ranged touch attack, creatures with 6 Hit Dice or fewer are blinded for 2d4 rounds by the prismatic ray in addition to suffering a randomly determined effect (see the accompanying table). Table TAG_SPELLS_RAY_OF_DIZZINESS TAG_SPELLS TAG_BARD_3 Ray of Dizziness ~Enchantment~[TAG_MAGIC_SCHOOLS_ENCHANTMENT](Compulsion)[Mind-Affecting] Level: ~Bard~[TAG_BARDS] 3 Components: V, S Casting Time: 1 ~standard action~[TAG_STANDARD_ACTION] Range: Medium (100 ft. +10 ft./level) Effect: Ray Duration: 1 round/level Saving Throw: None Spell Resistance: Yes You release a drab violet ray from your palm. The ray shoots toward your target in a spiraling corkscrew. You strike out at your enemy with a ray that causes intense feelings of vertigo. You must succeed on a ~ranged touch attack~[TAG_TOUCH_ATTACK] with the ray to strike a target. A struck subject experiences strong feelings of vertigo and can take only a ~move action~[TAG_MOVEMENT_ACTION] or a ~standard action~[TAG_STANDARD_ACTION] each round (but not both, and it cannot take a ~full-round~[TAG_FULL_ROUND_ACTION] action). TAG_SPELLS_RAY_OF_LIGHT TAG_SPELLS TAG_BARD_6 TAG_SORCERER_6 TAG_WIZARD_6 Ray of Light ~Evocation~[TAG_MAGIC_SCHOOLS_EVOCATION][Light] Level: ~Bard~[TAG_BARDS] 6, ~Sorcerer~[TAG_SORCERERS]/~Wizard~[TAG_WIZARDS] 6 Components: V, S Casting Time: 1 ~standard action~[TAG_STANDARD_ACTION] Range: Close (25 ft. +5 ft./2 levels) Effect: Ray Duration: Instantaneous Saving Throw: None Spell Resistance: Yes Your palm emits a ray of light. The ray gives off a soft, continuous glow. You direct a short ray at the eyes of a target. You must succeed on a ranged touch attack with the ray to strike a target. With a successful ranged touch attack, the subject is ~blinded~[TAG_BLINDED] for 1d4 rounds. TAG_SPELLS_RESIST_ENERGY_MASS TAG_SPELLS TAG_CLERIC_3 TAG_DRUID_3 TAG_SORCERER_4 TAG_WIZARD_4 Resist Energy, Mass ~Abjuration~[TAG_MAGIC_SCHOOLS_ABJURATION] Level: ~Cleric~[TAG_CLERICS] 3, ~Druid~[TAG_DRUIDS] 3, ~Sorcerer~[TAG_SORCERERS]/~Wizard~[TAG_WIZARDS] 4 Components: V, S Casting Time: 1 ~standard action~[TAG_STANDARD_ACTION] Range: Close (25 ft. + 5 ft./2 levels) Targets: One creature/level, no two of which are more than 30 ft. apart Duration: 10 minutes/level Saving Throw: None Spell Resistance: No You call upon the protective energies of magical power, surrounding your subjects in temporarily visible fields of energy. Although the fields fade from view, you can still just barely sense their existence. This spell functions like ~resist energy~[TAG_SPELLS_RESIST_ENERGY], except that it affects all targeted creatures. diff --git a/tpdatasrc/tpgamefiles/mes/spell_ext/spell_compendium_spell.mes b/tpdatasrc/tpgamefiles/mes/spell_ext/spell_compendium_spell.mes index 1eba2aea6..af7f67bad 100644 --- a/tpdatasrc/tpgamefiles/mes/spell_ext/spell_compendium_spell.mes +++ b/tpdatasrc/tpgamefiles/mes/spell_ext/spell_compendium_spell.mes @@ -5,6 +5,7 @@ // Added by doug but in the compendium {1005}{Fire Shield, Mass} +{1006}{Prismatic Ray} //Additional spells added by Sagenlicht @@ -156,6 +157,7 @@ {5795}Vigor {[Conjuration] Fast Healing 2 for 10 +1/level rounds, max 25.} {5796}Vigor, Greater {[Conjuration] Fast Healing 4 for 10 +1/level rounds, max 35.} {6005} Fire Shield, Mass {[Evocation] Fire shield for multiple creatures.} +{6006} Prismatic Ray {[Evocation] Ray blinds creatures with 6 Hit Dice or less and produces a random effect.} {6050} Sound Lance {[Evocation] Projectile of intense sonic energy that deals 1d8/level (max 10d8) sonic damage.} {6051} Critical Strike {[Divination] Against flanked or dexterity denied foes gain 1d6 damage, +4 to confirm critical hits and weapon is considered to be keen.} diff --git a/tpdatasrc/tpgamefiles/mes/spell_long_descriptions_ext/spell_compendium_spell_long_descriptions.mes b/tpdatasrc/tpgamefiles/mes/spell_long_descriptions_ext/spell_compendium_spell_long_descriptions.mes index cb76ce6a4..fd6e770f7 100644 --- a/tpdatasrc/tpgamefiles/mes/spell_long_descriptions_ext/spell_compendium_spell_long_descriptions.mes +++ b/tpdatasrc/tpgamefiles/mes/spell_long_descriptions_ext/spell_compendium_spell_long_descriptions.mes @@ -925,6 +925,12 @@ Range: Close (25ft. + 5ft./2 lvls) Target: allied creatures, no more than 30' apart Duration: 1 round/level (D)} +{6006} Prismatic Ray {Ray blinds creatures with 6 Hit Dice or less Hit Dice and produces a random effect on a successful ranged touch attack. +Casting: 1 std action [Evocation, V,S] +Range: Medium (100ft. +10 ft./level) +Area: Ray +Duration: Inst., Save: Yes, SR: Yes} + {6182} Accuracy {For the duration of the spell, the range increment for the affected weapon or weapons is doubled. School: Transmutation Casting: 1 action [V,S] @@ -1036,3 +1042,4 @@ Casting: 1 action [V,S] Range: Close (25ft. + 5ft./2 lvls) Target: One creature Duration: Inst., Save: Fortitude partial, SR: No} + diff --git a/tpdatasrc/tpgamefiles/rules/char_class/class047_warmage.py b/tpdatasrc/tpgamefiles/rules/char_class/class047_warmage.py index 839e4edd2..981efa0de 100644 --- a/tpdatasrc/tpgamefiles/rules/char_class/class047_warmage.py +++ b/tpdatasrc/tpgamefiles/rules/char_class/class047_warmage.py @@ -65,7 +65,7 @@ def GetClassHelpTopic(): 2: (spell_blades_of_fire, spell_continual_flame, spell_fire_trap, spell_fireburst, spell_flaming_sphere, spell_ice_knife, spell_melfs_acid_arrow, spell_pyrotechnics, spell_shatter, spell_scorching_ray, spell_whirling_blade), 3: (spell_fire_shield, spell_fireball, spell_flame_arrow, spell_gust_of_wind, spell_ice_storm, spell_lightning_bolt, spell_poison, spell_ring_of_blades, spell_sleet_storm, spell_stinking_cloud), 4: (spell_blast_of_flame, spell_contagion, spell_evards_black_tentacles, spell_orb_of_acid, spell_orb_of_cold, spell_orb_of_electricity, spell_orb_of_fire, spell_orb_of_sound, spell_phantasmal_killer, spell_shout, spell_wall_of_fire), - 5: (spell_cloudkill, spell_cone_of_cold, spell_flame_strike, spell_fire_shield_mass, spell_greater_fireburst), + 5: (spell_cloudkill, spell_cone_of_cold, spell_flame_strike, spell_fire_shield_mass, spell_greater_fireburst, spell_prismatic_ray), 6: (spell_blade_barrier, spell_chain_lightning, spell_circle_of_death, spell_disintegrate, spell_fire_seeds, spell_otilukes_freezing_sphere, spell_tensers_transformation), 7: (spell_delayed_blast_fireball, spell_earthquake, spell_finger_of_death, spell_fire_storm, spell_mordenkainens_sword, spell_prismatic_spray, spell_sunbeam, ), 8: (spell_horrid_wilting, spell_incendiary_cloud, spell_polar_ray, spell_prismatic_wall, spell_sunburst), diff --git a/tpdatasrc/tpgamefiles/rules/partsys/spell_compendium_partsys.tab b/tpdatasrc/tpgamefiles/rules/partsys/spell_compendium_partsys.tab index 459cc5060..1189c09e4 100644 --- a/tpdatasrc/tpgamefiles/rules/partsys/spell_compendium_partsys.tab +++ b/tpdatasrc/tpgamefiles/rules/partsys/spell_compendium_partsys.tab @@ -99,6 +99,14 @@ sp-Orb of Cold-proj acid-goo-dribbles perm 1000 Object YPR Sprite flare sp-Orb of Electricity-proj acid-goo-dribbles perm 1000 Object YPR Sprite flare-big 30 Blend 0 AcidArrow 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0?-30 0 0 0 0 5,10 0 0 0 0 0 255,0 176,240,255,255,0 196,248,255,255,0 222,255,255,255,0 sp-Orb of Fire-proj Burning Sphere 1 perm 300 Object Pos Sprite Polar flare-1 15 Add 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,50 0 0?360 0?360 0,30 10,0 0 0 0?360 0 0 0,255,200,150,100,50,0 255 128 64 70 sp-Orb of Fire-proj Burning Sphere 2 perm 1200 Object Pos Sprite Polar fire-sprite 15 Add 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,50 0 0?360 0?360 0,30 5?10 0 0 0?360 0 0 0,100,90,80,70,60,50,40,30,20,10,0 255 128 64 300 +sp-Prismatic Ray bang start 15 15 World Sprite flare-big 15 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10?-10 10?-10 10?-10 50?20 0 0 0?360 0 0 255,0 64 64 255,128 +sp-Prismatic Ray New Emitter perm 30 Object Pos Sprite World Cartesian flare-1 8 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10?-10 10?-10 10?-10 10?-10 10?-10 10?-10 8,0 0 0 0?360 0 0 0,255,255,255,0 255,0,0 0,255,0 0,0,255 +sp-Prismatic Ray ray time perm 45 Object Pos Sprite flare-2 60 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20,0 0 0 0?360 0 0 0,255,255,255,0 0,0,255 255,0,0 0,255,0 +sp-Prismatic Ray New Emitter perm 45 Object Pos Sprite flare-1 120 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5,0 0 0 0?360 0 0 0,255,255,255,0 0,255,0 0,0,255 255,0,0 +sp-Prismatic Ray-Hit New Emitter 15 45 Object Pos Sprite Polar flare-1 120 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0?360 0?360 #radius 5,0 0 0 0?360 0 0 0,255,255,255,0 255,0,0 0,255,0 0,0,255 +sp-Prismatic Ray-Hit ray time 15 45 Object Pos Sprite Polar flare-2 60 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0?360 0?360 #radius 20,0 0 0 0?360 0 0 0,255,255,255,0 0,0,255 255,0,0 0,255,0 +sp-Prismatic Ray-Hit New Emitter 15 30 Object Pos Sprite World Polar Cartesian flare-1 8 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10?-10 10?-10 10?-10 0?360 0?360 #radius 8,0 0 0 0?360 0 0 0,255,255,255,0 0,255,0 0,0,255 255,0,0 +sp-Prismatic Ray-Hit bang start 15 15 World Sprite Polar flare-big 15 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0?360 0?360 #radius 50?20 0 0 0?360 0 0 255,0 64 64 255,128 sp-Shock and Awe shockwave 40 150 Object YPR Sprite Same as Emitter Polar flare-1 20 Add 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -15?15 -15?15 -15?15 0 0 0 0,650 0 0 0?360 0 0 128,0 15 15 15 1 sp-Veil of Shadow veil perm 150 Object Pos Disc Polar fire-sprite 60 Add 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0?360 0?30 1?4 0 0 0?360 0 0 128,0 0 0 0 30 sp-Veil of Shadow veil2 perm 100 Object Pos Sprite Polar fire-sprite 60 Blend 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0?20 0?360 0?30 2,15 0 0 0 0 0 0,150,100,50,0 87?156 0?28 127?255 30 diff --git a/tpdatasrc/tpgamefiles/rules/spell_enums/spell_compendium_spell_enum.mes b/tpdatasrc/tpgamefiles/rules/spell_enums/spell_compendium_spell_enum.mes index 847a3eeb8..4d2894162 100644 --- a/tpdatasrc/tpgamefiles/rules/spell_enums/spell_compendium_spell_enum.mes +++ b/tpdatasrc/tpgamefiles/rules/spell_enums/spell_compendium_spell_enum.mes @@ -5,6 +5,7 @@ // Added by doug but in the compendium {1005}{Fire Shield, Mass} +{1006}{Prismatic Ray} // Additional spells added by Sagenlicht @@ -157,6 +158,7 @@ {5795}{Vigor} {5796}{Vigor, Greater} {6005}{Fire Shield, Mass} +{6006}{Prismatic Ray} {6050}{Sound Lance} {6051}{Critical Strike} {6052}{Camouflage} @@ -307,6 +309,7 @@ {20796}{TAG_SPELLS_VIGOR,_GREATER} {21005}{TAG_SPELLS_FIRE_SHIELD_MASS} +{21006}{TAG_SPELLS_PRISMATIC_RAY} {21050}{TAG_SPELLS_SOUND_LANCE} {21051}{TAG_SPELLS_CRITICAL_STRIKE} diff --git a/tpdatasrc/tpgamefiles/rules/spells/1006 - Prismatic Ray.txt b/tpdatasrc/tpgamefiles/rules/spells/1006 - Prismatic Ray.txt new file mode 100644 index 000000000..1d67e2ec2 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/spells/1006 - Prismatic Ray.txt @@ -0,0 +1,20 @@ +School: Evocation +Level: Sor 5 +Level: Wiz 5 +Component: V +Component: S +Casting Time: 1 action +Range: Medium +Saving Throw: Yes +Spell Resistance: Yes +Projectile: Yes +flags_Target: Range +inc_flags_Target: Other +exc_flags_Target: Self +exc_flags_Target: Dead +exc_flags_Target: Non-critter +mode_Target: Single +min_Target: 1 +max_Target: 1 +radius_Target: 0 +ai_type: ai_action_offensive diff --git a/tpdatasrc/tpgamefiles/scr/Spell1006 - Prismatic Ray.py b/tpdatasrc/tpgamefiles/scr/Spell1006 - Prismatic Ray.py new file mode 100644 index 000000000..28939bb8e --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/Spell1006 - Prismatic Ray.py @@ -0,0 +1,149 @@ +from toee import * + +def OnBeginSpellCast( spell ): + print "Prismatic Ray OnBeginSpellCast" + print "spell.target_list=", spell.target_list + print "spell.caster=", spell.caster, " caster.level= ", spell.caster_level + game.particles( "sp-evocation-conjure", spell.caster ) + +def OnSpellEffect( spell ): + print "Prismatic Ray OnSpellEffect" + +def OnBeginRound( spell ): + print "Prismatic Ray OnBeginRound" + +def OnBeginProjectile(spell, projectile, index_of_target): + print "Prismatic Ray OnBeginProjectile" + projectile.obj_set_int(obj_f_projectile_part_sys_id, game.particles('sp-Prismatic Ray', projectile)) + +def OnEndProjectile( spell, projectile, index_of_target ): + print "Prismatic Ray OnEndProjectile" + + spellTarget = spell.target_list[0] + spell.duration = 0 + game.particles_end(projectile.obj_get_int(obj_f_projectile_part_sys_id)) + + if spell.caster.perform_touch_attack(spellTarget.obj) & D20CAF_HIT: + spellTarget.partsys_id = game.particles('sp-Prismatic Ray-Hit', spellTarget.obj) + + #Blindness effect for creatures less then 6 hit dice + if spellTarget.obj.hit_dice_num < 6: + blindnessDurationDice = dice_new('2d4') + blindnessDuration = blindnessDurationDice.roll() + if spellTarget.obj.condition_add('Blindness', blindnessDuration): + spellTarget.obj.float_text_line("Blinded", tf_red) + game.create_history_freeform("{} is ~blinded~[TAG_BLINDED]\n\n".format(spellTarget.obj.description)) + + spell.duration = 1000 + add_prismatic_effect(spell, spellTarget.obj) + else: + spellTarget.obj.float_mesfile_line('mes\\spell.mes', 30007) + game.particles('Fizzle', spellTarget.obj) + + spell.target_list.remove_target(spellTarget.obj) + spell.spell_end(spell.id) + +def OnEndSpellCast( spell ): + print "Prismatic Ray OnEndSpellCast" + +#Select a random effect similar to prismatic spray +def add_prismatic_effect(spell, t): + effect = game.random_range(1,6) + + if effect == 1: + print "Prismatic Spray Effect - Fire Damage" + + #20 fire damage + dam = dice_new('1d1') + dam.number = 20 + xx,yy = location_to_axis(t.location) + if t.map == 5067 and ( xx >= 521 and xx <= 555 ) and ( yy >= 560 and yy <= 610): + # Water Temple Pool Enchantment prevents fire spells from working inside the chamber, according to the module -SA + t.float_mesfile_line( 'mes\\skill_ui.mes', 2000 , 1 ) + + game.particles( 'swirled gas', t ) + game.sound(7581,1) + game.sound(7581,1) + else: + if t.reflex_save_and_damage( spell.caster, spell.dc, D20_Save_Reduction_Half, D20STD_F_NONE, dam, D20DT_FIRE, D20DAP_UNSPECIFIED, D20A_CAST_SPELL, spell.id ) > 0: + # saving throw successful + t.float_mesfile_line( 'mes\\spell.mes', 30001 ) + else: + # saving throw unsuccessful + t.float_mesfile_line( 'mes\\spell.mes', 30002 ) + + elif effect == 2: + print "Prismatic Spray Effect - Acid Damage" + + #40 acid damage + dam = dice_new('1d1') + dam.number = 40 + if t.reflex_save_and_damage( spell.caster, spell.dc, D20_Save_Reduction_Half, D20STD_F_NONE, dam, D20DT_ACID, D20DAP_UNSPECIFIED, D20A_CAST_SPELL, spell.id ) > 0: + # saving throw successful + t.float_mesfile_line( 'mes\\spell.mes', 30001 ) + else: + # saving throw unsuccessful + t.float_mesfile_line( 'mes\\spell.mes', 30002 ) + elif effect == 3: + print "Prismatic Spray Effect - Electricity Damage" + + #80 Electricity damage + dam = dice_new('1d1') + dam.number = 80 + if t.reflex_save_and_damage( spell.caster, spell.dc, D20_Save_Reduction_Half, D20STD_F_NONE, dam, D20DT_ELECTRICITY, D20DAP_UNSPECIFIED, D20A_CAST_SPELL, spell.id ) > 0: + # saving throw successful + t.float_mesfile_line( 'mes\\spell.mes', 30001 ) + else: + # saving throw unsuccessful + t.float_mesfile_line( 'mes\\spell.mes', 30002 ) + elif effect == 4: + print "Prismatic Spray Effect - Poisioned" + + #poisoned no save = die save = 1-10 con damage + if t.is_category_type(mc_type_ooze) == 0 and t.is_category_type(mc_type_plant) == 0 and t.is_category_type(mc_type_undead) == 0 and t.is_category_type(mc_type_construct) == 0: + + if not t.saving_throw_spell( spell.dc, D20_Save_Fortitude, D20STD_F_NONE, spell.caster, spell.id ): + # saving throw unsuccessful + t.float_mesfile_line( 'mes\\spell.mes', 30002 ) + # So you'll get awarded XP for the kill + if not t in game.leader.group_list(): + t.damage( game.leader , D20DT_UNSPECIFIED, dice_new( "1d1" ) ) + t.critter_kill_by_effect() + else: + # saving throw successful + poison_index = 23 + time_to_secondary = 10 + poison_dc = 200 + t.float_mesfile_line( 'mes\\spell.mes', 30001 ) + t.condition_add_with_args( 'Poisoned', poison_index, time_to_secondary, poison_dc ) + game.timevent_add(end_poison,(spell, t), 6000)#don't want secondary damage here + + + elif effect == 5: + print "Prismatic Spray Effect - Turned to Stone" + + #turned to stone (effect is a long lasting hold like prismatic spray) + if t.saving_throw( spell.dc, D20_Save_Fortitude, D20STD_F_NONE, spell.caster, D20A_CAST_SPELL ): + # saving throw successful + t.float_mesfile_line( 'mes\\spell.mes', 30001 ) + + else: + # saving throw unsuccessful + t.float_mesfile_line( 'mes\\spell.mes', 30002 ) + # HTN - apply condition HALT (Petrified) + t.condition_add_with_args( 'sp-Command', spell.id, spell.duration, 4 ) + game.particles( 'sp-Bestow Curse', t ) + + + elif effect == 6: + print "Prismatic Spray Effect - Insane" + + dc = spell.dc + + #insane + if not t.saving_throw_spell( dc, D20_Save_Will, D20STD_F_NONE, spell.caster, spell.id ): + t.float_mesfile_line( 'mes\\spell.mes', 30002 ) + t.condition_add_with_args( 'sp-Confusion', spell.id, spell.duration, 1 ) + else: + t.float_mesfile_line( 'mes\\spell.mes', 30001 ) + diff --git a/tpdatasrc/tpgamefiles/sound/user_sounds/spell_compendium_sounds.mes b/tpdatasrc/tpgamefiles/sound/user_sounds/spell_compendium_sounds.mes index 68b7f3f31..c5796d53b 100644 --- a/tpdatasrc/tpgamefiles/sound/user_sounds/spell_compendium_sounds.mes +++ b/tpdatasrc/tpgamefiles/sound/user_sounds/spell_compendium_sounds.mes @@ -1627,3 +1627,14 @@ {30007}{} // spell hit {30008}{} // spell struck + +// [1006] *[Prismatic Ray] +{26120}{} // spell begin +{26121}{spells\sp_ray_enfeeblement_end.wav} // spell end +{26122}{spells\sp_ray_enfeeblement.wav} // spell effect +{26123}{} // spell new round +{26124}{} // spell projectile begin +{26125}{} // spell projectile end +{26126}{} // spell projectile in-flight +{26127}{spells\sp_ray_enfeeblement_hit.wav} // spell hit +{26128}{} // spell struck