From b7139401ed0b48af945a4b2d3967a09aaf0e4c44 Mon Sep 17 00:00:00 2001 From: Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com> Date: Fri, 14 Jun 2024 00:06:09 -0400 Subject: [PATCH] Added "removed" folder --- _removed/70_spellhook.ncs | Bin 0 -> 4921 bytes _removed/70_spellhook.nss | 257 ++++++ _removed/druid_air.ncs | Bin 0 -> 2533 bytes _removed/druid_air.nss | 162 ++++ _removed/druid_badger.ncs | Bin 0 -> 2525 bytes _removed/druid_badger.nss | 164 ++++ _removed/druid_bear.ncs | Bin 0 -> 2525 bytes _removed/druid_bear.nss | 164 ++++ _removed/druid_blued.ncs | Bin 0 -> 2533 bytes _removed/druid_blued.nss | 161 ++++ _removed/druid_boar.ncs | Bin 0 -> 2525 bytes _removed/druid_boar.nss | 164 ++++ _removed/druid_earth.ncs | Bin 0 -> 2533 bytes _removed/druid_earth.nss | 161 ++++ _removed/druid_fire.ncs | Bin 0 -> 2533 bytes _removed/druid_fire.nss | 161 ++++ _removed/druid_greend.ncs | Bin 0 -> 2533 bytes _removed/druid_greend.nss | 161 ++++ _removed/druid_panther.ncs | Bin 0 -> 2525 bytes _removed/druid_panther.nss | 164 ++++ _removed/druid_redd.ncs | Bin 0 -> 2533 bytes _removed/druid_redd.nss | 161 ++++ _removed/druid_water.ncs | Bin 0 -> 2533 bytes _removed/druid_water.nss | 161 ++++ _removed/druid_wolf.ncs | Bin 0 -> 2525 bytes _removed/druid_wolf.nss | 164 ++++ _removed/nw_s0_animdead.ncs | Bin 0 -> 3526 bytes _removed/nw_s0_animdead.nss | 89 ++ _removed/nw_s0_circdeath.ncs | Bin 0 -> 13719 bytes _removed/nw_s0_circdeath.nss | 128 +++ _removed/nw_s0_circevil.ncs | Bin 0 -> 4447 bytes _removed/nw_s0_circevil.nss | 72 ++ _removed/nw_s0_circgood.ncs | Bin 0 -> 4447 bytes _removed/nw_s0_circgood.nss | 70 ++ _removed/nw_s0_contagion.ncs | Bin 0 -> 10924 bytes _removed/nw_s0_contagion.nss | 92 +++ _removed/nw_s0_daze.ncs | Bin 0 -> 12558 bytes _removed/nw_s0_daze.nss | 77 ++ _removed/nw_s0_dismagic.ncs | Bin 0 -> 9610 bytes _removed/nw_s0_dismagic.nss | 88 ++ _removed/nw_s0_dismissal.ncs | Bin 0 -> 10313 bytes _removed/nw_s0_dismissal.nss | 81 ++ _removed/nw_s0_divpower.ncs | Bin 0 -> 3660 bytes _removed/nw_s0_divpower.nss | 127 +++ _removed/nw_s0_doom.ncs | Bin 0 -> 12410 bytes _removed/nw_s0_doom.nss | 98 +++ _removed/nw_s0_fireshld.ncs | Bin 0 -> 3267 bytes _removed/nw_s0_fireshld.nss | 72 ++ _removed/nw_s0_flmlash.ncs | Bin 0 -> 11191 bytes _removed/nw_s0_flmlash.nss | 72 ++ _removed/nw_s0_gate.ncs | Bin 0 -> 3304 bytes _removed/nw_s0_gate.nss | 76 ++ _removed/nw_s0_grplanar.ncs | Bin 0 -> 6960 bytes _removed/nw_s0_grplanar.nss | 114 +++ _removed/nw_s0_hammgods.ncs | Bin 0 -> 13356 bytes _removed/nw_s0_hammgods.nss | 99 +++ _removed/nw_s0_harm.ncs | Bin 0 -> 11274 bytes _removed/nw_s0_harm.nss | 84 ++ _removed/nw_s0_heal.ncs | Bin 0 -> 6999 bytes _removed/nw_s0_heal.nss | 74 ++ _removed/nw_s0_healcirc.ncs | Bin 0 -> 9487 bytes _removed/nw_s0_healcirc.nss | 115 +++ _removed/nw_s0_holdanim.ncs | Bin 0 -> 12243 bytes _removed/nw_s0_holdanim.nss | 83 ++ _removed/nw_s0_holdmon.ncs | Bin 0 -> 12208 bytes _removed/nw_s0_holdmon.nss | 77 ++ _removed/nw_s0_holdpers.ncs | Bin 0 -> 12609 bytes _removed/nw_s0_holdpers.nss | 86 ++ _removed/nw_s0_icestorm.ncs | Bin 0 -> 11817 bytes _removed/nw_s0_icestorm.nss | 84 ++ _removed/nw_s0_identify.ncs | Bin 0 -> 2850 bytes _removed/nw_s0_identify.nss | 64 ++ _removed/nw_s0_invpurge.ncs | Bin 0 -> 3840 bytes _removed/nw_s0_invpurge.nss | 63 ++ _removed/nw_s0_invsph.ncs | Bin 0 -> 3915 bytes _removed/nw_s0_invsph.nss | 72 ++ _removed/nw_s0_knock.ncs | Bin 0 -> 3447 bytes _removed/nw_s0_knock.nss | 64 ++ _removed/nw_s0_lore.ncs | Bin 0 -> 2827 bytes _removed/nw_s0_lore.nss | 63 ++ _removed/nw_s0_magearm.ncs | Bin 0 -> 3262 bytes _removed/nw_s0_magearm.nss | 77 ++ _removed/nw_s0_metswarm.ncs | Bin 0 -> 11590 bytes _removed/nw_s0_metswarm.nss | 83 ++ _removed/nw_s0_mscharm.ncs | Bin 0 -> 14554 bytes _removed/nw_s0_mscharm.nss | 109 +++ _removed/nw_s0_phankill.ncs | Bin 0 -> 12848 bytes _removed/nw_s0_phankill.nss | 93 +++ _removed/nw_s0_raisdead.ncs | Bin 0 -> 2901 bytes _removed/nw_s0_raisdead.nss | 35 + _removed/nw_s0_rayfrost.ncs | Bin 0 -> 11063 bytes _removed/nw_s0_rayfrost.nss | 72 ++ _removed/nw_s0_resserec.ncs | Bin 0 -> 2974 bytes _removed/nw_s0_resserec.nss | 40 + _removed/nw_s0_sanctuary.ncs | Bin 0 -> 2859 bytes _removed/nw_s0_sanctuary.nss | 58 ++ _removed/nw_s0_silence.ncs | Bin 0 -> 11632 bytes _removed/nw_s0_silence.nss | 93 +++ _removed/nw_s0_summon.ncs | Bin 0 -> 6751 bytes _removed/nw_s0_summon.nss | 354 ++++++++ _removed/nw_s0_timestop.ncs | Bin 0 -> 3527 bytes _removed/nw_s0_timestop.nss | 83 ++ _removed/nw_s0_wallfirea.ncs | Bin 0 -> 9112 bytes _removed/nw_s0_wallfirea.nss | 52 ++ _removed/nw_s0_wallfirec.ncs | Bin 0 -> 9248 bytes _removed/nw_s0_wallfirec.nss | 71 ++ _removed/nw_s0_weird.ncs | Bin 0 -> 13039 bytes _removed/nw_s0_weird.nss | 115 +++ _removed/nw_s1_dragacid.ncs | Bin 0 -> 4481 bytes _removed/nw_s1_dragacid.nss | 113 +++ _removed/nw_s1_dragcold.ncs | Bin 0 -> 4489 bytes _removed/nw_s1_dragcold.nss | 111 +++ _removed/nw_s1_dragfire.ncs | Bin 0 -> 4417 bytes _removed/nw_s1_dragfire.nss | 111 +++ _removed/nw_s1_draggas.ncs | Bin 0 -> 4481 bytes _removed/nw_s1_draggas.nss | 112 +++ _removed/nw_s1_draglight.ncs | Bin 0 -> 4481 bytes _removed/nw_s1_draglight.nss | 113 +++ _removed/nw_s2_animalcom.ncs | Bin 0 -> 2511 bytes _removed/nw_s2_animalcom.nss | 24 + _removed/nw_s2_bardsong.ncs | Bin 0 -> 8088 bytes _removed/nw_s2_bardsong.nss | 445 ++++++++++ _removed/nw_s2_familiar.ncs | Bin 0 -> 2667 bytes _removed/nw_s2_familiar.nss | 33 + _removed/nw_s2_layonhand.ncs | Bin 0 -> 1184 bytes _removed/nw_s2_layonhand.nss | 75 ++ _removed/nw_s2_turndead.ncs | Bin 0 -> 4101 bytes _removed/nw_s2_turndead.nss | 268 ++++++ _removed/nw_s2_wildshape.ncs | Bin 0 -> 4852 bytes _removed/nw_s2_wildshape.nss | 215 +++++ _removed/x0_s0_acidsplash.ncs | Bin 0 -> 10989 bytes _removed/x0_s0_acidsplash.nss | 60 ++ _removed/x0_s0_banishment.ncs | Bin 0 -> 10664 bytes _removed/x0_s0_banishment.nss | 119 +++ _removed/x0_s0_bigby1.ncs | Bin 0 -> 10489 bytes _removed/x0_s0_bigby1.nss | 68 ++ _removed/x0_s0_bigby2.ncs | Bin 0 -> 11823 bytes _removed/x0_s0_bigby2.nss | 97 +++ _removed/x0_s0_bigby3.ncs | Bin 0 -> 12464 bytes _removed/x0_s0_bigby3.nss | 136 ++++ _removed/x0_s0_bigby4.ncs | Bin 0 -> 13901 bytes _removed/x0_s0_bigby4.nss | 119 +++ _removed/x0_s0_bigby5.ncs | Bin 0 -> 13652 bytes _removed/x0_s0_bigby5.nss | 146 ++++ _removed/x0_s0_clight.ncs | Bin 0 -> 4444 bytes _removed/x0_s0_clight.nss | 80 ++ _removed/x0_s0_dirge.ncs | Bin 0 -> 3979 bytes _removed/x0_s0_dirge.nss | 77 ++ _removed/x0_s0_earthquake.ncs | Bin 0 -> 5505 bytes _removed/x0_s0_earthquake.nss | 93 +++ _removed/x0_s0_elecjolt.ncs | Bin 0 -> 10989 bytes _removed/x0_s0_elecjolt.nss | 61 ++ _removed/x0_s0_ether.ncs | Bin 0 -> 2814 bytes _removed/x0_s0_ether.nss | 57 ++ _removed/x0_s0_fleshsto.ncs | Bin 0 -> 15420 bytes _removed/x0_s0_fleshsto.nss | 45 ++ _removed/x0_s0_inflict.ncs | Bin 0 -> 9856 bytes _removed/x0_s0_inflict.nss | 63 ++ _removed/x0_s0_missstorm1.ncs | Bin 0 -> 13159 bytes _removed/x0_s0_missstorm1.nss | 211 +++++ _removed/x0_s0_missstorm2.ncs | Bin 0 -> 13159 bytes _removed/x0_s0_missstorm2.nss | 211 +++++ _removed/x0_s0_quillfire.ncs | Bin 0 -> 5120 bytes _removed/x0_s0_quillfire.nss | 83 ++ _removed/x0_s0_spikegroen.ncs | Bin 0 -> 12396 bytes _removed/x0_s0_spikegroen.nss | 56 ++ _removed/x0_s0_spikegrohb.ncs | Bin 0 -> 14885 bytes _removed/x0_s0_spikegrohb.nss | 78 ++ _removed/x0_s0_woundwhis.ncs | Bin 0 -> 3071 bytes _removed/x0_s0_woundwhis.nss | 74 ++ _removed/x0_s1_petrbreath.ncs | Bin 0 -> 13168 bytes _removed/x0_s1_petrbreath.nss | 36 + _removed/x0_s1_petrgaze.ncs | Bin 0 -> 13451 bytes _removed/x0_s1_petrgaze.nss | 52 ++ _removed/x0_s1_petrtouch.ncs | Bin 0 -> 12934 bytes _removed/x0_s1_petrtouch.nss | 29 + _removed/x0_s2_blkdead.ncs | Bin 0 -> 319 bytes _removed/x0_s2_blkdead.nss | 33 + _removed/x1_s2_deatharrow.ncs | Bin 0 -> 3784 bytes _removed/x1_s2_deatharrow.nss | 70 ++ _removed/x2_inc_craft.nss | 1439 +++++++++++++++++++++++++++++++++ _removed/x2_s0_acidshth.ncs | Bin 0 -> 3044 bytes _removed/x2_s0_acidshth.nss | 69 ++ _removed/x2_s0_batttide.ncs | Bin 0 -> 4127 bytes _removed/x2_s0_batttide.nss | 84 ++ _removed/x2_s0_blckstff.ncs | Bin 0 -> 5383 bytes _removed/x2_s0_blckstff.nss | 96 +++ _removed/x2_s0_bldethst.ncs | Bin 0 -> 5102 bytes _removed/x2_s0_bldethst.nss | 91 +++ _removed/x2_s0_crumble.ncs | Bin 0 -> 6005 bytes _removed/x2_s0_crumble.nss | 118 +++ _removed/x2_s0_icedagg.ncs | Bin 0 -> 11041 bytes _removed/x2_s0_icedagg.nss | 79 ++ _removed/x2_s0_vinemcama.ncs | Bin 0 -> 2600 bytes _removed/x2_s0_vinemcama.nss | 44 + _removed/x2_s0_vinemhmpa.ncs | Bin 0 -> 2750 bytes _removed/x2_s0_vinemhmpa.nss | 47 ++ _removed/x2_s0_vinemhmpc.ncs | Bin 0 -> 3174 bytes _removed/x2_s0_vinemhmpc.nss | 63 ++ _removed/x2_s1_beholdatt.ncs | Bin 0 -> 38223 bytes _removed/x2_s1_beholdatt.nss | 30 + _removed/x2_s1_beholdray.ncs | Bin 0 -> 11204 bytes _removed/x2_s1_beholdray.nss | 73 ++ _removed/x2_s1_petrgaze.ncs | Bin 0 -> 14367 bytes _removed/x2_s1_petrgaze.nss | 81 ++ _removed/x2_s2_cursesong.ncs | Bin 0 -> 8800 bytes _removed/x2_s2_cursesong.nss | 431 ++++++++++ _removed/x2_s2_discbreath.ncs | Bin 0 -> 946 bytes _removed/x2_s2_discbreath.nss | 63 ++ _removed/x2_s2_divwrath.ncs | Bin 0 -> 1724 bytes _removed/x2_s2_divwrath.nss | 142 ++++ _removed/x2_s2_dragknght.ncs | Bin 0 -> 3376 bytes _removed/x2_s2_dragknght.nss | 74 ++ _removed/x2_s2_epicward.ncs | Bin 0 -> 3014 bytes _removed/x2_s2_epicward.nss | 60 ++ _removed/x2_s2_epmagearm.ncs | Bin 0 -> 3241 bytes _removed/x2_s2_epmagearm.nss | 67 ++ _removed/x2_s2_gwildshp.ncs | Bin 0 -> 13721 bytes _removed/x2_s2_gwildshp.nss | 621 ++++++++++++++ _removed/x2_s2_hellball.ncs | Bin 0 -> 8046 bytes _removed/x2_s2_hellball.nss | 147 ++++ _removed/x2_s2_mumdust.ncs | Bin 0 -> 3409 bytes _removed/x2_s2_mumdust.nss | 77 ++ _removed/x2_s2_poisonwp.ncs | Bin 0 -> 3439 bytes _removed/x2_s2_poisonwp.nss | 145 ++++ _removed/x2_s2_ruin.ncs | Bin 0 -> 6686 bytes _removed/x2_s2_ruin.nss | 70 ++ _removed/x2_s2_shiftdom.ncs | Bin 0 -> 5705 bytes _removed/x2_s2_shiftdom.nss | 93 +++ _removed/x2_s2_sumgrund.ncs | Bin 0 -> 1373 bytes _removed/x2_s2_sumgrund.nss | 132 +++ _removed/x2_s2_sumundead.ncs | Bin 0 -> 789 bytes _removed/x2_s2_sumundead.nss | 78 ++ _removed/x2_s3_sequencer.ncs | Bin 0 -> 1523 bytes _removed/x2_s3_sequencer.nss | 73 ++ _removed/x3_s2_palmount.ncs | Bin 0 -> 21416 bytes _removed/x3_s2_palmount.nss | 39 + _removed/x3_s2_pdk_fear.ncs | Bin 0 -> 12645 bytes _removed/x3_s2_pdk_fear.nss | 79 ++ _removed/x3_s2_pdk_inspir.ncs | Bin 0 -> 1209 bytes _removed/x3_s2_pdk_inspir.nss | 75 ++ _removed/x3_s2_pdk_rally.ncs | Bin 0 -> 1083 bytes _removed/x3_s2_pdk_rally.nss | 69 ++ _removed/x3_s2_pdk_shield.ncs | Bin 0 -> 483 bytes _removed/x3_s2_pdk_shield.nss | 40 + _removed/x3_s2_pdk_stand.ncs | Bin 0 -> 805 bytes _removed/x3_s2_pdk_stand.nss | 58 ++ _removed/x3_s2_pdk_wrath.ncs | Bin 0 -> 766 bytes _removed/x3_s2_pdk_wrath.nss | 60 ++ 249 files changed, 14605 insertions(+) create mode 100644 _removed/70_spellhook.ncs create mode 100644 _removed/70_spellhook.nss create mode 100644 _removed/druid_air.ncs create mode 100644 _removed/druid_air.nss create mode 100644 _removed/druid_badger.ncs create mode 100644 _removed/druid_badger.nss create mode 100644 _removed/druid_bear.ncs create mode 100644 _removed/druid_bear.nss create mode 100644 _removed/druid_blued.ncs create mode 100644 _removed/druid_blued.nss create mode 100644 _removed/druid_boar.ncs create mode 100644 _removed/druid_boar.nss create mode 100644 _removed/druid_earth.ncs create mode 100644 _removed/druid_earth.nss create mode 100644 _removed/druid_fire.ncs create mode 100644 _removed/druid_fire.nss create mode 100644 _removed/druid_greend.ncs create mode 100644 _removed/druid_greend.nss create mode 100644 _removed/druid_panther.ncs create mode 100644 _removed/druid_panther.nss create mode 100644 _removed/druid_redd.ncs create mode 100644 _removed/druid_redd.nss create mode 100644 _removed/druid_water.ncs create mode 100644 _removed/druid_water.nss create mode 100644 _removed/druid_wolf.ncs create mode 100644 _removed/druid_wolf.nss create mode 100644 _removed/nw_s0_animdead.ncs create mode 100644 _removed/nw_s0_animdead.nss create mode 100644 _removed/nw_s0_circdeath.ncs create mode 100644 _removed/nw_s0_circdeath.nss create mode 100644 _removed/nw_s0_circevil.ncs create mode 100644 _removed/nw_s0_circevil.nss create mode 100644 _removed/nw_s0_circgood.ncs create mode 100644 _removed/nw_s0_circgood.nss create mode 100644 _removed/nw_s0_contagion.ncs create mode 100644 _removed/nw_s0_contagion.nss create mode 100644 _removed/nw_s0_daze.ncs create mode 100644 _removed/nw_s0_daze.nss create mode 100644 _removed/nw_s0_dismagic.ncs create mode 100644 _removed/nw_s0_dismagic.nss create mode 100644 _removed/nw_s0_dismissal.ncs create mode 100644 _removed/nw_s0_dismissal.nss create mode 100644 _removed/nw_s0_divpower.ncs create mode 100644 _removed/nw_s0_divpower.nss create mode 100644 _removed/nw_s0_doom.ncs create mode 100644 _removed/nw_s0_doom.nss create mode 100644 _removed/nw_s0_fireshld.ncs create mode 100644 _removed/nw_s0_fireshld.nss create mode 100644 _removed/nw_s0_flmlash.ncs create mode 100644 _removed/nw_s0_flmlash.nss create mode 100644 _removed/nw_s0_gate.ncs create mode 100644 _removed/nw_s0_gate.nss create mode 100644 _removed/nw_s0_grplanar.ncs create mode 100644 _removed/nw_s0_grplanar.nss create mode 100644 _removed/nw_s0_hammgods.ncs create mode 100644 _removed/nw_s0_hammgods.nss create mode 100644 _removed/nw_s0_harm.ncs create mode 100644 _removed/nw_s0_harm.nss create mode 100644 _removed/nw_s0_heal.ncs create mode 100644 _removed/nw_s0_heal.nss create mode 100644 _removed/nw_s0_healcirc.ncs create mode 100644 _removed/nw_s0_healcirc.nss create mode 100644 _removed/nw_s0_holdanim.ncs create mode 100644 _removed/nw_s0_holdanim.nss create mode 100644 _removed/nw_s0_holdmon.ncs create mode 100644 _removed/nw_s0_holdmon.nss create mode 100644 _removed/nw_s0_holdpers.ncs create mode 100644 _removed/nw_s0_holdpers.nss create mode 100644 _removed/nw_s0_icestorm.ncs create mode 100644 _removed/nw_s0_icestorm.nss create mode 100644 _removed/nw_s0_identify.ncs create mode 100644 _removed/nw_s0_identify.nss create mode 100644 _removed/nw_s0_invpurge.ncs create mode 100644 _removed/nw_s0_invpurge.nss create mode 100644 _removed/nw_s0_invsph.ncs create mode 100644 _removed/nw_s0_invsph.nss create mode 100644 _removed/nw_s0_knock.ncs create mode 100644 _removed/nw_s0_knock.nss create mode 100644 _removed/nw_s0_lore.ncs create mode 100644 _removed/nw_s0_lore.nss create mode 100644 _removed/nw_s0_magearm.ncs create mode 100644 _removed/nw_s0_magearm.nss create mode 100644 _removed/nw_s0_metswarm.ncs create mode 100644 _removed/nw_s0_metswarm.nss create mode 100644 _removed/nw_s0_mscharm.ncs create mode 100644 _removed/nw_s0_mscharm.nss create mode 100644 _removed/nw_s0_phankill.ncs create mode 100644 _removed/nw_s0_phankill.nss create mode 100644 _removed/nw_s0_raisdead.ncs create mode 100644 _removed/nw_s0_raisdead.nss create mode 100644 _removed/nw_s0_rayfrost.ncs create mode 100644 _removed/nw_s0_rayfrost.nss create mode 100644 _removed/nw_s0_resserec.ncs create mode 100644 _removed/nw_s0_resserec.nss create mode 100644 _removed/nw_s0_sanctuary.ncs create mode 100644 _removed/nw_s0_sanctuary.nss create mode 100644 _removed/nw_s0_silence.ncs create mode 100644 _removed/nw_s0_silence.nss create mode 100644 _removed/nw_s0_summon.ncs create mode 100644 _removed/nw_s0_summon.nss create mode 100644 _removed/nw_s0_timestop.ncs create mode 100644 _removed/nw_s0_timestop.nss create mode 100644 _removed/nw_s0_wallfirea.ncs create mode 100644 _removed/nw_s0_wallfirea.nss create mode 100644 _removed/nw_s0_wallfirec.ncs create mode 100644 _removed/nw_s0_wallfirec.nss create mode 100644 _removed/nw_s0_weird.ncs create mode 100644 _removed/nw_s0_weird.nss create mode 100644 _removed/nw_s1_dragacid.ncs create mode 100644 _removed/nw_s1_dragacid.nss create mode 100644 _removed/nw_s1_dragcold.ncs create mode 100644 _removed/nw_s1_dragcold.nss create mode 100644 _removed/nw_s1_dragfire.ncs create mode 100644 _removed/nw_s1_dragfire.nss create mode 100644 _removed/nw_s1_draggas.ncs create mode 100644 _removed/nw_s1_draggas.nss create mode 100644 _removed/nw_s1_draglight.ncs create mode 100644 _removed/nw_s1_draglight.nss create mode 100644 _removed/nw_s2_animalcom.ncs create mode 100644 _removed/nw_s2_animalcom.nss create mode 100644 _removed/nw_s2_bardsong.ncs create mode 100644 _removed/nw_s2_bardsong.nss create mode 100644 _removed/nw_s2_familiar.ncs create mode 100644 _removed/nw_s2_familiar.nss create mode 100644 _removed/nw_s2_layonhand.ncs create mode 100644 _removed/nw_s2_layonhand.nss create mode 100644 _removed/nw_s2_turndead.ncs create mode 100644 _removed/nw_s2_turndead.nss create mode 100644 _removed/nw_s2_wildshape.ncs create mode 100644 _removed/nw_s2_wildshape.nss create mode 100644 _removed/x0_s0_acidsplash.ncs create mode 100644 _removed/x0_s0_acidsplash.nss create mode 100644 _removed/x0_s0_banishment.ncs create mode 100644 _removed/x0_s0_banishment.nss create mode 100644 _removed/x0_s0_bigby1.ncs create mode 100644 _removed/x0_s0_bigby1.nss create mode 100644 _removed/x0_s0_bigby2.ncs create mode 100644 _removed/x0_s0_bigby2.nss create mode 100644 _removed/x0_s0_bigby3.ncs create mode 100644 _removed/x0_s0_bigby3.nss create mode 100644 _removed/x0_s0_bigby4.ncs create mode 100644 _removed/x0_s0_bigby4.nss create mode 100644 _removed/x0_s0_bigby5.ncs create mode 100644 _removed/x0_s0_bigby5.nss create mode 100644 _removed/x0_s0_clight.ncs create mode 100644 _removed/x0_s0_clight.nss create mode 100644 _removed/x0_s0_dirge.ncs create mode 100644 _removed/x0_s0_dirge.nss create mode 100644 _removed/x0_s0_earthquake.ncs create mode 100644 _removed/x0_s0_earthquake.nss create mode 100644 _removed/x0_s0_elecjolt.ncs create mode 100644 _removed/x0_s0_elecjolt.nss create mode 100644 _removed/x0_s0_ether.ncs create mode 100644 _removed/x0_s0_ether.nss create mode 100644 _removed/x0_s0_fleshsto.ncs create mode 100644 _removed/x0_s0_fleshsto.nss create mode 100644 _removed/x0_s0_inflict.ncs create mode 100644 _removed/x0_s0_inflict.nss create mode 100644 _removed/x0_s0_missstorm1.ncs create mode 100644 _removed/x0_s0_missstorm1.nss create mode 100644 _removed/x0_s0_missstorm2.ncs create mode 100644 _removed/x0_s0_missstorm2.nss create mode 100644 _removed/x0_s0_quillfire.ncs create mode 100644 _removed/x0_s0_quillfire.nss create mode 100644 _removed/x0_s0_spikegroen.ncs create mode 100644 _removed/x0_s0_spikegroen.nss create mode 100644 _removed/x0_s0_spikegrohb.ncs create mode 100644 _removed/x0_s0_spikegrohb.nss create mode 100644 _removed/x0_s0_woundwhis.ncs create mode 100644 _removed/x0_s0_woundwhis.nss create mode 100644 _removed/x0_s1_petrbreath.ncs create mode 100644 _removed/x0_s1_petrbreath.nss create mode 100644 _removed/x0_s1_petrgaze.ncs create mode 100644 _removed/x0_s1_petrgaze.nss create mode 100644 _removed/x0_s1_petrtouch.ncs create mode 100644 _removed/x0_s1_petrtouch.nss create mode 100644 _removed/x0_s2_blkdead.ncs create mode 100644 _removed/x0_s2_blkdead.nss create mode 100644 _removed/x1_s2_deatharrow.ncs create mode 100644 _removed/x1_s2_deatharrow.nss create mode 100644 _removed/x2_inc_craft.nss create mode 100644 _removed/x2_s0_acidshth.ncs create mode 100644 _removed/x2_s0_acidshth.nss create mode 100644 _removed/x2_s0_batttide.ncs create mode 100644 _removed/x2_s0_batttide.nss create mode 100644 _removed/x2_s0_blckstff.ncs create mode 100644 _removed/x2_s0_blckstff.nss create mode 100644 _removed/x2_s0_bldethst.ncs create mode 100644 _removed/x2_s0_bldethst.nss create mode 100644 _removed/x2_s0_crumble.ncs create mode 100644 _removed/x2_s0_crumble.nss create mode 100644 _removed/x2_s0_icedagg.ncs create mode 100644 _removed/x2_s0_icedagg.nss create mode 100644 _removed/x2_s0_vinemcama.ncs create mode 100644 _removed/x2_s0_vinemcama.nss create mode 100644 _removed/x2_s0_vinemhmpa.ncs create mode 100644 _removed/x2_s0_vinemhmpa.nss create mode 100644 _removed/x2_s0_vinemhmpc.ncs create mode 100644 _removed/x2_s0_vinemhmpc.nss create mode 100644 _removed/x2_s1_beholdatt.ncs create mode 100644 _removed/x2_s1_beholdatt.nss create mode 100644 _removed/x2_s1_beholdray.ncs create mode 100644 _removed/x2_s1_beholdray.nss create mode 100644 _removed/x2_s1_petrgaze.ncs create mode 100644 _removed/x2_s1_petrgaze.nss create mode 100644 _removed/x2_s2_cursesong.ncs create mode 100644 _removed/x2_s2_cursesong.nss create mode 100644 _removed/x2_s2_discbreath.ncs create mode 100644 _removed/x2_s2_discbreath.nss create mode 100644 _removed/x2_s2_divwrath.ncs create mode 100644 _removed/x2_s2_divwrath.nss create mode 100644 _removed/x2_s2_dragknght.ncs create mode 100644 _removed/x2_s2_dragknght.nss create mode 100644 _removed/x2_s2_epicward.ncs create mode 100644 _removed/x2_s2_epicward.nss create mode 100644 _removed/x2_s2_epmagearm.ncs create mode 100644 _removed/x2_s2_epmagearm.nss create mode 100644 _removed/x2_s2_gwildshp.ncs create mode 100644 _removed/x2_s2_gwildshp.nss create mode 100644 _removed/x2_s2_hellball.ncs create mode 100644 _removed/x2_s2_hellball.nss create mode 100644 _removed/x2_s2_mumdust.ncs create mode 100644 _removed/x2_s2_mumdust.nss create mode 100644 _removed/x2_s2_poisonwp.ncs create mode 100644 _removed/x2_s2_poisonwp.nss create mode 100644 _removed/x2_s2_ruin.ncs create mode 100644 _removed/x2_s2_ruin.nss create mode 100644 _removed/x2_s2_shiftdom.ncs create mode 100644 _removed/x2_s2_shiftdom.nss create mode 100644 _removed/x2_s2_sumgrund.ncs create mode 100644 _removed/x2_s2_sumgrund.nss create mode 100644 _removed/x2_s2_sumundead.ncs create mode 100644 _removed/x2_s2_sumundead.nss create mode 100644 _removed/x2_s3_sequencer.ncs create mode 100644 _removed/x2_s3_sequencer.nss create mode 100644 _removed/x3_s2_palmount.ncs create mode 100644 _removed/x3_s2_palmount.nss create mode 100644 _removed/x3_s2_pdk_fear.ncs create mode 100644 _removed/x3_s2_pdk_fear.nss create mode 100644 _removed/x3_s2_pdk_inspir.ncs create mode 100644 _removed/x3_s2_pdk_inspir.nss create mode 100644 _removed/x3_s2_pdk_rally.ncs create mode 100644 _removed/x3_s2_pdk_rally.nss create mode 100644 _removed/x3_s2_pdk_shield.ncs create mode 100644 _removed/x3_s2_pdk_shield.nss create mode 100644 _removed/x3_s2_pdk_stand.ncs create mode 100644 _removed/x3_s2_pdk_stand.nss create mode 100644 _removed/x3_s2_pdk_wrath.ncs create mode 100644 _removed/x3_s2_pdk_wrath.nss diff --git a/_removed/70_spellhook.ncs b/_removed/70_spellhook.ncs new file mode 100644 index 0000000000000000000000000000000000000000..c93fae06dd08980ec6d15bc4636832b8c7aaad03 GIT binary patch literal 4921 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 literal 0 HcmV?d00001 diff --git a/_removed/70_spellhook.nss b/_removed/70_spellhook.nss new file mode 100644 index 0000000..6dec0bc --- /dev/null +++ b/_removed/70_spellhook.nss @@ -0,0 +1,257 @@ +//:://///////////////////////////////////////////// +//:: Community Patch 1.71: Improve Spell Hook Include File +//:: 70_spellhook +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + + This file acts as a hub for all code that + is hooked into the nwn spellscripts' + + If you want to implement material components + into spells or add restrictions to certain + spells, this is the place to do it. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Shadooow +//:: Created On: 2012-01-17 +//::////////////////////////////////////////////// + +#include "x2_inc_spellhook" + +int MusicalInstrumentsCheck(object oItem) +{ + int bRulesApply = GetGameDifficulty() >= GAME_DIFFICULTY_CORE_RULES; + if(bRulesApply) + { + switch(GetLocalInt(GetModule(),"71_RESTRICT_MUSICAL_INSTRUMENTS")) + { + case 1://perform based + if(GetSkillRank(SKILL_PERFORM) > -1) + { + int nDC = GetLocalInt(oItem,"MUSICAL_INSTRUMENT_DC"); + if(!nDC) + { + nDC = 7+3*StringToInt(Get2DAString("des_crft_spells","Level",GetSpellId())); + } + if(!GetIsSkillSuccessful(OBJECT_SELF, SKILL_PERFORM, nDC)) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE), OBJECT_SELF); + return FALSE; + } + } + else + { + FloatingTextStrRefOnCreature(8288,OBJECT_SELF,FALSE);//you cannot use this skill + return FALSE; + } + break; + case 2://song feat based + if(GetHasFeat(FEAT_BARD_SONGS)) + { + DecrementRemainingFeatUses(OBJECT_SELF,FEAT_BARD_SONGS); + } + else + { + FloatingTextStrRefOnCreature(40063,OBJECT_SELF,FALSE); + return FALSE; + } + break; + } + } + int bDeaf; + effect e1 = GetNextEffect(OBJECT_SELF);//part1 check for silence effect + while(GetIsEffectValid(e1)) + { + switch(GetEffectType(e1)) + { + case EFFECT_TYPE_SILENCE: + FloatingTextStrRefOnCreature(85764,OBJECT_SELF); // not useable when silenced + return FALSE; + case EFFECT_TYPE_DEAF: + bDeaf = TRUE; + break; + } + e1 = GetNextEffect(OBJECT_SELF); + } + if(bDeaf && bRulesApply && d100() < 21)// 20% chance to fail under deafness + { + FloatingTextStrRefOnCreature(83576,OBJECT_SELF); //* You can not concentrate on using this ability effectively * + return FALSE; + } + string music = GetLocalString(oItem,"MUSICAL_INSTRUMENT_SOUND"); + if(music == "") + { + music = "sdr_bardsong"; + } + PlaySound(music); + return TRUE; +} + +//------------------------------------------------------------------------------ +// if X2_EXECUTE_SCRIPT_END is set by this script, the original spell will not be cast +// the order in which the functions are called here DOES MATTER, changing it +// WILL break the crafting subsystems +//------------------------------------------------------------------------------ +void main() +{ + object oTarget = GetSpellTargetObject(); + object oItem = GetSpellCastItem(); + + if(oItem != OBJECT_INVALID) + { + int spellOverride = GetLocalInt(oItem,"ITEM_SPELL_OVERRIDE"); + if(spellOverride != 0 && !GetLocalInt(GetModule(),"SPELL_OVERRIDE_FINISHED")) + { + SetLocalInt(GetModule(),"SPELL_OVERRIDE_FINISHED",TRUE); + ExecuteScript(Get2DAString("spells","ImpactScript",spellOverride < 0 ? 0 : spellOverride),OBJECT_SELF); + SetLocalInt(GetModule(),"SPELL_OVERRIDE_FINISHED",FALSE); + SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END); + return; + } + } + else//metamagic exploit handling + { + int nMeta = GetMetaMagicFeat(); + if((nMeta == METAMAGIC_EMPOWER && !GetHasFeat(FEAT_EMPOWER_SPELL)) || (nMeta == METAMAGIC_MAXIMIZE && !GetHasFeat(FEAT_MAXIMIZE_SPELL))) + { + effect e = GetFirstEffect(OBJECT_SELF); + nMeta = -1; + while(GetIsEffectValid(e)) + { + if(GetEffectType(e) == EFFECT_TYPE_POLYMORPH)//if used in polymorph nothing happens, CP fixes this exploit in engine + { + nMeta = 0; + break; + } + } + } + else if((nMeta == METAMAGIC_EXTEND && !GetHasFeat(FEAT_EXTEND_SPELL)) || (nMeta == METAMAGIC_QUICKEN && !GetHasFeat(FEAT_QUICKEN_SPELL)) || + (nMeta == METAMAGIC_SILENT && !GetHasFeat(FEAT_SILENCE_SPELL)) || (nMeta == METAMAGIC_STILL && !GetHasFeat(FEAT_STILL_SPELL))) + { + nMeta = -1; + } + if(nMeta < 0) + { + //block the spell for exploit abuse + FloatingTextStrRefOnCreature(3734,OBJECT_SELF,FALSE);//prints "Spell failed!" + SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END); + return; + } + } + //--------------------------------------------------------------------------- + // This small addition will check to see if the target is mounted and the + // spell is therefor one that should not be permitted. + //--------------------------------------------------------------------------- + if(!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // do check for abort due to being mounted check + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(X3ShapeShiftSpell(oTarget)) + { + SetLocalInt(oTarget, "Polymorphed", TRUE); + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END); + return; + }// shape shifting not allowed while mounted + break; + } + } // do check for abort due to being mounted check + + + //--------------------------------------------------------------------------- + // This stuff is only interesting for player characters we assume that use + // magic device always works and NPCs don't use the crafting feats or + // sequencers anyway. Thus, any NON PC spellcaster always exits this script + // with TRUE (unless they are DM possessed or in the Wild Magic Area in + // Chapter 2 of Hordes of the Underdark. + //--------------------------------------------------------------------------- + /*if (!GetIsPC(OBJECT_SELF)) + { + if( !GetIsDMPossessed(OBJECT_SELF) && !GetLocalInt(GetArea(OBJECT_SELF), "X2_L_WILD_MAGIC")) + { + return; + } + }*/ + + //--------------------------------------------------------------------------- + // Break any spell require maintaining concentration (only black blade of + // disaster) + // /*REM*/ X2BreakConcentrationSpells(); + //--------------------------------------------------------------------------- + + //--------------------------------------------------------------------------- + // Run use magic device skill check + //--------------------------------------------------------------------------- + int nContinue = X2UseMagicDeviceCheck(); + + if (nContinue) + { + //----------------------------------------------------------------------- + // run any user defined spellscript here + //----------------------------------------------------------------------- + nContinue = X2RunUserDefinedSpellScript(); + } + + //--------------------------------------------------------------------------- + // The following code is only of interest if an item was targeted + //--------------------------------------------------------------------------- + if (GetIsObjectValid(oTarget) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM) + { + //----------------------------------------------------------------------- + // Check if spell was used to trigger item creation feat + //----------------------------------------------------------------------- + if (nContinue) + { + nContinue = !ExecuteScriptAndReturnInt("x2_pc_craft",OBJECT_SELF); + } + + //----------------------------------------------------------------------- + // Check if spell was used for on a sequencer item + //----------------------------------------------------------------------- + if (nContinue) + { + nContinue = !X2GetSpellCastOnSequencerItem(oTarget); + } + + //----------------------------------------------------------------------- + // * Execute item OnSpellCast At routing script if activated + //----------------------------------------------------------------------- + if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS)) + { + SetUserDefinedItemEventNumber(X2_ITEM_EVENT_SPELLCAST_AT); + int nRet = ExecuteScriptAndReturnInt(GetUserDefinedItemEventScriptName(oTarget),OBJECT_SELF); + if (nRet == X2_EXECUTE_SCRIPT_END) + { + SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END); + return; + } + } + + //----------------------------------------------------------------------- + // Prevent any spell that has no special coding to handle targetting of items + // from being cast on items. We do this because we can not predict how + // all the hundreds spells in NWN will react when cast on items + //----------------------------------------------------------------------- + if (nContinue) + { + nContinue = X2CastOnItemWasAllowed(oTarget); + } + } + + if(GetLocalInt(oItem,"MUSICAL_INSTRUMENT"))//variable indicating musical instrument + { + nContinue = MusicalInstrumentsCheck(oItem); + } + + + SetExecutedScriptReturnValue(!nContinue); +} diff --git a/_removed/druid_air.ncs b/_removed/druid_air.ncs new file mode 100644 index 0000000000000000000000000000000000000000..a07942adfdfbd61f1c332ce742706e6aba59ac2a GIT binary patch literal 2533 zcmbVOJ!n%=6u$4i_hQqeH9}pqwU2^|#rjvl3Zm2)O)yP@skXWV(W-;mQXF(rbXLUG zRh&dSR1hZzQHO#KMO2D(P^jV{r9+28{O&pTrSHC8f3QQE`<?In-Scx(%2tCDJGbpP zC`9t>27$k(K=?u|s*ml$a}`9N#{o=AnUSuSXn?LSoFS=MzGxrrt(D5PYQDdctL6)b z2W!<zu2`&P^SSI%=+7&wy|T;gR2H7NPQ6~A6P_>JW`_<-!XsmDD%hwfB?I*}+Gn5% zjdmGmlSb1W%Fce0eNnE&M~A$3a?~W4CAZGg%f65;?s|c+W|dyz9(`Z3XWZ5jkfn8G z$#GORi^5|SBN&llW<bmgF@J_k3b4J0Z@JBsag6HIIlw_6fdw~`%`HiX1!Ulh#K6e- z`H>-fOOB0Rymo1HeCz^JdWABHIfuhc1*8D?4Tb)HQTP#2DEvhsa$jJI`!WJJabQ&( zXo>^LIFN_~G7dDy0o8d%96kYInQ-XlzPP>&Ik)-F`qF%7=uRql2T@RJbibywrh~*^ zNqZGZw~U&hSj$MR>l^K5t3JO&XQ<XfiPeC5P+QSxQ(EV$)|obS+$mE>v(N)k%kD!f z3w{mO4U<JO#7KF4*OouTbc&{qX3fM{o2)Dhr{O=AzqW<hj<Vz@t1UFK!J4$Pu#ybc z9h1dFNsMRI18*e}Cc}v)QMk%PE0=t?fvSeB@aRGfhu1b6WL}JOpES&~f9NC~&qGHD zo-VTgh&CB8h-bVN;t4HQ?jcs&y&2v!!@Fw5T6M5o$@W(V3#B8CU9-pKtpQT1QZAkx zC?BijbBChx<<~&vVa(VX0w}N-x<k6y9${f;z2wf8?S$e)y>yE6Bn-1g|50T%1J1lf zhPffxdy5PeCE0Vb5>D7-3loz>%)1sDx}0QJEV5}W8@9+W4WzfvBEt-jEU?JX`6S~f z<v}2HujAgZ)z3DbOdQVe@|vLh(0YK*@$$mk6N2&OB|kGoroz2c4ykyO(U5xWL|(M8 z5Lg|$ueoTzi48o$#tDIp#P(c=dS46V37L=@>O*P^^cbe;`yzh^VmT)4=<q<ftPPEz z&$=Dnt<LI@@|!#Q7LotY9q})Un>`#CQlwD$=5P&o6Y3l#Wsie?{5SJ7l6Q#0(5dd2 dM|s+#<hS6L08RBDh$JFk_RGz14fsj}@e9a8!s!42 literal 0 HcmV?d00001 diff --git a/_removed/druid_air.nss b/_removed/druid_air.nss new file mode 100644 index 0000000..b1c053a --- /dev/null +++ b/_removed/druid_air.nss @@ -0,0 +1,162 @@ +//:://///////////////////////////////////////////// +//:: Elemental Shape +//:: NW_S2_ElemShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into elemental forms. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +/* #include "x2_inc_itemprop" +#include "70_inc_itemprop" */ +#include "prc_x2_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); //GetCasterLevel(OBJECT_SELF); + int bElder = FALSE; + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) + { + bElder = TRUE; + } + //Determine Polymorph subradial type + if(bElder == FALSE) + { + nPoly = POLYMORPH_TYPE_HUGE_AIR_ELEMENTAL; + } + else + { + nPoly = POLYMORPH_TYPE_ELDER_AIR_ELEMENTAL; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + IPWildShapeCopyItemProperties(oShield,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + + +} diff --git a/_removed/druid_badger.ncs b/_removed/druid_badger.ncs new file mode 100644 index 0000000000000000000000000000000000000000..3977337187fb2d2c2f672f2905dabfde6e16f22e GIT binary patch literal 2525 zcmbVOO>9h26u$SqH>1;;RxL<Wt1pcbjryxZB_e7JGclc+n9{PD2=$YoO=H1|uoPl% zD^@}mm57yvV9|s{BS=XX79|$abkRkV@!fOon|b$nRCMwB?svZPchAq8Lb~i7-?4T3 z0U;8f*9-hLcp@gmqJC@>uA?D(9s@9`REu)(azVK9ngoCxQf^GN4fj?G#Y#EbU&@rT zxkH1Maw(I~SJK%``Ute<wb5SH>2zq_CyuOEt8)U1PNSs5l5okFlk~bYrC^~kgZ5cy z+@PHn+F;OBySB5BWM8!_@llfZ4o-~(v*cDjy&My&$yp~5)~wcx-=_B^A}yNORMH~@ z8!UfnjVE<FV6hIFUrX3eAG0)4O>C!?m|ZrLgVRsBpKltGFF0g?)3~MRuz;vyB0exO zer{w4Z;7$di`OoVj*p#3F0XW{<|G-DNskl|OiiKxUle`>6mrWb1eyX&abE=h83tB_ zfrc=U2m|pjpu#|77|<<e#StUGF9i<W+z{96ki5fp)|cWtLt9eG+lhh_qu~vuIpxKd zCGF89vd~HwBJEaDT-P_o%NBEfhq==&g%az*bcL-&vMHl;)#yyyI?j}>V_4{cpk?P_ zBny5m)(x9QGQ>!EeK(drgmm(@j$zG&SQ{f*m`clkD1T!M(-35-Pm#9J#1?BZl7(Gl zvF_R|9!g?7qaJvxh%gyB-=djIzKaz6&88c+#G?x}99~D+AoF6J`=n-`{X-`qU01I) zo-VTg$ZRLw?lbOh;t3<x?jhD&y%FA9hIdx-mGWS*l<qGN<_d?|B1pR(-Wnh!OU3+& zf#T6pHghm2uYUk^9@dPlB7g#WVLGIf?Gfg8)=Tbe)kY{z)JrEhPr@*3^dFVcGa%<9 zWat2ry^oM#rbzajtoRf5ID&~uBIdma8M>TgS0ZH7Mm8KF!!(fI-Uu0HfMi~T44qFh z{**lMgz0tM8@BqH+P4yi)4aSUC_gkAptHQZgjx6i!^=y3VG2HFW-k@%`VJb>tR4I7 zM-;3M)7M-y6o}Zs18kfS$Vh0<wd)USj?5qvQbS!yZGk@1DSBVzrzh$$VMqH1%4M~0 z1bx;mIS0AYr~KiLz6Ip}b4UDB;${!Wg%l|izByb2z6n*1lCsCa{7~4$(@5SS@<XS( fV;<Ehmy+MygBjIR{TCvM$XE2`wr~yjN<Hxl-Q3Ey literal 0 HcmV?d00001 diff --git a/_removed/druid_badger.nss b/_removed/druid_badger.nss new file mode 100644 index 0000000..e9ab270 --- /dev/null +++ b/_removed/druid_badger.nss @@ -0,0 +1,164 @@ +//:://///////////////////////////////////////////// +//:: Wild Shape +//:: NW_S2_WildShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into animal forms. + + Updated: Sept 30 2003, Georg Z. + * Made Armor merge with druid to make forms + more useful. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nMetaMagic = GetMetaMagicFeat(); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + //Enter Metamagic conditions + if (nMetaMagic == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + nPoly = POLYMORPH_TYPE_BADGER; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_BADGER; + } + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oShield,oArmorNew); + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + +} diff --git a/_removed/druid_bear.ncs b/_removed/druid_bear.ncs new file mode 100644 index 0000000000000000000000000000000000000000..09378ea3bd71f72ccee5239bfdf399d4371690c7 GIT binary patch literal 2525 zcmbVOOKeP07(VCRJEPN?RxN5#tzL~sH0o7}N<`EcW@0)sF{NcQ5$chkO=H1|uoPl% zD^@}mm57yvV9|s{BS=XX79|$abkRkV@tyxacjlh!QqjfjJ>UQRuk%0d6w+ny_>QgH z4+xR?yjI|^!4okd7WHGBa2*ZN^B90hrCOAOmkYv;*CYVskaA<9eYm$$C|1hZ{!*r# z%^e!7luMa>zLL&n(np{*uZ{MqE~iuLK5=BVTAdS6bQ&ccmV`^boTRrwQwkOuGiaZM z#tqtKp$!I2b!a>LNcL5`5+5ab@8r}-FiURb)5|fTnw&KPVa;m2_-%S$BGRIXO(i`t zu-@{gR(n#X0~YI$`BuVy`k1AWYGONW#9U`HIXL~4`}w93`GP|RIE`D14hx7XCgKAl z<L5?(@Rk@Gy?E`?==j)q<nl_FYEF_dne<2j!PFG`|3%?PKq0q`LZB(Y6!%pCkYQj& z7-$Fsi7*fk11bzOh5_AjRva+`{8Hf1%?)wA4#_)wXMHKYGqfd@yn`qxF&f@bnp0kU zS<)U&A`5MFA<}LY#dUpSylgS&cbGffQYf(=Ojp=iB%3liSB=iJt>aADI);TF2wHX? zMzY}7V%@M=Btwjp*LP$2Lr5oY>loHdh_x}2g{idshw?YJFbzSL`V?skO>D6yBU#u* z7VECf;-MtQGwOl2iU^aD^DUaW<hw}0-)y>JOFX(z!{K$54Kgprxld~5**|m=(slJ( z<LM&%kIZ(`?LOoFCY~^2?H*#i)f?fxWq4;LUnvh3OX>ddV6JeOErPV$;jIBuvQ*5U z7$_bsWitnZ^7;or=V8s*Dgr357p6nH*dAeiXT9XkR_%o1M7?y9^CS$jM*mS6Jp*z+ zLWT|?+4~3?W{PCb$%;Q=k0Y3vBx2r+kfF;-b|peKZDhj{GE4*M?TwIO21w>b$k6#D z<4?&0PncfEy<w}LseLPPIL*szg7QO?0XoaeOPGZZFuc6f7pCA-X7*CCuJ52B&DycQ zeni3QFn!HMLxG45Jix{YfsBOqT!;R!=Ew{(AvM&M)E4M7ouc<eetM!F6Lz$Jpj=vg zBj~ek$vMcCKIIR0^erI&pF8585;uD|E~H4I@Xg^G@J*<4l$1RV=7+*2o<{NxksmtM f9rLJ8xs?3o9?Yno>c0?4M82Xgw}orKSL%shnvBY> literal 0 HcmV?d00001 diff --git a/_removed/druid_bear.nss b/_removed/druid_bear.nss new file mode 100644 index 0000000..9738dd4 --- /dev/null +++ b/_removed/druid_bear.nss @@ -0,0 +1,164 @@ +//:://///////////////////////////////////////////// +//:: Wild Shape +//:: NW_S2_WildShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into animal forms. + + Updated: Sept 30 2003, Georg Z. + * Made Armor merge with druid to make forms + more useful. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nMetaMagic = GetMetaMagicFeat(); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + //Enter Metamagic conditions + if (nMetaMagic == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + nPoly = POLYMORPH_TYPE_BROWN_BEAR; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_BROWN_BEAR; + } + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oShield,oArmorNew); + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + +} diff --git a/_removed/druid_blued.ncs b/_removed/druid_blued.ncs new file mode 100644 index 0000000000000000000000000000000000000000..9ce00b78a6f8c98bb81fc62cce71f244b36897ab GIT binary patch literal 2533 zcmbVOO-NKx6u$4i_a?^~&7d}=`4B3S?9U*BC~TUXp>bw#EUnEDWwodjX;G`9)<v{! z8?B;T7(}ZUQ7wd8NK{C;D6nV|;=+Y6efOOE#&@5$j9iR!zw@2Hdw%W|GnL@vo}Igo z2$B4@S>UfB5WWzL>SLGiTm{kR2>_E)wn*1Y)Irx5&XCkBU$hQ)SBs@;CD&WdR&x1c zgVjnoTPRdBxoqY*^yih;ZrS0sD+^Cur&g=Y3C|a9qeF)!;gK;n6>L$IqJjDv?J>}V zMmr3&L8Iw5W#<sdzA9JZlSAIyIcgHjl3VB56<^3EcauO^vq~><pS~~IGhW{mkfn`e z$#GORi^5|SBN&llW<bn7V*U!56kux?-*QaGF{)4JFb9DI7TicSw<R4Gkby4}{UhTS zMuzY$IW~If`sLB_v5QFQHOeIB91b%TkOJJ-6?*?g;b%l4zluWSzQ7a@WCU>Hz?wMF z5C@WRAQ1;-9B7OKs`HFEd;-EU;n2x_abp>B?(m)Ur1{R!omB8PqM+31eobjk2Z>cl z2NX%SjGCcX%Sf*4TkU0sKEFq2sMbP>)qr|XThVA!TIZV9nKpIYDN{$Y&;wD+?jtJ; zeht=5lSMMbNO}FxmOsXH3Z{-`&BRz+tt<?u;XjtYwuRY_vgBv0Ei|#gnzXX8k_^^e zlf^?xjOWw??<5f>!-*zQxXMH`mwcars)jA|=t2#LH#Qq&UW{{})XlSh=p-G_Lq`an zF0%iaHW@I8XS@~S2`yIcAy(VH5#C#d_f`wl%3!IS>8%Xri+%N7v)|>d0aB`5DxB&s z4U}`)qfz<tYoPKlW^5e+6xd7MAsuXwu&}dUac9d`LUE#AI?Z_!hFPQksIr;?XWk;i z+>q>pMTUx!>;+i~C+vxZiAf^nJ&O!oPO_^O*|e4oTV$99(mQC8VFpMRSY+sYlJS%B zFc7-eac|h_=ju-;4rh6JO;CPlJwWGqdExB|!T9o$Uzj3O;a)0*R6NOONWFF<FIrd# ztPb7RTr}Xs1|DJKgg{1Od#+8ruX*x>Oh^s&A+-g14Ab;|kv{{m920hQc%WQ1ghtS3 zoeu9-XKhIN!ySE($p7b#_!q^kE{+Q+QYd_LxCXolHI9<9$3Z{-+jttuJ49jVRCmmy cJmXRF+wn_)rur{L5|J<a<+gAQ_(}uu8$q<gQvd(} literal 0 HcmV?d00001 diff --git a/_removed/druid_blued.nss b/_removed/druid_blued.nss new file mode 100644 index 0000000..2c52e56 --- /dev/null +++ b/_removed/druid_blued.nss @@ -0,0 +1,161 @@ +//:://///////////////////////////////////////////// +//:: Elemental Shape +//:: NW_S2_ElemShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into elemental forms. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); //GetCasterLevel(OBJECT_SELF); + int bElder = FALSE; + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) + { + bElder = TRUE; + } + //Determine Polymorph subradial type + if(bElder == FALSE) + { + nPoly = POLYMORPH_TYPE_ANCIENT_BLUE_DRAGON; + } + else + { + nPoly = POLYMORPH_TYPE_ANCIENT_BLUE_DRAGON; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + IPWildShapeCopyItemProperties(oShield,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + + +} diff --git a/_removed/druid_boar.ncs b/_removed/druid_boar.ncs new file mode 100644 index 0000000000000000000000000000000000000000..cce40a8ed9a9a751cd55a2cf4d0de5f049de5a45 GIT binary patch literal 2525 zcmbVOO>9h26u$SqH>1;;RxOBBt1nFvjryxZB_e7JGclc+n9{PD2=$YoO=H1|uoPl% zD^@}mm57yvV9|s{BS=XX79|$abkRkV@!fOon|b$nRCMwB?svZPchAq8Lb~i7-?4T3 z0U;8f*9-hLcp@gmqJC@>uA?D(9s@9`REu)(azVK9ngoCxQf^GN4fj?G#Y#EbU&@rT zxkH1Maw(I~SJK%``Ute<wb5SH>2zq_CyuOEt8)U1PNSs5l5okFlk_%dO2I;72JN%Z zxIsHDw85aMc5P=L$-Zh=;-e(*9h@2oX34F5dO0Rkle11BtXZuWzfJE;L|Qblsia2+ zx-5TcjVE<FV6hIFUrX3eAG0)4O>C!?m|ZrLgVRsBpKltGFF0g?)3~MRuz;vyB0exO zer{w4Z;7$di`OoVj*p#3F0XW{<|G-DNskl|OiiKxUle`>6mrWb1eyX&abE=h83tB_ zfrc=U2m|pjpu#|77|<<e#StUGF9i<W+z{96ki5fp)|cWtLt9eG+lhh_qu~vuIpxKd zCGF89vd~HwBJEaDT-P_o%NBEfhq==&g%az*bcL-&vMHl;)#yyyI?j}>V_4{cpk?P_ zBny5m)(x9QGQ>!EeK(drgmm(@j$zG&SQ{f*m`clkD1T!M(-35-Pm#9J#1?BZl7(Gl zvF_R|9!g?7qaJvxh%gyB-=djIzKaz6&88c+#G?x}99~D+AoF6J`=n-`{X-`qU01I) zo-VTg$ZRLw?lbOh;t3<x?jhD&y%FA9hIdx-mGWS*l<qGN<_d?|B1pR(-Wnh!OU3+& zf#T6pHghm2uYUk^9@dPlB7g#WVLGIf?Gfg8)=Tbe)kY{z)JrEhPr@*3^dFVcGa%<9 zWat2ry^oM#rbzajtoRf5ID&~uBIdma8M>TgS0ZH7Mm8KF!!(fI-Uu0HfMi~T44qFh z{**lMgz0tM8@BqH+P4yi)4aSUC_gkAptHQZgjx6i!^=y3VG2HFW-k@%`VJb>tR4I7 zM-;3M)7M-y6o}Zs18kfS$Vh0<wd)USj?5qvQbS!yZGk@1DSBVzrzh$$VMqH1%4M~0 z1bx;mIS0AYr~KiLz6Ip}b4UDB;${!Wg%l|izByb2z6n*1lCsCa{7~4$(@5SS@<XS( fV;<Ehmy+MygBjIR{TCvM$XE2`wr~yjN<Hxl%?Qf0 literal 0 HcmV?d00001 diff --git a/_removed/druid_boar.nss b/_removed/druid_boar.nss new file mode 100644 index 0000000..cb6b0d2 --- /dev/null +++ b/_removed/druid_boar.nss @@ -0,0 +1,164 @@ +//:://///////////////////////////////////////////// +//:: Wild Shape +//:: NW_S2_WildShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into animal forms. + + Updated: Sept 30 2003, Georg Z. + * Made Armor merge with druid to make forms + more useful. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nMetaMagic = GetMetaMagicFeat(); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + //Enter Metamagic conditions + if (nMetaMagic == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + nPoly = POLYMORPH_TYPE_BOAR; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_BOAR; + } + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oShield,oArmorNew); + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + +} diff --git a/_removed/druid_earth.ncs b/_removed/druid_earth.ncs new file mode 100644 index 0000000000000000000000000000000000000000..93df9fa4b12124df8758c0c4fe0c38b7a1ceebd7 GIT binary patch literal 2533 zcmbVOO>9h26u$Sq_eQ5P{Sj<v^`!}-QGb=FL`aQcCZ;nJQ(86?p;(|zW5J5BCSq$V zRzeq*h?Rw4(S$`KNF!a4lvqg9MHfxRch9+R`tIwaqKoO=?|kR)o}W9#OvOLBYx~Ya zLL|R!6!>fKg(t*<{@5X0M?>^^0>Fe)t;%r|b<pvI98`woiMFAhYOz$U<oe3lN-lq7 zpjs(s3x#SXm(3i5{+zbjqdJ`qZQ-dSYqi>}a6REPN;)hGmy9_nf0L#ZEz~n;uZ1QI z+G(K;22HnXI|oSiRl5?OBzf=Ps7WwGZsoHpo={EB27$0<v|i#qeP4{vcx{tUme!Lc zDRnjr!etdJ7?EP8Ps|o#{tB2BU|Toe@)}#lG3rlwkb^)1^G+z6+lmhJ$iNec{^79; z!-M#i938oI{qo4z=tZRT8f6l*lEX~-qyYDIg}#4L_!&~jub>dRFEGUe6#`@wSQP~t zqCheVB%*+d0*z5Xcb*l8M?g>}9J;tKZY)9a4&PaCn(qwVNd<2w3QCRcH<aeIpIDK! zPm@f`=oyN%jN-b!HD0!v^LuoLZY`8p52y>ZWsNpzbgmhlDO<;xv~>&%JrK6+Jc?z( zuf@7)vq***DX$;K^2dly!PYUX=?H6cEDOVF`H$ppY+<&;EcH3o7Mj>%O~kUWk}TF; zo5e#(jOWw??-UUxf{7+ku*yU;mwb<f>V_@z=t2#LH*q$|ycpv?shem2&`C<yMMnsp zF0%iaHW@I8r`=`ZaU<65A=cZy5#C#ec2^74%0Q`{>8lLni%09bX0O9r1Ef^BR5;aN zI$q9Y4~OMTuYu0Pnz7XcP+%`jhjg+%!h+6v#htC%2*rtd=``m_7-o(Bqsn>)<Xnsl zb3?KZF)~z?WG~1{Fkw$(n3yDD-iwi;%Sm=MMmA++LoqT;1L^ILkzoc%=Eum;`6S~f z<)JT3ujAgZ)z8(ROdQVg@*1c7(0YK*^YX&m6M)g>rM@slrGmXw3aEIJ(U4~CgkH3u z5Lg|iueoTzi48o&#tDH8NA_I1eqZzC37L=@>O*St^cbe;`vQOZVksu<=-@!PtP6~w z&$=Y<R@o9z{%}X%L-PN*BmPBktDECOiWCap9IgRxLXD%O>~S!U{}!G`@(xiDI@KNX dsLr^Q{8s!DpsD@~kwoMx{&HKn27INy_zkyw!sh@0 literal 0 HcmV?d00001 diff --git a/_removed/druid_earth.nss b/_removed/druid_earth.nss new file mode 100644 index 0000000..9427bdf --- /dev/null +++ b/_removed/druid_earth.nss @@ -0,0 +1,161 @@ +//:://///////////////////////////////////////////// +//:: Elemental Shape +//:: NW_S2_ElemShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into elemental forms. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); //GetCasterLevel(OBJECT_SELF); + int bElder = FALSE; + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) + { + bElder = TRUE; + } + //Determine Polymorph subradial type + if(bElder == FALSE) + { + nPoly = POLYMORPH_TYPE_HUGE_EARTH_ELEMENTAL; + } + else + { + nPoly = POLYMORPH_TYPE_ELDER_EARTH_ELEMENTAL; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + IPWildShapeCopyItemProperties(oShield,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + + +} diff --git a/_removed/druid_fire.ncs b/_removed/druid_fire.ncs new file mode 100644 index 0000000000000000000000000000000000000000..0630baeed466e5d6a08e4265eebd3b9e4ca71984 GIT binary patch literal 2533 zcmbVOO-NKx6u$4i_a?^~O`$fW`4B3S?9U*BC~TUVp>bw#EUnEDWwodjX;G`9)<v{! z8?B;T7(}ZUQ7wd8NK{C;D6nV|;=+Y6efOOE#&@5$j9iR!zw@2Hdw%W|GnL@v?j5@h z3z7V`N#L&`5WWzL>SL$yTm{kR2>_E)wn*1Y)Irx5&XCkBU$hPPREwo*CD&KZR&x2H zgVjnoTPRdBxoqY*^yih;9@*)3C<{+rr&g=Y3C|a9qeF)!;gK;n6>L_NqJjDv?KRMZ zMmr6(L8Iw*W#=HtzA9JZlSAG+IBF8il3VB56<^3EccVa9vq~><pS~~IGhWvekfjY| z$#GORi^5|SBN&llW<bm)V*U!56kuC7-*T%d;~3SabBKdL0t;>=o7<8O3&_A1iT;uC z3nN4LmK+<sbp7(^_}E3H^crOna}I}@3P=I&>k57UqVO}KkY7b1a$jJI2QmUUabQgx zXov&JIFN_~G7dDx0o8d%96kYInQ-XhzPParId}NZdeeMo=uRqlJ5f+-bibxFr-Q_* zr2UGdTSm=LtYswE^{w`@U7z2hGgND##A-l2sI6$UDXnu&>r9(E?v$ycS?GbNW%rSl z1-}OCrpY21Vx+u&Xv-gCIt5clvu0wfEmjtW)9@e5U)#cLM_KZ-)fSrAU`<+CSV;!! zuF2w|B*t^<fp?M!li@^@C|qTtnM=OcKvlz*d32$M!yB6oGB3utPwM8`KXj6g=b<A6 zPZ!yLOq&cC#53Ls@q`vD_YkY?-U#n4!+WZQYGtrg&h%9V^TlKJU9->StpQT1Tq>OE zFAbD)*&|W;@@t^-FlMZk01E7-?vPHlM_AZdueh^i8=*K+FP-K*3B#<>e^gn`fHQBA zVQxtF!6HLNN%n%QgcJ6}!o(yI^PWY9E+^Sli)>oUhAlEo1L+;G$S?yW3oJ5pKFRn= zc^C-Y>$o>;^>g(n6Nj_Bye23=v>u@Iyu9%CgkXGm$uCTisc<iqLMonQG^AcTkryp2 z1XhRcYc3jaVgrw`aY7&?u|3zW-q$>NLMEh!`jFZJJ%(xezQ~_}SdIxhIy_J=>q8^x zvo42stFtzw{NawiN96x=NBoQ8RyW6m6e$$GIa~wYgc?Ul+2f!e|E)ZY<Q<|gbgDb% dQJ(QA`EB?mKvVq}B8kYC{c>Bl27IM~_zjit!s7q{ literal 0 HcmV?d00001 diff --git a/_removed/druid_fire.nss b/_removed/druid_fire.nss new file mode 100644 index 0000000..f8bb608 --- /dev/null +++ b/_removed/druid_fire.nss @@ -0,0 +1,161 @@ +//:://///////////////////////////////////////////// +//:: Elemental Shape +//:: NW_S2_ElemShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into elemental forms. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); //GetCasterLevel(OBJECT_SELF); + int bElder = FALSE; + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) + { + bElder = TRUE; + } + //Determine Polymorph subradial type + if(bElder == FALSE) + { + nPoly = POLYMORPH_TYPE_HUGE_FIRE_ELEMENTAL; + } + else + { + nPoly = POLYMORPH_TYPE_ELDER_FIRE_ELEMENTAL; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + IPWildShapeCopyItemProperties(oShield,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + + +} diff --git a/_removed/druid_greend.ncs b/_removed/druid_greend.ncs new file mode 100644 index 0000000000000000000000000000000000000000..d354c736c0fb8e372ea6301172f9749d1e965b02 GIT binary patch literal 2533 zcmbVOJ!n%=6u$4i_hQqewSq3%+DAaeV*RUN1yO2@CYUC{R9jtwXw^Y&DGoX*IxFJp zDo&yuDu|PVs6#=AA}U2XC{%Hf(xF2ke)pXF(sy64R_u`Ge&;)X_x#+Hven?^uI)Py z36cD^QQ)sB5WWx#>SKrSTm{kR2>=sPwn^7ZG(guE&Y;vRU$hVP)Jo-AHQ!gsRr7@- z1GQ=;S1i`D`CRrG^yie-9+`1Fm4&CSQ?J)&h35;m*`dRt@W_~(3N|T9$v}OL_8MqH zqZtEj(rCIv**QS6ugaD9<dFAHj+z8B<koq1#TT;0-5?OwjM7Wor|*mQjMugVWNAHF zavYV-g78?y2u7rs84$BT%wHjs0&MT*TaL*%M)m0&<RFm1yc@~pwxq*6GVn#Be|YS| z@F2b=M@KGQzdSNFdJ!qTMw!H{!(pZZQh@u0Lf^kA{ER3RR#1rC7ntIKi~vp?SQQ7F z;y^MEB;tUK1I=+jb)FH2Pe52E9J;tKZY)909lo>PG~XGzlM3EJ6qFj>uPLqRAh9B8 zpCaj&Q8N^48Oe2htG#T~=lAFg)mkXA8c+{v%NlJ`>s-@1Q>KnPY3gVedLU}qePm_9 zufe)$vPgy)DX$;e^2eA?(bUnb=@@IXm4)Fn{KxXwwlLdKmi%nBg(fyw6IK>hlEJ!b zvUn(o@tk_#og~6UIME~uSD9$#lJ7B4)vy&FU8v#k#%6=ei!tt#hI#f6ouuP==m^2n zMfM-lCIbfXw6{z=uEokd#A>@Y!+YD%?pm={9Vl0_ebs?N>1bou>~(o-fRw6~i>La_ z$1C~V;i!D+HBfmNGq#2R3hbrskPO=+EbOdT+}X07P@JfjPII1wVb<tBs;p+fnX||+ zHzfODk)fg_dqGyh343B;Vv>k?&mu#YlkBQRHl<}l78$02^!8h1m;sUn78yF9Wc;K& z4214=+#9y~xyF-;!&zQl<CGs-572pDUU+*#FuuIx7pBNmxR=Ty6;Co6Qm>uJixw6F zt3&rS7Y#VEfk)UlA&}wNp6gKWYk@o=6H-HcNNt`T!!&(g;LkuT#e^Ll9w?V}p%L_1 zm&3c&SshaTa7W)G^8dLb{zY-Co8v-?6bj!Qt^sdCouj1eanO(d7M@1(4pA67)gALF c&v=ylR{Rp6ss0O*MC8kUxounnzS2Pa24g_OR{#J2 literal 0 HcmV?d00001 diff --git a/_removed/druid_greend.nss b/_removed/druid_greend.nss new file mode 100644 index 0000000..8871743 --- /dev/null +++ b/_removed/druid_greend.nss @@ -0,0 +1,161 @@ +//:://///////////////////////////////////////////// +//:: Elemental Shape +//:: NW_S2_ElemShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into elemental forms. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); //GetCasterLevel(OBJECT_SELF); + int bElder = FALSE; + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) + { + bElder = TRUE; + } + //Determine Polymorph subradial type + if(bElder == FALSE) + { + nPoly = POLYMORPH_TYPE_ANCIENT_GREEN_DRAGON; + } + else + { + nPoly = POLYMORPH_TYPE_ANCIENT_GREEN_DRAGON; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + IPWildShapeCopyItemProperties(oShield,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + + +} diff --git a/_removed/druid_panther.ncs b/_removed/druid_panther.ncs new file mode 100644 index 0000000000000000000000000000000000000000..9b3fb4f301f6986c2792eb309a56b3f8450386a5 GIT binary patch literal 2525 zcmbVOJ7`l;7(VCRo7gmIt%DtEYcIhE7VE2m6-2BtnqZm)Q*Ct#qV)l4OL5Ri(NPq4 zS8)>UP(hp=L>&q`6j7<t!J&$SlnxyV@jL&2ZgS7{`oIpi_k92Nzs~=-DP}6(vF%&7 z?H3~PX|2FtlP6+AEa}Hq;W`?k=TQJtO0_8mFXx3DuS)>PVdcg|=SW|*SgKZX1LbTb zmp?dEt(3EcLN$}iW)4GZK^yH;X{TH3K6YfSR+|@4bebg{mW4~coTRs2Q;HTEGibks z#toXb&?bYXy0o3WB>SRWi4T&zcXMham?O9H$)%W3EzTN&u;#R0{1&}06KToBrji~R zSZDcD?Vi->fW<mwzMZfiK4xj8TG&npG1E4agVRsBk8c{0FFIs^)3~YVu!yK)B0e}e zadvbVZ;A1-3s*0WO^lyIE-!Vd<|P@ENskl|OkH8%UlhIv6!L#j2s8zl;+_fsG7PK; z15IHd5eDL6K!t(kFrZt`iX%pVUkV(0xFN1JAbFebtUtwfhPI@VcM%08M#CFQYs!oN zm9$%v$U+BQh_qWpaa~^<FPqKzE#^+Q6iTcI(-pQB$)=6Y6{9m_>p0W4j$xq(f|i{J zku3PNSl4Y9$q*yu_03p*AJQq<I)*hHVr__IVJa>Eq5O?4Ohb^RK1SL?6I-mQNEUXH z#kym&cqobSlzQNeBEnSUe2Z2t`A$;sH=AzQGLJ6QaCjAEgUpKw?vuKC_79zebX~pH zc)G~`L$jT9yU)76h$oF$yN6hB^=5c)8`)7UR4YTJa%P}1lrJ7)iy-ZCcx!-^ESCz$ z2TMoFx$J?Uyzv3hc~~>HiU11ix#^HJ+at{HtQXwbs*_NhsFzM~o`hl6=szl>XFx7Q z$j|{Kdlw<YOp)vvS@9?AQ3Ml{M9jMpGITk~E=R~_jBF%AhG`(ZJrOd@0Li=v89JY2 z{3*Hb3DfJiH*EFO^=~B(r+9fyQhsPMKxcS)3A6A4hL@N6%oKde%w8%r^c^&$Sv&UE zk0@9jrmwkZC=juM2iQ0vkkQbd>(U?AJeffzq=veZ+9G|XQ}n*XPfs*r!jAS2l*?-0 z2>Pr?at?B(Px;LqeGSO}=Z^TN#Eo8#3n@}4d~>)4d=qLMC1sC;`Ju3pr;)rv<cCgm f$2_W&E+xOI7c;7-`VT}Bk+0~>ZQ~m7m3rbQt6<8o literal 0 HcmV?d00001 diff --git a/_removed/druid_panther.nss b/_removed/druid_panther.nss new file mode 100644 index 0000000..2d7290d --- /dev/null +++ b/_removed/druid_panther.nss @@ -0,0 +1,164 @@ +//:://///////////////////////////////////////////// +//:: Wild Shape +//:: NW_S2_WildShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into animal forms. + + Updated: Sept 30 2003, Georg Z. + * Made Armor merge with druid to make forms + more useful. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nMetaMagic = GetMetaMagicFeat(); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + //Enter Metamagic conditions + if (nMetaMagic == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + nPoly = POLYMORPH_TYPE_PANTHER; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_PANTHER; + } + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oShield,oArmorNew); + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + +} diff --git a/_removed/druid_redd.ncs b/_removed/druid_redd.ncs new file mode 100644 index 0000000000000000000000000000000000000000..36eb0065bb6a2f8a1aeabb95a7890fd9e39bb0d9 GIT binary patch literal 2533 zcmbVOJ!n%=6u$4i_hQqewSq3%+DAaeV*RUN1yO2@CYUC{R9jtwXw^Y&DGoX*IxFJp zDo&yuDu|PVs6#=AA}U2XC{%Hf(xF2ke)pXF(sy64R_u`Ge&;)X_x#+Hven?^uI)Py z36cD^QQ)sB5WWx#>SKrSTm{kR2>=sPwn^7ZG(guE&Y;vRU$hVP)Jo-AHQ!gsRr7@- z1GQ=;S1i`D`CRrG^yie-9+`1Fm4&CSQ?J)&h35;m*`dRt@W_~(3N|T9$v}OL_8MqH zqZtEj(rCIv**QS6ugaD9<dFAHj+z8B<koq1#TT;0-5?OwjM7Wor|*mQjMugVWNAHF zavYV-g78?y2u7rs84xp1%wHjs0&MT*TaL*%M)m0&<RFm1yc@~pwxq*6GVn#Be|YS| z@F2b=M@KGQzdSNFdJ!qTMw!H{!(pZZQh@u0Lf^kA{ER3RR#1rC7ntIKi~vp?SQQ7F z;y^MEB;tUK1I=+jb)FH2Pe52E9J;tKZY)909lo>PG~XGzlM3EJ6qFj>uPLqRAh9B8 zpCaj&Q8N^48Oe2htG#T~=lAFg)mkXA8c+{v%NlJ`>s-@1Q>KnPY3gVedLU}qePm_9 zufe)$vPgy)DX$;e^2eA?(bUnb=@@IXm4)Fn{KxXwwlLdKmi%nBg(fyw6IK>hlEJ!b zvUn(o@tk_#og~6UIME~uSD9$#lJ7B4)vy&FU8v#k#%6=ei!tt#hI#f6ouuP==m^2n zMfM-lCIbfXw6{z=uEokd#A>@Y!+YD%?pm={9Vl0_ebs?N>1bou>~(o-fRw6~i>La_ z$1C~V;i!D+HBfmNGq#2R3hbrskPO=+EbOdT+}X07P@JfjPII1wVb<tBs;p+fnX||+ zHzfODk)fg_dqGyh343B;Vv>k?&mu#YlkBQRHl<}l78$02^!8h1m;sUn78yF9Wc;K& z4214=+#9y~xyF-;!&zQl<CGs-572pDUU+*#FuuIx7pBNmxR=Ty6;Co6Qm>uJixw6F zt3&rS7Y#VEfk)UlA&}wNp6gKWYk@o=6H-HcNNt`T!!&(g;LkuT#e^Ll9w?V}p%L_1 zm&3c&SshaTa7W)G^8dLb{zY-Co8v-?6bj!Qt^sdCouj1eanO(d7M@1(4pA67)gALF c&v=ylR{Rp6ss0O*MC8kUxounnzS2Pa22y&%RR910 literal 0 HcmV?d00001 diff --git a/_removed/druid_redd.nss b/_removed/druid_redd.nss new file mode 100644 index 0000000..48cd844 --- /dev/null +++ b/_removed/druid_redd.nss @@ -0,0 +1,161 @@ +//:://///////////////////////////////////////////// +//:: Elemental Shape +//:: NW_S2_ElemShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into elemental forms. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); //GetCasterLevel(OBJECT_SELF); + int bElder = FALSE; + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) + { + bElder = TRUE; + } + //Determine Polymorph subradial type + if(bElder == FALSE) + { + nPoly = POLYMORPH_TYPE_ANCIENT_RED_DRAGON; + } + else + { + nPoly = POLYMORPH_TYPE_ANCIENT_RED_DRAGON; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + IPWildShapeCopyItemProperties(oShield,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + + +} diff --git a/_removed/druid_water.ncs b/_removed/druid_water.ncs new file mode 100644 index 0000000000000000000000000000000000000000..9be42e7a2bf998ed09d890238032ce82163d3979 GIT binary patch literal 2533 zcmbVOO>9h26u$Sq_eQ5Ptr9l0`qBi^sJ}{7BBaJJ6VsWADJ`3cP%O}<v0z156S1`w zE1`=@#L7ajXu_fqq>(O2TCtF(i!Pds@1Aqt^xfA-MHkb#-}%npJwJDfnTmgE_l{kM zg-CwiB=FbZ3r~mz{jpQHj)v&-B!F?HT9o4^>Y(EZIiL*76Rm^Y)nchy$@P}Am0bR4 zf3;H177Eo&E}J<H{W)#5TXi_?+QKtO)@rpG;d;Vplyq1WE*W!D{$@=nTBv8x9t%wv zw8KIh44Q7!b`Fy4n|38WOY+{%QIlYr+{))yJ)xSMjRIj!YrVt+`o0*S@wz6TENvi5 zQtE6Lgv%;cFe1fFpP0?W{1q@Mz}7Cl<+ZkqW7MDW5C?$-=ABSBcN87wk%1=?eM6%c zhX(L1IWm0t#+BjGkxNMF4ay{DB!`*uNdfNb3cdfL@H3>4UqK;sUto%dDg?+Vuqp~P zM1f=!NJIe@1sbD(?mR0FkAR>|ICOGf++2d>UB0uPG~XGzlM3EO6qFj>Zz#=aKd~Zd zzb2WM(K8fj8O3#dXS{4T=MU%%-C8KI9#9u*%NlLM=v+5CleUgCVe1$cdLV4sc^u1v zUyF6iW|0grQeHod<xdfvf~{j%QxVpdSQduU@*m0H*urdwS?WuyEi|#k8jodRC0VR{ zHj9Un7%!*?-YX)E2NO-AV3mnxF8N*y)eT$b(S;fgZ{uu`c`?d;Qa8{3p_7!Zi;fUH zU1a|WZ8BgGPr1v)V@9mqL#(%ZBfPf^?x_~4mHtvW(_87!7mw9<%|3^>21u!Lsc^cl zbfTQg9tq2rUIU$nHDhZCpuk?44(VWfgaw`Tnmb#y5{eV`(izT^Fw7eLN0s#q$hjC9 z=7wY+V`Qi($zGC`V8WipFfmEQydNV&my_&TjBL`#24iHH2GTnaBf|`k%#V?w^GU`} z$|GNxUdO#*tDmnwnK+!|<uyk6q4fY=;N^w4Cjg_%OMPXEN(FnV6j1Rbqan@O3B71R zA+S13Uvtrb6B~GljS~VHitM>I{l4bO6EYz+)Q8mO=`l>x_XYm+#ZpYz(ZPXoSsxfd zpLI&!t#Wlh`NJK}hUEWqNBoQ8b{EHm6e$$GIa~wYgc?Ul+2ddy|E)ZY<Q<|QbgDb% dQJr-u`EB?mKvVq}B8kXX{N=WA4fslZ@f)VL!sP$} literal 0 HcmV?d00001 diff --git a/_removed/druid_water.nss b/_removed/druid_water.nss new file mode 100644 index 0000000..9b77500 --- /dev/null +++ b/_removed/druid_water.nss @@ -0,0 +1,161 @@ +//:://///////////////////////////////////////////// +//:: Elemental Shape +//:: NW_S2_ElemShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into elemental forms. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); //GetCasterLevel(OBJECT_SELF); + int bElder = FALSE; + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) + { + bElder = TRUE; + } + //Determine Polymorph subradial type + if(bElder == FALSE) + { + nPoly = POLYMORPH_TYPE_HUGE_WATER_ELEMENTAL; + } + else + { + nPoly = POLYMORPH_TYPE_ELDER_WATER_ELEMENTAL; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + IPWildShapeCopyItemProperties(oShield,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + + +} diff --git a/_removed/druid_wolf.ncs b/_removed/druid_wolf.ncs new file mode 100644 index 0000000000000000000000000000000000000000..21754d37a9c9b8161c5939204da573d9e2b5c053 GIT binary patch literal 2525 zcmbVOOKeP07(VCRJEPN?RxOZJt2gzEM!hOgiHI7*OiX7crnGD(LOl|+X)IU~mO|`p z#Y*U+60x!nESj)r1S#plqQpX)F1lzkzVrX*&fIfdD!RD6=lj3^b^gblLb~i7-?4T3 z0U;8f*9!bKcp@gmf_`ihuA?D(9s@9;REu)(azVK9ngoCxRBlYP4fRwC#Y#EbSIU&L zxkCe$aw(I~SJK%``Ute<w9y{b>2zq_CyuOEtFr=%PNSs5qHxKVlk_%dO2I;72JN-b zxIsHDw85aMc5P=L$-Zh=;-e(*9h@2oX2`94dO0Rkle0!3tQoBrzfJFpL|QPhsia2+ z)?5D6Do^Tkz+xRTznZY0K4xj8n%GV&G1u8l4o*Mie!gi$KJSnLPUDuM!#tvjiFp6; z*ty|Byd_3QE?&DdGB$c1xxCV)nw4ZsCOuL>Fg1m~e^K}mP{=Kz5NHZ8#eEe3WEfZ$ z1{%UZA`HaCfC>YRVL-Q>6-SH!zZ5uhaYJ0ML-G#aS#OH(3~fmzZzl>$jD|Oq=9Cv- zlC(#Y$U-Y!h_qWpab4dSFI&v{9p+BA6iTcI(-pQB$tI1?RiiUy>o}9Pj$xq(f|i|! zku3PNST}4I$q*yu_1#$h5YoxpI)*hJVr`6MVJa>Eq5O?4Ohb^RK1JF>6I-l_NEUXH z#ky;=cqobSjC$a$BEm%Ee2Zo-`7ToMH=AzQ5|1v_aCjYMgUpLD?vt8%_79zebX~pH zc)G~`BeR`!yHC5niN}ptyN6hB^+tGa8QNLNSIPs$Qo64^kSiQ!iy-ZGcx!-^EEV%7 z`in<P+04P9y#4{uc~~>Hf&dEah3Sw^wnv!XSueS>RU4r=Q7@h3JPE_B(SKA%&w!kZ zkf8%e_C7*}nIhS9vf@wJ;|L}uiJ12yWax5|U5SuQ8QD;T4AVe*dn06+0g`zUGIT!4 z_*3%06Q<X3Z`kT*YTrs6PV@2_r~J@lfX?#r5@z883@<PBg(>)ynY~o3>pN&jvv%yS zA5pM6OkZ=+P#|Ih53q4UAj6?O*RDUTIWmJxNDXx*wR!qXr|5lwpPs14gdOc4D3_JK z5%gJ?<Q(L3pYn%0`WBG?&mHkkiJRRV7gD59_~vj8_$E|2O3EGw^Fv`1Pa}DU$Pb<B fj(Jq4TuOd(H)d2%^<Ri2B45#$+rl;AEA_-Lyfn(P literal 0 HcmV?d00001 diff --git a/_removed/druid_wolf.nss b/_removed/druid_wolf.nss new file mode 100644 index 0000000..bddd70e --- /dev/null +++ b/_removed/druid_wolf.nss @@ -0,0 +1,164 @@ +//:://///////////////////////////////////////////// +//:: Wild Shape +//:: NW_S2_WildShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into animal forms. + + Updated: Sept 30 2003, Georg Z. + * Made Armor merge with druid to make forms + more useful. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70, fix by Shadooow + +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "x2_inc_itemprop" +#include "70_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nMetaMagic = GetMetaMagicFeat(); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + //Enter Metamagic conditions + if (nMetaMagic == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + nPoly = POLYMORPH_TYPE_WOLF; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_WOLF; + } + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + if (GetIsObjectValid(oShield)) + { + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + { + oShield = OBJECT_INVALID; + } + } + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70 patch fix by Shadooow: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SetLocalInt(OBJECT_SELF, "X2_L_STOPCASTING", 10); + SetLocalInt(OBJECT_SELF, "POLYMORPHED", 1); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oShield,oArmorNew); + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + +} diff --git a/_removed/nw_s0_animdead.ncs b/_removed/nw_s0_animdead.ncs new file mode 100644 index 0000000000000000000000000000000000000000..ea216eaa37439991339434892bcd80a6cbdf81a8 GIT binary patch literal 3526 zcmc&%-D?zA6u<Men#?BIs%UDOI&6)C62C&x7m>;CwGPhihM6Hz+cJJd46dx~f>0mq zKhS4E=zn49pWuV|;G>jMO6h|SeJJ9?J_zZ#=ghskcexn|eJ~5j&bjw@&hPxrx#v#W zjWk$4d+N+8V>2(mWbm^$V0HyRjx9g*yzd0V9kr8efo*SZzk!{OusFZfog)HUT@+8R zgw4I{I`C)St{t~v??24NXWI{O=TS#khthg5u*CBR=A!41i21u%^=gD^q6aX7Uxwe0 zx*nTrZ{%ryqtjZ=t|wtT^B7BA^akF^n_$IWEHlk(WhOulADN4c=C#$ST2P^=tH!7^ z7&X1h<Bc#$c8YmvnRrfeo>l0^m55(9z}<>UvhFc!!$ua1v&hNXk53lhZdx)4GWo%h z0AA3nAUayV)2vQm{SoE)#h9i)$OjKLyZ1Nyy>la$s!WJ{Vnj}-xlpGSe#3VHhDKnO zfNM#_)3IXeF)O3OTFW4^QLX7httv?aG<K!dw??&|QZpH;7dc<yNoS{=KcQHd4x9;~ z_Qb+wht@|UXsaZ8OJ`;nh>f*t=khp@!!*kio~?%o2@MT7Wfz)zta|=TK6td*?cVS8 z9)R<`b{UeblrDo~DSO?~X2KAKuTtTG9hUr<m>U1ea}L2zGc>7g0jj@}NlgPx9Wbyv zvv4;I8gdJ!KWH~dqfA3G{XS;uk?GHo$$n3!chZDm#DEh-Eg!N0s&d#YND`<!o$!i2 zkG=+iN6w$k*TR^$paML}!)7zh8}vQq>pTX&?-~4Bv5R5#7y1PbG8)y@I2EP}t73+G zrwc2Na`qGP11hs&|4u5Z96#>1dUwIH=T7(5V6ZvxnElcL67Q&~Kukk&dY@H;1C%V( z=@5L^t1vp-tSC2G&@D)goSqhkyDu{aM*doV>*1~b58>^t?j%73c}PPP#bZvICH_}9 z`U6~KhD+o1G8>09`85q<86eMfNTbu%AhrQ=Pls$osRl9KW-B@*YG(!HFy=x>N3}fK zre#^AVtB6{2&7q-2+UXQq9&@ru>wP=@)or@+~;FOfk3cyLfu76;trw<RbKqtey~S1 zxM7{m!TNYLuqRX)Jp4ZwSGe?P`N|_A7iB7#uMdeV+I44it}yIH+$3GNr7k{KE(&g> z?t}#NnuKoEd9T(5BkLIGayZI(OFOoCXPqZW)Z`Ka;;m3)s9A<f;tj~?pw($cmm{8N z4kphLKx-Jg*(iyqMkV?Z$7>8$7Dx3401jcC7SBSs@T0PDswYK7?Po<rVPav;pi5A< z@4@F%y2cw(80X<?6i3<h5(#OVmq=LdOUqLFGN`#Q$!JnoiPbJHdYL6*O&-dkk850? zjJ|{18VOBq>o~kBc}$Rq<NqV4$wOHh>Vk#npHcK(OE<!mMH&}uo+9l^COHJL8yVd( y><ekt?<sXNh<|kSy&ya8RdjGK-2Mi?VAW@xI{Lz|HAhpCCeOtC3Xb3p0s9a0cnB2$ literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_animdead.nss b/_removed/nw_s0_animdead.nss new file mode 100644 index 0000000..ac7d807 --- /dev/null +++ b/_removed/nw_s0_animdead.nss @@ -0,0 +1,89 @@ +//:://///////////////////////////////////////////// +//:: Animate Dead +//:: NW_S0_AnimDead.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Summons a powerful skeleton or zombie depending + on caster level. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: April 11, 2001 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = 24; + //effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD); + effect eSummon; + //Metamagic extension if needed + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration * 2; //Duration is +100% + } + //Summon the appropriate creature based on the summoner level + if (spell.Level <= 5) + { + //Tyrant Fog Zombie + eSummon = EffectSummonCreature("NW_S_ZOMBTYRANT",VFX_FNF_SUMMON_UNDEAD); + } + else if ((spell.Level >= 6) && (spell.Level <= 9)) + { + //Skeleton Warrior + eSummon = EffectSummonCreature("NW_S_SKELWARR",VFX_FNF_SUMMON_UNDEAD); + } + else + { + //Skeleton Chieftain + eSummon = EffectSummonCreature("NW_S_SKELCHIEF",VFX_FNF_SUMMON_UNDEAD); + } + //Apply the summon visual and summon the two undead. + //ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetSpellTargetLocation()); + + //Apply better summons instead if a caster is a level 11 or better Pale Master and the spell is not cast from an item. + if ( GetLevelByClass(CLASS_TYPE_PALE_MASTER, OBJECT_SELF) > 29 ) + { + switch(d3()) + { + case 1: eSummon = EffectSummonCreature("s_skelhero2",VFX_FNF_SUMMON_UNDEAD);break; + case 2: eSummon = EffectSummonCreature("S_SKELMAGE",VFX_FNF_SUMMON_UNDEAD);break; + case 3: eSummon = EffectSummonCreature("S_SKELPRIEST",VFX_FNF_SUMMON_UNDEAD);break; + } + } + else if ( GetLevelByClass(CLASS_TYPE_PALE_MASTER, OBJECT_SELF) > 10 ) + { + switch(d3()) + { + case 1: eSummon = EffectSummonCreature("S_SKELHERO",VFX_FNF_SUMMON_UNDEAD);break; + case 2: eSummon = EffectSummonCreature("S_SKELMAGE",VFX_FNF_SUMMON_UNDEAD);break; + case 3: eSummon = EffectSummonCreature("S_SKELPRIEST",VFX_FNF_SUMMON_UNDEAD);break; + } + } + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, HoursToSeconds(nDuration)); +} + + diff --git a/_removed/nw_s0_circdeath.ncs b/_removed/nw_s0_circdeath.ncs new file mode 100644 index 0000000000000000000000000000000000000000..48cef3c64bcd52a05cd13b1167853f3ce20de0da GIT binary patch literal 13719 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_circdeath.nss b/_removed/nw_s0_circdeath.nss new file mode 100644 index 0000000..778dd4f --- /dev/null +++ b/_removed/nw_s0_circdeath.nss @@ -0,0 +1,128 @@ +//:://///////////////////////////////////////////// +//:: Circle of Death +//:: NW_S0_CircDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + The caster slays a number of HD worth of creatures + equal to 1d4 times level. The creature gets a + Fort Save or dies. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: June 1, 2001 +//::////////////////////////////////////////////// +//:: Last Updated By: Aidan Scanlan +//:: VFX Pass By: Preston W, On: June 20, 2001 +//:: Update Pass By: Preston W, On: July 25, 2001 + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + spellsDeclareMajorVariables(); + object oTarget; + object oLowest; + effect eDeath = EffectDeath(); + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + effect eFNF = EffectVisualEffect(VFX_FNF_LOS_EVIL_20); + int bContinueLoop = FALSE; //Used to determine if we have a next valid target + int nHD = MaximizeOrEmpower(4,spell.Level,spell.Meta); + int nDC; + + int nCurrentHD; + int bAlreadyAffected; + int nMax = 40;// maximun hd creature affected, set this to 9 so that a lower HD creature is chosen automatically + //Also 9 is the maximum HD a creature can have and still be affected by the spell + float fDelay; + string sIdentifier = GetTag(spell.Caster); + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, spell.Loc); + //Check for at least one valid object to start the main loop + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, spell.Loc); + if (GetIsObjectValid(oTarget)) + { + bContinueLoop = TRUE; + } + // The above checks to see if there is at least one valid target. If no value target exists we do not enter + // the loop. + + while ((nHD > 0) && (bContinueLoop)) + { + int nLow = nMax; //Set nLow to the lowest HD creature in the last pass through the loop + bContinueLoop = FALSE; //Set this to false so that the loop only continues in the case of new low HD creature + //Get first target creature in loop + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, spell.Loc); + while (GetIsObjectValid(oTarget)) + { + //Make sure the currect target is not an enemy + if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, spell.Caster) && oTarget != spell.Caster) + { + //Get a local set on the creature that checks if the spell has already allowed them to save + bAlreadyAffected = GetLocalInt(oTarget, "bDEATH" + sIdentifier); + if (!bAlreadyAffected) + { + nCurrentHD = GetHitDice(oTarget); + //If the selected creature is of lower HD then the current nLow value and + //the HD of the creature is of less HD than the number of HD available for + //the spell to affect then set the creature as the currect primary target + if(nCurrentHD < nLow && nCurrentHD <= nHD) + { + nLow = nCurrentHD; + oLowest = oTarget; + bContinueLoop = TRUE; + } + } + } + //Get next target in shape to test for a new + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, spell.Loc); + } + //Check to make sure that oLowest has changed + if(bContinueLoop == TRUE) + { + //Fire cast spell at event for the specified target + SignalEvent(oLowest, EventSpellCastAt(spell.Caster, spell.Id)); + fDelay = GetRandomDelay(); + if(!MyResistSpell(spell.Caster, oLowest, fDelay)) + { + if (GetHitDice(oLowest) > 10) nDC = spell.DC - 5; + else nDC = spell.DC; + //Make a Fort Save versus death effects + if(!MySavingThrow(SAVING_THROW_FORT, oLowest, nDC, SAVING_THROW_TYPE_DEATH, spell.Caster, fDelay)) + { + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oLowest)); + //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oLowest)); + } + } + //Even if the target made their save mark them as having been affected by the spell + SetLocalInt(oLowest, "bDEATH" + sIdentifier, TRUE); + //Destroy the local after 1/4 of a second in case other Circles of Death are cast on + //the creature laster + DelayCommand(fDelay + 0.25, DeleteLocalInt(oLowest, "bDEATH" + sIdentifier)); + //Adjust the number of HD that have been affected by the spell + nHD = nHD - GetHitDice(oLowest); + oLowest = OBJECT_INVALID; + } + } +} diff --git a/_removed/nw_s0_circevil.ncs b/_removed/nw_s0_circevil.ncs new file mode 100644 index 0000000000000000000000000000000000000000..30c71aa25b7c9b5448fd2c4e49acdd08338df009 GIT binary patch literal 4447 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 A0RR91 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_circevil.nss b/_removed/nw_s0_circevil.nss new file mode 100644 index 0000000..fddb800 --- /dev/null +++ b/_removed/nw_s0_circevil.nss @@ -0,0 +1,72 @@ +//:://///////////////////////////////////////////// +//:: Magic Circle Against Evil +//:: NW_S0_CircEvil.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +//:: [Description of File] +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: March 18, 2001 +//::////////////////////////////////////////////// +//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001 +/* +Patch 1.71, fix by Shadoow + +- disabled aura stacking +- moving bug fixed, now caster gains benefit of aura all the time, (cannot guarantee the others, +thats module-related) +*/ + +#include "70_inc_spells" +#include "x2_inc_spellhook" +#include "nw_i0_spells" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables including Area of Effect Object + spellsDeclareMajorVariables(); + + effect eAOE = EffectAreaOfEffect(AOE_MOB_CIRCGOOD); + effect eVis = EffectVisualEffect(VFX_IMP_AURA_HOLY); + effect eLink = CreateProtectionFromAlignmentLink(ALIGNMENT_EVIL); + + eLink = EffectLinkEffects(eLink, eVis); + eLink = EffectLinkEffects(eLink, eAOE); + + + int nDuration = spell.Level; + //Check Extend metamagic feat. + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + //prevent stacking + RemoveEffectsFromSpell(spell.Target, spell.Id); + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + eVis = EffectVisualEffect(VFX_IMP_GOOD_HELP); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + + //Create an instance of the AOE Object using the Apply Effect function + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, HoursToSeconds(nDuration)); + spellsSetupNewAOE("VFX_MOB_CIRCGOOD"); +} diff --git a/_removed/nw_s0_circgood.ncs b/_removed/nw_s0_circgood.ncs new file mode 100644 index 0000000000000000000000000000000000000000..36e5b524ee34d70f890cad3eaadeef5a2481a2c7 GIT binary patch literal 4447 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_circgood.nss b/_removed/nw_s0_circgood.nss new file mode 100644 index 0000000..54a30ed --- /dev/null +++ b/_removed/nw_s0_circgood.nss @@ -0,0 +1,70 @@ +//:://///////////////////////////////////////////// +//:: Magic Circle Against Good +//:: NW_S0_CircGood.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: April 18, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.71, fix by Shadoow + +- disabled aura stacking +- moving bug fixed, now caster gains benefit of aura all the time, (cannot guarantee the others, +thats module-related) +*/ + +#include "70_inc_spells" +#include "x2_inc_spellhook" +#include "nw_i0_spells" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables including Area of Effect Object + spellsDeclareMajorVariables(); + + effect eAOE = EffectAreaOfEffect(AOE_MOB_CIRCEVIL); + effect eVis = EffectVisualEffect(VFX_DUR_AURA_ODD); + effect eLink = CreateProtectionFromAlignmentLink(ALIGNMENT_GOOD); + + eLink = EffectLinkEffects(eLink, eVis); + eLink = EffectLinkEffects(eLink, eAOE); + + int nDuration = spell.Level; + + //Check Extend metamagic feat. + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + //prevent stacking + RemoveEffectsFromSpell(spell.Target, spell.Id); + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + eVis = EffectVisualEffect(VFX_IMP_EVIL_HELP); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + + //Create an instance of the AOE Object using the Apply Effect function + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, HoursToSeconds(nDuration)); + spellsSetupNewAOE("VFX_MOB_CIRCEVIL"); +} diff --git a/_removed/nw_s0_contagion.ncs b/_removed/nw_s0_contagion.ncs new file mode 100644 index 0000000000000000000000000000000000000000..6678b7f3a36645350afdee19cf8f019c9e977b5a GIT binary patch literal 10924 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 VjnovvOSuPWo*bH9BIQ`#`yWyvw-x{Z literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_contagion.nss b/_removed/nw_s0_contagion.nss new file mode 100644 index 0000000..1092862 --- /dev/null +++ b/_removed/nw_s0_contagion.nss @@ -0,0 +1,92 @@ +//:://///////////////////////////////////////////// +//:: Contagion +//:: NW_S0_Contagion.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + The target must save or be struck down with + Blidning Sickness, Cackle Fever, Filth Fever + Mind Fire, Red Ache, the Shakes or Slimy Doom. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: June 6, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.71 + +- disease made extraordinary +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + spellsDeclareMajorVariables(); + int nRand = Random(7)+1; + int nDisease; + //Use a random seed to determine the disease that will be delivered. + switch (nRand) + { + case 1: + nDisease = DISEASE_BLINDING_SICKNESS; + break; + case 2: + nDisease = DISEASE_CACKLE_FEVER; + break; + case 3: + nDisease = DISEASE_FILTH_FEVER; + break; + case 4: + nDisease = DISEASE_MINDFIRE; + break; + case 5: + nDisease = DISEASE_RED_ACHE; + break; + case 6: + nDisease = DISEASE_SHAKES; + break; + case 7: + nDisease = DISEASE_SLIMY_DOOM; + break; + } + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + effect eDisease = EffectDisease(nDisease); + effect ePenalty = EffectAbilityDecrease(ABILITY_STRENGTH, 4); + ePenalty = EffectLinkEffects(EffectAbilityDecrease(ABILITY_CONSTITUTION, 2), ePenalty); + eDisease = ExtraordinaryEffect(eDisease); + //Make SR check + if (!MyResistSpell(spell.Caster, spell.Target)) + { + //The effect is permament because the disease subsystem has its own internal resolution + //system in place. + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDisease, spell.Target); + if ( !FortitudeSave(spell.Target, GetCasterLevel(OBJECT_SELF), SAVING_THROW_TYPE_DISEASE) ) ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePenalty, spell.Target, 60.0); + } + } +} + diff --git a/_removed/nw_s0_daze.ncs b/_removed/nw_s0_daze.ncs new file mode 100644 index 0000000000000000000000000000000000000000..993f77af451885836e39e32dd8e0ff21baa94a1d GIT binary patch literal 12558 zcmc&)3y56R8NT<<>~6BV*=*BIjK(D6#*H>L%}b5g7@6#j$<*1|urqnIXvcMTV^`PR zu!-@}7t$&ggjxk#YYQqx5lT@^ODRHIYE??4Qc@D>B2p}*Xfa3%sm5%-^Zn<)bI#qH zNrOra?#%tq|9+kSoIB;-N^a-6FRa}X1nWAM1^91HE{K}>FB9oMd0voh3KmV=SsNa@ zeeclNEfckon`<MZdxq{9-;b3AiIuzdu3Ht5W9R3CCBe+h%&Xv>F_7?hcV@Yf)xOj` zy=7q0J=u%_@o!605FCu~=Lvb1zken)6N1%AK+Nay0Fr}OA`gf~0z->Q;inw->&S?J z=n{kUc94~)wjA}kfKOSUL6jlxyFu3I+j@jJp-_a2bPcSZ4!Lw`r!f1_5*||_ifY)j z9ic$Wj4OwOEI)w{W+!5)c=%2fWwKf0Cgq`+hS!2E)~(<3uvBhH+@qE|%%GMG$fX}z z$^km^6eZs+1VAKE2}0;Go%OZQSde2t1Umg#&T#77y}nkemGYHpZLm<?nIFtH8xxv> zaBd`Dfz-ZnZEfG)(ed%GO-|kh4s)VLl);9E%V4aAbY~dF6G4_5oirI2v`b1rJ8H7h z<N(|xPzYZW5CoGI6#hy;NH_th<AGfbi9M}L0KF;LD)kgVCk2G)D$ih2KnRI~qW1;# zmVzh-LaAuj25X=y;=`<2qDs*3-Eioxs5$4MTmdgG-?*-}JzpyHBLaoNTE4HZQtOrP zrNYia3Cg{1g0=y~<okE>g$~M!{E_NC#(7tH(76^GYew8w3uS=^4~l+Jr6WHzTrp8D z9T@MQ908<dczkHzzR`V6LG*G4N*t4{gELc%qhvT$^l8s^iLrp3hwpwA#HDVyoxs86 z<ngTzS{zQP#n7m2`_$O&LsNI>Zyp;@DoCOxs(~(p)l8*2*tUXR%W*OAn+D|{S{=9~ zeTCf~Nti<Nm`~C>Q1(co6p}qY$*y9>BS~~KDz?EVDVD32L>i!!4h$8~(Y{s<i+YS% z*OgPSh6v#6BO8-A!O7<&qC6&Pj=t*zMVk4lkSvhn%(lg3tPOgmE!Pq!c*=S(AM0*3 zm=m!W8vT>i(mj<Y@>(U5a;cg^d)r{h(x^LAuPchZ##1ZXkj42i3#*%WH{k-=Y{@pR z_x5h1QMeL`c0sXP==aLDHn6iWI9Ti}C=L9&K@!97QmCbL2K@tl#p{ZNL61SQjzHQ; z*?qkYB*vYNyi9pHWR2v+xdDRnD5t+r&G+ZG78{9+bJ9dKdelY~9g8tTme6lEf@e=< zd!e_OFV*r}ilt)p%MDy88*T#^Hs<A7sk~CWxg@Dk(y>bGZCs}u$EI;;B;ECKcT)Np z-0dmhxjVdMwb|8;5~b3|ac3HbMrI(7Z6j(5J|oi4*>!cgMv`2IEfz`V<R)!`vLnbI z6I`fJf1e^04o<-Zl(?}v+NV-*(J%d8$9yrRZ^r6yzH~+DJc)UQPCb#6Jqmo#M{bLo zu!yqT`7uucbUpUMzj)9l3w_ap>hSQi2aPQ5Lmsr<LhtdQ84Dfppv@Lq_Mr1D)E`wk zEYu%W=3A(YDzb^oj;vi&X2z8^_jpS2OOxA5v#fh=d{9mT_K*;`6GA*&8sg?baWjoT zEA@;~*ZC%@>mK%SH6*WkQ0uzvq><G$k83*CbJGp~8YuxIx|C070g8&0_<7{*UgDy- z?HkV77ZjbJ%Gn+*T+e!B!4mY7Ob|wYRH>K+UlWCZh|Tk7p}VEi_qwH@ph=%4C6R+S z;?$)nn;fQpikHZ5IhVi*BCeGsnB3Ogj2Xg-2N3E!98YOwke4kiKQF*|(eAait+jlq zG_Z?(q*5K&wqvjgf7+3oTre)r;-cAS53aLy)d-?uN!&>kK<lFl;S1r;(0CX-Wk=4A z_<M+~BmQAyHj%~fl;8%J+gTCfNL!~#wVgO|TT9MIx(Yw6ifhEG_I)m*=hczmb@euZ zYO>@hq=3&G4j)Bg2K4X=>hhCG5*`tLD6K|GO#)S9nt5_0n&l=qQA*#WV(=elq-N)} zp>-YWQ@mm+8pQJ~GVik-kTPodnIpd&mjg|~#W<5!b``6=+iHb!eoLuPD{t?u<p&Bi zlb$AFi-n50R0w}d&ua^FV;!48^WUZU&&l_C%Aq4smz&i4{6w9#$8DJFE29iobSf81 z@U#q9M;|=joSR+t;e`~rG2uV<o!}h_l&dd7?*z*BYYJrsp$Et*JE55*8KT2Bp(r+4 z@AT;TpqRFzcF^A!)&1SSqf{-{wiU|oy>WPdzOP)U(Ak0A2fTKWI8jmt3V{BAA8C?z ztwD&tpW9~Rw<mfp-nQf_1ch{~6jEnf4i;a~SFA8S1`CxUE^zG7x2@27Jr!X&;n<;C zvEoX6f>RaB2wx6%%W%tMY%Xps4-6J8H({MG_ZA>MzKQV9akH(R+e+?;b~bx061C$Z zO1ZcWz2?xN*A`wxO2kA$uNvtm^?e$e^*}RGL`>x0{(QNL(%3pssMM}24pyAL-7V>= zooI**A%@j5j8s|c`(z0b5HBJ;ON7Kx)<-E?6tf$twzM#3D+R7so~BUe*xQ@%fV4{U zH}@z!`d+LE9=<5SZCxllrFCALxK2=UXTsl{z=!*qHw{02`t)WIt!jb(qo`{ImfJS1 z8Qz@RH2m7PPjBv8!F7n{QkcUBhbn6PBWlc*tRd=J!2kj~C4f?D2Vw)snDrkXh%W1d zSFXbUi<#)_<;s#M8Yg%V>mNeoLA$}=>vY!6aO57e$cmVZek9dpST;W(D(R$6)>05v z+>+uhkL+<8<%*^X_G8>8>V=-|BgX6}%$4Z6(0H>rF)_4%)O_QesB=3;meHadKf`($ zDFR+<mv*~Fm9f*896qp4Z^A{sHwlgVqq9aIME?q-c)Bn-7%ivxK!wPYy-WL>s0M@f z#6y*f5Ok3YrNFp!@CkD4Wgc|1hm~Pr<i|gb>ZP-yiXB?y@b3puAT6rE!itS5BlQ2Q zlEc*IT&jfbGF{J|E*6-l+z;uJcJsaKpD^-0DZaDU(NS)0i8`XAP)ANSAcYwXXiezb zMquV%!7$&$2kN5;6%0E3<X@aj8Oi@}yPBn+3A%2=wQjrWxiZh6XyF*;urP;mdRa!< zxP4@^n^qi=okNFTq`mkO9>a@`3@+Hy=HFk`EmH~eecMDw4NaPkw~`XdC<ki?>@wO0 zhd&8z$y*OC_ypf)r9;wEW1gKaWW!N)q%d{~Dk3dTv8YmuESEqkD=x&#n023X+AGqD zN~mYi*Xmsri+F6YX~m>jW?id7akk}7=L(f3{mBUpo=phFA(=vdK-J-ll(B+PXRLrN zlKYbD{CgVK9jtFYAIm#b1zwq5boLe2F^YF)J*r?F{J6vs!6m4PAS}$|9c!^%8!T?! zR;2)BELN|Kb0qPWX$@A}m8w*@PKdZMctp)6gY6zhzUc6306i;P2$CXkKs`^fLH|bR zUbU0#YRGRb_V@277i!gk8j-;S$Tx&`mXIvRJ3-qM?WVd?p6NY3tnir9o?+fCPNcwX z^_{v0%`A{+WnCEF;J$mHX5PRSKFNXYY@*v9V7dI%7ajhxq3H8n(J89^!(FFp{tXV@ zg^AQEmphYRTHoOc##an4bTr&XelM6HaB?q~^VLFpSWurYl=B$`NkNcUlMioY$Yese zGafM}7|%6~d+~y}lH`l+gOuj%aAquwLF5T}Dbk0fu%p%BVFxSKj-T3f^qu8H9#r3N z`j?S<`}SQASFb1^^q_iw_lO5=vDc1|c~HI1e3D7>8)!Ud*VsL^%H-6r?=`Of*jUs% zJ~}m)w)zdMHuX*2F*cGyTEk*?%g|KXTCZU{I5cs~=u`@24^~^Y4~-9vj7_90yT@wX zj7=W+qbv#iaG5Ybr&ai`T}}vqF!+n;B4HA=udqqHTOEf+a7^}1$aCU9ZOPXV5&0%r z-<5-yv{c@h5n_A1LgpKS=uMV26_L7`<15cja*Zu#OBCdjMAE`zi%B#mL3AgH)GU^{ zbQoA-R0)TO;2n$;uV|ST&n5WYom3`qd?V4<6GV5NMVaVEt4srZYp%ZTO-$?u4Glj5 zwLh708`NPN)VGY9&0iv>nX!;im0|o?#Jr<-Pf0|u9t)oEtY8pjw~=fL@m4*hVZUxg zP8*R;N9dogSpR4&?mr9XLd@AU#^?M^4x2M-JPZl*-aGrm)sImm++`K97W8@qiTRNP zD}91Kk031-{_PXM5-0o967D6RV5dirlKH_SK0(nVXqsJL!OcE_|6_>e6oPd=f&aUP z7N3CrN1E~Tl<gXlCV-;7$WTHj{DDY1T`O|hh=NuC(s)Ec<nd^>OAO$+67bSa;(W-a z-BA;^%uP(YinYU}UFz^Ae6N<<DARt@hBZaPZw#6vIeu$DTp)XMB)bz-pn=D!?c<Ui zKy}(G@(zZq;wzb`m)HbFBk|i6j1R-IE@KGX1dzQAzyllc6{+v&$`<;H27|a)3N+*} z9X?qXnu*MHNh^O+RGb(Yy$eqrV|%Ce%5TYrC-?1#Wc$M+lED>r(Elo*e`n);B?XaN zV%CID+(5p_$Bh}mXD0pHI_M?V+cON@DRMt*{RtQ1w?a{9``f1_S`Hic*8LN`DM3NP ze!5l%&(msm_ovO#=&Y7BGxO23lTSdq*wn;vfi1;#|3|~L;MIC)OwE`;Cqi@B56w$% zXr!hPUh+Le_2hSduM=|8-ts}dgwhVFZo5Vqs8%S+^|lt3V#W@qva{jRz*wOaQ75^| z6s_032m&ob4X~TYD_v8y=HMcw$FoehKnfa&Jy;1=kZf92<rB!TVJyhBpqD6DB1=(% zkJy!v*@%^U*POzttsyH>LbW;zD-6)8Gd<yJB}dUSvYH^N8rYR!B~DdeHG95NnT}IY zqT(m6fh=}v{oXyr7nt>xS&9J}Ppa_+ktDZL_T2E{L~iL7&3-b1sb~6Z3WD*(7OQ$` z_$j)FPvC=WngP+lL~m#7YENjP7cu{f7Pp_H7NNNnO4A~^KcR)*%*0`D;ERcK)FLoH z%}r_n(8+*8u(OHZZ1?=ViY7E!5B`0@WV=(CjDf#CVb%#Bbz-x=u20-c;#)7d^LDS= z^o|ABF~S7o@e2$lGp^d$`(~_H)g+DWGmdb%+4CD&(qd|S1EH?ary}P9Q2U*{Y%+nq w&wan*5#vos@RX={A%6&h1f>ROv(kJ&uK5%Pv&j`(2Du)0HiQ#|;K%C!1uO)5rvLx| literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_daze.nss b/_removed/nw_s0_daze.nss new file mode 100644 index 0000000..7ba7b64 --- /dev/null +++ b/_removed/nw_s0_daze.nss @@ -0,0 +1,77 @@ +//:://///////////////////////////////////////////// +//:: [Daze] +//:: [NW_S0_Daze.nss] +//:: Copyright (c) 2000 Bioware Corp. +//::////////////////////////////////////////////// +//:: Will save or the target is dazed for 1 round +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 15, 2001 +//::////////////////////////////////////////////// +//:: Update Pass By: Preston W, On: July 27, 2001 + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + spellsDeclareMajorVariables(); + effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); + effect eDaze = EffectDazed(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + + effect eLink = EffectLinkEffects(eMind, eDaze); + eLink = EffectLinkEffects(eLink, eDur); + + effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); + int nDuration = 2; + //check meta magic for extend + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = 4; + } + + //Make sure the target is a humaniod + if (AmIAHumanoid(spell.Target) == TRUE) + { + if(GetHitDice(spell.Target) <= 40) + { + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Make SR check + if (!MyResistSpell(spell.Caster, spell.Target)) + { + //Make Will Save to negate effect + if (!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster)) + { + //Apply VFX Impact and daze effect + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + } + } + } + } + } +} diff --git a/_removed/nw_s0_dismagic.ncs b/_removed/nw_s0_dismagic.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e2336d1f6243384612745506b18f3350c45a4ad7 GIT binary patch literal 9610 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_dismagic.nss b/_removed/nw_s0_dismagic.nss new file mode 100644 index 0000000..bc1453e --- /dev/null +++ b/_removed/nw_s0_dismagic.nss @@ -0,0 +1,88 @@ +//:://///////////////////////////////////////////// +//:: Dispel Magic +//:: NW_S0_DisMagic.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +//:: Attempts to dispel all magic on a targeted +//:: object, or simply the most powerful that it +//:: can on every object in an area if no target +//:: specified. +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//:: Updated On: Oct 20, 2003, Georg Zoeller +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + + //-------------------------------------------------------------------------- + /* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + */ + //-------------------------------------------------------------------------- + if (!X2PreSpellCastCode()) + { + return; + } + // End of Spell Cast Hook + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_IMP_BREACH); + effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL); + int nCasterLevel = spell.Level; + + //-------------------------------------------------------------------------- + // Dispel Magic is capped at caster level 10 + //-------------------------------------------------------------------------- + if(nCasterLevel > 10) + { + //High-level shifter version - caster level artificially set to shifter levels + 3 + if(GetLevelByClass(CLASS_TYPE_SHIFTER) > 10 && GetRacialType(OBJECT_SELF) == RACIAL_TYPE_OUTSIDER) + nCasterLevel = GetLevelByClass(CLASS_TYPE_SHIFTER)+3; + else nCasterLevel = 10; + } + + if (GetIsObjectValid(spell.Target)) + { + //---------------------------------------------------------------------- + // Targeted Dispel - Dispel all + //---------------------------------------------------------------------- + spellsDispelMagic(spell.Target, nCasterLevel, eVis, eImpact); + } + else + { + //---------------------------------------------------------------------- + // Area of Effect - Only dispel best effect + //---------------------------------------------------------------------- + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, spell.Loc); + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, spell.Loc, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE ); + while (GetIsObjectValid(oTarget)) + { + if(GetObjectType(oTarget) == OBJECT_TYPE_AREA_OF_EFFECT) + { + //-------------------------------------------------------------- + // Handle Area of Effects + //-------------------------------------------------------------- + spellsDispelAoE(oTarget, spell.Caster, nCasterLevel); + } + else if (GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE) + { + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id)); + } + else + { + spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact, FALSE); + } + + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE,spell.Loc, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE); + } + } +} diff --git a/_removed/nw_s0_dismissal.ncs b/_removed/nw_s0_dismissal.ncs new file mode 100644 index 0000000000000000000000000000000000000000..8a3230498d5feee7db9572663c3c2bd768006647 GIT binary patch literal 10313 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 Zeq8e@4rY@pwhVGT?rjJsIC89H{s#}lSLOf! literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_dismissal.nss b/_removed/nw_s0_dismissal.nss new file mode 100644 index 0000000..d0b57c0 --- /dev/null +++ b/_removed/nw_s0_dismissal.nss @@ -0,0 +1,81 @@ +//:://///////////////////////////////////////////// +//:: Dismissal +//:: NW_S0_Dismissal.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All summoned creatures within 30ft of caster + make a save and SR check or be banished +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 22, 2001 +//::////////////////////////////////////////////// +//:: VFX Pass By: Preston W, On: June 20, 2001 + +#include "X0_I0_SPELLS" +#include "x2_inc_spellhook" +#include "hench_i0_generic" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + object oMaster; + effect eVis = EffectVisualEffect(VFX_IMP_UNSUMMON); + effect eImpact = EffectVisualEffect(VFX_FNF_LOS_EVIL_30); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation()); + int nSpellDC; + //Get the first object in the are of effect + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + while(GetIsObjectValid(oTarget)) + { + //does the creature have a master. + oMaster = GetMaster(oTarget); + //Is that master valid and is he an enemy + if(GetIsObjectValid(oMaster) && spellsIsTarget(oMaster,SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF )) + { + //Is the creature a summoned associate + if(GetAssociate(ASSOCIATE_TYPE_SUMMONED, oMaster) == oTarget || + GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oMaster) == oTarget || + GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oMaster) == oTarget || + GetLocalInt(oTarget, sHenchPseudoSummon)) + { + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_DISMISSAL)); + //Determine correct save + nSpellDC = GetSpellSaveDC() + 6; + //Make SR and will save checks + if (!MyResistSpell(OBJECT_SELF, oTarget) && !MySavingThrow(SAVING_THROW_WILL, oTarget, nSpellDC)) + { + //OnDeath script... so lets kill it. + effect eKill = EffectDamage(GetCurrentHitPoints(oTarget)); + //just to be extra-sure... :) + effect eDeath = EffectDeath(FALSE, FALSE); + DelayCommand(0.25, ApplyEffectToObject(DURATION_TYPE_INSTANT, eKill, oTarget)); + DelayCommand(0.25, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); + + DestroyObject(oTarget, 0.3); + } + } + } + //Get next creature in the shape. + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + } +} diff --git a/_removed/nw_s0_divpower.ncs b/_removed/nw_s0_divpower.ncs new file mode 100644 index 0000000000000000000000000000000000000000..304e0b9d02fc3e591ea751d915485c214e93c54d GIT binary patch literal 3660 zcmbtWO>Z1U5bgO`JIOAN2^$<@OhyYyM35oILP1CzCc6U~F>719!`eB(5JC_Zi;Qe3 zQZ8IL!Z{KW2Yv+N!Zji}Am9f?fDlMIa6pj{K3FoZtGe3L%P=UyD|u$Bt6shO=;~hS z4x`c1^A|5GHIqH1@OLCq{uKQJUw-_3;({WL+2_=}IygA^37UbH1iy5GGupPbpuc|9 zvT*af2c3H=r01>*we*p9=<6>PHk8V}K&$K<6%zX2vT#p@VE}{2PDb?f=OR(2Z*@E( zkEi*|(?GBxUi&QL|77*2L2J*j)oog9(;D2iBiCN!@-!Tp#;0LKHi(OT>d4jmi%M+d zX>5<pSpLMjL+jurPop<`Jen#;=2duk+jxO>1#gMfGl&h7xeED7j@!mSTu_cfP8IlA z=gj_R1x}Ej$J){bsQYJup$1P#+AWB__Q|JIT|u<QA~aA#d9N50(z;LGbA#7^r}aO~ zIsyLR0Fnte+#Tyhyg~DhUlHW55~OLEXT@=iAw?)z_M2SAXUO2Lf%6~djNg{7Ddh%% zmiESOP)gXR%o`}+d()E@f=2NO#KY1(u3V)a@>J3bL*1?p5d1S60-~nA8)=WT8!r}F zk;TKj7$o^99)wfc7*#py^DC5Emo64NA73AjKiJy(5C}*7I!m=&y9{884XxG*oDHx? z+pNV~4(y1@IlcK&VV1)A3yMUxuR--27TFO|N_Fm$HWFk3er9d>x1v23Axl=Y#Uk{I zi2MgELWi=5+~}^>M7<`W;ekgpU|vX2-aBBq?oYX6;w5D9%%!DbEzXiYDv%6{xYrvN zU4GA!QIa9x2YSOS!<cY?BV2G0Z(R6hbXM2xWk-6{NG&tcJ!Ygd&(-J54^(F2?Q26_ z<?P0|zx5s@)7QpVcXqDtG?f2c0224PJCV$a;K;LW*jCi$U?G{qyITd$U%A|+jLP=> zgtw=+EfIrJb8UO`qpRCD<99d5lLRS{2GP((X{cbB51LO?)*@O|?l2(#-<x@BOnS+N zW5Ofab{3g@;hJ<;R~(axkwYeOb{H?~>CiEm81-bb?0QL8a$~}$B5xf_j4LZ;k&IE- zwIdNri6DN%H#M;hP8HZgl{dM~G3-i3fg>zku!lNz+bIH;sd&(grfq{)tm9Ol<{mcH zpq{X9DCjR2d2R`&*R+UK#{~(6;%y?31-}y<?kjTpszWQRg?Pe37;fgy;d0}<62a;U z(tdAsG$ZdE@^U)OlfJWUi`7vw7^J;KY>>QVZVWriXh~1*N`U@qFMTad1`fdFK7#2i z`R;XVJlau7SbBSv%<BBu-hjaz`RONl+>c*R>)hF%)D`t_nTld!QO(dLl()Bld3Ly# zbkjI1;>&54=2vP`$Y*>_3hS|)C<Ut`oAZ;5CKD^R&cU@`N^BKEo%eE%JCol3CEX4Q zC*9upMZHlqi7fj+>8wJi3&S3;@ct-!f9TX5+SPd~C+rk^dZ;wX5abiVTmhdHse4Y@ z!$e<Ym7|Naldh#hy0}zS;6m!o6T9^_uIJpfC+;gWf_Eb&=$IpK+98aO4UgvHmBV#! miPzC2=9)S$i}b`afZaM@!Vm>MM*leFaFO|nr#~MHk@_3$#h3d4 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_divpower.nss b/_removed/nw_s0_divpower.nss new file mode 100644 index 0000000..71e8ee2 --- /dev/null +++ b/_removed/nw_s0_divpower.nss @@ -0,0 +1,127 @@ +//:://///////////////////////////////////////////// +//:: Divine Power +//:: NW_S0_DivPower.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Improves the Clerics attack to be the + equivalent of a Fighter's BAB of the same level, + +1 HP per level and raises their strength to + 18 if is not already there. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 21, 2001 +//::////////////////////////////////////////////// +/* +bugfix by Kovi 2002.07.22 +- temporary hp was stacked +- loosing temporary hp resulted in loosing the other bonuses +- number of attacks was not increased (should have been a BAB increase) +still problem: +~ attacks are better still approximation (the additional attack is at full BAB) +~ attack/ability bonuses count against the limits + +Patch 1.71 + +- was removing temporary hitpoits even from other sources +- the strength increase will always be calculated from base strength +*/ + +#include "70_inc_spells" +#include "nw_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + + RemoveEffectsFromSpell(spell.Target, spell.Id); + + int nCasterLevel = GetCasterLevel(spell.Caster); + int nTotalCharacterLevel = nCasterLevel; //Modification - we want this spell to use caster level, not character level + + //int nTotalCharacterLevel = GetHitDice(spell.Caster); + int nBAB = GetBaseAttackBonus(spell.Caster); + int nEpicPortionOfBAB = (nTotalCharacterLevel - 19)/2; + + if (nEpicPortionOfBAB < 0) + { + nEpicPortionOfBAB = 0; + } + + int nExtraAttacks = 0; + int nAttackIncrease = 0; + + if (nTotalCharacterLevel > 20 ) + { + nAttackIncrease = 20 + nEpicPortionOfBAB; + if(nBAB - nEpicPortionOfBAB < 11) + { + nExtraAttacks = 2; + } + else if(nBAB - nEpicPortionOfBAB > 10 && nBAB - nEpicPortionOfBAB < 16) + { + nExtraAttacks = 1; + } + } + else + { + nAttackIncrease = nTotalCharacterLevel; + nExtraAttacks = ((nTotalCharacterLevel - 1)/5) - ((nBAB - 1)/5); + } + nAttackIncrease -= nBAB; + + if (nAttackIncrease < 0) + { + nAttackIncrease = 0; + } + + int nStrengthIncrease = 18-GetAbilityScore(spell.Target, ABILITY_STRENGTH, TRUE); + + effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM); + effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH, nStrengthIncrease); + effect eHP = EffectTemporaryHitpoints(nCasterLevel); + effect eAttack = EffectAttackIncrease(nAttackIncrease); + effect eAttackMod = EffectModifyAttacks(nExtraAttacks); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eLink = EffectLinkEffects(eAttack, eAttackMod); + eLink = EffectLinkEffects(eLink, eDur); + + //Make sure that the strength modifier is a bonus + if(nStrengthIncrease > 0) + { + eLink = EffectLinkEffects(eLink, eStrength); + } + + //Meta-Magic + if(spell.Meta == METAMAGIC_EXTEND) + { + nCasterLevel *= 2; + } + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + + //Apply Link and VFX effects to the target + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nCasterLevel)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, spell.Target, RoundsToSeconds(nCasterLevel)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); +} diff --git a/_removed/nw_s0_doom.ncs b/_removed/nw_s0_doom.ncs new file mode 100644 index 0000000000000000000000000000000000000000..da60278dcb086bfb1fd8fec9742a2943278b42c3 GIT binary patch literal 12410 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_doom.nss b/_removed/nw_s0_doom.nss new file mode 100644 index 0000000..d16aa65 --- /dev/null +++ b/_removed/nw_s0_doom.nss @@ -0,0 +1,98 @@ +//:://///////////////////////////////////////////// +//:: Doom +//:: NW_S0_Doom.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + If the target fails a save they recieve a -2 + penalty to all saves, attack rolls, damage and + skill checks for the duration of the spell. + + July 22 2002 (BK): Made it mind affecting. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 22, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- missing saving throw VFX added +- immunity feedback corrected +- SR check moved before saving throw check +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +effect CreateDoomEffectsLink3() +{ +//Declare major variables +effect eSaves = EffectSavingThrowDecrease(SAVING_THROW_ALL,3); +effect eAttack = EffectAttackDecrease(3); +effect eDamage = EffectDamageDecrease(3,DAMAGE_TYPE_SLASHING); +effect eSkill = EffectSkillDecrease(SKILL_ALL_SKILLS,3); +effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + +effect eLink = EffectLinkEffects(eAttack,eDamage); +eLink = EffectLinkEffects(eLink,eSaves); +eLink = EffectLinkEffects(eLink,eSkill); +return EffectLinkEffects(eLink,eDur); +} + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_IMP_DOOM); + effect eLink = CreateDoomEffectsLink3(); + + float fDuration = TurnsToSeconds(spell.Level); + //Meta-Magic checks + if(spell.Meta == METAMAGIC_EXTEND) + { + fDuration *= 2; + } + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Spell Resistance check + if(!MyResistSpell(spell.Caster, spell.Target)) + { + //will saving throw + if(!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster)) + { + //* Engine workaround for mind affecting spell without mind effect + if(GetIsImmune(spell.Target, IMMUNITY_TYPE_MIND_SPELLS, spell.Caster)) + { + eLink = EffectDazed();//force target to overcome the spell effect and print immunity feedback instead + fDuration = 1.0;//for safety + } + else + { + //apply doom VFX only if not immune + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + } + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, fDuration); + } + } + } +} diff --git a/_removed/nw_s0_fireshld.ncs b/_removed/nw_s0_fireshld.ncs new file mode 100644 index 0000000000000000000000000000000000000000..82353e185509e75199e506162275f3d77d148d92 GIT binary patch literal 3267 zcmbtX&ubiI82-L*c9S-<v}vtPZHyhZKLV9#(jfKXVY)lY;A|3hx0^^S!!}7ZxNSnB zw!QSAS8swK_($|m`~wu!gLn`R9*PtZ?4buKIph$C&-cFb&CWNB1H~-t?7Tmp_j%v% zoykI@<MrlVo4q1L?fX{*{tkIUjnKzY=EL{LD^+pw_MLdOe`~A1@xkqQ?MA$|ezX6{ z;A3cx=QMY><}M0~IR2`b6bA<fKOwTCCGyw0b4KT?P3gPuv`k&EI9f#CUsi>9sHP>H z9*K&%l1fc@`YPFQ)X_G(0{P|NPA0-H6oCYn=-Y$E3u-8kf&}EhhhRF+QyoYAs4O9r zB$V0$H&n_#nf#OZm6$v(HDSP1-)~8sPbl54LqZ1hIWvJ9V+rW9iWod+?C1(-W1=}7 zdy($`5*13MT#tPSd@4QZQE5P$DGgdweNUS3<N}^4kc8?HTR--+;rPm>IEo{`(~a9f zx97JjBf6J>d06pJ7}YM%#yeZ<gTaTJn;#*<Aywun=1bKGOpx|PrS1@ZfFt~SdZt8; zYXLe!azQr_?64HcUl$|-r$!{dWf7XnBEu-GyOOLii^f{~!PX}0KCJdwgifYbn=JZ$ zC{oW@l+sOUkd%N*7u5hN%A!_H8W6;L9fU5c5zjJt11z4oJQpwdQP4sMf_CgTo1M79 zzoVcRL;&{;-2kT}JOY1GTwpMvxUa5vUX%BxB|V%-Q)Fa2mPqLci!T@-pd9hHS3A1P z(Wisf<{BiUtAqZ|&iYPOs2?1Fc)~+v4mP@yDULFyb5`?CaIug~;J4icW;xsLOyfW~ zg}r}-Dwf-(Vjyytwl{9|x9|BkHU@cs<WwaXIM&cQoo?GbOWp8DDeO%^`G1}fS(j$8 zV!6lym#=M?#^QqIq6%DY+Ahms$8xC@xXjxw;X*fYIZd_j(Ltfi9LdJa%o)aL>P~n@ zY+3~IyDI5PI^Yy%4_)5iF~=UsGzDW0)kR4mFyl0Brzo&lM+dGqnhtn@UL1u!+YOqD zG!1p*n;Bunlx`Z4Jf}=4RIiIdrc~V-o-0cGmKCB>8seoiM1qak%~8OQQwp1&_gY;e zk{7_s>98BLtYaH5_JVdhYzD>$<jwP7*jox`sW?Duu^GM{25l=q{v5$|oN_lCB^lFA zN3rzr%D9!~NoNBN6O^YFbp4k9PFR*Mok`tM^;ObQY%J;-ri6HVA2H8&mV!p;N3nk; zjKc1FB^2_*wS>a*SXPxLRsoxnc|>_)jV~S8B4Udolx5FyT+e6!54tT77Tt1sMjuoS zB8vVGokbDK%D@~ai>NA&arWn?Zs=E*DNEQX&h%U~nI%ZmDEJv8UN%zuIYm+sTwn_+ z*`{#JW-PG9zO;889YlTf^^3DS%3F~)Pwst%NZrNj_c+DJ@-RrTxRN)?2S$Y@b2azC zGN_<hk+ecT8;ax{?{my?@`BkMD#bNcBBe{KPD~pmUHJ`nS#jHGd(V&p4#?Ka0h!YO KN8Dj!Q`Em;FC~uv literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_fireshld.nss b/_removed/nw_s0_fireshld.nss new file mode 100644 index 0000000..11e0d4b --- /dev/null +++ b/_removed/nw_s0_fireshld.nss @@ -0,0 +1,72 @@ +//:://///////////////////////////////////////////// +//:: Elemental Shield +//:: NW_S0_FireShld.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Caster gains 50% cold and fire immunity. Also anyone + who strikes the caster with melee attacks takes + 1d6 + 1 per caster level in damage. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//::////////////////////////////////////////////// +//:: Created On: Aug 28, 2003, GZ: Fixed stacking issue + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD); + int nDuration = spell.Level; + int nDamage = spell.Level/2; + effect eShield = EffectDamageShield(nDamage, DAMAGE_BONUS_1d6, DAMAGE_TYPE_FIRE); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eCold = EffectDamageImmunityIncrease(DAMAGE_TYPE_COLD, 50); + effect eFire = EffectDamageImmunityIncrease(DAMAGE_TYPE_FIRE, 50); + + //Link effects + effect eLink = EffectLinkEffects(eShield, eCold); + eLink = EffectLinkEffects(eLink, eFire); + eLink = EffectLinkEffects(eLink, eDur); + eLink = EffectLinkEffects(eLink, eVis); + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + + // *GZ: No longer stack this spell + if (GetHasSpellEffect(spell.Id,spell.Target)) + { + RemoveSpellEffects(spell.Id, spell.Caster, spell.Target); + } + + //Enter Metamagic conditions + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); +} diff --git a/_removed/nw_s0_flmlash.ncs b/_removed/nw_s0_flmlash.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e3b16e6e0dc84a8eda7c57907451f9d771129fea GIT binary patch literal 11191 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 Whem1&;U(Y0R8Jn7ULs^B@BJ5c6dr^C literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_flmlash.nss b/_removed/nw_s0_flmlash.nss new file mode 100644 index 0000000..3746535 --- /dev/null +++ b/_removed/nw_s0_flmlash.nss @@ -0,0 +1,72 @@ +//:://///////////////////////////////////////////// +//:: Flame Lash +//:: NW_S0_FlmLash.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creates a whip of fire that targets a single + individual +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Nov 21, 2001 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nCasterLevel = spell.Level; + + if(nCasterLevel > 3) + { + nCasterLevel = (nCasterLevel-3)/3; + } + else + { + nCasterLevel = 0; + } + int nDamage = MaximizeOrEmpower(8,2 + nCasterLevel,spell.Meta); + + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); + effect eRay = EffectBeam(VFX_BEAM_FIRE_LASH, spell.Caster, BODY_NODE_HAND); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, spell.Target, 1.7); + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + if (!MyResistSpell(spell.Caster, spell.Target, 1.0)) + { + nDamage = GetReflexAdjustedDamage(nDamage, spell.Target, spell.DC, SAVING_THROW_TYPE_FIRE, spell.Caster); + effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target)); + DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, spell.Target)); + } + } + } +} diff --git a/_removed/nw_s0_gate.ncs b/_removed/nw_s0_gate.ncs new file mode 100644 index 0000000000000000000000000000000000000000..bcc2367c2980724558f2ae2364839d6d13db5fda GIT binary patch literal 3304 zcmbtWO>5jn7@iqv?by4Gw<YAubt5))0!f@Wc1sGS#qzFNM76ey?y;cgskx{1pg z0=eV|l%5NP{*2O}kW&vm_E1VGh5FD#NOSPP;J)+B&a6gO1fel8);sU>emw8T%vw9~ zdbe*bt}@m*c#qM)Qyvo&_;G~(QQz-eW6)?`XS3}1`1lvnbfiQ)Y&n-CwlOEadXT-i z%1P%h=8C54$V2@0YK;9TaP$vzArf^D;P)K~c%`LhJubgrFc;2_+zDgkn;PSb0_sQ1 zotN?px#JxiPkOIaNXry%x-~Y_A8ZeI``OO+<NnU0t;fnJg}f{fDzAG5v$qJ<y!%1c z_LDS-vvw53VY?KD9RD^)DTl?&Z>i*0@I|?=tZ1gla(!(xOR`lzT920~io^vaM3JII zvdunTP|Oyw(_?H2RC7&7Px*}|*;%CjO<26Hi9?x)VSMXyaf1BndLwuAF)4D<q!f)S z!?Lits0>)+4(-CuYE{`bQ_oLYenle5@=_LM5%HYGLE7_UO(mZa>Q7Q?+*!=_zuq1U zcJ}tZB4?*W6;hV9+OTG#<yg!gf~SVco1#N&Ua{JhoZn&)nQ~Fr{iH;Px`IfZTAZ{~ z4s9A3WtK$0D{ZQP5gjVgZ#mJP68$k2iI+-rpha*)P7x@tQ#LeNWEMR+tAjubwkXO? zF=2)WDj!mSm+suoHvA~)s!sPiokVwi6!e0K;(aOWyG&q!{)AnML3`69G%x$(BTG6} z_aHTqL3es2RekcUijP7$?GO8jta9{Z(A|4LlF9yHYkz-xzsAIKhk`iZa86{FBnQvB zC3(X;qmm`bIr`hKLawz(<yI1yCCU-gv(w0!4|T>AQGH{$`)F(U)c<mKPz(^D8p4o8 zsWB%><N9T==HZZ`-AtRH-F{wRc}OR?Ye9Gk<a-;^USG2yq6G5LhHQq31yLKw4s6+m zglp*tauK<x(J>Inrgd2~W9Ygwo)+s8k@yQSs)=cERN#=RysO%rHdC%B<cN;0ahRYU zM_-+XVZFkRPponKoXyah&sPIIVceh^KP;#fr)|>JpgjUPr&B?`bxLGTw4Cu=A*@fV zu-r-$7mSHfY>M3i1?tL%St3Hsd!r>I;#Y{5i(wjct+CD4dqEtBoj_xVyk*rG=IX@} z%~H96?s_NuEDU1HKyi);+Jx^;yTYScm9QnpD+jCcV|s%C=isLsq<+``JgjnOdQw(Y zd^f5nZ7kG`x&*x4C!6!hM$iuZDDzjtC`|8FP^h+f1%=hNtSq&y5;kXx5fzEmSnJ|C z$`M;;p~`!n<5to8Yv{Iuu;}Jj>7`I(GKeVpKXjH^s7k|Ju;l%1<^7GR8{?`x<q12l zJiQT3dI_Q%nYv@xyIN}BQ;^Du$5Y$VB`I`GIC@W&=+eHlcbyr1X_wEat*ACn;k|+t zET3w44AB-Tyl~sZH@yYOjJn3;1x(XDex)vDK`)G;A>Ww)*3?qRw*3^%auPl>hL@w2 H4Uhc?j%(A? literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_gate.nss b/_removed/nw_s0_gate.nss new file mode 100644 index 0000000..464ea41 --- /dev/null +++ b/_removed/nw_s0_gate.nss @@ -0,0 +1,76 @@ +//:://///////////////////////////////////////////// +//:: Gate +//:: NW_S0_Gate.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +//:: Summons a Balor to fight for the caster. +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: April 12, 2001 +//::////////////////////////////////////////////// +void CreateBalor(location lLoc); + +#include "70_inc_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = spell.Level; + effect eSummon; + effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_GATE); + //Make metamagic extend check + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Summon the Balor and apply the VFX impact + //ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetSpellTargetLocation()); + + if(GetHasSpellEffect(SPELL_PROTECTION_FROM_EVIL) || + GetHasSpellEffect(SPELL_MAGIC_CIRCLE_AGAINST_EVIL) || + GetHasSpellEffect(SPELL_HOLY_AURA) || + GetLocalInt(OBJECT_SELF, "cleric_henchman") == 1 || + GetLocalInt(OBJECT_SELF, "X4_CASTER_CLERIC") == 1) + { + if (GetCasterLevel(OBJECT_SELF) >= 35 ) + eSummon = EffectSummonCreature("NW_S_BALOR2",VFX_FNF_SUMMON_GATE,3.0); + else + { eSummon = EffectSummonCreature("NW_S_BALOR",VFX_FNF_SUMMON_GATE,3.0); } + float fSeconds = RoundsToSeconds(nDuration); + DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, fSeconds)); + + } + else + { + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, spell.Loc); + DelayCommand(3.0, CreateBalor(spell.Loc)); + } +} + +void CreateBalor(location lLoc) +{ + if (GetCasterLevel(OBJECT_SELF) >= 35 ) + CreateObject(OBJECT_TYPE_CREATURE, "NW_S_BALOR2_EVIL", lLoc); + else + CreateObject(OBJECT_TYPE_CREATURE, "NW_S_BALOR_EVIL", lLoc); +} diff --git a/_removed/nw_s0_grplanar.ncs b/_removed/nw_s0_grplanar.ncs new file mode 100644 index 0000000000000000000000000000000000000000..5ac6bfb4fd1adbdc65cf89636e5c3d3cc1eda96e GIT binary patch literal 6960 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 T-0|@~Ns-UFt2{pLG|c}1Hh%~| literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_grplanar.nss b/_removed/nw_s0_grplanar.nss new file mode 100644 index 0000000..1d21b0a --- /dev/null +++ b/_removed/nw_s0_grplanar.nss @@ -0,0 +1,114 @@ +//:://///////////////////////////////////////////// +//:: Greater Planar Binding +//:: NW_S0_GrPlanar.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Summons an outsider dependant on alignment, or + holds an outsider if the creature fails a save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: April 12, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.70, fix by Shadooow + +- added saving throw subtype (paralyse) +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = spell.Level; + effect eSummon; + effect eGate; + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED); + effect eDur3 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD); + + effect eLink = EffectLinkEffects(eDur, EffectParalyze()); + eLink = EffectLinkEffects(eLink, eDur2); + eLink = EffectLinkEffects(eLink, eDur3); + + int nRacial = GetRacialType(spell.Target); + //Check for metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Check to see if a valid target has been chosen + if (GetIsObjectValid(spell.Target)) + { + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Check for racial type + if(nRacial == RACIAL_TYPE_OUTSIDER) + { + //Allow will save to negate hold effect + if(!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC+5,SAVING_THROW_TYPE_PARALYSE, spell.Caster)) + { + //Apply the hold effect + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration/2)); + } + } + } + } + else + { + //If the ground was clicked on summon an outsider based on alignment + int nAlign = GetAlignmentGoodEvil(spell.Caster); + float fDelay = 3.0; + switch (nAlign) + { + case ALIGNMENT_EVIL: + if (GetCasterLevel(OBJECT_SELF) >= 28) + eSummon = EffectSummonCreature("NW_S_VROCK2", VFX_FNF_SUMMON_GATE, 3.0); + else + eSummon = EffectSummonCreature("NW_S_VROCK", VFX_FNF_SUMMON_GATE, 3.0); + //eGate = EffectVisualEffect(VFX_FNF_SUMMON_GATE); + break; + case ALIGNMENT_GOOD: + if (GetCasterLevel(OBJECT_SELF) >= 28) + eSummon = EffectSummonCreature("NW_S_CTRUMPET2", VFX_FNF_SUMMON_CELESTIAL, 3.0); + else + eSummon = EffectSummonCreature("NW_S_CTRUMPET", VFX_FNF_SUMMON_CELESTIAL, 3.0); + //eGate = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL); + break; + case ALIGNMENT_NEUTRAL: + if (GetCasterLevel(OBJECT_SELF) >= 28) + eSummon = EffectSummonCreature("NW_S_SLAADDETH2", VFX_FNF_SUMMON_MONSTER_3, 1.0); + else + eSummon = EffectSummonCreature("NW_S_SLAADDETH", VFX_FNF_SUMMON_MONSTER_3, 1.0); + //eGate = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3); + fDelay = 1.0; + break; + } + //Apply the VFX impact and summon effect + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, RoundsToSeconds(nDuration)); + } +} diff --git a/_removed/nw_s0_hammgods.ncs b/_removed/nw_s0_hammgods.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e6cf891fe1f76a85b1a3295d6ea057ad68db1fc8 GIT binary patch literal 13356 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_hammgods.nss b/_removed/nw_s0_hammgods.nss new file mode 100644 index 0000000..2a9acaf --- /dev/null +++ b/_removed/nw_s0_hammgods.nss @@ -0,0 +1,99 @@ +//:://///////////////////////////////////////////// +//:: Hammer of the Gods +//:: [NW_S0_HammGods.nss] +//:: Copyright (c) 2000 Bioware Corp. +//::////////////////////////////////////////////// +//:: Does 1d8 damage to all enemies within the +//:: spells 20m radius and dazes them if a +//:: Will save is failed. +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 12, 2001 +//::////////////////////////////////////////////// +//:: VFX Pass By: Preston W, On: June 21, 2001 +//:: Update Pass By: Preston W, On: Aug 1, 2001 + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eDam; + effect eDaze = EffectDazed(); + effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + + effect eLink = EffectLinkEffects(eMind, eDaze); + eLink = EffectLinkEffects(eLink, eDur); + + effect eVis = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY); + effect eStrike = EffectVisualEffect(VFX_FNF_STRIKE_HOLY); + float fDelay; + int nDamageDice = spell.Level/2; + if(nDamageDice < 1) + { + nDamageDice = 1; + } + //Limit caster level + if (nDamageDice > 10) + { + nDamageDice = 10; + } + int nDamage; + //Apply the holy strike VFX + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eStrike, spell.Loc); + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, spell.Loc); + while (GetIsObjectValid(oTarget)) + { + //Make faction checks + if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id)); + //Make SR Check + if (!MyResistSpell(spell.Caster, oTarget)) + { + fDelay = GetRandomDelay(0.6, 1.3); + //Roll damage + nDamage = MaximizeOrEmpower(8,nDamageDice,spell.Meta); + //Make a will save for half damage and negation of daze effect + if (MySavingThrow(SAVING_THROW_WILL, oTarget, spell.DC, SAVING_THROW_TYPE_DIVINE, spell.Caster, 0.5)) + { + nDamage = nDamage / 2; + } + else + { + //Apply daze effect + DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(d6()))); + } + //Set damage effect + eDam = EffectDamage(nDamage, DAMAGE_TYPE_DIVINE ); + //Apply the VFX impact and damage effect + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + //Get next target in shape + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, spell.Loc); + } +} diff --git a/_removed/nw_s0_harm.ncs b/_removed/nw_s0_harm.ncs new file mode 100644 index 0000000000000000000000000000000000000000..2dcae9d54354b6d17d20096e7bdd9b9a38c44345 GIT binary patch literal 11274 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_harm.nss b/_removed/nw_s0_harm.nss new file mode 100644 index 0000000..768f2d5 --- /dev/null +++ b/_removed/nw_s0_harm.nss @@ -0,0 +1,84 @@ +//:://///////////////////////////////////////////// +//:: [Harm] +//:: [NW_S0_Harm.nss] +//:: Copyright (c) 2000 Bioware Corp. +//::////////////////////////////////////////////// +//:: Reduces target to 1d4 HP on successful touch +//:: attack. If the target is undead it is healed. +//::////////////////////////////////////////////// +//:: Created By: Keith Soleski +//:: Created On: Jan 18, 2001 +//::////////////////////////////////////////////// +//:: VFX Pass By: Preston W, On: June 20, 2001 +//:: Update Pass By: Preston W, On: Aug 1, 2001 +//:: Last Update: Georg Zoeller On: Oct 10, 2004 +//::////////////////////////////////////////////// +/* +Patch 1.70, fix by Shadooow + +> touch attack removed if cast on undead (roll wasn't used in this case anyway) +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDamage, nHeal; + effect eVis = EffectVisualEffect(246); + effect eVis2 = EffectVisualEffect(VFX_IMP_HEALING_G); + effect eHeal, eDam; + //Check that the target is undead + if (GetRacialType(spell.Target) == RACIAL_TYPE_UNDEAD) + { + //Figure out the amount of damage to heal + nHeal = GetMaxHitPoints(spell.Target) - GetCurrentHitPoints(spell.Target); + //Set the heal effect + eHeal = EffectHeal(nHeal); + //Apply heal effect and VFX impact + ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, spell.Target); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, spell.Target); + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + } //if cast from onhit, feedback won't show + else if (TouchAttackMelee(spell.Target,spell.Item == OBJECT_INVALID) != FALSE) //GZ: Fixed boolean check to work in NWScript. 1 or 2 are valid return numbers from TouchAttackMelee + { + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, SPELL_HARM)); + if (!MyResistSpell(spell.Caster, spell.Target)) + { + //nDamage = GetCurrentHitPoints(spell.Target) - d4(1); + int nCasterLevel = GetCasterLevel(spell.Caster); + if (nCasterLevel > 20) nCasterLevel = 20; + nDamage = MaximizeOrEmpower(6, nCasterLevel, spell.Meta); + + eDam = EffectDamage(nDamage,DAMAGE_TYPE_NEGATIVE); + //Apply the VFX impact and effects + DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, spell.Target)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + } + } + } +} diff --git a/_removed/nw_s0_heal.ncs b/_removed/nw_s0_heal.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e7821ffc66678d3dd05cac907ddc71b58e2c7f6c GIT binary patch literal 6999 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_heal.nss b/_removed/nw_s0_heal.nss new file mode 100644 index 0000000..15cbbe9 --- /dev/null +++ b/_removed/nw_s0_heal.nss @@ -0,0 +1,74 @@ +//:://///////////////////////////////////////////// +//:: Heal +//:: [NW_S0_Heal.nss] +//:: Copyright (c) 2000 Bioware Corp. +//::////////////////////////////////////////////// +//:: Heals the target to full unless they are undead. +//:: If undead they reduced to 1d4 HP. +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 12, 2001 +//:: Modified 69MEH69 JUL2003 +//::////////////////////////////////////////////// +//:: Update Pass By: Preston W, On: Aug 1, 2001 +#include "69_hench_lib" +#include "NW_I0_SPELLS" +void main() +{ + //Declare major variables + object oTarget = GetSpellTargetObject(); + effect eKill, eHeal; + int nDamage, nHeal, nModify, nMetaMagic, nTouch; + effect eSun = EffectVisualEffect(VFX_IMP_SUNSTRIKE); + effect eHealVis = EffectVisualEffect(VFX_IMP_HEALING_X); + string sTag = GetTag(oTarget); + object oArea = GetArea(oTarget); + //Check to see if the target is an undead + if (GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEAL)); + //Make a touch attack + if (TouchAttackMelee(oTarget)) + { + //Make SR check + if (!MyResistSpell(OBJECT_SELF, oTarget)) + { + //Roll damage + nModify = d4(); + nMetaMagic = GetMetaMagicFeat(); + //Make metamagic check + if (nMetaMagic == METAMAGIC_MAXIMIZE) + { + nModify = 1; + } + //Figure out the amount of damage to inflict + nDamage = GetCurrentHitPoints(oTarget) - nModify; + //Set damage + eKill = EffectDamage(nDamage, DAMAGE_TYPE_POSITIVE); + //Apply damage effect and VFX impact + ApplyEffectToObject(DURATION_TYPE_INSTANT, eKill, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eSun, oTarget); + } + } + } + } + else + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEAL, FALSE)); + //Figure out how much to heal + nHeal = GetMaxHitPoints(oTarget); + //Set the heal effect + eHeal = EffectHeal(nHeal); + //Apply the heal effect and the VFX impact + ApplyEffectToObject(DURATION_TYPE_INSTANT, eHealVis, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); + if(GetIsHenchmanDying(oTarget)) + { + SetLocalInt(oArea, "nCHP" +sTag, 21); + } + } +} diff --git a/_removed/nw_s0_healcirc.ncs b/_removed/nw_s0_healcirc.ncs new file mode 100644 index 0000000000000000000000000000000000000000..a8de043d9b90fdbb9054c5b3580052ec95a9ad7f GIT binary patch literal 9487 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 XK6t@FL?~Lxd*rEze_ZL|d*uHD`b?y* literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_healcirc.nss b/_removed/nw_s0_healcirc.nss new file mode 100644 index 0000000..d580016 --- /dev/null +++ b/_removed/nw_s0_healcirc.nss @@ -0,0 +1,115 @@ +//:://///////////////////////////////////////////// +//:: Healing Circle +//:: NW_S0_HealCirc +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* +// Positive energy spreads out in all directions +// from the point of origin, curing 1d8 points of +// damage plus 1 point per caster level (maximum +20) +// to nearby living allies. +// +// Like cure spells, healing circle damages undead in +// its area rather than curing them. +*/ +//::////////////////////////////////////////////// +//:: Created By: Noel Borstad +//:: Created On: Oct 18,2000 +//:: Modified 69MEH69 JUL2003 +//::////////////////////////////////////////////// +//:: VFX Pass By: Preston W, On: June 20, 2001 +//:: Update Pass By: Preston W, On: Aug 1, 2001 +#include "69_hench_lib" +#include "NW_I0_SPELLS" +void main() +{ + //Declare major variables + object oTarget; + int nCasterLvl = GetCasterLevel(OBJECT_SELF); + int nDamagen, nModify, nHurt, nHP; + int nMetaMagic = GetMetaMagicFeat(); + effect eKill; + effect eHeal; + effect eVis = EffectVisualEffect(VFX_IMP_SUNSTRIKE); + effect eVis2 = EffectVisualEffect(VFX_IMP_HEALING_M); + effect eImpact = EffectVisualEffect(VFX_FNF_LOS_HOLY_20); + float fDelay; + string sTag = GetTag(oTarget); + object oArea = GetArea(oTarget); + int nCHP = GetLocalInt(oArea, "nCHP" +sTag); + //Limit caster level + if (nCasterLvl > 20) + { + nCasterLvl = 20; + } + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation()); + //Get first target in shape + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetSpellTargetLocation()); + while (GetIsObjectValid(oTarget)) + { + fDelay = GetRandomDelay(); + //Check if racial type is undead + if (GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD ) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEALING_CIRCLE)); + //Make SR check + if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay)) + { + nModify = d8() + nCasterLvl; + //Make metamagic check + if (nMetaMagic == METAMAGIC_MAXIMIZE) + { + nModify = 8 + nCasterLvl; + } + //Make Fort save + if (MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_NONE, OBJECT_SELF, fDelay)) + { + nModify /= 2; + } + //Calculate damage + nHurt = nModify; + //Set damage effect + eKill = EffectDamage(nHurt, DAMAGE_TYPE_POSITIVE); + //Apply damage effect and VFX impact + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eKill, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + else + { + // * May 2003: Heal Neutrals as well + if(!GetIsReactionTypeHostile(oTarget) || GetFactionEqual(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEALING_CIRCLE, FALSE)); + nHP = d8(); + //Enter Metamagic conditions + if (nMetaMagic == METAMAGIC_MAXIMIZE) + { + nHP =8;//Damage is at max + } + if (nMetaMagic == METAMAGIC_EMPOWER) + { + nHP = nHP + (nHP/2); //Damage/Healing is +50% + } + //Set healing effect + nHP = nHP + nCasterLvl; + eHeal = EffectHeal(nHP); + //Apply heal effect and VFX impact + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); + if(GetIsHenchmanDying(oTarget)) + { + SetLocalInt(oArea, "nCHP" +sTag, nCHP + nHP); + } + } + + } + //Get next target in the shape + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetSpellTargetLocation()); + } +} diff --git a/_removed/nw_s0_holdanim.ncs b/_removed/nw_s0_holdanim.ncs new file mode 100644 index 0000000000000000000000000000000000000000..df660f67d126b2d4318eb0fbd4a4a237fe928269 GIT binary patch literal 12243 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 T<cckWT#v;zgyV$ZSJwXpl|4Ge literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_holdanim.nss b/_removed/nw_s0_holdanim.nss new file mode 100644 index 0000000..bc1d8eb --- /dev/null +++ b/_removed/nw_s0_holdanim.nss @@ -0,0 +1,83 @@ +//:://///////////////////////////////////////////// +//:: Hold Animal +//:: S_HoldAnim +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* +//:: Description: As hold person, except the spell +//:: affects an animal instead. Hold animal does not +//:: work on beasts, magical beasts, or vermin. +*/ +//::////////////////////////////////////////////// +//:: Created By: Keith Soleski +//:: Created On: Jan 18, 2001 +//::////////////////////////////////////////////// +//:: Last Updated By: Preston Watamaniuk, On: April 10, 2001 +//:: VFX Pass By: Preston W, On: June 20, 2001 +/* +Patch 1.71 + +- added missing saving throw subtype as per spell's descriptor +- added duration scaling per game difficulty +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = spell.Level; + nDuration = 5; //GetScaledDuration(nDuration, spell.Target); + effect eParal = EffectParalyze(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED); + effect eDur3 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD); + + effect eLink = EffectLinkEffects(eDur2, eDur); + eLink = EffectLinkEffects(eLink, eParal); + eLink = EffectLinkEffects(eLink, eDur3); + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Check racial type + if (GetRacialType(spell.Target) == RACIAL_TYPE_ANIMAL) + { + //Make SR check + if (!MyResistSpell(spell.Caster, spell.Target)) + { + //Make Will Save + if (!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC+4, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster)) + { + //Check metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration * 2; + } + //Apply paralyze and VFX impact + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + } + } + } + } +} diff --git a/_removed/nw_s0_holdmon.ncs b/_removed/nw_s0_holdmon.ncs new file mode 100644 index 0000000000000000000000000000000000000000..22855b3513ebfab8281a724d1d8115f49c592a87 GIT binary patch literal 12208 zcmc&)dyHIF8Nc_=>}<QcEKA*%LTNkfc8gYOA3RF1luUPrc4T(8nVEL00f+7E78jP? zW?Ra`SBOgZgG2>`BA5Ug35hWf&=_N)Mx<y;<c}KKxFN(~QUyapYErRu{hi-;zB~8a zy*sr5A`Lrpzw^Cc=R4<4slSrlwc%6iw|d^XXIFUmZ$Z`zGW?ec^q)L0O1F4RChw}% zNAB1+GJfl1ZFEm<bZqa)of8MJvM9E4_r48lJaX*%q_@nQot=FdoKptkAL~i2G_pFD zo2Ne*SWv&r2hNO_PN(qL;+v;aUYeArTRiVO9v9^Ap8$9vhyaeq0c8SGhRaFN*iQft z1$=nh0wIDxR~}KYq@M{WL5d0=w+aV*0#{>9+Yf2pKd7M3l_OqS@xkn*5Ca_#Ukid% zIt?;Uc_^mgbwQ_f*5eMA$`$TMEq5@aOuG59LzZ$6`Ms%{wr8o`DjKJJf+bnH09fL3 zU4?@8h!Axd{3(WEX-2S*XN@IYyEoQ~wPLPPt(EiDUAb~PW2|cN{Dpyh1yaYR^|k%` z#wI4dFg0~MI4lU7QF>Q2T?S+7dD=_&q^LiXqyDE%YIz-E3$&vqt4$if;xMV!c?7{S z1^GW0&<O=;ETC%DCpL0avAx#?Tcw&rJtZInJj9w35Tc}@;9UW|p&*KZP%7%T!y2dx zvlyynss#Ps1BVU=nXH3y6}-4|(}voPTroe02;|GP+`vGk)-T_S`Ca)UlzSJ^fKM}$ z0)Hi6=%B15uI<@A<GgDe=t2t(H6w1Dg|d>p2Sq=q(wUpCS4@<P2PX!nMgeK9PmJu} zKeoTc3tmb=iQ|$~aAtyWlpN++N48sx1>{0}ccUOKjfPtwWDA#5r>}I<Vt-mKhDPl> zrpNCXnZ75tXM7^AAc<P22HF5tQ<ZADy_eC*a?x`;2IU`K>qSWh^1B@pKY`>?m!yBF z<d6gjBzs+w;X=hBNhgq8;gS?eRZDU)ZIRM}q2f8h+B7WcF=kzNR>2w~fNu<JOu_^w zpHqnPxTJa5RY;9A$I=>~ERf^OwxwLsCN<lhZ4DDVVck0)>(OX1Cqgld#^Y<Hp(;<m zJ>*Er<!TD;ZHFPtgPv5Qt|<08N3C>I78ivqtZw4nm<wcARYyp@ck~#I{MGQw#f55q z&?(#6(5`&BTo}kJ4V-s{B!=6iP)o@S28RX;Hx%+^he5oKK-xvw1N}`ThMkVQOnF7f zn#l=s0|XaR&S1Wp8_aDhG!qx*q={(oh>a*Z7Gs7iq2F!>&%Vlze19QVtmU>AiiPTD zo461=Kyw#1=jB+byb`>*EUr=9u}aH=O>%4!hi1~FKJJN2pU2&f5{|q5%hno486}Fv z58}=w4$aI!9@|FL;$0xp&)Ibix@MB14qGac&dE*M1euMV>@nUY3U&7>LgC;9TtJB% zs-vAT0T=z!?R6|fQ~G9Z_Rp8DD4i!Zuh6L{v$98l4~pPHU&!oC7~R^!p~#e8rYx$c zX^w(utn8H~2O3!DLk<)jl(;WD(3C*aQ$|+Hd0f+Rle>lg=Wx&?`EsHlcNG=3{3LMN zuI#p9SsBjh=M|lw%Gr*|VtfLbw+w}l^8DcUDiuS_E20qiqwD|3kM2dRXWffV(xi`( zlE~gMcjMa}Vfx2#iTqY_37jC}dRc<W?L8T6evx<pp}`~KDM7KJwHe{|8Zch6dwp$N zEmtfK4YL3$)uHV>%T@T(&WhxMIgc7exrCdKt4c#xjUZBu#9h=9(8eB1_+q%zHy%cd z@66iSbT5&0Ha%j@CbAfw6s0TekOOg~ZO}xuMhv965GSn1_{OfQ@WYz0MyzVz<RXf- zfdsFsw+U2}B~Kv*e2zu<C{iD6_WJk)b@>Se;lkI1A4;oPQj<UxnX!a(+yp0z$tD%O ze@A9PwhX8C#j!5MAxqIDo@bHy4a)&3qn6Jf`Q13^ws@;>n5+yJs{Pw*`BH9cF<&d~ z=&$95@->s5CSeQt3U3pBP0zzqWEqWhXa>!Ho8~_&-y121jzq#+)cgEIopppq9j>nq zQe4q-QY^vK3S4fy_guz3KeO!pODJ+v%zx}V-dn*OeZ$-&S;oy%)|HNnju$1#5FH1_ zChJ{9Wd>>wQA}G=JL&IB8~z^LS*#Xn+w&#(-Z*?PH&Dt~=xopK1CFy}M<LaXtp<Li z8P0i}5O*W8&Bkp{Q8#4m86Jgnn-o%4dlnX7JW!}GJ<9n?0XGkJTG^iOzmbZtoG>q| zR;;+9Iz^!j#g$;U0@oA9=EAnpP&se83F};`KM(2Q5!yX~%(Zr58@VIe>Gbs|yv|E0 zWmN-u-QmNpEWVVKh)E>e+QRTjeSZwi`k<L8A|~?hV6Id}X>1$HS86vD%9Tjp?vZrW zPBcQX5W{MzBURSBK3PTt#ES^e5FvI3b5RNw#q36;RZ&@6DR8~=G=;jrUOV^)rB#~0 z*+<~fcS1$*@M#Hd+hXA<t@HZWIatNbhrcC;5BFs@*B?7`W{ZecwLt%V(A|sW_RZ_+ zTe6$$uYC2)mhN7zLo}ECEIv%9ggMaod(@aKX+zZA%K!p9A%Ie92SWqNnDy@;3@+~i z&uj4iQYQLFxdbGN#)%@m|3IW(cjD_z+Rkv~?zPHRAts|ANp%^PnFmBA9TCY|3Zm+x z1HLQlag5@M#t-{3uEF#s%Jvas_7mnVZ-Z~VS(uz0IWT6v@iH%RtwUGgI+34#Ba9RQ zFLg+}-Kxsi=}V?&tkautk?T!D!~PgqqYr|A`aw8dm?{faO2kx%JlRX2zldruXm2=F zMG?GilA#nBmrg!Gj=hC~Zg$G93nMrFVN^dpC#o~HxWw)6L4l;G0t+iPszm*NR>=`+ zb1qdvcbTpioh}xcr|fs>k`D8|`|mLF9Vx!E*U?dKZm~L|qfkeYY(NS#8qk{1H;us5 zeS%@W`wuim5h{pN8x;m6+w)RBA=7kK^55T~X6a{)u7_}~+wMlLoaauoaEx+ToJBdk zBokNIKGNyUy|2m6f$@c?stigNwVzJmW;kj7{b|E8m2kdmo9L*aNz(B)QbHN!VC{fi zMqBU5hoLQb>!Ago;QNepNLp&lv-5>)II4~m#;~9wUW|~UN-eTnJgKa(5HDxeeIn9c zkxo=XJ&V59=&D%6W2;RoCd~@#S`~`3Et4fGRGRdMC)9f;CKQKc3jH=!hcgn!3PK}e z1#FSrmu%+WGqCQ3#^&>ZyhBysmAOS{-@P2C_{gkB6^w%)lQ<%{1ho)^h4XkhSSZ!X zg>Bob6o8Dy>eXS6#9oiA!)k|874tU;5jO^hC}T3%?qTGM4zC8#v$BOCDPjlI3l$sm z$NcCWG0Col{I<g2;LcLMRvoGl8BBnDlW%7U$#T5RvOUpms;lLh-qXVhk0~7~=H1d* z3f$h<sr%5(JZV<eh5k*^OLJ=G3~c_B9N5k#y8Qu`%MV=9{?D3<z9=d>LAAd{*QuI& zgF|;=BDKn8=krV3TU^2Tis6NhhTF*Rc@qRq?xj+$n&<Rl%36KCSk7k<Bn3fYO+LI% zAd^Yq&Ul2FV7$;U?#G+WN}R7=`kAxC{8$)+$P@Asq}QdegSFsc2P@T%pW1cwW!twL zsJ@uH*MaKo+t(eay=U_tbf9RV4B5jDwADf%b)XpweUeG?OK7}cc>La4Woo+adX4Mf zHx~6zj7^Uxt$qosEd$ecj*ljg*07k~Ix?NK)^FIBM<#C_n@*tY!)oh}k%^Jf@yUec z=&@QiW0ME&C`&>&TqX?AX$}7CkP`wROq(TikudQ(dTkQ#R>vU=kITLZd6D?fSn_p5 zM7~MZcV{6cDU~;+gxDUhkokrnc%5ZUMWk*PxXQDWTxZMK5_!2ek+ks8ViGNg5#2>1 zHH$eT9R`*dRs0bmI0xg{yG5qOvoXH+#FdF1-$?Yu7}4ElQ6{+AD$_*YT2$ZY%~9wF z4Glj5?UF_jZBR#SP~R|WW<EnqGh-p4Ds}wI!Mt3Ko|1@QJ?1^(SivC5ZX?;`<8^RC z!+zC@oG~I>UZa0LXZ@qGxc@Ai^C9P`F)rsXbJ(0!<6(%Ob6z&bu6~Rn{;*ZVTF~zh z#O6m5tab?o9D<}&_?JrnOCs5ylyEP)1iKu9gv|FIb_og&LF~s#^!^@~z<rCKnOl(F z2A9BnA>Zl}(Ems?ex9~nL(&9Lv=<pl=!D-9NvCT?P8w0r3P2i;D2O~B&31_a99IHP z+DV)b+q64sOitZG!z<PflXi*2oAA9>Zlg^5NgCD^2`|SpfgHcJA1;!;Igs56D$u|a z)b=sS4xmQbD)J77tl=w}pr6<T1*75H6^svcS(h;cZUV^O2H=5>_$s^Axxa%cS?D1R z263+zsLx^Af3hJo6`1RiHvSf-FgZGQH=a7j_f7AUA3@cp_8)*``->Qo!4-DU|2&_6 zW8-}_1(929)`U-@f&3L8H>Cuhne+?mpch$hPcv|*$^EGHCtQdhxdguLZy%LtIc(h5 z@K5l%1O*BE(OT_2N2{Z|KWz@i=Cq{Q+4pB6`2@68rY24ZY&ov`->=hxmm8rmHDdxD z3(XNXG%rR&BQ=HalJ8-vCqGzwm5@{RmJjkJly*pswriAuYK4;AXlqd^X6+kk+1YSu zV60Gzpo?5(iq>mi1c8>J2G~vHm9D8;b8wN;<5|XEBn1t`KCF1XB%4uH`2;d-7>iP^ z=q1XP$WoNxBX-4PHe(gNYffO*-jtOnp<11V6$WV4nVxX9lB4LntR_jS26o3-iBr{A z8OK*DGvZW~sQ8I%APb$^xOY$R1!jF^mS8~2k!pNFB+0FWJ=cFImRox7a)69r>U^Iq zo;MNOVpT5<KSlTP34D-EvmkmQ*4x>-I$~PrMa=)A#U1CUg>R0JNm_XK$F$I!nK0~4 zd@*^BT6pF+rEx6)I^|Iab~f>w?Vi6?(S*k9!M!h->WCC3W8kh&nsvg*BC*-n&?oFA z;jNe4c}K6>^o|ABF~S7o;R_5VGp^d$`(~|I)g+DW(-Glvv*$LlxW&}?CPJe^p9&%u zfZFfmWs?c?H{@={e4UY8R$?EZr$og|_(KpRC^bNvmFD|F&DThhE4B=BJrUUuP7;D& GS^pPtD>V85 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_holdmon.nss b/_removed/nw_s0_holdmon.nss new file mode 100644 index 0000000..e2a066a --- /dev/null +++ b/_removed/nw_s0_holdmon.nss @@ -0,0 +1,77 @@ +//:://///////////////////////////////////////////// +//:: Hold Monster +//:: NW_S0_HoldMon +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Will hold any monster in place for 1 + round per caster level. +*/ +//::////////////////////////////////////////////// +//:: Created By: Keith Soleski +//:: Created On: Jan 18, 2001 +//::////////////////////////////////////////////// +//:: Update Pass By: Preston W, On: Aug 1, 2001 +/* +Patch 1.71 + +- added missing saving throw subtype as per spell's descriptor +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = spell.Level; + nDuration = 5; //GetScaledDuration(nDuration, spell.Target); + effect eParal = EffectParalyze(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED); + effect eDur3 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD); + + effect eLink = EffectLinkEffects(eDur2, eDur); + eLink = EffectLinkEffects(eLink, eParal); + eLink = EffectLinkEffects(eLink, eDur3); + + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Make SR check + if (!MyResistSpell(spell.Caster, spell.Target)) + { + //Make Will save + if (!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster)) + { + //Check for metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration * 2; + } + //Apply the paralyze effect and the VFX impact + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + } + } + } +} diff --git a/_removed/nw_s0_holdpers.ncs b/_removed/nw_s0_holdpers.ncs new file mode 100644 index 0000000000000000000000000000000000000000..53f93a18326c2699ad1b6ad3c7a5a9727ee12075 GIT binary patch literal 12609 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%0DXmCgerpKW)j^ z5E1z%S>Kg|n50zRkP>2hyh7$1g5XV-H5HM%nd2(YPI8ScXG`Se<3!TJLyJi?Cq{G! ziPS8XxpWv<VpQ>mh~ONIW3OnL7SF`^-W69Sc6=kzmt#bCo<W)5MypH{ed|$uqZe?Y zA2c-l1hi8cMYKU3wn2T%sG0d3G0lvHgsKkX$0Ft(ee{$>1nV*HF~<r9QFa^2CLeFr z6B_nwR^+r1+44I5^9Ac4jm3Ru;9LkfM~!hgf0e`Lj2aI^{JitdK6Zm<6!CXjMXUvV z4nb^wB*99Tpx+@#N`-&91h6EM{YeS;qD!#DAxOx4??IQK=n%wyEk^I}b_v`cLu5`b zNN=4>;Qp?m)g_?+k!JinX}gA`37}{%GL+B>zbBGT*NU7pqM#LkG#pV7c|4l!5(7A{ z1e~;!I3KcUcf^>Sx`~EYtsN%q5{Eb8d$rs~nf8-3tSJ(HV~`2t_^thLf$YtJ>`qXD z1|Flfk4Sa^HPTj*cQ9lX-)sea#3m>h2`^tUJ`Bscj3ICnK=w8O4{XF&BwluwE%ap# z263+xsLx^Af4m_y6`1RiHvXijI59GMC!RXS_D=1U-;xba?%NN^_J>6zgDdQy|3yCk z#>V?f3L>}ItO=h)1Nj0UH>3ogne+?mpch$hPcd+EwQ|Jz6E4JWg#zF9w@*s695(K0 z_$PQ%f`WwoWUcm|rPa~hpEd`hr?sS+nGdHU`2@5TrY4RFY$@KFd^k)CUTK8J)Qkyq zEHsDR(7YH8jnovvOTLGwp8W3bH9}6<TRzB_P}(6i+OAOssufCdy{$#1n6WSRWoN^s zfw4j<f=+UkDO#_65d>O>8elh(>wi<V=HMcw$Fq#TKnfa&y;$*jNH(pi@(E<vFczd* z(Myyok)<fXN9>BpY{n{j*POtry(ueELbW;rD-6)8Gd<yIB}dU&Sxt~s4eW}s5~r%K zGLElQX2hu|QSlSkKo&Z+aqphs3(We;EWv=3Bh~nVNRnF#d#?XLEVuODWj`6g)Y(2; zJa0U<#j0K!ev0np6ZjyTW<d0OthcjuWn)_CMa=)A#cgM)g>P<!lC<#di)o=ZGhx`9 z_+sKLweZYObK_b7bi$($>}=vU+dY4)q6v-HgL_{vnT-@CW8kh&n03NOBe7ZE&?oFA z;jNe4c}K6>^o|ABF~S7o;R_5VGp^d$`(~_H)g+DWQxV~Ev*$LlxW&}?2127kp9mrs zfZFfmWs?c?y>d5WzD`RnE3vtDeL_^ckiVxvf>HytS!uo>)qIU4xnj#8*JF_l;W!~j HbKZXe7lxc9 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_holdpers.nss b/_removed/nw_s0_holdpers.nss new file mode 100644 index 0000000..8e54829 --- /dev/null +++ b/_removed/nw_s0_holdpers.nss @@ -0,0 +1,86 @@ +//:://///////////////////////////////////////////// +//:: Hold Person +//:: NW_S0_HoldPers +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* +//:: The target freezes in place, standing helpless. +//:: He is aware and breathes normally but cannot take any physical +//:: actions, even speech. He can, however, execute purely mental actions. +//:: winged creature that is held cannot flap its wings and falls. +//:: A swimmer can't swim and may drown. +*/ +//::////////////////////////////////////////////// +//:: Created By: Keith Soleski +//:: Created On: Jan 18, 2001 +//::////////////////////////////////////////////// +//:: Last Updated By: Preston Watamaniuk, On: April 10, 2001 +//:: VFX Pass By: Preston W, On: June 20, 2001 +/* +Patch 1.71 + +- added missing saving throw subtype as per spell's descriptor +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = spell.Level; + nDuration = 5; //GetScaledDuration(nDuration, spell.Target); + effect eParal = EffectParalyze(); + effect eVis = EffectVisualEffect(82); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED); + effect eDur3 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD); + + effect eLink = EffectLinkEffects(eDur2, eDur); + eLink = EffectLinkEffects(eLink, eParal); + eLink = EffectLinkEffects(eLink, eVis); + eLink = EffectLinkEffects(eLink, eDur3); + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Make sure the target is a humanoid + if(AmIAHumanoid(spell.Target)) + { + //Make SR Check + if (!MyResistSpell(spell.Caster, spell.Target)) + { + //Make Will save + if (!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster)) + { + //Make metamagic extend check + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration * 2; + } + //Apply paralyze effect and VFX impact + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + } + } + } + } +} diff --git a/_removed/nw_s0_icestorm.ncs b/_removed/nw_s0_icestorm.ncs new file mode 100644 index 0000000000000000000000000000000000000000..b626c9cff30a00f1aef69aa7a76a035a0c210934 GIT binary patch literal 11817 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_icestorm.nss b/_removed/nw_s0_icestorm.nss new file mode 100644 index 0000000..a37c795 --- /dev/null +++ b/_removed/nw_s0_icestorm.nss @@ -0,0 +1,84 @@ +//:://///////////////////////////////////////////// +//:: Ice Storm +//:: NW_S0_IceStorm +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Everyone in the area takes 3d6 Bludgeoning + and 2d6 Cold damage. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Sept 12, 2001 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDamage, nDamage2, nDamage3; + int nVariable = spell.Level/3; + float fDelay; + effect eExplode = EffectVisualEffect(VFX_FNF_ICESTORM); //USE THE ICESTORM FNF + effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); + effect eDam,eDam2, eDam3; + //Apply the ice storm VFX at the location captured above. + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, spell.Loc); + //Declare the spell shape, size and the location. Capture the first target object in the shape. + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, spell.Loc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + //Cycle through the targets within the spell shape until an invalid object is captured. + while (GetIsObjectValid(oTarget)) + { + if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, spell.Caster)) + { + fDelay = GetRandomDelay(0.75, 2.25); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id)); + if (!MyResistSpell(spell.Caster, oTarget, fDelay)) + { + //Roll damage for each target + nDamage = MaximizeOrEmpower(6,3,spell.Meta); + nDamage2 = MaximizeOrEmpower(6,2,spell.Meta); + nDamage3 = MaximizeOrEmpower(6,nVariable,spell.Meta); + + //High-level shifter version - damage increases + if(GetLevelByClass(CLASS_TYPE_SHIFTER) > 20 && GetRacialType(OBJECT_SELF) == RACIAL_TYPE_OUTSIDER) + nDamage3 = (GetLevelByClass(CLASS_TYPE_SHIFTER) - 17)*d6(); + + nDamage2 = nDamage2 + nDamage3; + //Set the damage effect + eDam = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING); + eDam2 = EffectDamage(nDamage2, DAMAGE_TYPE_COLD); + // Apply effects to the currently selected target. + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget)); + //This visual effect is applied to the target object not the location as above. This visual effect + //represents the impact that erupts on the target not on the ground. + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + //Select the next target within the spell shape. + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, spell.Loc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + } +} diff --git a/_removed/nw_s0_identify.ncs b/_removed/nw_s0_identify.ncs new file mode 100644 index 0000000000000000000000000000000000000000..4d7e6d3db988d10788e318e127cf637d55f8a235 GIT binary patch literal 2850 zcmbtW&ubGw6rS1L^w)-3rO?`1yF}VTrP>;_UOa4*RTejGNtU!8WT~}cF%n5Y=*5dy zy$XVVhIsa*7ZLw}A|f7o@F1m!90K*tdppyeur3rEXm;Pc_r33Z@6AkBOEssybY*dc zF}rY)!QX(xj6VFBhWya`xp{^jBbV7EJ3c=C2A-y{@EZklTEyn3#M>;|K3XQc<V+5p zU1s51e~$6Uz(<DvU*{NmpEP_$gABs&BW8i|vw<&vAWk55Vk3`VkWd#fjX7ca9j7#G z2dPcqnw8?u(0`v<_zejl+mVScl=>y5h9Y2PkINOw2Z1>(?OT>5RL~p_Vjc_~kmi9S zkVZDIML`s}wJ@rBVco4-eIghX8Z_t;obt<yQTy3Wqw%=ed;$mqMph&%W-bFTa)v?* zCJF)dA)}7y8_Sc3zz&(r3K>BTvO@B!3{5hq3sgUl3A#aE2?;}v-oNA$0DLEJ$geOv zWCHb-sY#|ECnn>NOrT{V4J1XP+=gms$gtCsk_0xU04z6*K1Xx84k}JBFGcHa;8mal zUNv&d<yust=fJCb0q{K(O)Ek$;{HTj;2@!>@wPJ~#Jj0k2V<*ZhQ33w6}Jg{Mf`xu zu-n?Mi7p4v8<plmu=H;?w%YBTc8(dJOdxSUQwL(E6o;9iE5s-7j8d^+8G~oN3#4DN z-3diOa>RHsj1}{itQZ*C>#g0VTdh6!!EU3MAO_J+7fs1AvldqEOQ@QIi%j2lnE%TH zL*{Wv+1u1YcuL4yJ*2d@s)ZOSA&>Ns4Zo&^^c)CCtf+_ht6>~MX9#T_HS$>BkZg-o z45x0?k!IN<FyA%eo~QxG4s@W)yENu-bS0VsiC}4-%lX1-8%JPy#vR*EzZ&qAb#?~U zlik3XP-(E}cMEiGNlb1lM2wu0rC_}_6f$KL%#(eEX>Vz?tW1dW3L@r4>h?%LR}jLA zIS~gF&ldzEJ`1``_@P(Pwr#Xl_o`LD?8z7quSkQT&N5try_616Su6XueXptk^zI`F z9l_k?QbtB~R3etxUWu@*JZd%|U<~tAywI(<cl@k$Y9>WTjW=;e<qZT=g1X%Y%$eG{ zSMuE;a##Go5AS72NEc#;gxOeHl@cpO&B<Oyy~4^^?c(YtgiS-p%AVA?(3|}qa%&_s zx%u3J*r<X;5d4pvX$V<ms0$XdpQY@lmhL1jD^pUiamsWmndBizHv-);?1HrF_Y_*i rju$^7ndS>t^i_1^$(Z5`KQ;8TPHlaG%g@lMNGDIv?-e|Pj~w<FEh35| literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_identify.nss b/_removed/nw_s0_identify.nss new file mode 100644 index 0000000..b8057e0 --- /dev/null +++ b/_removed/nw_s0_identify.nss @@ -0,0 +1,64 @@ +//:://///////////////////////////////////////////// +//:: Identify +//:: NW_S0_Identify.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Gives the caster a boost to Lore skill of +25 + plus caster level. Lasts for 2 rounds. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 22, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.71 + +- the spell couldn't be recast if caster had also legend lore effect +*/ + +#include "70_inc_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nBonus = 5; + effect eLore = EffectSkillIncrease(SKILL_LORE, nBonus); + effect eVis = EffectVisualEffect(VFX_IMP_MAGICAL_VISION); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eLink = EffectLinkEffects(eVis, eDur); + eLink = EffectLinkEffects(eLink, eLore); + + int nDuration = 2; + + //Meta-Magic checks + if(spell.Meta == METAMAGIC_EXTEND) + { + nDuration = 4; + } + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + + //Apply linked and VFX effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); +} diff --git a/_removed/nw_s0_invpurge.ncs b/_removed/nw_s0_invpurge.ncs new file mode 100644 index 0000000000000000000000000000000000000000..bdda747b244c9cb2b29a27d81a54a6ac825547ff GIT binary patch literal 3840 zcmb7H&ud&&6u$4xWb$K%BuZ#wVw%UKX(1X-8Z=rE`ZDv{J~}_b%w&>+<xy+JU?h@& zAcB8^Ye7(ODG08_wJY5eapNwCNDEzbQA!qBq>SJF&fJ^1lgU66GMRVoIp6utk9+QY zl|nseF2Av~rqr0apzt#kC_lsBly83J`Q-)C7=KMot5&P^7c^7a##_s$X0>f@Mn7Gl z>_K`!Df^eg!W;xYr7wFheW=oDEmHh^goR)H4#A%kq_pNSRP_HtV*TOM{7Ku~&j$2+ zkt$D(^jzR+6KIj=F>MZ%xCW5sH}bBrfv+z;s$hvi!_LFffrx;8S`YdpEqZ>Y9qm-} z`c_h|t|f7$8Q0^rxD+>TC+i!v8xcKU6IT3u5@_J@tt&|>DTVb$Qi~eRu$Io~<P0cp z*q5(R%B?OX`=8z4+4*>P_Y;sA^7~n;mA=aWW~fMSKE-Sy7&1E2HB>p_2zF$0N#_$e z5GkC$sVFi=$DsPFh>naFQ!06Dc+^H-Ex<pb4gXejBq9{bigrcx?}^BNCZfkiL^p6s zqFxr!NY}72rVR<!DG!#LekO2K-a-~<SC^CZuoRV1fvA>*#bP}v$oEpzj7kXj8LEMt zW~AZ%BQ7`?DCvW2Ft3yMjw2mzOD!|%j<luRGU{vL2P&iC-o3i6a_RG(^6rO_4Bp$h zyT5;be?a-ar$FMdG%J$XBRG1teVGd;Bv?q!<GWi0$#Q48MM7AloSeQIWyIc|i5QHs z>wDXu-rf5m{9t>hn;?w_NJAH8K&9%9T6T`r2)L-&ZnjP6|G}c_G$}?~j)~X9<XhLI zP^~y7eh-t6T$9bX?wF)|n5?)aai!5VnPM!mb!;q@jhM2SjIrw`0wXphg7}u-u8D1M zR^SL#-j+6ZXBZq|X~81|whp^(lE7vpwz9#XZSWrJY7Fb0)nHFpH>}2Yi^{?DvKEn+ zGbR+qn?)cqem-@wujuwY2O`}U;uQ<g<|f(gN`V|lgw?I32a}h}YewEB<Yg*uL}h2& zCe>zCtHs60*dTc;(inD@aY+ySo&e=)F}@y0H3y)3AHj5-zKexE9_^?kmfl_+X8ruw z-hjb*`YA_^upHiq`?<3{sVnM#)2=8c7HftsVczZlbH2VF72>dzgzb~6bMm<X$u#ei z!v0uJlm@FuHmAE8btl%?a>MpYY%hd<-aB)g@AiI1x*ZZuy1mPbdZTI*rBa`cbP({+ zF@B{Zdm;1-!yd5k{*riq;nbbj_4Cx3uu1XsLTNHXklm={j8U%|se4XQs&_nZjE*j( z)U|ZXWbC1fdFjqNyY)4$Hzre2CQsLWg@ri`<ctCi=E#N}!g$#7I2Ugl?-*yxvW}{@ z@2Jyek^j-Ou-lYN7^1*K^VBJai_8zw6LKsBxNm5xeufw@V+bHb`8Yrxri`1;`RM;l zDadF?**T*#4>UDvz_9eAu*R6k&Yc`146Z}X8<H!C4laK(_Nlf255r+KN~)Wcs77ds z^=-My;)W)7DDM%;W6|8)Xg@(Ika-e~TAedcucoMh`onKV`z;naoUY2UIUK!-0BS>8 zO?T^QMcH=b&x_w_4KqOnikbyn-0O}eA9Pv3iFruK@_==I-<z1TVet^l@(@#JgpRUY zm8$A6@RYOlW5$*to5s6=j_PI<)*5S3*hn_3wOe7Wx=|^@!o9q%zdnw#FX3;JNnYuC zK1cd+rr%c7_vpIxwcqsHh#K^rJ&=+1MW7tSX8JrO>Ya-z^zWg`3nO+rwfnl&YCXSc nGS>r8UP%t^R^W>X^=1DI`8Ez|9*F}!FX*?`znwT_TLtQWC*`(2 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_invpurge.nss b/_removed/nw_s0_invpurge.nss new file mode 100644 index 0000000..0e9760c --- /dev/null +++ b/_removed/nw_s0_invpurge.nss @@ -0,0 +1,63 @@ +//:://///////////////////////////////////////////// +//:: Invisibility Purge +//:: NW_S0_InvPurge.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All invisible creatures become invisible in the + area of effect even if they leave the AOE. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//::////////////////////////////////////////////// +/* +Patch 1.71, fix by Shadoow + +- disabled aura stacking +*/ + +#include "70_inc_spells" +#include "x2_inc_spellhook" +#include "nw_i0_spells" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables including Area of Effect Object + spellsDeclareMajorVariables(); + effect eAOE = EffectAreaOfEffect(35); + int nDuration = spell.Level; + effect eDur1 = EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT); + effect eDur2 = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eLink = EffectLinkEffects(eDur1, eDur2); + + //Check Extend metamagic feat. + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + //prevent stacking + RemoveEffectsFromSpell(spell.Target, spell.Id); + + //Create an instance of the AOE Object using the Apply Effect function + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAOE, spell.Target, TurnsToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, TurnsToSeconds(nDuration)); + spellsSetupNewAOE("VFX_MOB_INVISIBILITY_PURGE"); +} diff --git a/_removed/nw_s0_invsph.ncs b/_removed/nw_s0_invsph.ncs new file mode 100644 index 0000000000000000000000000000000000000000..5db8bc5fe63bca64d26d40bf01990ec237cfc74c GIT binary patch literal 3915 zcmbtXO=w(I6u$4xWb!jZ5@l#&W17dLX(1X-3>qm2eVKVRL*|c}=_Ccqqt=SSNF)J4 zL^p1AD+mfM1;LfLc4ZMn+_(!OQlX13O35ON$oSpw%zb%xGJQ}?$YkER=X~d!@0@$? zeYIlC>#V%6ysp&5<^_eH5l^`p{-#{>E6-0aDr!tVr)E^Q+x;DyDJ^k6FQn$QZEjXS zeXM2fRC-9M=r0A)ECk=B)B3A3q?}(IepUR;VC@GtCisnllmkD<P|^P%67H^R39$&x zyROsIWMn5)dC;>Pta4c!+*4`(hbn!$S&xZaB*2N0p7U&Y+8p+5k5pPGJhm#)TWb>X zQHnw+BGgYMeqiI_Bgd?m3<&~y)M47q^ytfXu5E{npc$5HopLK|H8z4~K%ZA7U4Gv8 zH00#=OJOCf_^o!>4B8#Pna&_M1-?gJ`3j}n+H!dC{+-?3clP$)g|87e$x^K*E(6%G zRY;L1B+7`6bvvk>#E9q^$)#Q?MGEIHDvFHJ2}1o*L@1nSktE@=?NA$qiva!<Z7>>% zjzxqLMWQ_s{dFpGABpI`5z!5tGEgUrY|tWrWlPMMAXuRSqTF&bo~80KSe#p12^)ST zsG<U>m|rTj!lHby1f8IQgdd?A;4~wx_BU}6gMpF`$a)K!yjLyhXipkNM%}TVl)F!T zCh;MZaex1IOINw_!ESZ$El7rM@7_8%xN|V1+@Dhj;=Z(>*#%%YmK;5!DiTl5%S*D5 zOyRp-1z|Z}ZjmrIP)>|b#+k9RZ!$(i*~b3Pd$;yK^xxds?GKPfLkvR~Wk{u3?PhkK z)$q8e>}^T^zb>h`Nh#R2Oq>BGU)m<cdd)KFn=SP6wr#RiZdoSj0bW*ZlX9)yGda&( zWa~sNPuZC1Il~ycF7Fw!DG|h*Zm%X$gR=t1sPc}qIc8j}C~$<OMTZdRadz7@fz2@N zX1(F4!3V6X39QGf!JdfRkf*Pfl!fVJBSc!xnpBu?7KzNdh1BW3qTAOjh;$;vGZ92D zHet7q0y)_T8}0X8K}Y0V0x##w?VxIH+pyjVn$2=4Fg74>RT=}kCdMoF(qMpUy;Qzd z4w@D~|2~50Bz>2P2_B<SNi4m+VrEHxqTYbP6#Z0#wqNyMFDJQ+dQw-^{i0V<Of1$6 zT|(Y&0&}6&2#RID68h`qO1XU_fkK()2^1z{Sy>va0c_6nN7PTOv9%7alNhms5R$yd zIWF{je+=DL5Ek9e<t4pQbr6-x|DkgbLQ)#h0SoU>iT5X_?$j>HQ=G7A@$^JAnIXt- zRC30sXN}Z8rzq7sUSC3OT}Y`Lg<~e;0A0*Wd)BdE^w#I)c0#72OrE~`3P;6}CubCJ zFh{OOLl_U+4(H+x;~nE{Mb^<Iz1!)GS>%6A1K4fJB@9{Mp>yVx!$syBnNs{b_Hf_O z)6UHh17=JC0Z~2)kb5cPM(#s0AKmXMMKIb?cHZbLXhP=<7?!@3s4*t8^QXrMlZ&Z2 zBXR}N$rVn=KGhcCVbre&VSTF>Gzl%az9KhS+|c9><^03ov1o2?w9iutWS&Ihk<MdK zugEPO^@rb#_FF2(oUX~TIUJq52elEcrn~j5q8tQ_pBKNg8fJnD6g7*uxVJ1#KIpO_ zCh`z6k3-h^4JSVzrKNAzpd=}El;w(4Ri}ZcTvR`rtw1(|cLSZ(M&LKw>w(`6x9ZJJ zzgfRtE5X9Pyf&Vngx6*KO_Su+zUOlcAI|jKiuxK|m%jRwej8E4uC)g;(!NNPgV;=; zheW-3F@^p;GQ2QjyHoqGTix!z8-}?7fbvRm6m12*m{4E#&xjl4A<ZLsz~=@1;`@h{ JhiofP{RfWL)}8<W literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_invsph.nss b/_removed/nw_s0_invsph.nss new file mode 100644 index 0000000..b1d7f54 --- /dev/null +++ b/_removed/nw_s0_invsph.nss @@ -0,0 +1,72 @@ +//:://///////////////////////////////////////////// +//:: Invisibility Sphere +//:: NW_S0_InvSph.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All allies within 15ft are rendered invisible. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//::////////////////////////////////////////////// +/* +Patch 1.71, fix by Shadoow + +- disabled aura stacking +- moving bug fixed, now caster gains benefit of aura all the time, (cannot guarantee the others, +thats module-related) +*/ + +#include "70_inc_spells" +#include "x2_inc_spellhook" +#include "nw_i0_spells" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables including Area of Effect Object + spellsDeclareMajorVariables(); + effect eAOE = EffectAreaOfEffect(AOE_PER_INVIS_SPHERE); + + effect eInvis = EffectInvisibility(INVISIBILITY_TYPE_NORMAL); + effect eVis = EffectVisualEffect(VFX_DUR_INVISIBILITY); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + + effect eLink = EffectLinkEffects(eInvis, eVis); + eLink = EffectLinkEffects(eLink, eDur); + eLink = EffectLinkEffects(eLink, eAOE); + int nDuration = spell.Level; + + //Check Extend metamagic feat. + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + //prevent stacking + RemoveEffectsFromSpell(spell.Target, spell.Id); + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + //Create an instance of the AOE Object using the Apply Effect function + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, TurnsToSeconds(nDuration)); + spellsSetupNewAOE("VFX_PER_INVIS_SPHERE"); +} diff --git a/_removed/nw_s0_knock.ncs b/_removed/nw_s0_knock.ncs new file mode 100644 index 0000000000000000000000000000000000000000..098066e0c0f5633f80313054cdb6fc6b24716202 GIT binary patch literal 3447 zcmbtW&u<$=6rPz~J8kVYE~KPw8oY7UR1E}DA`~tNHug4IWgSPhm6k)bN=p$DMu9}) z#|447az;Ypf8YZA32@=S6)8dpQ0aj~Rpk(giuBF*cGf%AcBMkBc)f4ld*3(Td-HbJ zn>}yy>I)0YLY(~YSwVltJfX_?ILdtZ{;4?ukJ@u$N*o;>{Y;*Ywy5_TPF=@Vr}f<y zZ2zdT>u4jsS4%>Ct6Ud`?6-DVWyi~sl0Fo!>n^V*VJ?MzT9$g@K)67Cs9fbZ+Hzm$ z<vFRL<z3{E$gwY6T-o7(z5j;y=ZZ+UuX~i=eU0KY)yhp9V3=I~C>tD2w6Mc7SVS%v z$g&6Qx^jrgxf?IV*CKx<Zgo1{xEu7sUO!%2?=;sCb5FPc`vqW!W;a;Vn}${u&)frT zdWfbjNVwF;Jw_EDJzpd83-n*pvWqLMt_d+$PE11WyPklNu<3S8jl}cTpqczbCcZ3T zSpi{bo)Z|lvV#4KdPaK+pgXzpO-ZPe&VMTSXIyX+nF~Hm&Gzrp_<i5g+-szC6h}Vk z+YS1ge%CE)0ZKw1SNxNls!I#;-g|cjgSU5f-l6>-Q$>+tv2d9ZLps`d!?C*M5Xw}U zDX{~S*`z($O5iUFn9?35s^7CIZG=q6_9eXkGy+h9U)h`R)0~HF+RvDF*!0`bq#m$| zx{m_^L!clkE3_Lvbm+G!LjnbD5X<YTY`5ggq+)&PYP{h`L7OTNbYs8O>cvg|9R-^~ zM0_7mHAvH>Rewib;$YCYVJhAwUAI>(>+!^zGK24l#EJ<czF>Yt<&?jByQixheK2V6 zyh)a^+k>sWy*qo<e?K@x;vUZg5;JFWK&GlNpQ<;(n<dL6{kE&X`en<VQIsS{j!#bU zNZ2(yCPtNw-R*a`c0cxSZ4X8XBB%r!x+o>#^!nY(MO4GXqOj)$@PA4UViM8{Zdf5Q zC*&(Tq}f@wLR3!3TXx9xuxEw1IU$R7NVwilLe66^e00*5hwX$Zi%|?+H{ltxDG{01 zR8o_)!BK%js`56sc{(!?O+d6XCry8$+s<N%9D#mR@y5~y&si7aw4SX7dLo5EHNKt~ zR!$m=29c+@*$NOVw2^7maE9j!u&-Jv+`<&+(i90dR(C`KetILV?h`$jWVN9g$yw6n zeAo}#*0GH{n?bi5wgMAF;w^Gx&{WSfJDsKc1no{MycPysE5YbFqR<+!Tg?K*bW|dj zK3<uyBAm20C}0ve?V#_s{gto?F6~KOQT1g~QJPq$OQ73L%6X}`5i~<Tiv8s<3j1#q zNXQS*0tt(AS-Uj3a@3p}Wi%?RiN%4<6E-hH5qehR#whw@<hDpya?8u}`k-nOQS^W0 z%*#-;jr0La=%*R|iKQFH6(MB>JIhE<B$F9}=tjZM7;(W^?dKG%`o!an(()xMd{a7R zPUZO0tA;)6a1iy;*LmeQPeq<QBkwC16$i;1B;_$Y$7e7PzcUQY^~_Al!}UEOo|&P^ z^H(~y8F0cQBRvfD`%2nACXSZw@>1H~Cb^50lQVYnn^jz?H79u8ye1uBu+Q@2g<oP3 VPo6vnv0mo&;cK<Ynlm`<fJYR$IRXFx literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_knock.nss b/_removed/nw_s0_knock.nss new file mode 100644 index 0000000..c8a0a23 --- /dev/null +++ b/_removed/nw_s0_knock.nss @@ -0,0 +1,64 @@ +//:://///////////////////////////////////////////// +//:: Knock +//:: NW_S0_Knock +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Opens doors not locked by magical means. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Nov 29, 2001 +//::////////////////////////////////////////////// +//:: Last Updated By: Georg 2003/07/31 - Added signal event and custom door flags +//:: VFX Pass By: Preston W, On: June 22, 2001 + +#include "70_inc_spells" +#include "nw_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + spellsDeclareMajorVariables(); + object oTarget; + effect eVis = EffectVisualEffect(VFX_IMP_KNOCK); + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 50.0, spell.Loc, FALSE, OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + float fDelay; + int nResist; + + while(GetIsObjectValid(oTarget)) + { + SignalEvent(oTarget,EventSpellCastAt(spell.Caster,spell.Id)); + fDelay = GetRandomDelay(0.5, 2.5); + if(!GetPlotFlag(oTarget) && GetLocked(oTarget)) + { + nResist = GetDoorFlag(oTarget,DOOR_FLAG_RESIST_KNOCK); + if ((nResist == 0) && (GetLockUnlockDC(oTarget) < 31)) + { + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + AssignCommand(oTarget, ActionUnlockObject(oTarget)); + } + else if (nResist == 1) + { + FloatingTextStrRefOnCreature(83887,spell.Caster); // + } + } + oTarget = GetNextObjectInShape(SHAPE_SPHERE, 50.0, spell.Loc, FALSE, OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + } +} diff --git a/_removed/nw_s0_lore.ncs b/_removed/nw_s0_lore.ncs new file mode 100644 index 0000000000000000000000000000000000000000..ae54da792351db1517986c4e5c6f3aff319de20e GIT binary patch literal 2827 zcmbtW&ubGw6rS1L^w);AO0l)Ic8RuyO0_jey?EFrt1NEXk}PdK$Wm*?VkDA)Ac7aK zdKCo!0q^3UpcfJUfFdFudhj5nha3v=&3il3ov<zx8)$aFdGCAgeecaoR!TKzeev?b zGGn%Vp21(A!;BvMn1=k&`{_A`7Q>g=1nYD<-@wuo2%jpLQ^GetDc*(<dq2y;<`=Up z6TkseydA}Fy*b7s0~Z+nf1P9OLlXFkfONv|Kg<H~vw^(7V<y9PF!Dt-*_Y@UhsV(| z(<2Ino_ox~Z=yRi@#PS?UmB7H0zKz)1wpVt5)MmymSu@@H3OLuLjw%E?+DuA&8txm z1#T^js$RJ6R;?c43=;Gk^aw`zrG=>VWT#$#*l0WghCU<9lNB?Uff#cJxeF!=0oh|l zZP6f>Cs80f%w$GL1#%Dy!LKlcq|*_k`jMcvv`R=Aa<qm{D}wK24e=G!CJ5A5P=lZ! z$B=PA5cH9(Fbo96M7a&s&=g_MCu9=Xm;z+EVe~kf$u&@MYH2ZAa|5pe9q_7=TQ1k4 z5<Lgrx)(sf2cl_3a7Nyr$O}10Dr&s#ObhX@YiNIrs?5-KAVzUNuve5Hq%!C>w`-!y z!P9!BaUYQ0?fO=$wbRNm<C6(V?9<eNm?_0!WHpF+XM~CcWE7tDE|7l7b|(}C$uXxF zgIF<d%8DT)d#$<qc&qu$y|-KMP7s}Pn1*Odj+wQvYF|Lr99(2LZfZ<0{+D@{bSZnA znhQ^Hd8@mWR#!9^BgN%`?y}+6G#4wyrKr33D`D(1j<wL%QMDj8Alo7p!>Jo_BrID5 z@NFaRi5hV1KpVQeOJfd4MxrSY2$tqJQoz>1X&XagdA4+Hr&kSl$~qf@^<+12CR7;g z#=Chsw<IUG6(f31%2Kdi8w!~;3g+>?!mu~Aw5&{uvx*|ljnwUufbJTk6{95%CY~>d zjQ9-bGVX_7MccN~>bh60`ejf0fOth340V>_lDL9W2`Z~)|EBL%HG=Ma1g^svyIjhM zsE$hH65A``mK8_M1~`mjoQfB^75A2(6;92h=&11~?x?)|U`kN8yTCbJTk}f38$|B1 zANb*&3<>E%%#bjfORG|HrKma4ol&>2(ib;uny_gMS<#ak7rLYWLvAezO>RCrFE*-3 zA_)FR&NPOsGSmeN(N9tI6H9mOmlY`~*ce4RkxcRsq#J?m7<Nvg`aOlH*zw|5BGYUE jMO&4QJQ-7L;k?w(I<@r$FCU^)kxrhj-z#_oA3E$WT@rx` literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_lore.nss b/_removed/nw_s0_lore.nss new file mode 100644 index 0000000..816701b --- /dev/null +++ b/_removed/nw_s0_lore.nss @@ -0,0 +1,63 @@ +//:://///////////////////////////////////////////// +//:: Legend Lore +//:: NW_S0_Lore.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Gives the caster a boost to Lore skill of 10 + plus 1 / 2 caster levels. Lasts for 1 Turn per + caster level. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 22, 2001 +//::////////////////////////////////////////////// +//:: 2003-10-29: GZ: Corrected spell target object +//:: so potions work wit henchmen now +/* +Patch 1.71 + +- the spell couldn't be recast if caster had also identify effect +*/ + +#include "70_inc_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nLevel = spell.Level; + int nBonus = 10; + effect eLore = EffectSkillIncrease(SKILL_LORE, nBonus); + effect eVis = EffectVisualEffect(VFX_IMP_MAGICAL_VISION); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eLink = EffectLinkEffects(eLore, eDur); + + //Meta-Magic checks + if(spell.Meta == METAMAGIC_EXTEND) + { + nLevel *= 2; + } + + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + //Apply linked and VFX effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, TurnsToSeconds(nLevel)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); +} diff --git a/_removed/nw_s0_magearm.ncs b/_removed/nw_s0_magearm.ncs new file mode 100644 index 0000000000000000000000000000000000000000..4f9e3baaebc98dfecfb19b75034b32c4cda6ce67 GIT binary patch literal 3262 zcmbtWJ!}+L5Pti1&j#NK4upW<IBbppk|PI<6+x3?x!Xjm?Ag}caW+M?I&70z9N6*! z`6*~<sUt;7kv?sdGG&q?N=1>vicpk-B1ME;xUgitH?!|~-?CW=#V7gh&CfS8-^`oc z`DWMe&%Ss0x)8OW-V*pb<O?}QA6M!RpO1SLaq`~h$;#mF=3xEPd&%mpWOeQK;KA@d zG{<wAFE(eV1tHeo6_a9rfB#n?yGkP8Zn$SvtlE@19V6NI7aiDa3(s?vivCYmg!n<q zI)7L}W>1Aj-_HdiiyfB^|Ip#Fq{H7SkgWO?>K#|X!=6y&N#9XtSW#+wN?IRh9sPHJ zJ95bgxUU$wd82;|jJSvl(oTVqlSkUk8l^=1PDD@%2&7Aa@E2(b;Y&iw+W?UXV$*kt z2~;H}7V+Rjb!~#fKclc;Il2uxpeb$J^E}m6%fR#+DQ`2y&wPbcU%ryWNgQ;0Nhj>} zgN`?*oGZdPEcqvlYF95Oqs_J9@UxALJ3u%j%RI$gsT#nP^Pcb;+;rWlT{WVj#sh%t zD3c56EU^^9F9{NvNkOVVvdGK@mCp0pbI2O?8-PFAT1VXj<}Qn#W~???^v8inzF-kL zz*rOpK`BwEifS<CD2pz^q)vhw(?FI>a?H0(-Uo|kug)fmK^(Txfv}SVtyVW_^6xn8 zhcS|Sfo_1)F}_@X5iWAjP~7;ce_oMy&5|BYr6x17ok*p$5yTVD52+jpwpO~T%kjfu zdt()n@s;6VG+G-~g#6h>63=<+KxRR46d9y)J~jUY7YoTL{I<Km{AJsnVHA`T#-k%t zv9qNsMn=`et@XQutuKRH>%)A4<W!+FaJ!&&yS+~J9CgDdrLgZR#s6(aWL;X}vgP6w zxO`)~G#BPA7g^wP+jd!sx|WMq;4){sMDxAW<qXxrR|kbMb0nM4ZPAR;)Sd9PShon` zk7e2uGvI`?i!QJ8n45h~-WYSJrX7O7jMKE8CY4_Q`&ED340wTF9ECpH4VnoPhPv_X z4DT(C=~N9Oc~0q4sNO0HnUW3n;9gPK53IDjQiwMUM4B73o1=iA&YB3m@3n@?$hiPs z&P2ViZC%@Bp&xcSQ7hCwAa9Nb!`@Q3OT_@~g;w-o6m~3t{5^teonp6|B@xZ0BP?~j zGHzvY%xu8n6vb(Wy`UX@6qSWDGpRZ%zfL=fjYU1fln`&90P}ozF>FRboCMdSIO^Rj zp^&$E35DfYR+Sp7fX&H#MtNejFJ0IoVv7*UqGvg7<fH!w-BuD7-Oj}sbx~Ckar}Si zEJ7$N19O}%qKY`i(O;Xo1HZCJS;9_pq}QTJFF~3{!Os}+rk2{zDUyQV0$WJQ)}*61 zV}UL9rM>IuBC4ye-oKrrycK!#<la|^)E%FnQNY0-xnY(t4$BVh#hW@h*4ZrUv1iiv g@ky<uZwxK`miQ$MRp8Kn<tc|3neVut{8;eCOZxm90ssI2 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_magearm.nss b/_removed/nw_s0_magearm.nss new file mode 100644 index 0000000..201d486 --- /dev/null +++ b/_removed/nw_s0_magearm.nss @@ -0,0 +1,77 @@ +//:://///////////////////////////////////////////// +//:: Mage Armor +//:: [NW_S0_MageArm.nss] +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Gives the target +1 AC Bonus to Deflection, + Armor Enchantment, Natural Armor and Dodge. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 12, 2001 +//::////////////////////////////////////////////// +//:: Last Updated By: Preston Watamaniuk, On: April 10, 2001 +//:: VFX Pass By: Preston W, On: June 22, 2001 +/* +bugfix by Kovi 2002.07.23 +- dodge bonus was stacking + +Patch 1.70 +- fixed stacking the shadow conjuration variant with itself +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = spell.Level; + + effect eVis = EffectVisualEffect(VFX_IMP_AC_BONUS); + effect eAC1, eAC2, eAC3, eAC4; + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + //Check for metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) //Duration is +100% + { + nDuration = nDuration * 2; + } + //Set the four unique armor bonuses + eAC1 = EffectACIncrease(1, AC_ARMOUR_ENCHANTMENT_BONUS); + eAC2 = EffectACIncrease(1, AC_SHIELD_ENCHANTMENT_BONUS); + eAC3 = EffectACIncrease(1, AC_DODGE_BONUS); + eAC4 = EffectACIncrease(1, AC_NATURAL_BONUS); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + + effect eLink = EffectLinkEffects(eAC1, eAC2); + eLink = EffectLinkEffects(eLink, eAC3); + eLink = EffectLinkEffects(eLink, eAC4); + eLink = EffectLinkEffects(eLink, eDur); + + RemoveEffectsFromSpell(spell.Target, spell.Id); + + //Apply the armor bonuses and the VFX impact + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, HoursToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); +} diff --git a/_removed/nw_s0_metswarm.ncs b/_removed/nw_s0_metswarm.ncs new file mode 100644 index 0000000000000000000000000000000000000000..2c158cc64fdcf282951fd8333f7cade94f7d0c44 GIT binary patch literal 11590 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 KImwaZdGEi952ED& literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_metswarm.nss b/_removed/nw_s0_metswarm.nss new file mode 100644 index 0000000..79421eb --- /dev/null +++ b/_removed/nw_s0_metswarm.nss @@ -0,0 +1,83 @@ +//:://///////////////////////////////////////////// +//:: Meteor Swarm +//:: NW_S0_MetSwarm +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Everyone in a 50ft radius around the caster + takes 20d6 fire damage. Those within 6ft of the + caster will take no damage. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 24 , 2001 +//::////////////////////////////////////////////// +//:: VFX Pass By: Preston W, On: June 22, 2001 + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nMetaMagic; + int nDamage; + effect eFire; + effect eMeteor = EffectVisualEffect(VFX_FNF_METEOR_SWARM); + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); + //Apply the meteor swarm VFX area impact + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eMeteor, spell.Loc); + //Get first object in the spell area + float fDelay; + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, spell.Loc); + while(GetIsObjectValid(oTarget)) + { + if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, spell.Caster) && oTarget != spell.Caster) + { + fDelay = GetRandomDelay(); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id)); + //Make sure the target is outside the 2m safe zone + if (GetDistanceBetween(oTarget, spell.Caster) > 2.0) + { + //Make SR check + if (!MyResistSpell(spell.Caster, oTarget, 0.5)) + { + //Roll damage + nDamage = MaximizeOrEmpower(12,20,spell.Meta); + + nDamage = GetReflexAdjustedDamage(nDamage, oTarget, spell.DC,SAVING_THROW_TYPE_FIRE,spell.Caster); + //Set the damage effect + eFire = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + if(nDamage > 0) + { + //Apply damage effect and VFX impact. + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + } + //Get next target in the spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, spell.Loc); + } +} diff --git a/_removed/nw_s0_mscharm.ncs b/_removed/nw_s0_mscharm.ncs new file mode 100644 index 0000000000000000000000000000000000000000..843cbf87b7d637a8eee6949b817f7297afc91866 GIT binary patch literal 14554 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_mscharm.nss b/_removed/nw_s0_mscharm.nss new file mode 100644 index 0000000..2a6970c --- /dev/null +++ b/_removed/nw_s0_mscharm.nss @@ -0,0 +1,109 @@ +//:://///////////////////////////////////////////// +//:: [Mass Charm] +//:: [NW_S0_MsCharm.nss] +//:: Copyright (c) 2000 Bioware Corp. +//::////////////////////////////////////////////// +/* + The caster attempts to charm a group of individuals + who's HD can be no more than his level combined. + The spell starts checking the area and those that + fail a will save are charmed. The affected persons + are Charmed for 1 round per 2 caster levels. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 29, 2001 +//::////////////////////////////////////////////// +//:: Last Updated By: Preston Watamaniuk, On: April 10, 2001 +//:: VFX Pass By: Preston W, On: June 22, 2001 +/* +Patch 1.71 + +- was doing charm effect even for players (replaced for daze in this case) +- HD pool check corrected (if found target with HD matching HD pool) +- HD pool decreased also in case of spell being resisted +- added scaling by difficulty into duration +- added delay into SR and saving throw's VFX +- extended duration corrected to calculate twice of normal duration as usual +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + spellsDeclareMajorVariables(); + effect eCharm = EffectCharmed(); + effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); + effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + + effect eLink = EffectLinkEffects(eMind, eDur); + + effect eVis = EffectVisualEffect(VFX_IMP_CHARM); + int nDuration = spell.Level; + float fDelay; + int nAmount = spell.Level * 2; + //Check for metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration * 2; + } + + effect scaledEffect; + int scaledDuration; + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, spell.Loc); + + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, spell.Loc); + while (GetIsObjectValid(oTarget) && nAmount > 0) + { + if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, spell.Caster)) + { + fDelay = GetRandomDelay(); + //Check that the target is humanoid + if(AmIAHumanoid(oTarget) && nAmount >= GetHitDice(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + //Make an SR check + if (!MyResistSpell(spell.Caster, oTarget, fDelay)) + { + //Make a Will save to negate + if (!MySavingThrow(SAVING_THROW_WILL, oTarget, spell.DC, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster, fDelay)) + { + scaledEffect = GetScaledEffect(eCharm, oTarget); + scaledEffect = EffectLinkEffects(eLink, scaledEffect); + scaledDuration = GetScaledDuration(nDuration, oTarget); + + //Apply the linked effects and the VFX impact + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, scaledEffect, oTarget, RoundsToSeconds(scaledDuration))); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + //Add the creatures HD to the count of affected creatures + //nCnt = nCnt + GetHitDice(oTarget); + } + nAmount = nAmount - GetHitDice(oTarget); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, spell.Loc); + } +} diff --git a/_removed/nw_s0_phankill.ncs b/_removed/nw_s0_phankill.ncs new file mode 100644 index 0000000000000000000000000000000000000000..552f72e7966a9686078bebbb13f9449bf701e371 GIT binary patch literal 12848 zcmc&)dyHIF8Nc_=>}=cJmbGk4p|l;gY|%>X3n;<1WV$=FBeS#3&a_(%I9;||Tv&GN zwv>lYq7eRQqC!LwH9(AnL=6Nq#+ax9ftZr;M-3%z2r-z{fT1BZRxDkA=l7lO&N+8) zr#3*OVej1UeDBx!?zy+pQ_b&O`>8csf?(a6r2+n%l@FpE|79ZmC-?KSEy2R^JL<zj zx9uAmy?MO8=cf9ek-bB=j~&3u{KU$g`_`@u$g$&-!Qx<gdio`B&KOAaTvuk9k=4G$ z+&yDpnZ78K%^2WiA#mRevb+;m&S11(9d!r>|E_BZf@dQKu$zD=L;7QuKH}ZmLDq1X zd&o$QHjyag%8?+e_#i(a#6ZW*HzH`11%YS;pkf+c=l@G=2;WgCxe5*$g!409nT#>! zRFI{)-5#na&_K=Q4N`cmCspkb<fB#x5K$VvxpKGl=5#8hXq2Q3jSVYTP_5e?C(fe6 zkO~L%XF{X>@gU3ao${SQL{%gJ`cyUr;e^#x5KOp(U8?{yKj;nR5Q-Aub8mz{Uu@i` z@`X|{!Bm!f_ku4Ih=1P$lV>9u03FU~fX^qJz4q%3y};qe!ZO6qDPeLvZ+z3SYhAru zFBht{`arR^voMg&8H-wiaCRg=fz-ZXO@05qk+HEaOibJg4zr?Wl)?I@%V4az)Fp9I zvrf|bb}<p!QIi!WatNb9A$)Z}5ZtYx@K*wg<Ez;T>{>|dsRnlNx?ro+Q@}bYpd${} zgn*E4DkgeYKyN6BVvOI7qG21XaY|&dD#0Lj!J&guF7KgS2`?_&u(rOvP%ic%0>y!P zp|`hM?~&i-;?80j%Drn+Zas*Z<9{Vz=%B2~KWxi)o48%=L1$ZNtQm3VSSWi|a7grn zD)S1H!&MXI^1-pbi9LX{4v!7(-#@ayC5T?gK#5~gyl`fUag+?Fiazc6PB9jc3-H^I zg1FQTw?N1iE+>z#&XYbesTM<{w(XOnw+&6+Rk&$%EU6%gTBycJuxJS~)!IPYa(XS# z#eh|WMMwVORe?*=TioT5gefEs`y@U66^}$})t7>jcBKrKsvb!;Map`gq*SR{l8b1I zluj&#usIqQ^%%3RGp}F`5y00+HYP{a8}!LZM0r%w92=Jt6r?$pR)%DOZGhRfh>UfI zn{Lau#tELX9-N1DHyX@|SPZk_hpYTu6M3x?Nx4K#p}lP|WJ%POY19?PZt~R1Hf3>P z%);s>-c7hb<_EHk>%G0pXcVr1UoI-uihW+$*86uB2L?*LMWuoB)=OgeT?)07&Y-Wq zw{%^pIN&iz))7cMD7&|(iNv_mkrx8)k~NbP=LQHapq##9t<YE4T52XP&Pfx|=ph?X zbS%aUSwg?v2%g>5?Zuu_p<FL)DV0mL&o*(PY~)Q`*qoPVrSeMg=HjGANyjR!zaKk} zP2<o^y6fYvr1Uem+f%}GcX%0QhnB!7Q7(TFccyV@W=6chLi)!<`Z>F<LDx)@>##*4 z>73l8O_13b$Q~11tWbZSA`}iz!3C7Ku{zqPQgG2P{a(j>F{N+Dyzo5fiqd%!^9oz= z2@FGxflz+S#uS&fYRW5SqYmNOr&{qUO*{xYWjn;x-*=SBr5Ow|Cv=m<?<bTk)j&sO zGrpWqsGzG06a3iHe{T1&cs{n&-$kY@!Sqw@-%&62ZSNn%_#@%mQruS9S?V7^&$P3T zeJ;3$g5XVFv2!F15HHcFcwg~oG?tN>Nm7iT$y=wr6V9}9lCHr3t-PV>A(`{BVbM3@ zVHr5$QPr@>4TzE?Ro_7@p*qG@lrf=^9oQc5poju@yO%s@MxfaVBdcXD*C3x)hClps zJbsgW3761O6cx7oEb=zPM5-Ci*=H2p<80$3#;1@4i}`31Mt@YP7%g8Gh2RV9#XkvW zxKAU=2(+9}N+JiZ`Qyk&hv}c<CGuOwC2)d>Yh?*0w{_((k~r}ILW76nDM7KJwRP(6 z0ARdu*P8m)dZAqIA7ma^YyI1H4AkIHo5kdU>6;q4T;h?ySEZq=Mi6;I;tpyFXk+pr zd;#1U!UjYrnwPgv410-;Jm&R?F`LL@cv_UMuqCV2(4cX(Mhv7ykgrx&kQ}#k6@FM5 z*N9c^TU<m7Z6Lwx>TLqmWXV%V0iV|#K8n;0n}crNL0w*<AYAyW@Iz@eOKK9RB2$)d zhMTk*oMJQhw=<!$k$bf-j`b;CZ1h6aI~mWj$h_BbK+1R=QX{_$=O`_~rFg`z4wh;? z+v>$iVN1DKuWawB7y65Jlb$AFOU0@=MG1dL&ua^FV;!5ph`&wqpOW8=l+%4-w|bvf z)LDD{07~mtL~@#hYNJ501b0huxc1)DIcdzervR3Hcrit8Ncc}Sw6`L%b@h#NlVmwR zPgz&;(4Nptk_>g_q1a@-gXS;;wTCFCt*9OJ_azN~_w6XxO7(5U3Vd%I-dE_Y6svT0 zVD|y99mswG5stzr0Ja+Vkx=iHL_FkeM7G)Z?a6gR-kz+WkZzGe>S)Wu;){AqRi?*4 zv0B1;kZi_1+loEcYd}G=-rqjT>J(nJSg!!Pr8qP)HkY<m`Ui@Zo3JiadWv8bA8h!K zg)^<4J%`*8ZJcW%QRiL4fM42xZaRGU<pr0J5;5_;r<$=t{1lpXLo-oCOyu9bLZyb% z*xFyL)~_oKRGq$^IQ$$ULx^GW4kK08_&!-o1jLI7PZA;VWbC7qEQ;BUR9jk@x0Ql) zR-UF%XW7G`@E|2%F$nSx!K3fQis0tc65Kfpgr~I5YZIpvD(+19n-lnOUvA^@Bd1Sq z7SXB}=--bzmt(nY<Lcqf`HjObf9>?<&gEQ(XfB0$T;f4C|9xuAm8>D^T+RT_NPqH> zQaczMNFeJ!JQ!Wx0k2$*{}(aQ*U7Q0(ltZ||A9z7Ysb&2tSudK4_alb5R<+Ble=GX zN(Xnc=Kg{cMs&b;8G`^1w_MRWKv%}$q@EAjK4Q#%)SR%c4UIQT<KsgIM$9iBu{wus z)H_<3=QV7Eks{!wc9|r$s4{l?l4lvL)0=RSUk-%E{n1&Y52AmBQ9NCk9E_HU`&5YB z*`v9?h-xrsZ#-1F2tg;wPzsF8Jl;W$JsX5>_St7x82Ry!qx$g~QN<1|a`;z{$OQmh z;-~@(w>GN(_bNF;ZO)}i=q}Us-05Pzxyyf#E@?NvJO2(N-;v@wdmSC+=9Z`<Itq2< zWCK!|(SX*3zG(zz?hy?0JG{R!iiqpy`N_X1nKF|9;dV7kuL-&?!jUE9+S$mJx&A~8 z$0&ydd6d%&GI7Q2Bb(j0{8iaGFuo8KX-}r|8YF8TbJOPEUo<RJ3FrB?iH;hYG#zgt zC6rMP)(+TZv<;4Y7}}CI8kJtb_etrHwA7eq=L^|zR2?adK|w{N#VHn5Y7tBkWT~vU z5HDxeeZpz4NGA$c&!Vq2>JN*!ZMA8|q*-cRt3vT?%bm^@Doy&s6B<035Q>Ln3jGdM zhci;f3PPQ+0=7u*(=Xzk)3EN@#^&>ZyhBysm6=5s$Q!X^6py1I#iSy}!H-BB5nO^= z2*Sc#9@&;E^?}mXZ8ef1W3hTwoFj>sR;#hvu2kjXbwb3A!6V9<47Ph1`J%(CTJ)@J zAxMhE1L_5e4f@wY_vD^r*FgT9QeWSWO0iz+uM-(efP6z}X9;9GZt;rI_C&j>u8@0r zPajtJn9`nM-YrU`z^#p)x*K^ONVBpo3~z8>Wl%G3U<)7Pz;-s#ZTGWWe&mY|f7w*@ zg|6rn)&AzLQ#Jnthwj2eYL&~M$uD!>;tIxB3@>yv+(v%Sm>_U+uT%=PqP&K6e7-=Q z&mc$&g2bA9c*#R1<HDWsh%v!<wqe|Z_s!KLUp<O7&kkqC!WcxJke4ETSPDB@1s-;= zQtf!vuA{F&zwJTwb?Mz6R8QZ&=|Sx|TX4vO>iOM+9<<e-)IID$a~Ap-ljJwhc-G+P z-Sz6k<go8GuK&PT)H60RIhwZmWvsUJPToGcCxx_*#q5@$$+Wc|!**b3{N|C#6v}R_ zwr(F98`?8Ep0eydR_kVL^1vTuN$7{mgaJCO#DDGbga8QBW+7c9OoI01Hi>ts<B)~N zWZ#55C;n5Gd^Hh~Z<6&m=T1-M4H+S}k5|ZiLlC{rvZf+ZH?w@@*-19pa<)W4AxR`H zJhqrbvl2vikVws9nM;R(B}SEShzQ<;apH|H)8eTF-@B5^Bp%;L^rZyRoo7)dy3s1r zMBloruX_>``$0p)E1>obh1;Nx*r2{))XaT`m}bU8LRE+H?TLBi?>;3F!Fnus)U$#? zl-)+MDa1?ql!pC^6**-@w!BLJe9rnuV{zYEI2U8it}#C6uW;C$R^wqvSnxgpNF4nb zMZ!U=h_#@{BS_4TBv|1S^m+tosqjyq0G2q}pO$dX`vf~Zf|Se;9`p%H9zn~@`U-CH z3H)y>aw!CBeFFb8iB_M0{zsbeddhYUNfSWPUSuet6P_cIPS=W@Hlm;vfHWRa5P961 z5d{M{js(24lQ<u?X?N6wEwh_xSG9JSv`Zb{gzq(Scxu{D+OVcb_+%j$$>X>7!}+o| zN3uIX1sZsq+CC!L0aT~0BJW_xO1_ebdWcO>v?qSMg7INk)@2NVn*g$>0k~l!zS3@W z{?|zr3w=?8LENhZ8giHpA8QEBMCQ0;4!=+;jqe$`6L<4Q_f77TPt%4c_8)*``<)WW z;0inFf1dZhxADG;g2*i~Yr-dPAb-o-4H>~_CjHtv=y}%L6AaubazASQ2^ZqiqbRif z?V}Pc4;%M1{1d${K|#WPv{naC(`tA3r_IsGjFvP#{r;4bPe9|V<>LZdg5&=8hiSn} zjnJ5yF@a8m=7=Af=iSgqO(DGGdzk9UL(?mSoU{*3kT0RML#o@ZQ3k3NN^+g8MWvXw z-wDXhhC>4=8B^%jytG7*eGvrSqXyVb<dv?eTJzu{rN?I(d|j)E-B<~h^KMF2<sHbd zVa(68qL+BcQk38$b|qvsW96PTQ?Addttl%}LbW;zD-6)8Gd<yJC6A(KWHnAwHLx?m zN}Q^`%6Yz0nT}IYqT(m6fh=}v<J>*P7nt>xS&9J}Ppa_+ktDZL_T2D+L~iL3%>gok zsb{*j1i@Hhi&ece{1n~IJMcj^O@k=;^)OpkdqN96i1}Z%xa}OZ2+gTbnij!*2`%(w zCJuWOUyPrl7J>QFH>m|cCj$z>&L)1d-SZDBn$ToD_~!)^?M`7b2LAfEStoqNiH&^t z@As1U)Jx91-J>==W5IEZFoEtfj=I_Vrma`iB#rG8j&SF*^0<*DEvCjd5b6qjJaP^I zwcp9hCKKp;<!r|MoRVBtVsq^JctjO1)^FTtKH97_-w$fOMv`2yWsvJ}XG4&$nvUgz F{{rTc<YfQ= literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_phankill.nss b/_removed/nw_s0_phankill.nss new file mode 100644 index 0000000..846b541 --- /dev/null +++ b/_removed/nw_s0_phankill.nss @@ -0,0 +1,93 @@ +//:://///////////////////////////////////////////// +//:: Phantasmal Killer +//:: NW_S0_PhantKill +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Target of the spell must make 2 saves or die. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Dec 14 , 2001 +//::////////////////////////////////////////////// +//:: VFX Pass By: Preston W, On: June 22, 2001 +//:: Update Pass By: Preston W, On: Aug 3, 2001 +/* +Patch 1.70, fix by Shadooow + +- second saving throw subtype changed to fear (as per spell's descriptors) +- missing feedback when target was fear immune +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDamage = MaximizeOrEmpower(6,3,spell.Meta); + effect eDam; + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + effect eVis2 = EffectVisualEffect(VFX_IMP_SONIC); + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Make an SR check + if(!MyResistSpell(spell.Caster, spell.Target)) + { + // Immunity to fear or mind spells, makes you immune to Phantasmal Killer. + if (!GetIsImmune(spell.Target, IMMUNITY_TYPE_FEAR, spell.Caster) && !GetIsImmune(spell.Target, IMMUNITY_TYPE_MIND_SPELLS, spell.Caster)) + { + //Make a Will save //1.70 - removed, the immunity and feedback is now handled differently + if (!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster)) + { + //Make a Fort save + if (MySavingThrow(SAVING_THROW_FORT, spell.Target, spell.DC, SAVING_THROW_TYPE_FEAR, spell.Caster)) + { + //Set the damage property + eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL); + //Apply the damage effect and VFX impact + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, spell.Target); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, spell.Target); + } + else + { + //Apply the death effect and VFX impact + // Immunity to death magic, should not make you immune to Phantasmal Killer. + // So we need to make the effect supernatural. + ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), spell.Target); + //uncommented because of save subtype changed + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + } + } + } + else//fear or mind spells immune + { + //engine workaround to get proper feedback and VFX + eVis = EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectFrightened(), spell.Target, 1.0); + } + } + } +} diff --git a/_removed/nw_s0_raisdead.ncs b/_removed/nw_s0_raisdead.ncs new file mode 100644 index 0000000000000000000000000000000000000000..ea3dae130e022a08b8029ce0f3d00a6008566c3d GIT binary patch literal 2901 zcmbtW%}*0S6rY`)7D9^<MEocplcE?wKvE4}1WIY731ZTgk9gUj2r)r|iAIhXOpFQf zEb<3vOuQ(6fJYAHXySorym8P35)M7o)Hm<VwA*IIO{8HqJM(+L-+OP~yxGY_Motg( zT^VI8G}X@FuU0Y<U@gl}oqKZ+SLPlpE<5vgo%#C<b5E8Y!%9=t%IeAh58}_}=11>M z-3%EUdsu`Oi^Uzu0*v*mA<cxX#BjU=6WiQ1@k#{MB1|9Iwgr|4$|bhW@#P3#HY|K8 zFwvo~k`wYL6R7!;=t43mas81H3g%+_LIl7@P!RYkDp3Yq0_+Jb0}d$}YXQldjbCbx z*JH3pl4)!n6)Z-{STJrQsTCsky6DZ)!6HMxO?ljhW3*Q%%mWcdbb&@mAwpV&y$0r* ze+X5<lK``ZEeN&SqO^JF7Etjyj`N@!U?(SMoOmX4JCTZKlg_PpCYwx~kbx^k`vRI~ zvW}vXE_T=$S5#f(Ev~bQm`FWHSd~N2Zvg!XXFNISq@1x-a?Hr!PDjxkwvi~&Z89&E zlYtSVnJJhSL!v4x+^Nf?A7>#?=855XI7p!#>$;Hxigy-8YFI(j9*y5@?u4}+ez_4g z>N@;~(fN{RSYbclIErCd1ZYh)wADqcOHzDCgEeo1D0)z;d0~$Lv(gbcG~3ASdg(+e zb)blLIN~=q-+19A9bmFj;~I%9qS2>V%*&_);gl&of>6Rno6kBPS5kEef2>MhyMf@- zWaSsK<h;YXT19cnP=K3JOIH!Kogl_N0vYoPA>!&Ec-Yt>;ibk?SyQE!tFxRZ_6=ya zx$Yb!IaTU(ur`b5mcMm*_@0t=F(l381#pkG;Tw6OA^jm)^H0zvKcF5zpk6<qm><wJ zKcGQBpoAY#y&q7-59o#;&{;pARzILKen1_5KvIG5iinu1!Y8zGsKOcQ_;f8#Ti73= z(o6>~7JsK*HT}B!Iwz8K?m8_nW%$VwRQ8DQp!&EVkb0Q8RZq~tf<u1HZAI?t+sgDn za|6#-gbAy)vN9~Qew@NSW@pgGKEBjTcd=12cX8G*nK;hbb^oD7*}+kLbEr?R(x(vg z&kXGj#7;mX3i;IybhSLi_pPXnyFN<0fJ?5u2{1lxS6;Y63{B*A5l9I>q~gF$wz5_7 zZR$ht8Ik`bzi?f!rUoj$4;2njGuz^5=p7N_%^iQb>=j0)FM0YHf^ETN*fVrTeHCr- faMV@wAW>#uFG`;|=WPfgPx-`vQj~ri^OF4m)RGvU literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_raisdead.nss b/_removed/nw_s0_raisdead.nss new file mode 100644 index 0000000..9b03e35 --- /dev/null +++ b/_removed/nw_s0_raisdead.nss @@ -0,0 +1,35 @@ +//:://///////////////////////////////////////////// +//:: [Raise Dead] +//:: [NW_S0_RaisDead.nss] +//:: Copyright (c) 2000 Bioware Corp. +//::////////////////////////////////////////////// +//:: Brings a character back to life with 1 HP. +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 31, 2001 +//:: Modified 69MEH69 July2003 +//::////////////////////////////////////////////// +//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001 +//:: VFX Pass By: Preston W, On: June 22, 2001 +#include "69_hench_lib" +void main() +{ + //Declare major variables + object oTarget = GetSpellTargetObject(); + effect eRaise = EffectResurrection(); + effect eVis = EffectVisualEffect(VFX_IMP_RAISE_DEAD); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RAISE_DEAD, FALSE)); + if(GetIsDead(oTarget) && GetIsHenchmanDying(oTarget) == FALSE) + { + //Apply raise dead effect and VFX impact + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eRaise, oTarget); + if(GetDidDie(oTarget)) //Added for henchman + { + PostRespawnCleanup69(oTarget); + } + } +} + diff --git a/_removed/nw_s0_rayfrost.ncs b/_removed/nw_s0_rayfrost.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e625f6886abbbe3718b85a3c8c1b063bf509a0b2 GIT binary patch literal 11063 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 ZXr7CQMrsP-CEvqTPu|qNOvtI6_dkDo{MrBj literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_rayfrost.nss b/_removed/nw_s0_rayfrost.nss new file mode 100644 index 0000000..0f3b821 --- /dev/null +++ b/_removed/nw_s0_rayfrost.nss @@ -0,0 +1,72 @@ +//:://///////////////////////////////////////////// +//:: Ray of Frost +//:: [NW_S0_RayFrost.nss] +//:: Copyright (c) 2000 Bioware Corp. +//::////////////////////////////////////////////// +/* + If the caster succeeds at a ranged touch attack + the target takes 1d4 damage. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: feb 4, 2001 +//::////////////////////////////////////////////// +//:: Bug Fix: Andrew Nobbs, April 17, 2003 +//:: Notes: Took out ranged attack roll. +//::////////////////////////////////////////////// +/* +Patch 1.70, by Shadooow + +- empower metamagic empowered total value not just dice part +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + //1 additional damage for every 2 caster levels. + int cMultiplier = GetCasterLevel(OBJECT_SELF) / 2; + if (cMultiplier <= 1) cMultiplier = 1; + if (cMultiplier >= 15) cMultiplier = 15; + int nDam = MaximizeOrEmpower(4,1,spell.Meta,cMultiplier); + effect eDam; + effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); + effect eRay = EffectBeam(VFX_BEAM_COLD, spell.Caster, BODY_NODE_HAND); + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Make SR Check + if(!MyResistSpell(spell.Caster, spell.Target)) + { + //Set damage effect + eDam = EffectDamage(nDam, DAMAGE_TYPE_COLD); + //Apply the VFX impact and damage effect + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, spell.Target); + } + } + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, spell.Target, 1.7); +} diff --git a/_removed/nw_s0_resserec.ncs b/_removed/nw_s0_resserec.ncs new file mode 100644 index 0000000000000000000000000000000000000000..3b34522f51874cc74e94481ffeb2859f5376ba44 GIT binary patch literal 2974 zcmbtW&rcIU6rS1L7DB5KK>SgDOp0Oz0kImq2$s@F6RZiXK)h^FgqR@Vpphd66EFM$ zB8gXxi5KM$@W`PgUQ9d?jW-UOK*FJin)>FwneJ}0)=h*kWoEwjz3;tweKXlqPD~FC zTpD96^1743PrYDPh_x+0weQb8TA6#exNOhgv*#Zy%sp9p3_HzLJF6>0Mi_rhL;upe zxtAehQy+`5a=E-CSctJfW|`6tj+<6k{twGXrpW<Ql+M|@fs+zWHn^U2NvtpkdBiMa z-zU0=2n*c*tkJ-8nZq!}G&3R_S_Ld-xl6@eSlBi!OVT5DAJj=TKbb`^0PI;lfP)$U zu=zsLL28BOtEKdV52>Foq3TxcPp%m)n6CpIOM)p2$PLhNMp<1z3rG=C^9V)XLo+Vb zgE(X;cF4d6aE$k>^!p&9<WGBb_}9Q(@sHpto)RCG+3n?YDn5Qo=<zv@^WZncTCy{C zGMBrZ$|Un?`&KfSPfsBsWC*wtm1Eb74HT7dvBR0TqUs^FxX(N>k@qlRWe&kZBlw@R zC(>CvV~=Oj<Jt`tQXI`e2~nbKGA{`#3#!LnZ#}kY5*b0XTUFs8u0o#lCx+)EkV2~| z9Vy87TUEB26?~dw$(ya+K)+*LY=VQj27gf$Ur~m2_5;4x)+lTOw5}T3P6<R>C>v>D zeMf^ee}gzeD}`;DH^2nV3TU=b*!A-h^ZE%fzGEPMbMuuSUQmA^D><%_lSMT8m`L~; zbs?NGrABa+GSTLfipP~yRl*;t($}dWo~-;rmV$qHSE?vZXbO-S=c<aR*25UL%$i>a zF;}mlmUu{bq3~4JRH;sNI(cH>fOgw(dL>NnR0<a+v-rI=-nbOLqhy_r2)%d?<gpH% zkqQMFjEK5_f-VFB^#uX-2LUC5fUX7s4F>_Gf`E<%0mXuVt_J~~4gzWq0y-50)D;9I zBnYpFn64`Pgf<RUI71yDS`JL6Irc}WG~I#A<=<1TntoaRS|E~j_tgzcnx8Czc#jAx z_o+t+^)P*_9;YuBe93FvRwP&5R=Nl38+f*wy<T|3()+bMz~caP51ZJ>m-^}Y(Vp~O zoYzeF3A<;^hX3$INyqUB?o0WGqn8$Dndj(q^rNDroq|r)Kv$h5W1q)OJoPa;1>AC- zO^6v2ruV|NtdYsWE&?gRhg2NoK40a&L%t}V5&2*83)cl}ZlvOS?-4-FY|B7H|A-I| zmo5fz(ouzxsY{+7Ly&mfhBHGs@>R5DMB}ca2Nw<ldr^7joHgZ>*Qxe$hSHB?QLsPN CjW1;Y literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_resserec.nss b/_removed/nw_s0_resserec.nss new file mode 100644 index 0000000..b6d3b38 --- /dev/null +++ b/_removed/nw_s0_resserec.nss @@ -0,0 +1,40 @@ +//:://///////////////////////////////////////////// +//:: [Ressurection] +//:: [NW_S0_Ressurec.nss] +//:: Copyright (c) 2000 Bioware Corp. +//::////////////////////////////////////////////// +//:: Brings a character back to life with full +//:: health. +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 31, 2001 +//:: Modified 69MEH69 July2003 +//::////////////////////////////////////////////// +//:: Last Updated By: Preston Watamaniuk, On: April 11, 2001 +//:: VFX Pass By: Preston W, On: June 22, 2001 +#include "69_hench_lib" +void main() +{ + //Get the spell target + object oTarget = GetSpellTargetObject(); + //Check to make sure the target is dead first + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RESURRECTION, FALSE)); + if (GetIsDead(oTarget) && GetIsHenchmanDying(oTarget) == FALSE) + { + //Declare major variables + int nHealed = GetMaxHitPoints(oTarget); + effect eRaise = EffectResurrection(); + effect eHeal = EffectHeal(nHealed + 10); + effect eVis = EffectVisualEffect(VFX_IMP_RAISE_DEAD); + //Apply the heal, raise dead and VFX impact effect + ApplyEffectToObject(DURATION_TYPE_INSTANT, eRaise, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget)); + if(GetDidDie(oTarget)) //Added for henchman + { + PostRespawnCleanup69(oTarget); + } + } +} + diff --git a/_removed/nw_s0_sanctuary.ncs b/_removed/nw_s0_sanctuary.ncs new file mode 100644 index 0000000000000000000000000000000000000000..384521b6cc634cda4156e249b4a8d42bc291b44e GIT binary patch literal 2859 zcmbtW-%Aux6uvXFyZ)F(w~#c=9JW+YOijXGBF5b*hGtcEhSeToFf)=iHg+NKrI%iN z4ubxS=uaqu2>$?yh#q|KA;gD$5VmvAnR}hPOaqb&?%wa7AK(4XId^8Y<Xg4H8w)Fp znX^|J{PkK)&*8_=#fR1xXBb)(X4x3)bUOQBX>dflTQnxPZ+@Jw<`MgvF*t<(3t7fK z>M`Iu0@E5q`N=X_rtND6Uz~zH|Ng^4_C?3VNd&edP~#S`KoX}I<acBO{+MNGz(PW! zv`X+eiY#@LEU%0F=%HV-R3GAwxeizczlr0CfeYXWgx?ThU;&FgP3(vxVGs?r4v71a z#SIIaH$yM<Y(EIAPEfO}nH(1mMCsG%Cm7|I7sA%doqGLQqwyRf^y+DzY$<gc0*liY z4Lm2%M>X5LfGkhS0y|_f6;*^#NIuUH5>BT;^%FsARY;*gLu)9J4Df@jK_>~d2?B8? z)F22NL_qp6L5BiDg&`>t)l4`IH4zqnOq2<AF9ORAJ!dH<w?M^-<;8H__M8e-z^R6I zx$K7}`t3P2$AbeOLp4Ct9JR_Xj0+q@D5|SzO>*&WD`;PYN@i%=AE7ue>@D#FDg$<N z+vipGUezm&CxG;9*SA`&omQ6VpA8^!NKFM|CL9hkLsf`R-WsCA0x}H0)hdvr@p2P_ zVL@_?@tVd+Yl;&CBXhmE`(mrPXFuMpcN0XXEYjdb$uh$as^&GUhJ~9<9V^WLZH~oV z%Fd?Zq9wSzS6xbLtBQ-B;PO;;*>HWuC6nN?q`J7PLF7W$3XP6zc|2dgD2q@GyKcx5 zuqYA05A>)evca(eZK(1twK?2Tv7$gC*qV_SC3f2g1{RlD$FzE6gD32>LD-L11A9WI z!D@V%V@gcTlo8Q$TpR_@Yr;Xs^`db$SD5yW5+ait;<5}8aU*rRB%o&zhL!W4FLFlO z6zDSQ22Mp8+i<PsRI6^;5k4T^5;X?gOEFzxmXZTh*2?ZZ*QqK2y5|U73z)lHO35g% zN{q$FE9RD#NA?Cd3}c>(6WA5|zMGa#_9U;U{w}I0+*nvM=n~ZJ5yYJI*PW7Ud!fDJ zdT#JAMMApGQzT4}rJPd4N>FpGn^Cv0!WRcNN!X+aY1!i%7rV3nLvDqHBDXd@#|M>@ z@Vx(#GbuvaG2{alvR|O==a%lwFD+ACuo231E}6t7NKb_5RqcvE)#sFaGT_^!VhggP lt)zpt@KTWw7f|)C!$IVu&*N%?bSu)$)AhcBSH+3N{sKZxmL32A literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_sanctuary.nss b/_removed/nw_s0_sanctuary.nss new file mode 100644 index 0000000..bcad3c7 --- /dev/null +++ b/_removed/nw_s0_sanctuary.nss @@ -0,0 +1,58 @@ +//:://///////////////////////////////////////////// +//:: Sanctuary +//:: NW_S0_Sanctuary.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Makes the target creature invisible to hostile + creatures unless they make a Will Save to ignore + the Sanctuary Effect +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_DUR_SANCTUARY); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eSanc = EffectSanctuary(spell.DC); + + effect eLink = EffectLinkEffects(eVis, eSanc); + eLink = EffectLinkEffects(eLink, eDur); + + int nDuration = spell.Level; + if(nDuration > 20) nDuration = 20; + //Enter Metamagic conditions + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); +} diff --git a/_removed/nw_s0_silence.ncs b/_removed/nw_s0_silence.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e8ea49f84e5f942ee717459f258c0fd031d75ee7 GIT binary patch literal 11632 zcmc&)ZH!!18NT<<?Cf@DXxF-hLTNkfvaMEXzoaEtinF`Zc4T(8nHhGA0mo&!=)$tw zY!Ueo4N*yd@Ixg*5i!6Ik(dyTK#cJRL<0UOksmc++z>P+sS!g%YSL)w`kd!I@11*Y z?@noeNW;$D_q^X<=RN06WvG@P+w$4XgPynX;2IDAb>+Pv!+)tj|H<?64IVLiKI5(O z78Vv>17^xVf@k_tYYlB~wR!rPfu*iWcX(d-e+r;A0Q@qYHeWsS*Y5$~*`NjR{zL%& zoF;;Iz^rw79iIQmAmu~kDZtI=337hL1!57TuLQouq>`tJ|Bj_=gL1qr%6h}|n3v`! zxKZgKo2S{AQwDSv=!JP#1JcY}+LK<|xF@?VoiTpk8emZToxpnWZ$T=ZjxG`jCX;Z+ zVm;?zVO9J{+_zf72xXM|)?3PZ3G*Gb#Gxls5q-WR-i29E?ruScrs{uTf~EO%kg;)I zHnw|zV`Ox&Q7e^;m7$_hc>RkK2a_7!eH+0bG);Z-F$y0R;rx3nZ%pagzqL_rlnb?b zqgt$w6{->l<k*rxz5*$?V{_xs!O7|Aug%Wh1{=GAc9h<>w##6w3DTEhYQT-u=oFoj z6CI%)Q(~P>aDhVjCXXN`It^8y7ZB1}urxz}UH6HNTn!n#DcFc)2s$MoL?8ss3JAHQ zpx`|Lp)>?UF%U{c{Vc3ORe&w4V3jJt2=_tD@gS3TP_Bd**Y4QT*jFeQM-YKxwNV%z zt~G|_d$~APEW?ENQ1S3-Myl)Y<g4WgX_9%_{D4WMt5g7?ODr_hjL>ciWqa}-6#bye z(!yM`W};lab9!X<03e;s>4`&!CJ%LZ!OJNqaa__~3ty{DjH6^kMfAz#d&O8lF2Z*= z3gW+LxFa5g%gN(gOKGt`rxrt_?7q3F+b8DkF5Emd9aoS<9aO^vrNc|r>eXyNqmk#L z=XN5>KeEw_k_;F3J0yMr$s;bw&}hXWiFI5`xy2<JFV!59bb^#^E=j3Uw<MR)7Ac)D z<q7N7oKuf6>w5DF)(`=FU0`DpCO9K-3Q?YtG)G&H1O<Yyw819}WF50@B^hh~U&!V= z!vs%Q_m*Kj8V%+|D29Ie=|<TDl&7B!Ig)a<nnHWCFl06MiB?@v>@|*B>9#B`4p~^; z#Je#U$ktD`VZG=2j7I)C_~nvPy*T2OZDVw-Sgn?Zi%J9MZIi@6)kOS?T1sXxGCEw^ zT`E=`2Jt!qX%A%&54DjPwo39c<rN`oCnwAe5L`q#BgJ}Qq_C&dPF$FiCZfT^HlpZQ zj2W_oe!B@g2WtC@L#0BwQ5Y<hOZ6MtxKK95HZE+>%dt{<C3tgHT%)*SmDbs~PDdP@ z#G#$^sE_;N(id^JqlDvbe?3Nu4$ml2E`JzzCUIzIM!3O3`X@yCdAqJf*G^K@VJk(_ zdAUiOAhXevJ;u9Kq3%9KsHu2PX$~%+#0}Na&X|CUe(Cl)=8GwP!`ELXT~RtuY+hlj zIGL9{3VhH<t`D0q9`^g}i#Morw6iU;jwG=I`6^xHC%OUX#$^bD6?hmsYnQ_y^SE>= z{ymkq(-@F%^{I7FHV@KEhD)`=V7Z9lu~xziY4dJxap<~;ux%ntw~aEFAX@dJ37-SI zH5fDtqs2yPPi3@PwA_Ss0RuFohr^J&m9QLjFykD#q?_E~g>?E_czNk%lp=={La#Y; z<kc0IkuuzbR3rTy0HybHXf^=NL=iEOe@6<HI&9xFTC6p8m#VdTOToUBvY^-rKIyL3 zM3gqWK9Lw{lYE*8vE9@~DOr?EWYeXnd?2C`X9@*RbMWZ01EhbaB&hkDe;5kC8!Cc_ z&r5K-SID+2>2YmrqEX8h!`~Idhx;-+n~$D3vr9y)TA+VF=<UaHcIT$%uKdpCtKUAe ztGA!)5X~h&j}Mj~HU2R*=1STS_4d1?lj_D#_#0ljGc=GuHctSr=z&)@<NuYMJhsXq zQ|VeFz5ha_p3CudK5eU!+`UdYv5U#t1y355nZxcrPu5a>bsr=3dk7HFupx2<)xr3! zfXdHHx#3J<r+#Dh<L2bQ#W&t8&CE>PF=@W>SQZ)3$uhW5=3T!PMv8z>bJA-DRT+B- zmi~uzdJ`@Z)m1S<!!aVVMjr(K@`E0t;?dX;tQGgE5P7oW{9pM52Y9zgqtc|;UffGE zKpB^%%GjPKpquTNO=0B5KaA?9&Wh^1_Hokv2MQ!b6<AoYQDubwpH*^{+MG|7&|Rj# zaci+Vz;g4H{}El1Gv9mv0VCg);yZU8y^&N$bQJ0+k_|{<Mgv+Cddvt+-7gsCyMNdo zYE(hQoC<@I$-k0M$TX^tRmp#UpPHqgF}gm&k$$A>ZRN@ZmV<YTQtIc5Jj&_i*v^+u z@9ckFb`EUpL{()>#?FI3wnibsLd!DmnU-ZLVVP^2=%|(_>3AzCQH9FE+5x+aw%*Z? zLR<1iqtZ|CeOfvsEj8vjbAzfQg<<Cg#EYI*RH;Rlizk&87UC7mx=%;iE7FO=)wAep zt***kL;bZ}>#wn{RiS#(7!@i_`lA!-JslI8vQGH{RfjVY#tK3sV+CvxGbEe&_Y91E zwzc_uDDO}ec;)P(^W+xoIK@ZCN2*{N+@lh51ec%=g0OG_k9nm^qgvXtw@v}bSgdXj zb0l`rwF#>^r79P93lTR4hbUt**zRHEiw>^_u=ZsOK~l7i^Mqfd*r5N5A3g1J`D)1T zE{%*_Unw@~qYWa136O8}?JR+8$0M#KZBMkD>N<I*_jHVZ$7E|R#b&iKmIAl6cIp9O zdD5(`3;i3T*B{i(8QA<M&~7&CE#9J{vxiwOkGZ1#=h}+CI4U|pwYQ_|RBg5TwB@dr za{0yl()~}aV0^{!LQ1%e{C;DCz{$N*Db$O4i5&WTg}eknT%;gKtjULqAu^c}?u<u> z3C2qd<00Hp*W!G2WH4uk#j!93ktgIONN-AE2OGh|4pyoiKeg-VwdwaAs9v$&<3Q1& z7>4gUP_z(2A9SE-p@cr<Kszn;5eJ&F&?lHAzk|kI<5TxEYO`}q*K1t=iLq#CdU9?m zY4w{}?HHc>`qY60(gqgOgA;Q}YeR-@bz<hLlXD4_16b|cH!(eNU}`2|ITMKh8Vjv6 zdEkz+By_`N!T_B%;J=)l5CCD?To_^E<@#-L?^nlln0sq7guICKc}u>Dh{!j|`rbUm zB&G6>ln~qF6*Aut1aGpesfg4~m#aKG$u+i|Es<A<6G;mXEhbS{jOZIAQnQ#d(qUkU zQN^Dif^#sA-4Zh`eih?;cU+m+@r^|H#)$4ZhcdxUR+%>XHlq64+Yi@y8XA7WJ3Z1U zq7CY(4eDD)&CC~xX=W@WRIQ2kRpvE8^pr#d>oM<f#|j2fb{k1a9~b)xd&O&3<h&8t z@jCtUCF>uJ#RKQyTnsr!jd3~O$6<3pjfWwA!Fg?v@IJ#Iw~AN`h8%*}{Ae`y*SQ44 z4na~X{M#jfC6Vk;O1PI?f-#36A@jY5T!NBA(BY;Cy??Vy;J%N^BoJ(I3EWpJoh||W zk2K@wY1=g<O#nrEk)ec6_ydu2x>n?*5e2OPq~VBy$m7wBC>X$TCE%o;#QBI#yElx< zsjtxRnzh5EUE=U2e6N-(A=7@6hBZaPYmQ7H$8YV2%Vlp4WOsrJH1GtqeN?gosFAjc zyn`Vdcr6(W5u2dkK;+soXv(^bA#f8W3VR!X2R7m>?N;Z$(X3eLD;f;qZWpM}VcLJ9 zB{UV7>ymE1)hx{%n7j*5OQ#Ob9hBGE&DleDwBBu!46d+){+Iduf{pif3L>}ItO=h) z1NnPC?nntfGwHY1K`*i1o?_tShZt{If5L@$T^abczkOVy<*;#o%Rj-J5)>rt$7{9s zYg!%M{b_SBc~(nWSa^Rvl21Up+|<Mgfvv_*ZQgIvf<LxGV`|0(Iu@FvZfIVLhDK@% z;U(WAR8I~~uMvVPZ%ToD38fuUqwN}Hpjx3Mx7u1%iUs?=Kz24<8W<~-BIqGkk)bzW z@mG}<YGA6?99*RIc$V>(OF^Sp2C(Aw6LDTuRWfWC%Tt}`B?Kt46eakGU9FP^J6Jnb z(Yt2Kby;QGvJxd=47EB3D-6)8bAncK6kU|n3`y0%-WV%!s`@J9_)29)oQe_^KXDCY zp;Kem^R6#2>npPa15%Du;|n55ZYAuw{tsihrS~p(kP%E>>=UhNI=02CUK)Oi9^e!B zAe$CI^lYrRvvuWSTIfa02hrm8^VGsOw?au;cn`$1(3_bs>}`B8bDmmw_<7M;S^#v) zqY&(D;y2qpUsTbA#_PeoFPP0m3X?H#*JsQ+;ggZrY;EZi_LA_{OYXd*S8aO7g6kMz z0`l+$29p_AZR~vu)~jlg#`dX*aJkuY8(G|9YJ4N1QK3%;kqbcWck;5y1p0gScaK!h zA@%`!QdGQDe=bK2&}OCiepvG<4rY@pwhVGT5!nz<5^_8*)!_%yGeE)DxM-_%k@@-N zF)3^VGCyAP<u@Y1GZcY%p?P@Oem((bz_jkQDjrL}klh&W$@aIp3q2Y^^Sk6{Sm0;g z4=FdIZGZ$`gp7_?id8PbPhh=We$5xYQS#rW@@B81rdj@)#p@*$oN4~j5N8ptSIaLX z(TO1=W3Fk2r45SE9kQ%>;PY(VWzftU`-pZH(X?zUi9dcj8zamdvT9xVIGB7eF@R3= zLxXnA(-CIk4$b-iro(r3dNyX@DR%p?1+Z22we{X&p;{j-7V3@h(du=D>ge^AVNitc ztQn$xVZO?X$8E7^xz2zv^VZgT3|W`{!V5TOnwL^`CV_2u%*Zx~2WBpu7s=e4I5eG9 zztCdi64T!$Q%Qs*mLlR@wO2itz))r*DTVOo0K^9mXw%iY)0X5BJ0Nq7`E~T49Xmv3 G-uoZcU6)b- literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_silence.nss b/_removed/nw_s0_silence.nss new file mode 100644 index 0000000..beff713 --- /dev/null +++ b/_removed/nw_s0_silence.nss @@ -0,0 +1,93 @@ +//:://///////////////////////////////////////////// +//:: Silence +//:: NW_S0_Silence.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + The target is surrounded by a zone of silence + that allows them to move without sound. Spell + casters caught in this area will be unable to cast + spells. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//::////////////////////////////////////////////// +/* +Patch 1.71, fix by Shadoow + +- disabled aura stacking +- if cast on ally the effect bypass spell resistance/immunity properly +- moving bug fixed, now caster gains benefit of aura all the time, (cannot guarantee the others, +thats module-related) +*/ + +#include "70_inc_spells" +#include "nw_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } +// End of Spell Cast Hook + + //Declare major variables including Area of Effect Object + spellsDeclareMajorVariables(); + + effect eAOE = EffectAreaOfEffect(AOE_MOB_SILENCE); + effect eVis = EffectVisualEffect(VFX_DUR_AURA_SILENCE); + effect eDur2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eSilence = EffectSilence(); + effect eImmune = EffectDamageImmunityIncrease(DAMAGE_TYPE_SONIC, 100); + + effect eLink = EffectLinkEffects(eDur2, eSilence); + eLink = EffectLinkEffects(eLink, eImmune); + eLink = EffectLinkEffects(eLink, eVis); + eLink = EffectLinkEffects(eLink, eAOE); + + int nDuration = spell.Level; + //Check Extend metamagic feat. + if(spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + //prevent stacking + RemoveEffectsFromSpell(spell.Target, spell.Id); + + if(!GetIsFriend(spell.Target)) + { + if(!MyResistSpell(spell.Caster, spell.Target)) + { + if(!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC, SAVING_THROW_TYPE_NONE, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + + //Create an instance of the AOE Object using the Apply Effect function + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + spellsSetupNewAOE("VFX_MOB_SILENCE"); + } + } + } + else + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + //Create an instance of the AOE Object using the Apply Effect function + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + spellsSetupNewAOE("VFX_MOB_SILENCE"); + } +} diff --git a/_removed/nw_s0_summon.ncs b/_removed/nw_s0_summon.ncs new file mode 100644 index 0000000000000000000000000000000000000000..c2b7e9afca682d49451b3bbdec48f4de171d4df8 GIT binary patch literal 6751 zcmeHMO>7%g5PrM<Ng6weK`jkQlWttnN~I}nBh+3HY~oG3VjYLIn-qz%a+&}UrYQ~r zQA8vpjvNsJfy9A3zol0s4!wW`M-B)f#G!{Cs;Y+|RSNTF_Py+T*<Cq=qhl$t=goXG z@0)q^#+$jBy0vin<f&=KhJ!H%KfM++^Z3e`;zgeyKF(01^f((~TU%Sdf@TIKAC@zR zxovTj|9+p#jInG6{tTI=V+QE{&azzEcK|=#VOd-?3l`cvmf<>^Li&hh@Xz;I7X3UB zt2xH58wl`#Wl;z!2xP$0Z=}6xv22c&E}aRyz_aU(z;_x8wx7*|dzNFyK9k;pQt|Am zVEx)ktM$s-+N*%jYo=MUsnlfv#*iSiaz=@N6Im(JULZP*<S5_aU9m%O{scpj+%$xG zlSIG^+2Yp02DBRnYX2>kK=cP`gMZQn(I$z2d?{KZ(VyEQ^B#$A3lX~E$>4z+1=tOQ z3b2@}5fKFPUWO<a&Ag?kJP83FK6^Ttw>_r{8F2i-u2ky5488Z91;>Nn?m;$y(>#^H zUx*7a2q?;H!J6QCJEutZg;E(A>h^_FD#8yaJ_u#NZeOYMEPHRZs%y(2>ABKsuCK4G z=a_jb13}!Tq5?8wHiw>NofWP9v{{fGg!gI|h~;RyBZ&jbF{X_H+_BLXJBEk~^X=8w zn(epkrPY=mAR6T`44#x6%hVfw;Rt5K!bOJVCd&l<|2)Z}CKczBVq(OYe4?7n)aDcu zGsfg4)nw7FD<;_(lPT52ooj?9!?+hZI&v>4>l0}ajA7O7w}e=v2*l5tVNPU$V+J-M z%d1r8(0d|D0Y|WO+&~DZajdo>1Qtzdt6=rW0*_f|gRmaW2G)dhgW33Ok|~%*K_a5% zsMrebw*VU%HOrapbA@i7QXsOa5RXcTFg9XWqktMb!t&C>^Ik0Th>WAa%dp#Us>-nq zY736<yA?;+0C`hX7_yh)5}c)YfNHJc&bp4T0O;okOiSpyGLzy_wo1g}$17r%=10~B z7#u`DRi|NB?elJ$J6V%Fqvl6pMxkS2&Y((=x66PzQJ;5aT-yumY1eZb&!<pG-8_ZD zbS!0;0xO2i5j`TESYe9?Hjdahgf#C_j?23D1iF<V6uOOLll-9aAUtm`bjBg1Z9`tL z;Qb-;zH92X?b19&2^%6$yP`=nL99kbcMLlur0P9|Qhwt3h^Fd-6m?}dqBF+mLcdgd zojm#+*BGR(NS#NUSFi=&=L00-^7*Z4n7ME?19RgXb})XXdT(J2P#viIWjHiGji1J` zVquM%I;5$8ZZW6_(>2?#xW2RV2I_r1ynzJZR~-Q^*1XvSKuZJsx+B2)yjzI}?D<6l z{6+yRCv16XrP*FyZLjRya?gea_+1G2405;=Z~!^vU~jCxywZ+AJfR`pAVgyv5s#=L zih5IO3GP6=*5(u`d?i5X3yL%oN?VE)u0Yg%2k+QVA@@a$+jjj67td4bWiLaWw?K#X zwrIm#nxOTZtfE<{pai8863Vgt#)Sl}Je4JPp8H3m?E8?iiT{bR%L+Myva5<zP_}_| zd@eT%l%4k-yMcLAIlB%@gUBm#mZVmfd~ni|v?e7OvX-P4p)LEPM%zuI&8)@IMhyhI zNyEV9@qW6N4<HNB+!Qv_OYlWSSMYgFkqSQFLq5Nd8~~q=S8@C^F@(MgTBU756ZI}i zt~jHKY9}QeQktk2;ne64Io%y0dn_=FEQSxQz>?I|0!z};3M@%2LWbGY3hdjkz}!v> z>`=GB;NbvPe}vO+fknv3-_Qz7OfWXJDD|$ChkmKK3|DXbg`U@IwzC-~c__-4v=}>^ zVUmZU+z%RHXERLlP?Wo>0g4%h=D?jZ49$VbLs4#20}MwP_MeBM>`xk^xZ%4)k(kf* zMv?hgqb$7LjqXqseFCo2wzoTLtb1p5@2r?XEWESuR)R0v@STO8A;Ysw9D3>bOkK{< U2qB)3+`$^9|8m@=Z#@?K7mX$&fdBvi literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_summon.nss b/_removed/nw_s0_summon.nss new file mode 100644 index 0000000..d28f770 --- /dev/null +++ b/_removed/nw_s0_summon.nss @@ -0,0 +1,354 @@ +//:://///////////////////////////////////////////// +//:: Summon Creature Series +//:: NW_S0_Summon +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Carries out the summoning of the appropriate + creature for the Summon Monster Series of spells + 1 to 9 +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 8, 2002 +//::////////////////////////////////////////////// + +effect SetSummonEffect(int nSpellID); + +#include "70_inc_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = 24; + + effect eSummon = SetSummonEffect(spell.Id); + + //Make metamagic check for extend + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Apply the VFX impact and summon effect + + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, HoursToSeconds(nDuration)); +} + + +effect SetSummonEffect(int nSpellID) +{ + int nFNF_Effect; + int nRoll = d4(); + string sSummon; + if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER)) //WITH THE ANIMAL DOMAIN + { + if(nSpellID == SPELL_SUMMON_CREATURE_I) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; + sSummon = "NW_S_BOARDIRE"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_II) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; + sSummon = "NW_S_WOLFDIRE"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_III) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; + sSummon = "NW_S_SPIDDIRE"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_IV) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2; + sSummon = "NW_S_beardire"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_V) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2; + sSummon = "NW_S_diretiger"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_VI) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRHUGE"; + break; + + case 2: + sSummon = "NW_S_WATERHUGE"; + break; + + case 3: + sSummon = "NW_S_FIREHUGE"; + break; + + case 4: + sSummon = "NW_S_EARTHHUGE"; + break; + } + } + else if(nSpellID == SPELL_SUMMON_CREATURE_VII) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRGREAT"; + break; + + case 2: + sSummon = "NW_S_WATERGREAT"; + break; + + case 3: + sSummon = "NW_S_FIREGREAT"; + break; + + case 4: + sSummon = "NW_S_EARTHGREAT"; + break; + } + } + else if(nSpellID == SPELL_SUMMON_CREATURE_VIII) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; + if (GetCasterLevel(OBJECT_SELF) >= 33) + { + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRELDER2"; + break; + + case 2: + sSummon = "NW_S_WATERELDER2"; + break; + + case 3: + sSummon = "NW_S_FIREELDER2"; + break; + + case 4: + sSummon = "NW_S_EARTHELDER2"; + break; + } + } + else + { + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRELDER"; + break; + + case 2: + sSummon = "NW_S_WATERELDER"; + break; + + case 3: + sSummon = "NW_S_FIREELDER"; + break; + + case 4: + sSummon = "NW_S_EARTHELDER"; + break; + } + } + } + else if(nSpellID == SPELL_SUMMON_CREATURE_IX) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; + if (GetCasterLevel(OBJECT_SELF) >= 28) + { + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRELDER2"; + break; + + case 2: + sSummon = "NW_S_WATERELDER2"; + break; + + case 3: + sSummon = "NW_S_FIREELDER2"; + break; + + case 4: + sSummon = "NW_S_EARTHELDER2"; + break; + } + } + else + { + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRELDER"; + break; + + case 2: + sSummon = "NW_S_WATERELDER"; + break; + + case 3: + sSummon = "NW_S_FIREELDER"; + break; + + case 4: + sSummon = "NW_S_EARTHELDER"; + break; + } + } + } + } + else //WITOUT THE ANIMAL DOMAIN + { + if(nSpellID == SPELL_SUMMON_CREATURE_I) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; + sSummon = "NW_S_badgerdire"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_II) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; + sSummon = "NW_S_BOARDIRE"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_III) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; + sSummon = "NW_S_WOLFDIRE"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_IV) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2; + sSummon = "NW_S_SPIDDIRE"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_V) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2; + sSummon = "NW_S_beardire"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_VI) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2; + sSummon = "NW_S_diretiger"; + } + else if(nSpellID == SPELL_SUMMON_CREATURE_VII) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRHUGE"; + break; + + case 2: + sSummon = "NW_S_WATERHUGE"; + break; + + case 3: + sSummon = "NW_S_FIREHUGE"; + break; + + case 4: + sSummon = "NW_S_EARTHHUGE"; + break; + } + } + else if(nSpellID == SPELL_SUMMON_CREATURE_VIII) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRGREAT"; + break; + + case 2: + sSummon = "NW_S_WATERGREAT"; + break; + + case 3: + sSummon = "NW_S_FIREGREAT"; + break; + + case 4: + sSummon = "NW_S_EARTHGREAT"; + break; + } + } + else if(nSpellID == SPELL_SUMMON_CREATURE_IX) + { + nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; + if (GetCasterLevel(OBJECT_SELF) >= 30) + { + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRELDER2"; + break; + + case 2: + sSummon = "NW_S_WATERELDER2"; + break; + + case 3: + sSummon = "NW_S_FIREELDER2"; + break; + + case 4: + sSummon = "NW_S_EARTHELDER2"; + break; + } + } + else + { + switch (nRoll) + { + case 1: + sSummon = "NW_S_AIRELDER"; + break; + + case 2: + sSummon = "NW_S_WATERELDER"; + break; + + case 3: + sSummon = "NW_S_FIREELDER"; + break; + + case 4: + sSummon = "NW_S_EARTHELDER"; + break; + } + } + } + } + //effect eVis = EffectVisualEffect(nFNF_Effect); + //ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetSpellTargetLocation()); + effect eSummonedMonster = EffectSummonCreature(sSummon, nFNF_Effect); + return eSummonedMonster; +} diff --git a/_removed/nw_s0_timestop.ncs b/_removed/nw_s0_timestop.ncs new file mode 100644 index 0000000000000000000000000000000000000000..7deed45cd949ff96de6b00b26303c08942119ce9 GIT binary patch literal 3527 zcmbtXOK%%h6ux(6oV2k?LlsDA2%VZX6@frQRHYK)F^vZ_!cHRFO3MO`oY)}|ZXDu5 zVZ)|d7OapEuw%ytiNa5yED#$&DpG~27NIU!pehS5BEominLC|3az+Xy%6R77^Z3qp z9^)*`*WBfqXU|>`;-MQ)2>cv!g*8CGwxxgh`KXf<k8WNKR~whN8XIqIhRv0**;;G7 z+rEO6qp6ekw`QgUc^r9KjElX!y&vG&RucQGqJ2WeDom)S&y>tL=h*m=e9Z~bkfW|O zLXU#3lMr6F90ywBjD){?0%66k(pC>U!eL#AZbrAH^^0&4+B<gQ;hF^pLsz=1old*i zxw@G+nza~6-X-t5!Xd!p&VUM!7{5hG^X`C4M=x=B?E{`4sjs)(?pCYacGnwScdfC} zZZ%Klgf(mvA3G|0>kAFrIt9P-9fe8cpCq3@LGZJXQGR5!`^*Te&f|~B6E84M*sMrg z{*;dM3Jyn4Y9NIF?}#0xa?5e?^fI*YFc{^zFA;NgD&SL$H^V@=_dbr?s~qJw(_F&n zin!M;@DL~jH*hDmrI{orrK#7c#Hrr3^$~2Rq~b~jTBNlLMJ*vN$LOi2dPaUJi*{7D zZ{zev71aIt)aLYw){DXXXFfUL0r_P1DaUkYYlPtBnsv&?Q1rA&a}tBTYZKw1gS%=1 z1NzU`bl>CVL=|&l<kItDIV^j%dRX=A%U)IYzdUU5EtCp#XG3c9^-kw)1V5x&cwb9_ z(aJc6V*-tdL;aGS-=q2z7%$M#Bu++)fTaljoFLI(Ix$rHI~HLESWA-u?YboGTlxs1 z-&q^`B=*^35%`Wp9TweuAhPbW=(ZM77&UkbsLY$)IIclZMT$Uq(Hby!%{kC?Vs0i} z^2&Y%74WN}S1Q%QdA=|E%YGSn@2er2g)w#c9r6ndnnbR6-aW0F`@A7N97$tjq&pNz zdA)qZ_yA?t+g`1yWmbN#UFkF-8C-2Qy4_Y6ll;965cebn2bq16qsSnY@f6%qP8O0e z+?!QkmXqa96b_V=j}M0_W4Wy}2BQ4Z_QvJL_6Od|Mmr6VjB*46U5`_{R<A~T)}=#U zw26@bV?R!dq)ExYWSH>UGEF`;P39LD3==Coc!;uQnp_NOhKbY1WY#nZ7V447ampn% z-Xt5+WzmdL*NwVbtV;y(>sC|~u+7}lwTCKiaGU?356BvAj-x4l6=QU%+m6u@6e;>% z-W`k^ywABff^+KOs2bE0aTw}`&!_p#uYJnY>v=+_LJ{*wWWrLLo-)(0UNm4inJylS zT}0TJ-4q4<JxLS6^Ij;@TWJ!!91rS##TeUgaoMj{gOaapK;A4jhPkCMOZ^>G7E8ga zfnPNoq~{2xBNV$dpAj+MbmR*KPnu=LiF*SEV-%<2*S(7OT96ga7#8c3sG`_dx=V<+ zH{tViZONYxymIJW2+BeIjSLF;t6&C&*}jY{wXZ&Gj;9f&iPg5oi)%MQY(EcK(UTk( z)6w^#+W=wEEzjVKSWYMq<?{cbv!92oG|<PqMiBjBj(%Y39@u3?N)mRABOQn)y#%Qn z1;1m&<63IIr$`Ed`{+VSx-lHRg8JxUF`2uL`bCXC{YP|!w<2$z)b|x4b;lL|0x@qN ArvLx| literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_timestop.nss b/_removed/nw_s0_timestop.nss new file mode 100644 index 0000000..4e182c8 --- /dev/null +++ b/_removed/nw_s0_timestop.nss @@ -0,0 +1,83 @@ +//:://///////////////////////////////////////////// +//:: Time Stop +//:: NW_S0_TimeStop.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All persons in the Area are frozen in time + except the caster. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//::////////////////////////////////////////////// +/* +Patch 1.70, by Shadoow + +- in MP environment, spell affect only current area +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + spellsDeclareMajorVariables(); + int nRoll = 1 + d4(); + + effect eTime, eVis = EffectVisualEffect(VFX_FNF_TIME_STOP); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(spell.Caster)); + + //Fire cast spell at event for the specified target + SignalEvent(spell.Caster, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + if (GetLocalInt(spell.Caster, "tscooldown") == 1 && GetIsPC(OBJECT_SELF) == TRUE) + { + FloatingTextStringOnCreature("The spell has failed!", spell.Caster, FALSE); + return; + } + if(GetPCPublicCDKey(GetFirstPC(),FALSE) == "")//SP environment, keep default effect + { + eTime = EffectTimeStop(); + //Apply the VFX impact and effects + DelayCommand(0.75, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTime, spell.Caster, IntToFloat(d6())+2.0 )); + SetLocalInt(spell.Caster, "tscooldown", 1); + DelayCommand(18.0, SetLocalInt(spell.Caster, "tscooldown", 0)); + } + else//MP environment, use cutscene paralyse for all creatures in caster's area + { + eTime = ExtraordinaryEffect(EffectLinkEffects(EffectCutsceneParalyze(), EffectVisualEffect(VFX_DUR_BLUR))); + int nTh = 1; + object oTarget = GetNearestObject(OBJECT_TYPE_CREATURE, spell.Caster, nTh); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != spell.Caster && !GetIsDM(oTarget)) + { + DelayCommand(0.75, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTime, oTarget, IntToFloat(d6())+2.0 )); + SetLocalInt(spell.Caster, "tscooldown", 1); + DelayCommand(18.0, SetLocalInt(spell.Caster, "tscooldown", 0)); + } + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + oTarget = GetNearestObject(OBJECT_TYPE_CREATURE, spell.Caster, ++nTh); + } + } +} diff --git a/_removed/nw_s0_wallfirea.ncs b/_removed/nw_s0_wallfirea.ncs new file mode 100644 index 0000000000000000000000000000000000000000..f4a4e9842e2283824c7e61c8effe1d9f20dc27d0 GIT binary patch literal 9112 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 F@gJ53oL2w< literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_wallfirea.nss b/_removed/nw_s0_wallfirea.nss new file mode 100644 index 0000000..ba1eef3 --- /dev/null +++ b/_removed/nw_s0_wallfirea.nss @@ -0,0 +1,52 @@ +//:://///////////////////////////////////////////// +//:: Wall of Fire: On Enter +//:: NW_S0_WallFireA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Person within the AoE take 4d6 fire damage + per round. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 17, 2001 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + //Declare major variables + aoesDeclareMajorVariables(); + int nDamage; + effect eDam; + //Declare and assign personal impact visual effect. + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); + //Capture the first target object in the shape. + object oTarget = GetEnteringObject(); + + if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoe.Creator)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(aoe.AOE, spell.Id)); + //Make SR check, and appropriate saving throw(s). + if(!MyResistSpell(aoe.Creator, oTarget)) + { + //Roll damage. + int nDice = GetCasterLevel(aoe.Creator) / 5; + if (nDice < 4) nDice = 4; + if (nDice > 7) nDice = 7; + nDamage = MaximizeOrEmpower(6,nDice,spell.Meta); + nDamage = GetReflexAdjustedDamage(nDamage, oTarget, spell.DC, SAVING_THROW_TYPE_FIRE, aoe.Creator); + if(nDamage > 0) + { + // Apply effects to the currently selected target. + eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } + } +} diff --git a/_removed/nw_s0_wallfirec.ncs b/_removed/nw_s0_wallfirec.ncs new file mode 100644 index 0000000000000000000000000000000000000000..8ddd9f0f52475a82fd577b3601462229f6371a86 GIT binary patch literal 9248 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_wallfirec.nss b/_removed/nw_s0_wallfirec.nss new file mode 100644 index 0000000..d606a02 --- /dev/null +++ b/_removed/nw_s0_wallfirec.nss @@ -0,0 +1,71 @@ +//:://///////////////////////////////////////////// +//:: Wall of Fire: Heartbeat +//:: NW_S0_WallFireA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Person within the AoE take 4d6 fire damage + per round. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 17, 2001 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + //Declare major variables + aoesDeclareMajorVariables(); + int nDamage; + effect eDam; + //Declare and assign personal impact visual effect. + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); + //Capture the first target object in the shape. + + //-------------------------------------------------------------------------- + // GZ 2003-Oct-15 + // When the caster is no longer there, all functions calling + // GetAreaOfEffectCreator will fail. Its better to remove the barrier then + //-------------------------------------------------------------------------- + if (!GetIsObjectValid(aoe.Creator)) + { + DestroyObject(aoe.AOE); + return; + } + + object oTarget = GetFirstInPersistentObject(aoe.AOE,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + //Declare the spell shape, size and the location. + while(GetIsObjectValid(oTarget)) + { + if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoe.Creator)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(aoe.AOE, spell.Id)); + //Make SR check, and appropriate saving throw(s). + if(!MyResistSpell(aoe.Creator, oTarget)) + { + //Roll damage. + int nDice = GetCasterLevel(aoe.Creator) / 5; + if (nDice < 4) nDice = 4; + if (nDice > 7) nDice = 7; + nDamage = MaximizeOrEmpower(6,nDice,spell.Meta); + //Enter Metamagic conditions + + nDamage = GetReflexAdjustedDamage(nDamage, oTarget, spell.DC, SAVING_THROW_TYPE_FIRE, aoe.Creator); + if(nDamage > 0) + { + // Apply effects to the currently selected target. + eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 1.0); + } + } + } + //Select the next target within the spell shape. + oTarget = GetNextInPersistentObject(aoe.AOE,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + } +} diff --git a/_removed/nw_s0_weird.ncs b/_removed/nw_s0_weird.ncs new file mode 100644 index 0000000000000000000000000000000000000000..cde19ff22154b9bc43396e1058698e86fea49428 GIT binary patch literal 13039 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s0_weird.nss b/_removed/nw_s0_weird.nss new file mode 100644 index 0000000..5cbceeb --- /dev/null +++ b/_removed/nw_s0_weird.nss @@ -0,0 +1,115 @@ +//:://///////////////////////////////////////////// +//:: Weird +//:: NW_S0_Weird +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All enemies in LOS of the spell must make 2 saves or die. + Even IF the fortitude save is succesful, they will still take + 4d10 damage. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: DEc 14 , 2001 +//::////////////////////////////////////////////// +//:: Last Updated By: Preston Watamaniuk, On: April 10, 2001 +//:: VFX Pass By: Preston W, On: June 27, 2001 +/* +Patch 1.70, fix by Shadooow + +- had double death VFX +- missing death VFX when spell killed creature lower than 7HD +- second saving throw subtype changed to fear (as per spell's descriptors) +- missing feedback when target was fear or mind spells immune +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eDam; + effect eVis = EffectVisualEffect(VFX_IMP_SONIC); + effect eVis2 = EffectVisualEffect(VFX_IMP_DEATH); + effect eWeird = EffectVisualEffect(VFX_FNF_WEIRD); + effect eAbyss = EffectVisualEffect(VFX_DUR_ANTI_LIGHT_10); + int nDamage; + float fDelay; + + //Apply the FNF VFX impact + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eWeird, spell.Loc); + //Get the first target in the spell area + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, spell.Loc, TRUE); + while (GetIsObjectValid(oTarget)) + { + //Make a faction check + if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, spell.Caster)) + { + fDelay = GetRandomDelay(3.0, 4.0); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id)); + //Make an SR Check + if(!MyResistSpell(spell.Caster, oTarget, fDelay)) + { + if ( !GetIsImmune(oTarget, IMMUNITY_TYPE_MIND_SPELLS,spell.Caster) && + !GetIsImmune(oTarget, IMMUNITY_TYPE_FEAR,spell.Caster)) + { + if(GetHitDice(oTarget) >= 7) + { + //Make a Will save against mind-affecting + if(!MySavingThrow(SAVING_THROW_WILL, oTarget, spell.DC, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster, fDelay)) + { + // * I failed the saving throw. Now I die. + //Apply VFX impact and death effect + //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); + effect eDeath = EffectDeath(); + // Need to make this supernatural, so that it ignores death immunity. + eDeath = SupernaturalEffect( eDeath ); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); + } // Will save + } + else + { + // * I have less than 7HD, I die. + + //Apply VFX impact and death effect + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); + effect eDeath = EffectDeath(); + // Need to make this supernatural, so that it ignores death immunity. + eDeath = SupernaturalEffect( eDeath ); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); + } + } + else + {//fear or mind spells immune + //engine workaround to get proper feedback and VFX + eVis = EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectFrightened(), oTarget, 1.0)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, spell.Loc, TRUE); + } +} diff --git a/_removed/nw_s1_dragacid.ncs b/_removed/nw_s1_dragacid.ncs new file mode 100644 index 0000000000000000000000000000000000000000..334f791ed8c537b61efa4c2b44f120f133c276a5 GIT binary patch literal 4481 zcma)9TWFj`6rTUGn>0z2&ArX_PfUuYskBw7h**-inBaC(x{1kyuua{zDm9i;t%wg6 z5k!iL4+=i`P&5xk#ruPZ74cFE^+B}S5`st((IBA&jU_go|2t>?-Pz10ZRl?1`_6sN z%$cNzGQs^jZrwhpRPD(QMgPhJ<;L;jx%!9Kb$(1WO`pg<IQ8h!sfQ0wXLAR#xr2wM z9zSxNn7Sh7$)h{^6f7pTs#dkKvT}|rdwx8065{383s)P?l8y3Q?!d8wQ^y}-shCo? zxxPoTPG!(ZU$K9f0M;8*&IHr0=aBs+<u?VOyyn0Okp<<$^D_8l<?C;4w3m#!FBqs> z8329JKs`ZUF;HL7R}C~K=<5a=7xWDSEfe&#ftCw8W1t%ZJ!7C1g1&2@m4bd?pjCo? zVxSuZ{nS9K1^wJWYXtq$Kof#~W1zKyo;T1sLBBK5dO^Q8&;~&-8fc@SmkqQ@&^ZHb z7W7vG-6ZI52D(|$KMb@*(7z0{RnV&j+9v4V2HGy@H3RJs^m;q>pjU^EtTDSbWZb2a z%v?$4tCGwaFbRvFmrF8FfT^|UJW!Gu1XE|xxw#}$4W@pzj<X1+!NOby(`aG70Mle) zX23LCm{VXjS(syBHd~lUFfA75ZZNGDrUy)$g{c73zM4@BU^*<!MKGNf<})xwcVXC7 z>NJ=xi_Y_4x-HB!n42uj7?>Ulb0?Ty3&S_{77G*SJDWdg2Klf-mp8@TPcz{o*G;T7 zEEEq5RTWMd?_=K&6E;3EQee*^dvin%>?e^B_6T?;u1_j0`kZj`xcwU92~^ds*CDHV z^eBT39y9aGM*v6Sm|YH++=0Y=G~gCJ7^2xlzMgfp)rfzMCtO1_SBi`lOtdS|$~h?F z@0z-i+H}DY>rWNyV?-lPF2pZX8X2efo(<hPTVtkMP!t~&RW*`U@9+wri2|Ra9+Ve# z%>4<f;vMwA4efagZx<A(G^S}P)T|#UfHdK0S?1n=K8bQLHhrT#xM9|5l9O>{K+*Ar zw9^ykzYCJC?J2X%gWwg3oL(ao$PD)bZ!%Y#EW%2zhD-P~5~WJ%Y9tuv4kT$~8x~N% zN3<*~xea^;MAZgM0f6;{H8NRwN?Wj4uR<b=oOeKh(Y{q^`GTaHgN8uE90;||eXF8D z#B%7#TE6?j!+Dqsv{U+t=cEIbs>tSBu2IxetRs&`6+liQk?8z{7UKJuL5#Y<x-6vK zOEM}AR-^JdRMvN(I%mkro6&zP^cC9(j{M^ree3)fop-ou2Sw*ti&Fk?yJfuHEr^wm zYP6A|W&cAhZdmU2a5Hi87B$tnjT|Y*{aSmCDfa>gMD}T?-o(vkl#eb9-g~4}4^0TG zOAZ!PC!}&$fzk63g@`&q;p%aAGes#^cE^J<4wg?g3FK`QREoDuu6S!vDE6kw?b&;? z1F6*LL}qU?mCB5b4v+5}qk3Ld^dWy$(9;<a6<Ue@WGHA2BUZhGlqr<?RwFddy{_>_ zDyI`xn1)Anz%xJ{LQ48R{UJ<yon5+p8<&I3LN~8d7&YwypGL^&8-xZS);c8aFJh?# zebE__&|ZS*&*BC`RCQhLl6Ec?*wI4hfL^R9Tzpf2)KNdNJvv%zH8m7;AhV*ls!UWw zPC0Bv^{<qP;zr2k+2{5*HNF*%HTH8IpU;T}Y8jn5G^{&6NiT$$>Y3b`%}k7p4Gm|L z>4CviGMnBzlpPpNX2bRj8+Ig_311D)StE_Yy^hjA`twNtJ^nr4a`cxeV%e{&k8e6> zMGu!PF26sh#o>@Mp;ZTsvup3id2rAg4i-aa4v*+vMfJmtrv7x{wlLnPHxa4a^9YBV zY`23e-zkcWo0WEl`X(<T&3eMn$3jcWi5f?}yYltkGoBh7$qpyeRQs^tdj{@FCo?Fv nk~v^p2Rtt*MD8;9po3(L!zHA|<8YZPWDFv?Y@lN;L!kZ#%~#v{ literal 0 HcmV?d00001 diff --git a/_removed/nw_s1_dragacid.nss b/_removed/nw_s1_dragacid.nss new file mode 100644 index 0000000..68ff6cb --- /dev/null +++ b/_removed/nw_s1_dragacid.nss @@ -0,0 +1,113 @@ +//:://///////////////////////////////////////////// +//:: Dragon Breath Acid +//:: NW_S1_DragAcid +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Calculates the proper damage and DC Save for the + breath weapon based on the HD of the dragon. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- wrong target check (could affect other NPCs) +- damage was the same for all creatures in AoE +- damage dice calculation wasn't correct for some HDs +- old evasion behaviour (now that evasion is applied will appear in log) +> breath weapon damage and DC calculation changed in order to allow higher values +for custom content dragons with 40+ HD. DC calculation is now 10+1/2 dragon's HD+ +dragon's constitution modifier. +*/ + +#include "70_inc_dragons" +#include "x0_i0_spells" + +void main() +{ + //Declare major variables + int nDamage = GetDragonBreathNumDice(); + int nDC = GetDragonBreathDC(); + + //When used by a dragon disciple, calculate DC and damage based on their DD levels + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 1 ) + { + int nLevel = GetLevelByClass(CLASS_TYPE_DRAGONDISCIPLE, OBJECT_SELF); + nDamage = 2*nLevel / 3; + //if (nLevel == 29) nDamage = 25; + //if (nLevel == 30) nDamage = 30; + + switch (nLevel) + { + case 1: nDC = 15; break; + case 2: nDC = 15; break; + case 3: nDC = 15; break; + case 4: nDC = 15; break; + case 5: nDC = 16; break; + case 6: nDC = 16; break; + case 7: nDC = 17; break; + case 8: nDC = 17; break; + case 9: nDC = 18; break; + case 10: nDC = 18; break; + case 11: nDC = 19; break; + case 12: nDC = 20; break; + case 13: nDC = 21; break; + case 14: nDC = 22; break; + case 15: nDC = 23; break; + case 16: nDC = 24; break; + case 17: nDC = 25; break; + case 18: nDC = 26; break; + case 19: nDC = 27; break; + case 20: nDC = 28; break; + case 21: nDC = 29; break; + case 22: nDC = 30; break; + case 23: nDC = 31; break; + case 24: nDC = 32; break; + case 25: nDC = 33; break; + case 26: nDC = 34; break; + case 27: nDC = 35; break; + case 28: nDC = 36; break; + case 29: nDC = 37; break; + case 30: nDC = 38; break; + } + } + //Done + + int nDamStrike; + float fDelay; + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + effect eBreath; + + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) PlayDragonBattleCry(); + //Get first target in spell area + object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_ACID)); + //Determine effect delay + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + //randomize damage for each creature in AoE + nDamStrike = d10(nDamage); + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) nDamStrike = d4(nDamage); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamStrike = GetReflexAdjustedDamage(nDamStrike, oTarget, nDC, SAVING_THROW_TYPE_ACID, OBJECT_SELF); + if (nDamStrike > 0) + { + //Set Damage + eBreath = EffectDamage(nDamStrike, DAMAGE_TYPE_ACID); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreath, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + } + SetLocalInt(OBJECT_SELF, "ddbreath", 0); +} diff --git a/_removed/nw_s1_dragcold.ncs b/_removed/nw_s1_dragcold.ncs new file mode 100644 index 0000000000000000000000000000000000000000..f511d75e627b63e6f68cca7641691c7bf45b3086 GIT binary patch literal 4489 zcma)9TWFj`6rTUGn>0z2&2`&c|HN$3w3W6B6%j)c7ZXgA(j+Di!ZtB&Rcb7yS`i-< z5mbtb4+=i`P&5xkq+TCHtcaIVs1KsmmJmdWh*k+DXe`lq<~wILJG-+<6S9Bi`_4IY zZZqfKp}vvm-kmq^=vAuv`Bp_grIGUE_zisX%j=pjrW$6BXYQYT_{ijghh{R<Q<>=l z2PYpre2kcyJm&EuJG&GtCbp_3wX(8umMjNhTyLWB4e>Cbho6ir^bFZ5ot~aLdSLR{ z11ud=>J}fuUU}3;I<dc*0G5g=Z=7jA@MxbU6*femf@I`rWI=`SU>W?f3eD3PO=(A7 zuu#7|0{Wtb27<m~p`oC!T4+qr*DW+I=o=PVBIrpAEfsXuLN^F{%0kNoeaAw}1%1y# zD+K+>LN^Nfv4vI&`l*Fh3HrH(CItP;LaPNmXQ4HMeq*7vf_`hEb%I{7(0V~HS!jcx z^A?&E^k)m*B<L>|x>?ZQEVNP3KP|LL(5n{OEa+br+9K#R3vCtjzZUAjpavaTWp}M+ z{H3DId{O3$qRc5U3CBJ!7iAs;Q|-{XuPD<CrpBRjV^O9OOl_f#w+N=r!CV4U?_fRy z)8Jrc!6Y5b2{4-+%uz6#9n1unMh9~zm?j6)38vY>l!0j}WYhwfRtIwdOq+xG1Wevt zsJlv?1k>)&c@9j6gP8$ygM%3b)9GMt2a|Fzd{b|6Fmb-K`IBZ*2pe>Hli%Gm6F%_$ z#9G5b@vu-8dfEgZhM^AF`qY*@*z?HVJdr*7Nkqc|0Z+xvNu@=XrzelU%|JYXDmu(s zv#QgKGT7iTb47)4;BXwX%j1;uwtr*?++qMjG`nc8XM8L!V=?U^H@})0c0D1t=jc!6 z>th1L!3v1|L=nrB#B)w>>urtM+k&E4pr|Sli{h5!j75-OpN9h|FB+dg(cI03`x+1I zx+E8#>~fj6B`Axx(O)y#^Cm7A)G0N#50t36Fj4?%!qc+EzYcv8<rrN0R(o*6tkWb< z#}O)d#}Ty9tIogYc?V~yb_Wo=ES^(V$dOs@2hIw&9a)5x=_=0klL(YjYO;}FoI8-D zt$HmWe-9a1Sn})m3MecKI$l^Sl9eZn1&8$t1hU9+N8ANvMm{H~WK_q^VM6k$zwRmU z1|G|yCu^&1st@NOPS7rCJf4#tR4O<)viX*8CG~`yZMg>`E(!w4Hk`H)-^UDGHwo6= ziqi9ZRzqM7DsP9%`5vgwTC(!a7(Sx+ifsf(`{Rke^}grxPR3ItqFO-Ffj6QQ|J!~E zm%EX@LKN9TYRlpKM%=R85#VOx;Q1=B)Kt@U+DLi+muA<P^3StFBuH6(6E~k?3kn<4 zDd*ZFq*`b~SY7n6FrnO$WAt2>f=6wja9?=cOi{??9r36{wlV^%HgYn>C6m%RlR~~X zOzg<qo#`1I93CIpn;sk-86EB)+c!%2ysGF!zE#kxGd#+*lKslS`xsX!9pbC0AVmu0 z1VjjpbFUk`p3>>*4AbzajCcm9gAg_s?{_-vb*gmhcE0GyEOb|Oa=oS+@M(mMIc_uv zu{JJoe-TS5=*pfEaqT6D{wUi(h_Y_7UDVFS96LrRrJFg06}gKiIY=q|f$h<^xwV=a z3dWH+Q7lLkC6Pnct*HKyG?CwMS-vnz^K$#!8efaX8ueUf&u7H~wTy`z8qUg3&>KQb zbx!QcjEoPA_Vs7dLp{BN>CDjHzD&<>I-}cDH|#)qM87q7XRI)CYn=@P;a@@cr}_WY zmZNW`@MXWrKAv>W@?KoF`27As#}ONHB(!R!adz$9I1di%*n2#pcjx5~H=6q0$F{lt zW_uH!$~_NvxXHRbT=`y}XWXn*9UMI)BF%c-(#OI`%8437zS~#xy=QE2bRg589-`dq xgzxFOYbZT}WGk5i)^)%a9=Vuvu;?IJ<8TQf@i<(D+@dvz<gzKevsHH7{SPV#+n)dc literal 0 HcmV?d00001 diff --git a/_removed/nw_s1_dragcold.nss b/_removed/nw_s1_dragcold.nss new file mode 100644 index 0000000..3199e50 --- /dev/null +++ b/_removed/nw_s1_dragcold.nss @@ -0,0 +1,111 @@ +//:://///////////////////////////////////////////// +//:: Dragon Breath Cold +//:: NW_S1_DragCold +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Calculates the proper damage and DC Save for the + breath weapon based on the HD of the dragon. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- wrong target check (could affect other NPCs) +- damage was the same for all creatures in AoE +- old evasion behaviour (now that evasion is applied will appear in log) +> breath weapon damage and DC calculation changed in order to allow higher values +for custom content dragons with 40+ HD. DC calculation is now 10+1/2 dragon's HD+ +dragon's constitution modifier. +*/ + +#include "70_inc_dragons" +#include "x0_i0_spells" + +void main() +{ + //Declare major variables + int nDamage = GetDragonBreathNumDice()/2; + int nDC = GetDragonBreathDC(); + + //When used by a dragon disciple, calculate DC and damage based on their DD levels + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 1 ) + { + int nLevel = GetLevelByClass(CLASS_TYPE_DRAGONDISCIPLE, OBJECT_SELF); + nDamage = 2*nLevel / 3; + //if (nLevel == 29) nDamage = 25; + //if (nLevel == 30) nDamage = 30; + + switch (nLevel) + { + case 1: nDC = 15; break; + case 2: nDC = 15; break; + case 3: nDC = 15; break; + case 4: nDC = 15; break; + case 5: nDC = 16; break; + case 6: nDC = 16; break; + case 7: nDC = 17; break; + case 8: nDC = 17; break; + case 9: nDC = 18; break; + case 10: nDC = 18; break; + case 11: nDC = 19; break; + case 12: nDC = 20; break; + case 13: nDC = 21; break; + case 14: nDC = 22; break; + case 15: nDC = 23; break; + case 16: nDC = 24; break; + case 17: nDC = 25; break; + case 18: nDC = 26; break; + case 19: nDC = 27; break; + case 20: nDC = 28; break; + case 21: nDC = 29; break; + case 22: nDC = 30; break; + case 23: nDC = 31; break; + case 24: nDC = 32; break; + case 25: nDC = 33; break; + case 26: nDC = 34; break; + case 27: nDC = 35; break; + case 28: nDC = 36; break; + case 29: nDC = 37; break; + case 30: nDC = 38; break; + } + } + //Done + + int nDamStrike; + float fDelay; + effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); + effect eBreath; + + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) PlayDragonBattleCry(); + //Get first target in spell area + object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_COLD)); + nDamStrike = d10(nDamage); + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) nDamStrike = d6(nDamage); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamStrike = GetReflexAdjustedDamage(nDamStrike, oTarget, nDC, SAVING_THROW_TYPE_COLD, OBJECT_SELF); + if (nDamStrike > 0) + { + //Set Damage + eBreath = EffectDamage(nDamStrike, DAMAGE_TYPE_COLD); + //Determine effect delay + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreath, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + } + SetLocalInt(OBJECT_SELF, "ddbreath", 0); +} diff --git a/_removed/nw_s1_dragfire.ncs b/_removed/nw_s1_dragfire.ncs new file mode 100644 index 0000000000000000000000000000000000000000..ffe218d5d7850efbac9d8a04a1af5e7342ae71e3 GIT binary patch literal 4417 zcma)9TWFkB5I+B9H)*b$dz<Uum=sN0X{%6?VoBm+f@xBk#N<KPCZ?^5#!^}<BB+QU zQdE3U@WF?oeJCRJf)659#7imYgJ`uS1d$@5K|=`|OK6<`n>m}E&Dq3;?&f^o%$&KM zGbe++!_j>^Z{5*jOjUQQp?}4Z@ss!oeEY-e>M&vIr%z@cn0WN)#6w4>GgFh9sY8b+ zPCRm)nCd*{iK9Ea3@oO$nkKWnynKNy2VpYaB*u%+=dLz9O*V?BrY4UanmGO-OC^lC z%?|^T^-7~Q`bzx61hCG8@y3|;1CQ)4ny@|s6*NR%jLe%5J1>D>GNJvpMmx!<|Dr<u z(g^5F3JnB(RiUAvuPHPk=o<=63i_r(iv&Hb&|*Q)D0G9MXBAo^=(`Fn74&_DmI?Zi zLdymHSfLeyo>yq4pr0!=CFoZQtrGO2LaPP+R-rY5ey7k{K`$w^PS7g~trv7wp$&rm zqR@?k{;JSTg8r`1MnV5nXp^AV6xuB4-wJIJ^twV@1-;QiJs4D@BP(^+#*DvMkeMyW zd{K}&3nt~*=aquY<6x>BI`<c3dcagWbZ#!lRDh{jt>Z0#sdX?{z|=XI&%o3>m@{A+ z9Ly;&8y(CsFq<6AIG9EUa~GH<2h#zj*};^6X<5yfc`&UG<`S4T2lEM-yt^>&Dsvjl zW{1uTVA>tbG?<$l%m|nc2XiNwP6xv`^%e({<U5-`X$FO`L6<lAy@zJPhrXX$YgiZ_ z7N#toGQo*3j00Am7%8ylk-b?WyAP5`3<m@}le8z57F}LEdAvCb@dPSsx9gZS9d?w# z29KFJ6T*RQNz5*9k~hTXU)ce-5Wo=4F52rkAB(G4OnJ!7Z+3>|jJ_g>{Y)Oql*9K- ztmbV^Xf;se3-&b?@WpV;AY#uzg7+K>puAxB1VwW*>+b73aBCa5aAcRuv@JzhxP$&T zqrGn7bVHp&(>_q3GhxKr(uAgEk^evRNt9!7>8tW`!PhDBvq^+X-f;vi^hCK)&O11} zYj*&_tKvCjg&aBKL4&ixZ9^7;O;vKPpF;GMQk#tw<J>_ct?D(8{5@=C*?KJ>;nih9 z#|o<=S$@)5a9A%xAPXFKgf1{8Rz4@FhNw2OFgrs1b+4cA4Lp`ZOV;qfgLr(nj&Oo@ zN#pUH^Pp0ewfVNMl6s1D<k4p$$QcBZZMfJ%@&GgN(Iz<VR+OISs~H4qQF+}N=R3|^ zP_pvo3m=R3N|b}6{qc>y^?u;<O2#`$#I%5-18YSo{&)N$E_Wk)g($Lxj4g*BSaD^! zJ;2Sv!Shw1)J)TM+Q@kRmv+~L@xNh*NRTS^7H%$;K04)GdxTU2O$eLI9u_u~Jvl}% zW+`~o1`79ux0fjjxwJhQ6|u9~3uVPdPNukIaz#6nLcZ6J@5tPf=^hvu8XMl99vB!N z8R{E7FhcpfX6QryDxjw?Jj%6_ee&}@t9`W<q)4Hhf(W5W?sbdTQ98Xi!}JELi1-dS zhaqe)-tXhE*QwI&+c_O%7P>1sxn5HZ_%uSs-XJu{u(mF7e-TS5=*pfEaqVS@{v_K# zh_Y_8UC_?u96MI1Gj8TitjJw_lY`VzKe9bKm}@mP6s#jNqPQweltd0WZbkF2q>227 z%lhnd`)iG_MPrS6uCwR!Vu4!5Mh*>U<;Q8lCrroquFUXQ|446NCOz2QGmy><?(fZX z52Z74d&UjhpB|2<zW1pLBe&MsFcAJ6!av8que2QfWeHyn+U(<-&RO2WV~fx42Re?} zkRzd0D~+@3?<IL~sAKQ(h~Ax-Kip{M4<Fm+`kU=dcq;ci+~FqM>*31x@;u{arRq@M ztcXano>cl+SV=iiqsaH>m3;3T9T@4)^rZ(W_i@7ab>BUh9!9c_%mH;B@Vp=wa}E|A aBsC5f5fYEXCCDwPK_r*W>O0$H$K8Lt)5=r; literal 0 HcmV?d00001 diff --git a/_removed/nw_s1_dragfire.nss b/_removed/nw_s1_dragfire.nss new file mode 100644 index 0000000..a11681f --- /dev/null +++ b/_removed/nw_s1_dragfire.nss @@ -0,0 +1,111 @@ +//:://///////////////////////////////////////////// +//:: Dragon Breath Fire +//:: NW_S1_DragFire +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Calculates the proper damage and DC Save for the + breath weapon based on the HD of the dragon. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- wrong target check (could affect other NPCs) +- damage was the same for all creatures in AoE +- old evasion behaviour (now that evasion is applied will appear in log) +> breath weapon damage and DC calculation changed in order to allow higher values +for custom content dragons with 40+ HD. DC calculation is now 10+1/2 dragon's HD+ +dragon's constitution modifier. +*/ + +#include "70_inc_dragons" +#include "x0_i0_spells" + +void main() +{ + //Declare major variables + int nDamage = GetDragonBreathNumDice(); + int nDC = GetDragonBreathDC(); + + //When used by a dragon disciple, calculate DC and damage based on their DD levels + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 1 ) + { + int nLevel = GetLevelByClass(CLASS_TYPE_DRAGONDISCIPLE, OBJECT_SELF); + nDamage = 2*nLevel / 3; + //if (nLevel == 29) nDamage = 25; + //if (nLevel == 30) nDamage = 30; + + switch (nLevel) + { + case 1: nDC = 15; break; + case 2: nDC = 15; break; + case 3: nDC = 15; break; + case 4: nDC = 15; break; + case 5: nDC = 16; break; + case 6: nDC = 16; break; + case 7: nDC = 17; break; + case 8: nDC = 17; break; + case 9: nDC = 18; break; + case 10: nDC = 18; break; + case 11: nDC = 19; break; + case 12: nDC = 20; break; + case 13: nDC = 21; break; + case 14: nDC = 22; break; + case 15: nDC = 23; break; + case 16: nDC = 24; break; + case 17: nDC = 25; break; + case 18: nDC = 26; break; + case 19: nDC = 27; break; + case 20: nDC = 28; break; + case 21: nDC = 29; break; + case 22: nDC = 30; break; + case 23: nDC = 31; break; + case 24: nDC = 32; break; + case 25: nDC = 33; break; + case 26: nDC = 34; break; + case 27: nDC = 35; break; + case 28: nDC = 36; break; + case 29: nDC = 37; break; + case 30: nDC = 38; break; + } + } + //Done + + int nDamStrike; + float fDelay; + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); + effect eBreath; + + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) PlayDragonBattleCry(); + //Get first target in spell area + object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_FIRE)); + //randomize damage for each creature in AoE + nDamStrike = d10(nDamage); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamStrike = GetReflexAdjustedDamage(nDamStrike, oTarget, nDC, SAVING_THROW_TYPE_FIRE, OBJECT_SELF); + if (nDamStrike > 0) + { + //Set Damage + eBreath = EffectDamage(nDamStrike, DAMAGE_TYPE_FIRE); + //Determine effect delay + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreath, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + } + SetLocalInt(OBJECT_SELF, "ddbreath", 0); +} diff --git a/_removed/nw_s1_draggas.ncs b/_removed/nw_s1_draggas.ncs new file mode 100644 index 0000000000000000000000000000000000000000..54b1b2056bf77937a5323a5caa6418cd14ad5bd1 GIT binary patch literal 4481 zcma)9TWFj`6rTUGn>0z2&ArX_Ps|ogTWPCM5wRq3F~M|Gx{1kyuua^yDm9i;t%wg6 z5k!iL4+=i`P&5xk#Cm%Wu_9hdp+1OKTS5>iB3dMrps~cpGv7J0*~!kPP00S4?>qN7 zGw0v*Kqh){`|aEMm8w17q3EYPQhpr2fp30!T^Ghw)AX_I!;_C6o_zG+bT&7Y&Fw!h z`Q)La#MG@~o<6+2SHWUpvuah#%gblUauCL~6OET&FI=rVLpI8Dxv3-jCyzeDQZc3O z@WX&)y~?PQ9<hIz0G5m?Z=7jA@W}q63Y#KOL38A3WL|~vyaawph309DCdsJ(l7;$} z5zv<{G!XPP3k?N*-9lr6zG<OxLEo~_GC@yTXt|&>7P?N*Qx;kw=zA7gDd-0lS|#Ww z7P?;0Pc5`s(9bQjM$j)UG$H6W7FsLlISZ{5^g9c!7xa4zZ4mT=g*FO$$wHe1owLwp zL4UQ-4TAn=p&JGL!$MmG{mVjI1-)vaZG!%7q3wcRv(OGfueVbV26gDj8oO&X<1dzE z=1MYOm1ItVNjUtxT9SDROszxbp^{8Lm^z2fttFXiF!jYc-U65g2XhHbql5VZOp}9| z0n_YYPJr3qV2*&<=wK$mv^bc1!L&M<9x!bVrUFcRF{9?ebU2s`U^*SlXJA&{g}STM zNibawofpA$JD6!Ow>X$lFg*_DZZJs)!#DLN2NUNzn?Gp=g|I=FH^rTynedVCC)OGk ziid@&(o-h*I1F{d)+a^^?0IBwj>x`!B%<Mffal`oq|&0-)04;FVj!MCRo!N-S=D1k z8Eo*FxuQY@a43%1<#EY9NX+L4+(H0DG`q;x^F9`rvB-I-&F^N0-Au||1^QE~^)Y$j zp7Z;KGL|Wc=d5<?ZI0P)K~XMHRMp5uam#VV5(Pd-0w^z-m_gCp&8PbY5A23!-gvUh z+q@+~RlJM-+R&c2@peI-N@K@Bg_;c`1&}5@EzA6y&?iyO!KH7t2RF<On&fyKsZw;D zK|8(T{CA!`IJatN0Kv-=IaP%Mnc;rms_?duMOewzaIK$3qEu2-jRfP|fh2A1*F5U? zn307gzk#oS;%!043u|Sv{EV^SuwI2k7C7&SyP(3z7bMjjHADvHK&ZbSD2fIV%b_Q0 zD{ZO|=Rq#e4rx4|lO9y6@;2Y`t)iY_9eHU~5#$sS$v2#~5Z}uTVl)NT-HNT}`K;1l z4JvPk%K09s&RVka&KN$SeZ|&;Bma1!Z@nM+yp!=HiKuo^bl{CB<^Qf<#@pS(Q6Y=` zMrzC9heq78+#TR%;^g@%u+&uRR&t~~|7+tlru_395DC&wy^WjCDj(fUy!S|{9-0tV z7d<RYD)$r^J(s5tQ70(eao#SbDCNrTcvQy0^2sKF6&nSW;w_Ua-dPliy=h`w_Wo?& z@bJiZW>0E(I5RpjIJS3`>UmYshkUD`S7$_2XeIxZf&CQ6YIcw^g)(1%gvPno4c<uQ z^mK)3cvMF`1JnW7GZ*g<I_(?m(w$qm9Ap-{D>{Wy(;o0?gp9dCXb@s;LgM}+mP*i@ zKO+*_D-iuz+(3w`ZmM0<&cy;dMkuM9If)g8izfw09rY92ql39tQ$xW7GAoKjWuhW- z%DNTRzfvZO8zI|gpWENo_*OL5*v}jId_gQw%b3ie;oSKNdP9h*o{1gV%=pmgz+g6& z?&}{;Wz%~GvV9||tZq-;utTYgerxc~SZNgQbv_NGe+B8k&;PHq9DOrIEc;CL@uYLM z>cwS~&+i{}+Tf5gp;ZTsvumg0JUD0#2MgMn$0K^@s`}wZQ-At!TNrP?Hxa4a^9YBV zY?p^C-&++KH!JN9_05WiH0v=-9}6QXCu$7!?pmq$?y=#~q3mEPO|{nr-`#g#I+a1O omCOO_I^cOhA##_&2OT7994;ay9*0X@A!`uHWm9}-tNgh8A1@x<PXGV_ literal 0 HcmV?d00001 diff --git a/_removed/nw_s1_draggas.nss b/_removed/nw_s1_draggas.nss new file mode 100644 index 0000000..82bd9e8 --- /dev/null +++ b/_removed/nw_s1_draggas.nss @@ -0,0 +1,112 @@ +//:://///////////////////////////////////////////// +//:: Dragon Breath Gas Cloud +//:: NW_S1_DragGas +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Calculates the proper damage and DC Save for the + breath weapon based on the HD of the dragon. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- wrong target check (could affect other NPCs) +- damage was the same for all creatures in AoE +- old evasion behaviour (now that evasion is applied will appear in log) +> breath weapon damage and DC calculation changed in order to allow higher values +for custom content dragons with 40+ HD. DC calculation is now 10+1/2 dragon's HD+ +dragon's constitution modifier. +*/ + +#include "70_inc_dragons" +#include "x0_i0_spells" + +void main() +{ + //Declare major variables + int nDamage = GetDragonBreathNumDice(); + int nDC = GetDragonBreathDC(); + + //When used by a dragon disciple, calculate DC and damage based on their DD levels + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 1 ) + { + int nLevel = GetLevelByClass(CLASS_TYPE_DRAGONDISCIPLE, OBJECT_SELF); + nDamage = 2*nLevel / 3; + //if (nLevel == 29) nDamage = 25; + //if (nLevel == 30) nDamage = 30; + + switch (nLevel) + { + case 1: nDC = 15; break; + case 2: nDC = 15; break; + case 3: nDC = 15; break; + case 4: nDC = 15; break; + case 5: nDC = 16; break; + case 6: nDC = 16; break; + case 7: nDC = 17; break; + case 8: nDC = 17; break; + case 9: nDC = 18; break; + case 10: nDC = 18; break; + case 11: nDC = 19; break; + case 12: nDC = 20; break; + case 13: nDC = 21; break; + case 14: nDC = 22; break; + case 15: nDC = 23; break; + case 16: nDC = 24; break; + case 17: nDC = 25; break; + case 18: nDC = 26; break; + case 19: nDC = 27; break; + case 20: nDC = 28; break; + case 21: nDC = 29; break; + case 22: nDC = 30; break; + case 23: nDC = 31; break; + case 24: nDC = 32; break; + case 25: nDC = 33; break; + case 26: nDC = 34; break; + case 27: nDC = 35; break; + case 28: nDC = 36; break; + case 29: nDC = 37; break; + case 30: nDC = 38; break; + } + } + //Done + + int nDamStrike; + float fDelay; + effect eVis = EffectVisualEffect(VFX_IMP_POISON_L); + effect eBreath; + + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) PlayDragonBattleCry(); + //Get first target in spell area + object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_GAS)); + //randomize damage for each creature in AoE + nDamStrike = d10(nDamage); + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) nDamStrike = d6(nDamage); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamStrike = GetReflexAdjustedDamage(nDamStrike, oTarget, nDC, SAVING_THROW_TYPE_ACID, OBJECT_SELF); + if (nDamStrike > 0) + { + //Set Damage and VFX + eBreath = EffectDamage(nDamStrike, DAMAGE_TYPE_ACID); + //Determine effect delay + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreath, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + } + SetLocalInt(OBJECT_SELF, "ddbreath", 0); +} diff --git a/_removed/nw_s1_draglight.ncs b/_removed/nw_s1_draglight.ncs new file mode 100644 index 0000000000000000000000000000000000000000..bc69e87c1d497a94869db0c7ad1d3ce02877c139 GIT binary patch literal 4481 zcma)9TWDNW6g~GblQc<_$-B+-CT5DJt+Z9Bh**+1n9%8@bP|&fVVZW@s?=CYwIY7B zh#*o_{7~@2kD~b~BG%W3h!ycs3iU&@+7g0D5z!*C1dSy&?z{FrGjnFnBu&WNoVE7* z>~r>=)KEHjXzQI@29>Hm*`?^GGEi<5zn-gqdEMYgRLk`7%>Jpzk4!y!XgZVKm&qPD zIQ8V=W5hHRF;5@a+OJ?Swo$dK<>lq`WZCnhp_34=yji$fbB=6OX0!W_9+*1z2unqj zy36%Fl69(sZhA!iVFFk@qMQk)UC$x=i^^{aKzXf!6C(4<hvy~mOUl<zZ8T0s-4_ki ztqy>`WT2j)uNtT?=xYWV5%diMjSBjvfmR55+CVD>oiWfgf}SzZDnZ{h&}u>7H_#eE zKQ_>{f_`G4wSs<Tpml<NVW2TVzc$c%K`$6+gP`9UXrrLt8EBKBmkhL7&?^SoBIulf zwhH=-fvywuR|8!y=<f#FCg`6A+AipI1MLv>Zv*WV^oD_U33{`WdeCb?N7k8L8#3-< zS!S**^JQ7)449b3&nsn_r@+)(bRI6t41#H}=-ghGsRh$ms^ctxX|ga^z%*N!&%v}< zm>Dpw7UmR~br$9*nDrKB5=@(gxgSish3Ny+VPUGkbe1w|9!!^oxdf)$!h8y*=q?Pq zN}UGNW6^m5Os|ER26LN*83WU2VeSPJw=jHDZ?G^?zO(t0W{?jXba_+UJ833-=(@3$ zhK1r`p=!b@<9+1&VZz2IMhaUcdvin%>?M&9_6Rr;)hCq}{Z2S}+)Wzd2~^Xo*CDI= z^eBT39y8aJj{puwF}oZtxdVy6aszI`gCUw-<m)*Xi>p{<9n|JGJ;QD#<(>ll{l)s2 zyl`I$v7aepnUZ+UhHjmW5z{Rw$_0w57P%;HIj-0VNN~)f9+Ve!%%EuQ=F)wg2X<2{ zZ#>!MZQc~4D&9kX9ca%xc)OrZrNNViImbYSn)L&vL0VS0x1gWP!KQDt2RF<rO>#1d zR4F>npp#y4{=3K#TDNMu2f?cnIaP%Mnc;rms&LzpMOew!ajl<4qEu2{jTqzHfh2A0 z*F5U?n3jblw~4QS(rrP<3u|Pu{EW6>v0j5j7C7&KyP!(T7bMjhGzA*wK&ZcVmPCVy z<<OJ0e49FC>kt=cn=~HJNe3!5Ih$|0Mo~|(j=VIg0CEb6<Qgut5Z%KJV$=l=yA@l{ z^I4_9YE<41mGwPPoi}9VozZ_H^c7hPj{M_E%}llUfzLY`kCTY%1Vsm4i&FmYxD~wJ zZ5$P{$Zce3+5bR`8<u-L+)SK2Uj>GmYTrzbl;eJ-y+)LKkpm(@ita7kd`9``l=I#r zrABB%SY39o(5c*4VDv(cLPXu5a9=n(n4*-cd!s=G2g@g$1oActD#cqSSG=_-6no3$ zmdt~hfn;)YBE372Os2<1hsXDfQ9Z9K`jBrG^y-X=3a#Y6GO(Z0SoIE4rcjPSgwQDW zy2hKSoK9F_8XmO)&j580!usO<K1_R+UAlWSmxIhgH?LC|HSGbPM#$(Jga#qjIwbBd zVyOiExicc6y$sQx#0`X~>blxx?OZOfqlMyOGsm%_aPg!7siS^mdvq{YYHBFxKxRd; zq)b#qPC0Bv^{<qP;zr2k+2{5*HNFvz74~x#pU;a0Y8jn5G^{&6NpA=d)i=2<lb#qE z8ye0eQUim@L?*R+C^Imc$b{_~Hta|u9lkX<=ZrK8_d1sb(!YlE-{b%DEl1x>5zAg( zeLU%$6}`A@aQXd%P8%F@Cba6JadzWulm`c`;b0+j=J1H#UQ|EaXzC9aZVThh^(G>f zdmiC%lkISD<vT@@akJ9yP~YT5q*;#}`dDa5IZ@-NcTc|FyT+4aBbnhuifSJgeAmDO ssYDvZRx$^S>wxD4g~(k7A9Rq6akz+-cpNTqg^WQYmrd!Nt#ae;fB4MYxc~qF literal 0 HcmV?d00001 diff --git a/_removed/nw_s1_draglight.nss b/_removed/nw_s1_draglight.nss new file mode 100644 index 0000000..20169b4 --- /dev/null +++ b/_removed/nw_s1_draglight.nss @@ -0,0 +1,113 @@ +//:://///////////////////////////////////////////// +//:: Dragon Breath Lightning +//:: NW_S1_DragLightn +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Calculates the proper damage and DC Save for the + breath weapon based on the HD of the dragon. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- wrong target check (could affect other NPCs) +- damage was the same for all creatures in AoE +- old evasion behaviour (now that evasion is applied will appear in log) +- did signalized wrong spell id +> breath weapon damage and DC calculation changed in order to allow higher values +for custom content dragons with 40+ HD. DC calculation is now 10+1/2 dragon's HD+ +dragon's constitution modifier. +*/ + +#include "70_inc_dragons" +#include "x0_i0_spells" + +void main() +{ + //Declare major variables + int nDamage = GetDragonBreathNumDice(); + int nDC = GetDragonBreathDC(); + + //When used by a dragon disciple, calculate DC and damage based on their DD levels + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 1 ) + { + int nLevel = GetLevelByClass(CLASS_TYPE_DRAGONDISCIPLE, OBJECT_SELF); + nDamage = 2*nLevel / 3; + //if (nLevel == 29) nDamage = 25; + //if (nLevel == 30) nDamage = 30; + + switch (nLevel) + { + case 1: nDC = 15; break; + case 2: nDC = 15; break; + case 3: nDC = 15; break; + case 4: nDC = 15; break; + case 5: nDC = 16; break; + case 6: nDC = 16; break; + case 7: nDC = 17; break; + case 8: nDC = 17; break; + case 9: nDC = 18; break; + case 10: nDC = 18; break; + case 11: nDC = 19; break; + case 12: nDC = 20; break; + case 13: nDC = 21; break; + case 14: nDC = 22; break; + case 15: nDC = 23; break; + case 16: nDC = 24; break; + case 17: nDC = 25; break; + case 18: nDC = 26; break; + case 19: nDC = 27; break; + case 20: nDC = 28; break; + case 21: nDC = 29; break; + case 22: nDC = 30; break; + case 23: nDC = 31; break; + case 24: nDC = 32; break; + case 25: nDC = 33; break; + case 26: nDC = 34; break; + case 27: nDC = 35; break; + case 28: nDC = 36; break; + case 29: nDC = 37; break; + case 30: nDC = 38; break; + } + } + //Done + + int nDamStrike; + float fDelay; + //effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF,BODY_NODE_HAND); + effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); + effect eBreath; + + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) PlayDragonBattleCry(); + //Get first target in spell area + object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation()); + while (GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_LIGHTNING)); + //randomize damage for each creature in AoE + nDamStrike = d10(nDamage); + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 0 ) nDamStrike = d8(nDamage); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamStrike = GetReflexAdjustedDamage(nDamStrike, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY, OBJECT_SELF); + if(nDamStrike > 0) + { + //Set the damage effect + eBreath = EffectDamage(nDamStrike, DAMAGE_TYPE_ELECTRICAL); + //Determine effect delay + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eBreath,oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oTarget)); + } + } + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation()); + } + SetLocalInt(OBJECT_SELF, "ddbreath", 0); +} diff --git a/_removed/nw_s2_animalcom.ncs b/_removed/nw_s2_animalcom.ncs new file mode 100644 index 0000000000000000000000000000000000000000..d3ab5d60128f7b620aeedffcfaa094d5f266bd53 GIT binary patch literal 2511 zcma)8OKVg~7_GYZcKb-1IH3*kF|jhqFrr4Z<DeVy5nE(vBuq%mVxYO2)&!E9(0Lel z{tiJHH{xo3gUl)mK^KA%T+G5n7Fh%dl0~HF)cLA9_cpDVCVjiU`o43{_o(W=Gcsl- zE}T1mL#YFA`V{{58x`eLPx7dGKb~8NXC5Zise9F_+Jks`b_qM(Ejz0V7lJ%rVc=h~ z?mn%Ec=(Jut{RQT8j$mrBB#^`{Y!Y#e(n_$9gqHOEkAiDeMcJ=YDDf@N$Q1;LhS1! z2CL4o<+-`}WTak;mzL`_x^2_#_aGH>MF-tnZmP&~=zj$R2!-46;>bKwOlIa2`g~&i zr7-O>^&J-xx1%Bk{F77qOX!7I!G!^)cr%K?oOMQwwK1?iMLs52wnXa@%W-|k`O?di zW#Yk=tH&#~1W_3P!VB>hb6X3}9tQ1Y{Pz;QOqYhddmVftfYtzMO-M;ULa%MdhSV~6 ziH1g3pRl3(T9L1{F!hUTO45In)Dvc!oDT^4%7JolHu=7r@jKxgi;7Sbnjb~i{&sbC z64fbf1tS+i>@eqoz_kJG)j?!mnL=PH{2KK=t~sh@nvemXTdLsKaCsk+bls6|rbxF) zx@A;~2jb|DL_`vykbu(x99r-s_3L7PCaGQSGJUjFb@g-T`n>h1p!*VtH%`Mh(4RYW z;HA_+n+$9Q9ae{)_1;zmDqK@i>Wx$dwu!pA*GsPxg}bSHT2f<Ro*_GJL&`rAf^5kG zy<j<wtA|V6D!<x_olHr1p}9cBA+yi0lHF1VD<yiC!g;BI*11}$PS=uZ5-&|ZuE!k% z9$79o55}qQ>o9qN9Hia0%wA~W5!0rjw&c9-aQ?>S{6Q5>jShkNEdyf@>UcmT3{R?g z;GrYa*LMXA^FSl-JQ#!K&E-LhhMzFwU8D=2`n8BC$UdsbT#s?r!{XWLv#t0zYJ-ZD zHmn9ioKP7H8P0d^Ks2-96x<$aUSw@>)>~u9iOh*E$4=0}$UQ`KN*POD`H$eD=UtQM ztCeb{JW;OvIbJD`F<iboh6C*HpDba2a<qhD`)qG=SlLO}wtEaf-7;3gmGlo9_l8cD zT;@I^a5%>#zKv?{sh#I#GJbS5LRC^7c<Zc4AjSE|H#ntM7(}vWk$m5pNMuD9sk7NV zT2cL+3SLF>D?ksoj31yf(gD&YO)niInv#CeNe4xnnAgtQjL9?uC(EySH4JeD-!>_L z-KF3zifOEimD);e){HNhTk*_nZOYu5uS;hof99>e2E_q5A2c(Gxj!2(E}EiT95^<Z jm%nsz0MLV&9la7TwNE?)eUhe67C($e`B}aoH;nopm=8mB literal 0 HcmV?d00001 diff --git a/_removed/nw_s2_animalcom.nss b/_removed/nw_s2_animalcom.nss new file mode 100644 index 0000000..a50a7ab --- /dev/null +++ b/_removed/nw_s2_animalcom.nss @@ -0,0 +1,24 @@ +//:://///////////////////////////////////////////// +//:: Summon Animal Companion +//:: NW_S2_AnimalComp +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + This spell summons a Druid's animal companion +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Sept 27, 2001 +//:: Modified: 69MEH69 Sep2005 +//::////////////////////////////////////////////// +#include "69_hench_lib" +void main() +{ + if(!GetIsPC(OBJECT_SELF)) + { + HenchSummonCreature69(OBJECT_SELF); + return; + } + //Yep thats it + SummonAnimalCompanion(); +} diff --git a/_removed/nw_s2_bardsong.ncs b/_removed/nw_s2_bardsong.ncs new file mode 100644 index 0000000000000000000000000000000000000000..a6a9afe25220c0d0fab45942cfb375d8e5ad11e3 GIT binary patch literal 8088 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 literal 0 HcmV?d00001 diff --git a/_removed/nw_s2_bardsong.nss b/_removed/nw_s2_bardsong.nss new file mode 100644 index 0000000..2637e79 --- /dev/null +++ b/_removed/nw_s2_bardsong.nss @@ -0,0 +1,445 @@ +//:://///////////////////////////////////////////// +//:: Bard Song +//:: NW_S2_BardSong +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + This spells applies bonuses to all of the + bard's allies within 30ft for a set duration of + 10 rounds. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Feb 25, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Georg Zoeller Oct 1, 2003 +/* +bugfix by Kovi 2002.07.30 +- loosing temporary hp resulted in loosing the other bonuses +*/ + +#include "x0_i0_spells" + +void main() +{ + if (GetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(85764,OBJECT_SELF); // not useable when silenced + return; + } + string sTag = GetTag(OBJECT_SELF); + + if (sTag == "x0_hen_dee" || sTag == "x2_hen_deekin") + { + // * Deekin has a chance of singing a doom song + // * same effect, better tune + if (Random(100) + 1 > 80) + { + // the Xp2 Deekin knows more than one doom song + if (d3() ==1 && sTag == "x2_hen_deekin") + { + DelayCommand(0.0, PlaySound("vs_nx2deekM_050")); + } + else + { + DelayCommand(0.0, PlaySound("vs_nx0deekM_074")); + DelayCommand(5.0, PlaySound("vs_nx0deekM_074")); + } + } + } + + + //Declare major variables + int nLevel = GetLevelByClass(CLASS_TYPE_BARD); + int nRanks = GetSkillRank(SKILL_PERFORM); + int nChr = GetAbilityModifier(ABILITY_CHARISMA); + int nPerform = nRanks; + int nDuration = 10; //+ nChr; + + effect eAttack; + effect eDamage; + effect eWill; + effect eFort; + effect eReflex; + effect eHP; + effect eAC; + effect eSkill; + + int nAttack; + int nDamage; + int nWill; + int nFort; + int nReflex; + int nHP; + int nAC; + int nSkill; + + // lingering song + if(GetHasFeat(424)) // lingering song + { + nDuration += 5; + } + + //Check to see if the caster has Lasting Impression and increase duration. + if(GetHasFeat(870)) + { + nDuration *= 5; + } + + //SpeakString("Level: " + IntToString(nLevel) + " Ranks: " + IntToString(nRanks)); + + if(nPerform >= 100 && nLevel >= 40) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 48; + nAC = 7; + nSkill = 19; + } + else if(nPerform >= 95 && nLevel >= 38) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 46; + nAC = 6; + nSkill = 18; + } + else if(nPerform >= 90 && nLevel >= 36) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 44; + nAC = 6; + nSkill = 17; + } + else if(nPerform >= 85 && nLevel >= 34) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 42; + nAC = 6; + nSkill = 16; + } + else if(nPerform >= 80 && nLevel >= 32) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 40; + nAC = 6; + nSkill = 15; + } + else if(nPerform >= 75 && nLevel >= 30) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 38; + nAC = 6; + nSkill = 14; + } + else if(nPerform >= 70 && nLevel >= 28) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 36; + nAC = 5; + nSkill = 13; + } + else if(nPerform >= 65 && nLevel >= 26) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 34; + nAC = 5; + nSkill = 12; + } + else if(nPerform >= 60 && nLevel >= 24) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 32; + nAC = 5; + nSkill = 11; + } + else if(nPerform >= 55 && nLevel >= 22) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 30; + nAC = 5; + nSkill = 9; + } + else if(nPerform >= 50 && nLevel >= 20) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 28; + nAC = 5; + nSkill = 8; + } + else if(nPerform >= 45 && nLevel >= 19) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 26; + nAC = 5; + nSkill = 7; + } + else if(nPerform >= 40 && nLevel >= 18) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 24; + nAC = 5; + nSkill = 6; + } + else if(nPerform >= 35 && nLevel >= 17) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 22; + nAC = 5; + nSkill = 5; + } + else if(nPerform >= 30 && nLevel >= 16) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 20; + nAC = 5; + nSkill = 4; + } + else if(nPerform >= 24 && nLevel >= 15) + { + nAttack = 2; + nDamage = 3; + nWill = 2; + nFort = 2; + nReflex = 2; + nHP = 16; + nAC = 4; + nSkill = 3; + } + else if(nPerform >= 21 && nLevel >= 14) + { + nAttack = 2; + nDamage = 3; + nWill = 1; + nFort = 1; + nReflex = 1; + nHP = 16; + nAC = 3; + nSkill = 2; + } + else if(nPerform >= 18 && nLevel >= 11) + { + nAttack = 2; + nDamage = 2; + nWill = 1; + nFort = 1; + nReflex = 1; + nHP = 8; + nAC = 2; + nSkill = 2; + } + else if(nPerform >= 15 && nLevel >= 8) + { + nAttack = 2; + nDamage = 2; + nWill = 1; + nFort = 1; + nReflex = 1; + nHP = 8; + nAC = 0; + nSkill = 1; + } + else if(nPerform >= 12 && nLevel >= 6) + { + nAttack = 1; + nDamage = 2; + nWill = 1; + nFort = 1; + nReflex = 1; + nHP = 0; + nAC = 0; + nSkill = 1; + } + else if(nPerform >= 9 && nLevel >= 3) + { + nAttack = 1; + nDamage = 2; + nWill = 1; + nFort = 1; + nReflex = 0; + nHP = 0; + nAC = 0; + nSkill = 0; + } + else if(nPerform >= 6 && nLevel >= 2) + { + nAttack = 1; + nDamage = 1; + nWill = 1; + nFort = 0; + nReflex = 0; + nHP = 0; + nAC = 0; + nSkill = 0; + } + else if(nPerform >= 3 && nLevel >= 1) + { + nAttack = 1; + nDamage = 1; + nWill = 0; + nFort = 0; + nReflex = 0; + nHP = 0; + nAC = 0; + nSkill = 0; + } + + //If the bard has Extra Music and is at least 12lvl, give a small random bonus to this song + if (nLevel >= 12 && GetHasFeat(FEAT_EXTRA_MUSIC, OBJECT_SELF) ) + { + switch(d10()) + { + case 1: nAttack = nAttack + 1;break; + case 2: nDamage = nDamage + 1;break; + case 3: nWill = nWill + 1;break; + case 4: nFort = nFort + 1;break; + case 5: nReflex = nReflex + 1;break; + case 6: nAC = nAC + 1;break; + case 7: nSkill = nSkill + 1;break; + case 8: nWill = nWill + 2;break; + case 9: nFort = nFort + 2;break; + case 10: nReflex = nReflex + 2;break; + } + } + //End of Extra Music bonus + + + effect eVis = EffectVisualEffect(VFX_DUR_BARD_SONG); + + eAttack = EffectAttackIncrease(nAttack); + eDamage = EffectDamageIncrease(nDamage, DAMAGE_TYPE_BLUDGEONING); + effect eLink = EffectLinkEffects(eAttack, eDamage); + + if(nWill > 0) + { + eWill = EffectSavingThrowIncrease(SAVING_THROW_WILL, nWill); + eLink = EffectLinkEffects(eLink, eWill); + } + if(nFort > 0) + { + eFort = EffectSavingThrowIncrease(SAVING_THROW_FORT, nFort); + eLink = EffectLinkEffects(eLink, eFort); + } + if(nReflex > 0) + { + eReflex = EffectSavingThrowIncrease(SAVING_THROW_REFLEX, nReflex); + eLink = EffectLinkEffects(eLink, eReflex); + } + if(nHP > 0) + { + //SpeakString("HP Bonus " + IntToString(nHP)); + eHP = EffectTemporaryHitpoints(nHP); +// eLink = EffectLinkEffects(eLink, eHP); + } + if(nAC > 0) + { + eAC = EffectACIncrease(nAC, AC_DODGE_BONUS); + eLink = EffectLinkEffects(eLink, eAC); + } + if(nSkill > 0) + { + eSkill = EffectSkillIncrease(SKILL_ALL_SKILLS, nSkill); + eLink = EffectLinkEffects(eLink, eSkill); + } + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + eLink = EffectLinkEffects(eLink, eDur); + + effect eImpact = EffectVisualEffect(VFX_IMP_HEAD_SONIC); + effect eFNF = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, GetLocation(OBJECT_SELF)); + + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + + eHP = ExtraordinaryEffect(eHP); + eLink = ExtraordinaryEffect(eLink); + + while(GetIsObjectValid(oTarget)) + { + if(!GetHasFeatEffect(FEAT_BARD_SONGS, oTarget) && !GetHasSpellEffect(GetSpellId(),oTarget)) + { + // * GZ Oct 2003: If we are silenced, we can not benefit from bard song + if (!GetHasEffect(EFFECT_TYPE_SILENCE,oTarget) && !GetHasEffect(EFFECT_TYPE_DEAF,oTarget)) + { + if(oTarget == OBJECT_SELF) + { + effect eLinkBard = EffectLinkEffects(eLink, eVis); + eLinkBard = ExtraordinaryEffect(eLinkBard); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLinkBard, oTarget, RoundsToSeconds(nDuration)); + if (nHP > 0) + { + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, RoundsToSeconds(nDuration)); + } + } + else if(GetIsFriend(oTarget)) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oTarget); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + if (nHP > 0) + { + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, RoundsToSeconds(nDuration)); + } + } + } + } + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + } +} + diff --git a/_removed/nw_s2_familiar.ncs b/_removed/nw_s2_familiar.ncs new file mode 100644 index 0000000000000000000000000000000000000000..f576cb1031311bec9e4fe6c456976fa8096f108a GIT binary patch literal 2667 zcma)8&ud&&6u$SqH`AJoNeR;sTTO3Fic*cVQ^kUa)pSacL5m?Vi{kLwj3zjFiIX4J zoqvZQ=%#d|JNHEpvgpEvV1z7Obdg0CL4srv8Nd6Td#CRWui6aBd-vRPzVm(OoO>r9 z%*@*PORrsgPpN^=#}$4~S{0YnX!>RIPO`F=EPs|Z7jHKgTc0MI?G5aV^zGbTyJX7z zL?(P>J#s-2@zg8otm<~V+dwY66eXqp&@V>k-20fA==jqM&hkTW(jV$Lf<cRc?@>wV zb|mIV1N2D6Ts?!0w`5~r$P)UK|8YBQdy&7GICi-Sd8p#>1k*2sgu&}>OdZGa*NXSC zE0?<GsRFa4hGsWcR#wxQPAl2i?6fjqZx}8l=51|8xZGE<)31LP!a%6pNY-aoQT}v! zHKorZrg_s#7njBVa1nB$IzOU1e@B6cBV3tejjm;M2WM2&)q-RuGRbG9(yo0wF<bTS zwD+Y~VLWn`I>}ZmMN|%e@WS$d+P2NBr;zpve#eMjr%PA<1|EDOfL1g`&r3;nebe@& zmgYW&Eq>=~4%>--<g0y|Cd4&E=}%G`jdD#c8-hOYpd5q!f?;?*G!_*hUrbaSU;WO{ zm#3&+)^32Ig%C&7ToJee&@pXd_sJCkQxVpv?^(@bRHq3F_&iXRu!hU;5tHutr2Cnq z2TXckRVEL}(H}yD5}_c#^8gMlcrx|F>O@Y|F?T5+ZB@e)9J=vfeNNCr3B((x;R)#9 zdvxGs*npc1Yz`e(kDm8FR24GZR#NJ{Oa%^!y8pQ6fhP)gO^^0TV_=yfM};BvrwM^t zW&vMhxqxetOWY9WUB%92DBROrAmUkjLaw+Gse_{uf1AO%uYopnx7J*0rOh<iSo*4y z3{D1Qxp)H@r+$3UmIZQ(cGog@_eQ5}K|@{1c{Ahu&B^%#E1J540`pQ1#vRl-LnI7O zrg_LiN6Ob93l`>qM&5Zan%>P7K&zH-nDJqzi@phKAyJWiRFPWGa5uo>ITX}3LL9k) zMTQ$zQxQ(6jD-y6Z~j2^RB#GzO!qFb0-T-x80Lg>qRX)pbY$cnBK&t)Eiiu?T=aZ+ z;bODVY}DuLjgRIU^;w3?cgJOe{gVqd>@VD`Vc7n1H#w~Aq;K182B2;^tK~}i2ab=2 zPSw2f5Meyd8Hq1o9Xz%7yuysTzDB4@rUSovD+FY6zW;=rQY#E1v*wXP-+D;QiY}68 zuY0tj`Xyx^#PT1CzT7u{fXYz^NP)~i9V42d{<^1*6a_I4y|ovUYX(kMSo3O_<_f+A z5|G_X@E64r*40L9tJSu1Yxa7w+-@z}>#H5<tmvn1^^d7e!g;_hr}j=eSzotRxj1la kFfX@sbrR51m>s=kDD4r?z_`c^V!Pern|zlq$UUq61?=fy^Z)<= literal 0 HcmV?d00001 diff --git a/_removed/nw_s2_familiar.nss b/_removed/nw_s2_familiar.nss new file mode 100644 index 0000000..77414a5 --- /dev/null +++ b/_removed/nw_s2_familiar.nss @@ -0,0 +1,33 @@ +//:://///////////////////////////////////////////// +//:: Summon Familiar +//:: NW_S2_Familiar +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + This spell summons an Arcane casters familiar +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Sept 27, 2001 +//:: Modified: 69MEH69 Sep2005 +//::////////////////////////////////////////////// +#include "69_hench_lib" +void main() +{ + if(!GetIsPC(OBJECT_SELF)) + { + HenchSummonCreature69(OBJECT_SELF); + return; + } + //Yep thats it + SummonFamiliar(); + + //If the familiar has lockpicking higher than 10, set it to 10 + object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR); + if (GetSkillRank(SKILL_OPEN_LOCK, oFamiliar, TRUE) > 10) + { + effect eSkillNerf = EffectSkillDecrease(SKILL_OPEN_LOCK, GetSkillRank(SKILL_OPEN_LOCK, oFamiliar, TRUE)-10); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(eSkillNerf), oFamiliar); + } + +} diff --git a/_removed/nw_s2_layonhand.ncs b/_removed/nw_s2_layonhand.ncs new file mode 100644 index 0000000000000000000000000000000000000000..bd6aabc5c202b43cd24624b4be74c75f3c7f55a0 GIT binary patch literal 1184 zcma)5u})M$6umQV-i8R#4Ui3i2op5KU_^-pp+VMl6A5u4E|KzOafKLVL!r^qM8AM9 zpyUJe8>FD1ps?7&!otGBf`Vd`<-Bv>kbQ#2eaXC?J9E!D_uTtxmAZd6J9F=$h}#<% z{QA7OSW2yT$@9kcPUGcPD`{>d%@>=Ex3AyeWbluZ_dBz;z$dcd(f#1G5V3e$#-!Wr z9(ajG?usj<JTAf#$6}UkWN_LM$B<m}6Y2S=?o4`iDvk)9p40+T*UwW4aU!nd^I*kZ zFp~!hHzBHKl#S~n1U}oIzy<@hXd|YyQ-fsRaPy6u5rdFxRUWT02qD8a_z%i)_rB^p z;^vidjr3ERxkVzz%)Hizj1#3gWX4Aoql6mTwXEe=FotBmgN0YM>aV$|RYJMRD2gDl zEqNlLj?Ch;FaIM)JGe-+W9nRq2=((E%B79u1*qoxN05jb+s<9Q@I80odJ6F6j#6>` zhesE|P?WauZ*0MZbTHd4>o2r&ZmXQbIqJrA@(sjcpX)VRko6k&17<Fwk4IiIIE(;9 z7}1YmGr(!vvz|=pj`jhD2&XK5hU;Xo;F22y+BaRj+6}ob`T*}T`~|W?2|k(!1}diw zi}RQ8cF6dNYZJV&4As_?a=pG%St_qplPBf+TJ<RbG3UU_raM@K;1!*}Ui2`jTGf=Q OCA;KmQucy6;N=X&e>Qah literal 0 HcmV?d00001 diff --git a/_removed/nw_s2_layonhand.nss b/_removed/nw_s2_layonhand.nss new file mode 100644 index 0000000..ed99be4 --- /dev/null +++ b/_removed/nw_s2_layonhand.nss @@ -0,0 +1,75 @@ +//:://///////////////////////////////////////////// +//:: Lay_On_Hands +//:: NW_S2_LayOnHand.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + The Paladin is able to heal his Chr Bonus times + his level. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Aug 15, 2001 +//:: Modified 69MEH69 JUL2003 +//::////////////////////////////////////////////// +#include "69_hench_lib" +#include "NW_I0_SPELLS" +void main() +{ + //Declare major variables + object oTarget = GetSpellTargetObject(); + int nChr = GetAbilityModifier(ABILITY_CHARISMA); + if (nChr < 0) + { + nChr = 0; + } + int nLevel = GetLevelByClass(CLASS_TYPE_PALADIN); + //Caluclate the amount to heal + int nHeal = nLevel * nChr; + if(nHeal <= 0) + { + nHeal = 1; + } + effect eHeal = EffectHeal(nHeal); + effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M); + effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE); + effect eDam; + int nTouch; + string sTag = GetTag(oTarget); + object oArea = GetArea(oTarget); + int nCHP = GetLocalInt(oArea, "nCHP" +sTag); + //Check if the target is an undead + if(GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS)); + //Make a ranged touch attack + nTouch = TouchAttackMelee(oTarget); + if(nTouch > 0) + { + if(nTouch == 2) + { + nHeal *= 2; + } + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS)); + eDam = EffectDamage(nHeal, DAMAGE_TYPE_DIVINE); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); + } + } + else + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS, FALSE)); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + if(GetIsHenchmanDying(oTarget)) + { + SetLocalInt(oArea, "nCHP" +sTag, nCHP + nHeal); + } + } + +} + diff --git a/_removed/nw_s2_turndead.ncs b/_removed/nw_s2_turndead.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e878efaf2a34b0111e69d2be5ee35a552482f60a GIT binary patch literal 4101 zcmbtXO=w+36rP!T-+MJb&9lCkT1j(FTcObwTLe*4At?${t%?vgf;O?OVo`)D6<r8L zaOI*X6xu~mkuF_y;YwTxN{J{`v6Ub$DinzjF@lRi{N_7zZtl#x?@=*<JGtlQJO5{H z4(@-tnA@}ao>^nsjjaYh8w!&*{U3RThie%7jH?iuDPf{QXc+UU&FtFR+6vVDxg1Ws z3*KnK(`+orzi#pgZ){5>ebwX}i)KO2vnr<&iqk2qxA2e2Z#OuvlaIF^a;qvg?(My? z%cOGZ7p=~b3-5SdTlc=N)o!`c>Us+8eaP5&C8zcQ5;{diX1bg7a5rftMY=yF>`Ms` zcA;c*smyFbFbxn6I3~!V#z&;a$TfTpU1H{ih=4m%+RNo%T6{YwC4G!Zg?fp2$cDU@ z`O^HCBJ(N&y|~~MF>S$~qT&w$J0F!M`CfH=@!dzE_@xKKaWifv23#R>*49>xv9nt2 zM-uG3FLtvBwyVRozbDwOzSuYQz_zv6?<d#;eX)m1>>-~~`(&a$+*f;~)Q&T%6^^Q9 zRuk-YU+hgiuw7`d82faBeM?{L(H_`YE%tPRee1Av==QinQ(b9zm+7x`H&-3zNIG9= ze9mJYFUV+OS)mp`li=DI*|&ru&+ka5ZS*})EN2kEb`cRw6657cXe&>!-^IOPUXyo$ z{{jT~k;8*<e}M2~xf7^qK)Q^f!nR)1C&XK1w&=y@7`pY_M+|s>?%Y5&7BXI@1U9}q z7DG@#7{S1*IJfz@MhNAdHqU3y;kvs+E|}J<Vz45z>?Sj>*Zf;ip!c$6M!wM+kOiZ3 zz7savSyDd>m)heM^>8mTyY3GO%#9UcSCVXh(E<2Mjqt9T35_JdCqOiTRfTeU_0UZ* zz}}t!H6|-QUy1WPMwUcy$xdcTlB?{CWHa}>sfDz;Onvp=8BLSAs&YI(FnK$!p^Oaz zBOg`fiTBY$$Fi}9G%d>JP?SR2mgS4a-+desqZ+pj#x~_5I2VeHZ<g>)(i`!q1hHL< zc=pB-?OK93P>c9U7vi51wSU@srNz<3t5O6O(VUdYKh2?fUiuq1XV;FA*+c38@I=Nu z{#uH0;+c1V@&p8J`*B~&?{1^o{^tand8e$1NMR{bDDXDD?WX}~x5PnMraX!rng#_E zFNwL7qzKbUd0h~bd^;adaE8y88z`uGXO|Cq<iy_RjvjjbmE*?_A3yfe!i(xYeBA0+ z;Z#_Sq2mrzc31}X8836*)&LD|<B)8rYf&1}WQK1icd#aZDkBM}8di|hAo<Rgj>a^S zi$sNven_PG#P?~r$_cg_GKW*dAh1;Z2-AMXLZbo-6)wBK{<k*^|HYf`DEyVk;&cxI z!U6V4S9a*zT^*{CUyCC59lCFE@mpxOT%`|Bp;!9Y)1fQv$wW-#`D|fSlb0WW$FjmO zcW7d~Hf0ht(Tz?4;+wLcb?($j|B1dN6VqpMBvtWJ)Z%UTSM-;<2l`ys7m$hi>zcsu zOw)sZ)b{i5_oBG2;G)nlcla$a$~UIUU9zomkh_={!Q|`|l}J!8HHfnBz&8{U=Q@f> z$xS1o_Zz9pNWA|yQkvn6qu(nEQ(;Y6TKjOF<X(`KSw=|~>*W?i`e=o8M0UiZVMp9W z7A)~(z?stz0C**FkV)U%;l$dw|F8FyYO`dk8ay~RD?TH-8UUBs;zN{M5$VGG3-~Hw AHUIzs literal 0 HcmV?d00001 diff --git a/_removed/nw_s2_turndead.nss b/_removed/nw_s2_turndead.nss new file mode 100644 index 0000000..68d22e6 --- /dev/null +++ b/_removed/nw_s2_turndead.nss @@ -0,0 +1,268 @@ +//:://///////////////////////////////////////////// +//:: Turn Undead +//:: NW_S2_TurnDead +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Checks domain powers and class to determine + the proper turning abilities of the casting + character. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Nov 2, 2001 +//:: Updated On: Jul 15, 2003 - Georg Zoeller +//::////////////////////////////////////////////// +//:: MODIFIED MARCH 5 2003 for Blackguards +//:: MODIFIED JULY 24 2003 for Planar Turning to include turn resistance hd +/* +Patch 1.70, by Shadooow + +- takes into account turn resistance of player character (but only from itemproperty) +*/ + +int GetPCTurnResistance(object oPC); + +void main() +{ + int nClericLevel = GetLevelByClass(CLASS_TYPE_CLERIC); + int nPaladinLevel = GetLevelByClass(CLASS_TYPE_PALADIN); + int nBlackguardlevel = GetLevelByClass(CLASS_TYPE_BLACKGUARD); + int nTotalLevel = GetHitDice(OBJECT_SELF); + + int nTurnLevel = nClericLevel; + int nClassLevel = nClericLevel; + + // GZ: Since paladin levels stack when turning, blackguard levels should stack as well + // GZ: but not with the paladin levels (thus else if). + if((nBlackguardlevel - 2) > 0 && (nBlackguardlevel > nPaladinLevel)) + { + nClassLevel += (nBlackguardlevel - 2); + nTurnLevel += (nBlackguardlevel - 2); + } + else if((nPaladinLevel - 2) > 0) + { + nClassLevel += (nPaladinLevel -2); + nTurnLevel += (nPaladinLevel - 2); + } + + //Flags for bonus turning types + int nElemental = GetHasFeat(FEAT_AIR_DOMAIN_POWER) + GetHasFeat(FEAT_EARTH_DOMAIN_POWER) + GetHasFeat(FEAT_FIRE_DOMAIN_POWER) + GetHasFeat(FEAT_WATER_DOMAIN_POWER); + int nVermin = GetHasFeat(FEAT_PLANT_DOMAIN_POWER);// + GetHasFeat(FEAT_ANIMAL_COMPANION); + int nConstructs = GetHasFeat(FEAT_DESTRUCTION_DOMAIN_POWER); + int nGoodOrEvilDomain = GetHasFeat(FEAT_GOOD_DOMAIN_POWER) + GetHasFeat(FEAT_EVIL_DOMAIN_POWER); + int nPlanar = GetHasFeat(854); + + //Flag for improved turning ability + int nSun = GetHasFeat(FEAT_SUN_DOMAIN_POWER); + + //Make a turning check roll, modify if have the Sun Domain + int nChrMod = GetAbilityModifier(ABILITY_CHARISMA); + int nTurnCheck = d20() + nChrMod; //The roll to apply to the max HD of undead that can be turned --> nTurnLevel + int nTurnHD = d6(2) + nChrMod + nClassLevel; //The number of HD of undead that can be turned. + + if(nSun == TRUE) + { + nTurnCheck += d4(); + nTurnHD += d6(); + } + //Determine the maximum HD of the undead that can be turned. + if(nTurnCheck <= 0) + { + nTurnLevel -= 4; + } + else if(nTurnCheck >= 1 && nTurnCheck <= 3) + { + nTurnLevel -= 3; + } + else if(nTurnCheck >= 4 && nTurnCheck <= 6) + { + nTurnLevel -= 2; + } + else if(nTurnCheck >= 7 && nTurnCheck <= 9) + { + nTurnLevel -= 1; + } + else if(nTurnCheck >= 10 && nTurnCheck <= 12) + { + //Stays the same + } + else if(nTurnCheck >= 13 && nTurnCheck <= 15) + { + nTurnLevel += 1; + } + else if(nTurnCheck >= 16 && nTurnCheck <= 18) + { + nTurnLevel += 2; + } + else if(nTurnCheck >= 19 && nTurnCheck <= 21) + { + nTurnLevel += 3; + } + else if(nTurnCheck >= 22) + { + nTurnLevel += 4; + } + + //Gets all creatures in a 20m radius around the caster and turns them or not. If the creatures + //HD are 1/2 or less of the nClassLevel then the creature is destroyed. + int nCnt = 1; + int nHD, nRacial, nHDCount, bValid, nDamage; + nHDCount = 0; + effect eVis = EffectVisualEffect(VFX_IMP_SUNSTRIKE); + effect eVisTurn = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); + effect eDamage; + effect eTurned = EffectTurned(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eVisTurn, eTurned); + eLink = EffectLinkEffects(eLink, eDur); + + effect eDeath = SupernaturalEffect(EffectDeath(TRUE)); + + effect eImpactVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_30); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpactVis, GetLocation(OBJECT_SELF)); + + //Get nearest enemy within 20m (60ft) + //Why are you using GetNearest instead of GetFirstObjectInShape + object oTarget = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE , OBJECT_SELF, nCnt,CREATURE_TYPE_PERCEPTION , PERCEPTION_SEEN); + + while(GetIsObjectValid(oTarget) && nHDCount < nTurnHD && GetDistanceToObject(oTarget) <= 20.0) + { + if(!GetIsFriend(oTarget)) + { + nRacial = GetRacialType(oTarget); + + if (nRacial == RACIAL_TYPE_OUTSIDER ) + { + if (nPlanar) + { + //Planar turning decreases spell resistance against turning by 1/2 + nHD = GetHitDice(oTarget) + (GetSpellResistance(oTarget) /2) + GetTurnResistanceHD(oTarget); + } + else + { + nHD = GetHitDice(oTarget) + (GetSpellResistance(oTarget) + GetTurnResistanceHD(oTarget) ); + } + } + else //(full turn resistance) + { + nHD = GetHitDice(oTarget) + GetTurnResistanceHD(oTarget); + } + //1.70 by Shadooow: special workaround for player characters wearing custom items with turn resistance and shifter in spectre form + if(GetIsPC(oTarget) && !GetIsDMPossessed(oTarget) && !GetIsPossessedFamiliar(oTarget)) + { + nHD+= GetPCTurnResistance(oTarget); + } + + if(nHD <= nTurnLevel && nHD <= (nTurnHD - nHDCount)) + { + //Check the various domain turning types + if(nRacial == RACIAL_TYPE_UNDEAD) + { + bValid = TRUE; + } + else if (nRacial == RACIAL_TYPE_VERMIN && nVermin > 0) + { + bValid = TRUE; + } + else if (nRacial == RACIAL_TYPE_ELEMENTAL && nElemental > 0) + { + bValid = TRUE; + } + else if (nRacial == RACIAL_TYPE_CONSTRUCT && nConstructs > 0) + { + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_TURN_UNDEAD)); + nDamage = d3(nTurnLevel); + eDamage = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + DelayCommand(0.01, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget)); + nHDCount += nHD; + } + else if (nRacial == RACIAL_TYPE_OUTSIDER && (nGoodOrEvilDomain+nPlanar > 0) ) + { + bValid = TRUE; + } + // * if wearing gauntlets of the lich,then can be turned + else if (GetIsObjectValid(GetItemPossessedBy(oTarget, "x2_gauntletlich")) == TRUE) + { + if (GetTag(GetItemInSlot(INVENTORY_SLOT_ARMS)) == "x2_gauntletlich") + { + bValid = TRUE; + } + } + + //Apply results of the turn + if( bValid == TRUE) + { + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + + if (nPlanar>0 && nRacial == RACIAL_TYPE_OUTSIDER) + { + effect ePlane = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY); + ApplyEffectToObject(DURATION_TYPE_INSTANT, ePlane, oTarget); + } + //if(IntToFloat(nClassLevel)/2.0 >= IntToFloat(nHD)) + //{ + + if((nClassLevel/2) >= nHD) + { + if (nPlanar>0 && nRacial == RACIAL_TYPE_OUTSIDER) + { + effect ePlane2 = EffectVisualEffect(VFX_IMP_UNSUMMON); + ApplyEffectToObject(DURATION_TYPE_INSTANT, ePlane2, oTarget); + } + + effect ePlane2 = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_TURN_UNDEAD)); + //Destroy the target + DelayCommand(0.1f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); + } + else + { + //Turn the target + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_TURN_UNDEAD)); + AssignCommand(oTarget, ActionMoveAwayFromObject(OBJECT_SELF, TRUE)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nClassLevel + 5)); + } + nHDCount = nHDCount + nHD; + } + } + bValid = FALSE; + } + nCnt++; + oTarget = GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE, OBJECT_SELF, nCnt,CREATURE_TYPE_PERCEPTION , PERCEPTION_SEEN); + } +} + +int GetPCTurnResistance(object oPC) +{ + if(!GetIsPC(oPC) || GetIsDMPossessed(oPC) || GetIsPossessedFamiliar(oPC)) + { + return 0;//in these cases the default function works fine + } +int nTurnResistance; +object oItem; +int nSlot; +itemproperty ip; + for(;nSlot < NUM_INVENTORY_SLOTS;nSlot++) + { + oItem = GetItemInSlot(nSlot,oPC); + if(GetIsObjectValid(oItem)) + { + ip = GetFirstItemProperty(oItem); + while(GetIsItemPropertyValid(ip)) + { + if(GetItemPropertyType(ip) == ITEM_PROPERTY_TURN_RESISTANCE) + { + nTurnResistance+= GetItemPropertyCostTableValue(ip);//turn resistance stacks even on one item + } + ip = GetNextItemProperty(oItem); + } + } + } +return nTurnResistance; +} diff --git a/_removed/nw_s2_wildshape.ncs b/_removed/nw_s2_wildshape.ncs new file mode 100644 index 0000000000000000000000000000000000000000..64e69810938dacce658a37b410010240bb63d0e3 GIT binary patch literal 4852 zcmdT{OK6-`6u$psrg^otC26B=%rtEfrBQ1I1@V!@(ZoE-B*v;Rq&nJyZDLxm?NWDw z3#}qpait(4wu=fyEEEhXTF^xosRYTwMJ*LnqC^Oc-~G<LlmFiS&O~>%keUCS?|kRn z^ZM@$_ZD)G@45ZX9;G%f-K_AhE~hd|E$csbs5sIh{+)o}Y#43~BYZii;%r3&K`<G{ z8MXb1y~W{?Vxg~lG+*fJe`LH^7|jn37JK{hy#uiNU6bw&JEC@NdpZir<?<B;!>A$P z!-|UOD{9PjYRIr7%^2yujx=ke9geilNSoR;&jZx`q+O}Y0ll}&(WqFY+u+l~85ORN zwkd?QsO{>0;rA7SmQ8G7V~zy79Dm`KT%eBwRKf-xwVU8|WAhlDwh;NNgS01aS}*K3 z5xK)f>X?F=E@e+c?l&CnEv|(Vqs!glBFWwCai4U!x4ITpxOcip*5I7S{ieg+>RMFc z-sK|6{j|sZmf?PwS-jD;sKVXpB5BR;4<3?!NB=BEB#>r$CFH{r>YP#8q0;R0rAd6N zpP7E)_@U|9nFHvkFZIA&2}l++=4gQ8R}8w>VsI^C(7zS~G?YCk+qDZuTkqLZ932_l zH#9Of+E*OPk3E_%c8?7e5T6;%Y%Vd^uu!MMgdp$*>wH0-FR1qgSzi$Pf(Bop^XJ5& z*N7v?P+-rChudVxhgL;Fxw2w9^-5?BrH&|_UVE8%ogF;A*a9{}Wta{2f{K~T-RAkC z$+6{l(Y2!UIb(Co*nIEV-0#{L6#9eKmRUy6j|bW$D*nyoqV8+s|EgiW<k_5eZ47GO zL%p4fTJTWb`3)Dgs}towDi_`Z4oXJRKQX2*iHgcD7j>wLQzeX!WAm+RBSTKa8U2C? zz6%NX*xAqTn@x^wODM*RPFneNPP7UeHY;tk+Y*xgF0|wadV0P}<F>nBZ4leLtq0ob z`52WogOL7-gQ2Tg>Dx-^ayHo12XU;sUWS?c=0s?Hr4}SZpOgPYkU)KCPNsujh!eZu zy5+D5h*J_L(!u0((7()`?N!W>p10^e1_6&mJ}Hq>hMMye9YN%#6dn3N>%u=$baO^` znJji@KS@DiHpp^1MR(EYPNwKE!?b%TMThyK?x_^rywN?FqFXS!os1f1NMul6_%<(? zC+#8l3nl1qHhN*ayLX`2-P1qVKfbTnGcr6;$S0ON8Jo$EmSdEE^0M-7PCP)0{(r5q zD0P^DTJ88wxK%AAKsf;|2WD&L<U|}C>@Kn{^VK|I{Q=)FS(=)eK0JPWri7>Z{ZmIu z2alEx9r0e0n1d9eCb?J1-<&ebg>i(>Rze2VGqU^7SjP}OCvV@xQJ9N1LXcNLeiR69 zcV>b|R_!B9t-jpBnYg!h{KR?9;BL2aCw#d+0tGK6@5R!l@0$HI13Asm_H?qu^vS80 zDOpaI39mSsp=LZwqAXC!8G;)u1g_I^^m9W0Uveb3>zB>#3rA!qk~yZ;zIAzeJeYgg zEwYX19V&j}{A?oZyKpMz;cxANO!r(BAXQSr)Z}iIib+a!+a&+f81s~#p6CbaITdIj z`yj2J`m1A`NP{nQ_|ehT*lY*kuoBOz3Z3ULqXRi-Cmbm<N9n7M)czuR$C27!Paio_ zG(Q<WbEL76e#3-cr4Aj)&uc1fmPy3Am9UALqZTp`g+wM$?@_yO9ctb|9U}^s9vAEq zTw~P2(nDQxQ1Z@2)E>%C)C!}|x&<H>JZORap#}u!DPl|gU(43Arm`7Sjj|b3jj|b3 zjj|b3jj|ckzbl(c))ir(o@x7FrQJ4%jIr6=<B2_E+YAj(Oq0QEmM1pR2C`TLE=S>k zkZRdpj@Dl5(tIG$8a^xnKXFogAV;*X<^%Pu;lm>ELo3CH)mHO?oYnAQ5x8!q_^`{r Xnhy+i4IdVvi|^EfBfltvpHqJWEU=L^ literal 0 HcmV?d00001 diff --git a/_removed/nw_s2_wildshape.nss b/_removed/nw_s2_wildshape.nss new file mode 100644 index 0000000..62374b7 --- /dev/null +++ b/_removed/nw_s2_wildshape.nss @@ -0,0 +1,215 @@ +//:://///////////////////////////////////////////// +//:: Wild Shape +//:: NW_S2_WildShape +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the Druid to change into animal forms. + + Updated: Sept 30 2003, Georg Z. + * Made Armor merge with druid to make forms + more useful. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 22, 2002 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.70 + +- allowed to merge any custom non-weapon in left hand slot such as flags or +musical instruments +- added optional feature to stack ability bonuses from multiple items together +- added optional feature to merge bracers (when items are allowed to merge) +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "70_inc_itemprop" +#include "x2_inc_itemprop" + +void main() +{ + //Declare major variables + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + effect ePoly; + int nPoly; + int nMetaMagic = GetMetaMagicFeat(); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + //Enter Metamagic conditions + if (nMetaMagic == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + //Determine Polymorph subradial type + if(nSpell == 401) + { + nPoly = POLYMORPH_TYPE_BROWN_BEAR; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_BROWN_BEAR; + } + } + else if (nSpell == 402) + { + nPoly = POLYMORPH_TYPE_PANTHER; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_PANTHER; + } + } + else if (nSpell == 403) + { + nPoly = POLYMORPH_TYPE_WOLF; + + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_WOLF; + } + } + else if (nSpell == 404) + { + nPoly = POLYMORPH_TYPE_BOAR; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_BOAR; + } + } + else if (nSpell == 405) + { + nPoly = POLYMORPH_TYPE_BADGER; + if (nDuration >= 12) + { + nPoly = POLYMORPH_TYPE_DIRE_BADGER; + } + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); + + int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + int bArms = bItems && GetLocalInt(GetModule(),"71_POLYMORPH_MERGE_ARMS"); + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oArmsOld = GetItemInSlot(INVENTORY_SLOT_ARMS,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + + if (GetIsObjectValid(oShield)) + { //1.71: this is now custom content compatible, polymorph will merge custom left-hand only items such as flags + if (GetWeaponRanged(oShield) || IPGetIsMeleeWeapon(oShield)) + { + oShield = OBJECT_INVALID; + } + } + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + if (bArms) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmsOld); + } + + //Apply the VFX impact and effects + ePoly = EffectPolymorph(nPoly); + if (nSpell == 402 && nDuration >= 12) ePoly = EffectLinkEffects(EffectMovementSpeedIncrease(50), ePoly); //A little extra for druids in dire panther form :) + if(nConBonus > 0) + {//1.70: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + ePoly = ExtraordinaryEffect(ePoly); + + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration)); + + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + if (bWeapon) + { + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + if (bArmor) + { + IPWildShapeCopyItemProperties(oShield,oArmorNew); + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + } + if (bItems) + { + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + if (bArms) + { + IPWildShapeCopyItemProperties(oArmsOld,oArmorNew); + } + if (GetLocalInt(GetModule(),"71_POLYMORPH_STACK_ABILITY_BONUSES")) + { + IPWildShapeStackAbilityBonuses(oArmorNew); + } +} diff --git a/_removed/x0_s0_acidsplash.ncs b/_removed/x0_s0_acidsplash.ncs new file mode 100644 index 0000000000000000000000000000000000000000..eed85f53591e22d3399bb27c86249c702465dcb3 GIT binary patch literal 10989 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_acidsplash.nss b/_removed/x0_s0_acidsplash.nss new file mode 100644 index 0000000..a638eb7 --- /dev/null +++ b/_removed/x0_s0_acidsplash.nss @@ -0,0 +1,60 @@ +//:://///////////////////////////////////////////// +//:: Acid Splash +//:: [X0_S0_AcidSplash.nss] +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* +1d3 points of acid damage to one target. +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 17 2002 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Make SR Check + if(!MyResistSpell(spell.Caster, spell.Target)) + { + //Set damage effect + //1d3 of additional damage roughly for every 3 caster levels, but no more than 10d3. + int cMultiplier = GetCasterLevel(OBJECT_SELF) / 3; + if (cMultiplier <= 1) cMultiplier = 1; + if (cMultiplier >= 7) cMultiplier = 7; + int nDamage = MaximizeOrEmpower(3, cMultiplier, spell.Meta); + effect eBad = EffectDamage(nDamage, DAMAGE_TYPE_ACID); + //Apply the VFX impact and damage effect + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBad, spell.Target); + } + } +} diff --git a/_removed/x0_s0_banishment.ncs b/_removed/x0_s0_banishment.ncs new file mode 100644 index 0000000000000000000000000000000000000000..3ba1c892dd87f9ea1d1937bf338bfe937cef7254 GIT binary patch literal 10664 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_banishment.nss b/_removed/x0_s0_banishment.nss new file mode 100644 index 0000000..f7209f5 --- /dev/null +++ b/_removed/x0_s0_banishment.nss @@ -0,0 +1,119 @@ +//:://///////////////////////////////////////////// +//:: Banishment +//:: x0_s0_banishment.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All summoned creatures within 30ft of caster + make a save and SR check or be banished + + As well any Outsiders being must make a + save and SR check or be banished (up to + 2 HD creatures / level can be banished) +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 22, 2001 +//::////////////////////////////////////////////// +//:: VFX Pass By: Preston W, On: June 20, 2001 + +#include "X0_I0_SPELLS" +#include "x2_inc_spellhook" +#include "hench_i0_generic" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + object oMaster; + effect eVis = EffectVisualEffect(VFX_IMP_UNSUMMON); + effect eImpact = EffectVisualEffect(VFX_FNF_LOS_EVIL_30); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation()); + int nSpellDC; + //Get the first object in the are of effect + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + + // * the pool is the number of hit dice of creatures that can be banished + int nPool = 2* GetCasterLevel(OBJECT_SELF); + + while(GetIsObjectValid(oTarget)) + { + //does the creature have a master. + oMaster = GetMaster(oTarget); + if (oMaster == OBJECT_INVALID) + { + oMaster = OBJECT_SELF; // TO prevent problems with invalid objects + // passed into GetAssociate + } + + // * BK: Removed the master check, only applys to Dismissal not banishment + //Is that master valid and is he an enemy + // if(GetIsObjectValid(oMaster) && GetIsEnemy(oMaster)) + { + // * Is the creature a summoned associate + // * or is the creature an outsider + // * and is there enough points in the pool + if( + (GetAssociate(ASSOCIATE_TYPE_SUMMONED, oMaster) == oTarget || + GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oMaster) == oTarget || + GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oMaster) == oTarget ) || + ((GetRacialType((oTarget)) == RACIAL_TYPE_OUTSIDER) && + (nPool > 0)) || + GetLocalInt(oTarget, sHenchPseudoSummon)) + { + // * March 2003. Added a check so that 'friendlies' will not be + // * unsummoned. + if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) + { + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 430)); + //Determine correct save + nSpellDC = GetSpellSaveDC();// + 6; + // * Must be enough points in the pool to destroy target + if (nPool >= GetHitDice(oTarget)) + // * Make SR and will save checks + if (!MyResistSpell(OBJECT_SELF, oTarget) && !MySavingThrow(SAVING_THROW_WILL, oTarget, nSpellDC)) + { + //Apply the VFX and delay the destruction of the summoned monster so + //that the script and VFX can play. + + nPool = nPool - GetHitDice(oTarget); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget)); + if (CanCreatureBeDestroyed(oTarget) == TRUE) + { + //bugfix: Simply destroying the object won't fire it's OnDeath script. + //Which is bad when you have plot-specific things being done in that + //OnDeath script... so lets kill it. + effect eKill = EffectDamage(GetCurrentHitPoints(oTarget)); + //just to be extra-sure... :) + effect eDeath = EffectDeath(FALSE, FALSE); + DelayCommand(0.25, ApplyEffectToObject(DURATION_TYPE_INSTANT, eKill, oTarget)); + DelayCommand(0.25, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget)); + + DestroyObject(oTarget, 0.3); + } + } + } // rep check + } + } + //Get next creature in the shape. + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + } +} + + diff --git a/_removed/x0_s0_bigby1.ncs b/_removed/x0_s0_bigby1.ncs new file mode 100644 index 0000000000000000000000000000000000000000..395a33801fd273c80ea03ff2c79bdfb294789089 GIT binary patch literal 10489 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_bigby1.nss b/_removed/x0_s0_bigby1.nss new file mode 100644 index 0000000..219da0a --- /dev/null +++ b/_removed/x0_s0_bigby1.nss @@ -0,0 +1,68 @@ +//:://///////////////////////////////////////////// +//:: Bigby's Interposing Hand +//:: [x0_s0_bigby1] +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Grants -10 to hit to target for 1 round / level +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: September 7, 2002 +//::////////////////////////////////////////////// +//:: VFX Pass By: + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = 5; + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, + spell.Id, + TRUE)); + //Check for metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) //Duration is +100% + { + nDuration = nDuration * 2; + } + if (!MyResistSpell(spell.Caster, spell.Target)) + { + + effect eAC1 = EffectAttackDecrease(5); + effect eVis = EffectVisualEffect(VFX_DUR_BIGBYS_INTERPOSING_HAND); + effect eLink = EffectLinkEffects(eAC1, eVis); + + + //Apply the TO HIT PENALTIES bonuses and the VFX impact + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, + eLink, + spell.Target, + RoundsToSeconds(nDuration)); + } + } +} diff --git a/_removed/x0_s0_bigby2.ncs b/_removed/x0_s0_bigby2.ncs new file mode 100644 index 0000000000000000000000000000000000000000..10eb9be1cbfabdb8cfd6b1ab95a66d56f4f237a5 GIT binary patch literal 11823 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_bigby2.nss b/_removed/x0_s0_bigby2.nss new file mode 100644 index 0000000..bfa46b8 --- /dev/null +++ b/_removed/x0_s0_bigby2.nss @@ -0,0 +1,97 @@ +//:://///////////////////////////////////////////// +//:: Bigby's Forceful Hand +//:: [x0_s0_bigby2] +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* + dazed vs strength check (+14 on strength check); Target knocked down. + Target dazed down for 1 round per level of caster + +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: September 7, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs May 01, 2003 +/* +Patch 1.71 + +- disabled self-stacking +- added duration scaling per game difficulty +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + + //-------------------------------------------------------------------------- + // This spell no longer stacks. If there is one hand, that's enough + //-------------------------------------------------------------------------- + if (GetHasSpellEffect(spell.Id,spell.Target)) + { + FloatingTextStrRefOnCreature(100775,spell.Caster,FALSE); + return; + } + + int nDuration = 2; + nDuration = GetScaledDuration(nDuration, spell.Target); + //Check for metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) //Duration is +100% + { + nDuration = nDuration * 2; + } + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + // Apply the impact effect + effect eImpact = EffectVisualEffect(VFX_IMP_BIGBYS_FORCEFUL_HAND); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, spell.Target); + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, TRUE)); + if(!MyResistSpell(spell.Caster, spell.Target)) + { + int nCasterRoll = d20(1); + int nTargetRoll = d20(1) + GetAbilityModifier(ABILITY_STRENGTH, spell.Target) + GetSizeModifier(spell.Target); + // * bullrush succesful, knockdown target for duration of spell + if (nCasterRoll >= nTargetRoll) + { + effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eKnockdown = EffectDazed(); + effect eKnockdown2 = EffectKnockdown(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + //Link effects + effect eLink = EffectLinkEffects(eKnockdown, eDur); + eLink = EffectLinkEffects(eLink, eKnockdown2); + //Apply the penalty + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, spell.Target, RoundsToSeconds(nDuration)); + // * Bull Rush succesful + FloatingTextStrRefOnCreature(8966,spell.Caster, FALSE); + } + else + { + FloatingTextStrRefOnCreature(8967,spell.Caster, FALSE); + } + } + } +} diff --git a/_removed/x0_s0_bigby3.ncs b/_removed/x0_s0_bigby3.ncs new file mode 100644 index 0000000000000000000000000000000000000000..eb7c0e905e1d7efbb2d4ced7011fec12df392ffc GIT binary patch literal 12464 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 LXTnXQJ~HjUWr&TF literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_bigby3.nss b/_removed/x0_s0_bigby3.nss new file mode 100644 index 0000000..6619d21 --- /dev/null +++ b/_removed/x0_s0_bigby3.nss @@ -0,0 +1,136 @@ +//:://///////////////////////////////////////////// +//:: Bigby's Grasping Hand +//:: [x0_s0_bigby3] +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* + make an attack roll. If succesful target is held for 1 round/level + + +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: September 7, 2002 +//::////////////////////////////////////////////// +//:: VFX Pass By: +/* +Patch 1.71 + +- stunning visual effect removed if the target is mind/paralyse immune +- added duration scaling per game difficulty +- disabled self-stacking +- incorporeal creatures won't be grappled anymore +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + + //-------------------------------------------------------------------------- + // This spell no longer stacks. If there is one hand, that's enough + //-------------------------------------------------------------------------- + if (GetHasSpellEffect(spell.Id,spell.Target)) + { + FloatingTextStrRefOnCreature(100775,spell.Caster,FALSE); + return; + } + + int nDuration = 3; + nDuration = GetScaledDuration(nDuration, spell.Target); + effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + + //Check for metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) //Duration is +100% + { + nDuration = nDuration * 2; + } + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, TRUE)); + + // Check spell resistance + if(!MyResistSpell(spell.Caster, spell.Target)) + { + // Check caster ability vs. target's AC + + int nCasterModifier = GetCasterAbilityModifier(spell.Caster); + int nCasterRoll = d20(1) + + nCasterModifier + + spell.Level/2 + 10 + -1; + + int nTargetRoll = GetAC(spell.Target) + d20(1); + + // * grapple HIT succesful, + if (nCasterRoll >= nTargetRoll) + { + // * now must make a GRAPPLE check to + // * hold target for duration of spell + // * check caster ability vs. target's size & strength + nCasterRoll = d20(1) + nCasterModifier + + spell.Level; + + nTargetRoll = d20(1) + + GetBaseAttackBonus(spell.Target) + + GetSizeModifier(spell.Target) + + GetAbilityModifier(ABILITY_STRENGTH, spell.Target) + GetSkillRank(SKILL_SPELLCRAFT, spell.Target)/2 + 10; + //1.71: incorporeal creatures cannot be grappled + if (nCasterRoll >= nTargetRoll && !GetCreatureFlag(spell.Target, CREATURE_VAR_IS_INCORPOREAL)) + { + // Hold the target paralyzed + effect eKnockdown = EffectParalyze(); + + // creatures immune to paralzation are still prevented from moving + if (GetIsImmune(spell.Target, IMMUNITY_TYPE_PARALYSIS, spell.Caster) || + GetIsImmune(spell.Target, IMMUNITY_TYPE_MIND_SPELLS, spell.Caster)) + { + eKnockdown = EffectCutsceneImmobilize(); + } + else + { + eKnockdown = EffectLinkEffects(eVis, eKnockdown); + } + + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eHand = EffectVisualEffect(VFX_DUR_BIGBYS_GRASPING_HAND); + effect eLink = EffectLinkEffects(eKnockdown, eDur); + eLink = EffectLinkEffects(eHand, eLink); + + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, + eLink, spell.Target, + RoundsToSeconds(nDuration)); + +// ApplyEffectToObject(DURATION_TYPE_TEMPORARY, +// eVis, oTarget,RoundsToSeconds(nDuration)); + FloatingTextStrRefOnCreature(2478, spell.Caster); + } + else + { + FloatingTextStrRefOnCreature(83309, spell.Caster); + } + } + } + } +} diff --git a/_removed/x0_s0_bigby4.ncs b/_removed/x0_s0_bigby4.ncs new file mode 100644 index 0000000000000000000000000000000000000000..5643b66bb398161a97fedc75a4be42dcc332bee2 GIT binary patch literal 13901 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 XaWI>99dRxF1f3$=5}7NH=gfZqfv`vB literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_bigby4.nss b/_removed/x0_s0_bigby4.nss new file mode 100644 index 0000000..a948e46 --- /dev/null +++ b/_removed/x0_s0_bigby4.nss @@ -0,0 +1,119 @@ +//:://///////////////////////////////////////////// +//:: Bigby's Clenched Fist +//:: [x0_s0_bigby4] +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* + Does an attack EACH ROUND for 1 round/level. + If the attack hits does + 1d8 +12 points of damage + + Any creature struck must make a FORT save or + be stunned for one round. + + GZ, Oct 15 2003: + Changed how this spell works by adding duration + tracking based on the VFX added to the character. + Makes the spell dispellable and solves some other + issues with wrong spell DCs, checks, etc. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: September 7, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Georg Zoeller October 15, 2003 + +#include "70_inc_spells" +#include "x2_inc_spellhook" +#include "x2_i0_spells" + +void RunHandImpact(object oTarget, object oCaster, int nSpellID, int nMeta) +{ + //-------------------------------------------------------------------------- + // Check if the spell has expired (check also removes effects) + //-------------------------------------------------------------------------- + if (GZGetDelayedSpellEffectsExpired(nSpellID,oTarget,oCaster)) + { + return; + } + + int nCasterModifiers = GetCasterAbilityModifier(oCaster) + GetCasterLevel(oCaster)/2; + int nCasterRoll = d20(1) + nCasterModifiers + 11 + -1; + int nTargetRoll = GetAC(oTarget); + if (nCasterRoll >= nTargetRoll) + { + int nDC = GetLocalInt(oTarget,"XP2_L_SPELL_SAVE_DC_" + IntToString (nSpellID)); + + int nDam = MaximizeOrEmpower(8, 1, nMeta, 6); + effect eDam = EffectDamage(nDam, DAMAGE_TYPE_BLUDGEONING); + effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + + if (!MySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL, oCaster)) + { + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, RoundsToSeconds(1)); + } + + DelayCommand(6.0,RunHandImpact(oTarget,oCaster,nSpellID,nMeta)); + } +} + +void main() +{ + + /* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + // End of Spell Cast Hook + + spellsDeclareMajorVariables(); + + //-------------------------------------------------------------------------- + // This spell no longer stacks. If there is one hand, that's enough + //-------------------------------------------------------------------------- + if (GetHasSpellEffect(spell.Id,spell.Target) || GetHasSpellEffect(SPELL_BIGBYS_CRUSHING_HAND,spell.Target)) + { + FloatingTextStrRefOnCreature(100775,spell.Caster,FALSE); + return; + } + + int nDuration = 10; + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration * 2; + } + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, TRUE)); + int nResult = MyResistSpell(spell.Caster, spell.Target); + + if(nResult == 0) + { + int nCasterModifier = GetCasterAbilityModifier(spell.Caster); + effect eHand = EffectVisualEffect(VFX_DUR_BIGBYS_CLENCHED_FIST); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHand, spell.Target, RoundsToSeconds(nDuration)); + + //---------------------------------------------------------- + // GZ: 2003-Oct-15 + // Save the current save DC on the character because + // GetSpellSaveDC won't work when delayed + //---------------------------------------------------------- + SetLocalInt(spell.Target,"XP2_L_SPELL_SAVE_DC_" + IntToString (spell.Id), spell.DC); + + RunHandImpact(spell.Target,spell.Caster, spell.Id, spell.Meta); + } + } +} diff --git a/_removed/x0_s0_bigby5.ncs b/_removed/x0_s0_bigby5.ncs new file mode 100644 index 0000000000000000000000000000000000000000..fd11e5e652c8bbba2e4edfd3c3483464696546b2 GIT binary patch literal 13652 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 a)`zNu;s0Wip}fMiX+Q7i%v`;Y+W!Hj=M$6w literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_bigby5.nss b/_removed/x0_s0_bigby5.nss new file mode 100644 index 0000000..fd44890 --- /dev/null +++ b/_removed/x0_s0_bigby5.nss @@ -0,0 +1,146 @@ +//:://///////////////////////////////////////////// +//:: Bigby's Crushing Hand +//:: [x0_s0_bigby5] +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* + Similar to Bigby's Grasping Hand. + If Grapple succesful then will hold the opponent and do 2d6 + 12 points + of damage EACH round for 1 round/level + + + // Mark B's famous advice: + // Note: if the target is dead during one of these second-long heartbeats, + // the DelayCommand doesn't get run again, and the whole package goes away. + // Do NOT attempt to put more than two parameters on the delay command. They + // may all end up on the stack, and that's all bad. 60 x 2 = 120. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: September 7, 2002 +//::////////////////////////////////////////////// +//:: VFX Pass By: +/* +Patch 1.71 + +- added duration scaling per game difficulty +- incorporeal creatures won't be grappled anymore +*/ + +#include "70_inc_spells" +#include "x2_inc_spellhook" +#include "x2_i0_spells" + +void RunHandImpact(object oTarget, object oCaster, int nSpellID, int nMeta) +{ + + //-------------------------------------------------------------------------- + // Check if the spell has expired (check also removes effects) + //-------------------------------------------------------------------------- + if (GZGetDelayedSpellEffectsExpired(nSpellID,oTarget,oCaster)) + { + return; + } + + int nDam = MaximizeOrEmpower(6,2,nMeta, 6); + effect eDam = EffectDamage(nDam, DAMAGE_TYPE_BLUDGEONING); + effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + DelayCommand(6.0,RunHandImpact(oTarget,oCaster,nSpellID,nMeta)); +} + +void main() +{ + /* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + // End of Spell Cast Hook + + spellsDeclareMajorVariables(); + + //-------------------------------------------------------------------------- + // This spell no longer stacks. If there is one hand, that's enough + //-------------------------------------------------------------------------- + if (GetHasSpellEffect(spell.Id,spell.Target) || GetHasSpellEffect(SPELL_BIGBYS_CLENCHED_FIST,spell.Target)) + { + FloatingTextStrRefOnCreature(100775,spell.Caster,FALSE); + return; + } + + int nDuration = 4; + nDuration = GetScaledDuration(nDuration, spell.Target); + + //Check for metamagic extend + if (spell.Meta == METAMAGIC_EXTEND) //Duration is +100% + { + nDuration = nDuration * 2; + } + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, TRUE)); + + //SR + if(!MyResistSpell(spell.Caster, spell.Target)) + { + int nCasterModifier = GetCasterAbilityModifier(spell.Caster); + int nCasterRoll = d20(1) + + nCasterModifier + + GetCasterLevel(spell.Caster); + int nTargetRoll = GetAC(spell.Target); + + // * grapple HIT succesful, + if (nCasterRoll >= nTargetRoll) + { + // * now must make a GRAPPLE check + // * hold target for duration of spell + + nCasterRoll = d20(1) + nCasterModifier + + GetCasterLevel(spell.Caster); + + nTargetRoll = d20(1) + + GetBaseAttackBonus(spell.Target) + + GetSizeModifier(spell.Target) + + GetAbilityModifier(ABILITY_STRENGTH, spell.Target) + GetSkillRank(SKILL_SPELLCRAFT, spell.Target)/2 + 10; + //1.71: incorporeal creatures cannot be grappled + if (nCasterRoll >= nTargetRoll && !GetCreatureFlag(spell.Target, CREATURE_VAR_IS_INCORPOREAL)) + { + effect eKnockdown = EffectParalyze(); + + // creatures immune to paralzation are still prevented from moving + if (GetIsImmune(spell.Target, IMMUNITY_TYPE_PARALYSIS, spell.Caster) || + GetIsImmune(spell.Target, IMMUNITY_TYPE_MIND_SPELLS, spell.Caster)) + { + eKnockdown = EffectCutsceneImmobilize(); + } + + effect eHand = EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND); + effect eLink = EffectLinkEffects(eKnockdown, eHand); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, + eLink, spell.Target, + RoundsToSeconds(nDuration)); + + RunHandImpact(spell.Target, spell.Caster, spell.Id, spell.Meta); + FloatingTextStrRefOnCreature(2478, spell.Caster); + + } + else + { + FloatingTextStrRefOnCreature(83309, spell.Caster); + } + } + } + } +} diff --git a/_removed/x0_s0_clight.ncs b/_removed/x0_s0_clight.ncs new file mode 100644 index 0000000000000000000000000000000000000000..bd6d08e2e862d8a931f73e003a586258cba07615 GIT binary patch literal 4444 zcmbtXO>9(E6u$4xwEWCSe?kN)mFEyjLQ`lZ1~(=S?UPKLQZh4^l8BROJH_fiO9vD; zY+ShUXN5nB3pegv7}u`U1#uxPh#`$JE?BrAq$XW7so(w1J8#|_9?uZlWZulV=jS`$ zIrrTA&Q4an*@@%hr;QnS^Lc~6ot|-f`JZw1Uw#i}d(5*}-mfn-F0VG0FI}lG&es>4 zOO5NTYgifVTDh@0am>(T|EL)<+uPf}z;nh*oNo)6LpD}^*#5d@<5;;ndenj5-v;i? zJ5DxZWjQZng<B>|lLKx>m8?mwr;zFOxbkV&%9lZqQTlOc^}uBD%kgja826bBQEd{# z0F`?AiRkWUu2@ArVTyo;XaF&W;x=7vSy$%AF{5kN+Wn`;IODE>7lAI@1p3}$2*c0s zkoWfzSp>gQpak%_L3Vz2v2s-?l5lqeNJtS&8zD>h@u4fwHLm($OzY@=miRY>5YKw( zpL?-hu9u6|TD{`eW{Z_<uT2iQ>~iHRl=7#>>+RKMtM&HE%DeEh(@nE9CsUW<SQ9N| z99wgw+9{FA3&%i5BqLS>$%+)gPZ)|&8WlM|i0Gk;NPrMjbEth^m*8Msv^DA$M4KW4 zx9ZcZi0EEN<USJ7A1Y!P1SL=>hioDZJftAVegTA@cYEVK{t{R`bZVl0u2}Y`Q31bF zFHTKW>yz@m?9cjTfO~{$fYYG;|D<1F&}j7U<h&!cZZF5Ay8>y5jJmr6DR-s$SnvVL zp5od<)mFLuUTb<~5t1DXtwy`uY-6MRlmUnbvb#WLLUN1@QUy=m+bhXJvJc<mRS=fB zje>HEgl<7Oecar`4ezXJ#z2%ix3+w_vGzf6e!0~RkVZX(u?ZJFCR43da)-GiJuVuy z8x|w+Z;#1V4@{=~xtNKQVDeSmWOC+g%*0JFS&EySFI8hE*#wi5ag);7T3~X3xyaTD zbD?avmPHw3*X{LGtR;f@bvLNVJ!ONOY@*7`(&m5Z0<F>JSUTotf3e&4a|w!!zMb=S zgbkjsZu+nutp<A{48v~tIvA?z6Md}_X*sN^Fk%jg47>JZP$h<aB?c>->f*W3MSxA% z?V><VNF_q{d%j>1IV0fZK&j?W$F^;KX4bD%N>jetfV`8^81X5Ey_D==dS<HhTFI}( z9CYs^nD#UF)MQG;aMIBi3LZ5}ixc(+4E8b3v|lSu7tfT^!i7C)E9!n8R1_0SyM(-5 zgwG?@bN*zhSgsdOm&&Eug%k>9nx{~h?kkq1`buDPs2fo?v1-c=n?!7qhqUNXjtkw< zpFnpEM2v3d=$PH87DT!Hf9Oo|kd{Vxz#{s9M1N}PI(BK1qJ-_2NKZwR4ncOKku$~| zRB8O2q7(!t=t4@}5RQ(Z1l_GbH=K3ch<5AStFO~1Q&A>Q*L{UkdBc-43VtxIJ_&~~ z&6}P1CPOy{dg<|@99zF+*Ew281PmKnXB02Z<~T=l0i9*x${`xph#lf7U>%c-od5~J z8X=Fkk@#1yFRwP{Tg_@~<ysrb@0xG4o6Falm*q|p(cLkAW8D7b57Vh$4>uy0j7>TA z1AHhT?lnt7CU!D@tUGRoF0sMnDxG_Q+{pDI>0mz?u+nu;P+)wb(DZ@=<AS(Ne26Y+ zsG-AA>8VkQ)_TlNdEcT2VDkxYd;&M0@Mm8-%x}zoF1Sf(6dbDb`)ZKw-M~t{0WZDa zX}vffQG1YhAJXHRMrB9f-HjS2B5zI+B-G{0p4-UMd@KNj{lLX1DN96tK8SXeyBKZ( zRBgdw^gDFLEuvKgSpl?Lk;O}53`B`L2Xd)XxHIM=#_M7X#EHg`cNq_<F`v?B^YR8H z9oXz@oniY9JtEB^1pH^}ziW(6LnC$m2=f0Tq7kGZ8tai87RN_FHIYX!7A{6CpPD%@ zGE;Q;$xJyzw<!!9iVT~$X>`~;jB;b%h_r>7leW0f!S77SdZ#TCiet`4ieqMzit|mR IIGdjN7g-meU;qFB literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_clight.nss b/_removed/x0_s0_clight.nss new file mode 100644 index 0000000..771326b --- /dev/null +++ b/_removed/x0_s0_clight.nss @@ -0,0 +1,80 @@ +//:://///////////////////////////////////////////// +//:: Continual Flame +//:: x0_s0_clight.nss +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* + Permanent Light spell + + XP2 + If cast on an item, item will get permanently + get the property "light". + Previously existing permanent light properties + will be removed! + +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent Knowles +//:: Created On: July 18, 2002 +//::////////////////////////////////////////////// +//:: VFX Pass By: +//:: Added XP2 cast on item code: Georg Z, 2003-06-05 +//::////////////////////////////////////////////// +/* +Patch 1.71 + +- any item that this spell is cast at is now marked as stolen to disable the cast/sell exploit +- spell can dispell the shadowblend effect +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run + // this spell. + if (!X2PreSpellCastCode()) + { + return; + } + int nDuration; + int nMetaMagic; + + spellsDeclareMajorVariables(); + + // Handle spell cast on item.... + if (GetObjectType(spell.Target) == OBJECT_TYPE_ITEM && ! CIGetIsCraftFeatBaseItem(spell.Target)) + { + // Do not allow casting on not equippable items + if (!IPGetIsItemEquipable(spell.Target)) + { + // Item must be equipable... + FloatingTextStrRefOnCreature(83326,spell.Caster); + return; + } + itemproperty ip = ItemPropertyLight (IP_CONST_LIGHTBRIGHTNESS_BRIGHT, IP_CONST_LIGHTCOLOR_WHITE); + IPSafeAddItemProperty(spell.Target, ip, 0.0,X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,TRUE,TRUE); + //casting this spell on every crap and then sell it is very well known exploit + //SetStolenFlag(spell.Target, TRUE);//sets item to be stolen, thus harder to sell //no need anymore - the value of light item property has been set to zero + } + else + { + if(GetHasSpellEffect(757, spell.Target)) + { + //Continual light effectively dispells shadowblend effect + RemoveEffectsFromSpell(spell.Target, 757); + } + //Declare major variables + effect eVis = EffectVisualEffect(VFX_DUR_LIGHT_WHITE_20); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eLink = SupernaturalEffect(EffectLinkEffects(eVis, eDur)); + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, spell.Target); + } +} diff --git a/_removed/x0_s0_dirge.ncs b/_removed/x0_s0_dirge.ncs new file mode 100644 index 0000000000000000000000000000000000000000..3b277c04a4a9926067ef23550eb1e66193a80e23 GIT binary patch literal 3979 zcmbtXO=w(I6u$3gCO<Q6MhR_fO!JsDEkvV<K_f+>FEg*rqw^EqOlMNCJo*!DFcL{X z?8c2tT?>MOOF?iYx)NOJM!}8XB8W(ZF1jcsi!3VRch8x7^X|*^VKE_-dFP&UzH`2F z?z#6hDlM<G_`<@95Mv*m7Wf(Vgq^2f$5y}m{Pdh4jnZ>sQuKPgU!mzpiS<j_nU=Q2 zDf#rhl-XT3Cyu?p5brL;w>Ed)+6dNDg4LCjAZWM_ERW@c_{ycPLVj9f5PV}h79bx% zBLD9T*ovQQtN%dpJUS<z?uvx1_>OE{7k&jTCp<6&6n;-wSk`~DAZPdcSa!jq{LiT1 z$hCdKqxc>OHxb{SaLE=aNS;Pt<1k33)?k4s_8p~&hYy(mPW+CgRtQj~EJNRO?R<*Y z+czL6buO;Q_2x=k38TuTX0uA*7dSBbyzfcW()vqrEw1^kb{qxmjvu*s$z4uZBQ}49 zQgIn|eRpGP>-P5c+W;N5vn<6@<}w_s+Lj%opa-&@M3G}ebQH;1S!7Kqz+V(30yC_L zP`_o-ff5m0OlsRAZBVAP#UHGV&d{O*7NH(mw9TSF4@LGv7Tr@Kf&nN6Y88+Tw=DI> zqzZ!ST}G5$JMS4PFN4MD<;8f-uLX5fAc$hWT5ZJ@{$2|@K@AB%L^Z%^o_p>u@{1Uh zEAnp@yje-!tA=!>FV&He?r2|1yH|Y7@gbDs{?5&ota9zWt@`#YNQQ21UEkf^*v$$1 zM+ZUN<30qL1Ck?TRE6UydgGidBq#CRtOB!~EH_KYEhr}+9~`HQtsRvyA}XxyY`$}S z=Z=44b1NMn8RaMpS(Kb`TJ5MXL)GwTQBb?-HX;0<=S9+_8mt>8)&P@FO_NHqVVLlg zGEv?%O}b&rFmVT<ESV-@qun<-MY-_S(I_MvRb^3(QP+)oN~}r*@nyST6W!ocfdf=| zliM7_E>RQ!VQJ1H7uY(~Z4=~JO~qcp8`2FvU|o!1Jy{Lv2@ONl_-vlXw(^O-R)}Od zrBb1M3rJ+jE<1<&ieO(i!g4cRJfmIoV`Fwx6!6JNZb1a^_hMN_WSs>sr^0qnH@0ou z>;zF1Rs&@N@|L(U^em$#Im-t+s5h(O#W08r2kCtT(-L7<D;bD-RFW^by%J_wIJ!4r zaFTH9LEEqUm%=PK-IKDS_9y*{Vq#Iv&?Us%HTaxutp%0Puf_gKSPR=%GbrR~o<U)@ zFC$CkYXF;*>4?(ADqG{=;+qH)JIF&8dXnRE8vQYJ8$lR!Tj%EGMwLO-YX67MK_0Tw z&<8BgpJMbUrtZ)#3n@w11S35WO=<{IHwr#u#Is6jo>L^1J6>K?O<hPySBInK)Bs(~ zOLNxgtuOsrV>}gk@}%x7G=ld%KBM3VbL5I1!gyG>Xf9q==on{<ypAU6UsEU5BK^lS zfL)g_VaNgxog=3lE;3*6^yg#2!+k@BYUjxZ%qRr}MDh}x+;tR8az5H$lN7;7pu&vO znU#c2D`!~xlB33$D9julBa~c1%^Kz_h)k}0IQB_x4hSQDGl-krMi7x}&h-_($>N5_ zcPQ&`3LcB<=0^78B!y=>iH>WX$9O%@*LBn%xOs_Ntt3E~d08K1;~vz8rJC&4ql$bG zQ2cc9JF1~3s70<wvx19z%h03;Sr)`ZJj9g89@Y5`YkWqhC2!ZDBrA24<vdqarh%uT zt{<5#LN<wa1DVxo;79G1z;DOhW^~z)npYZCSeTdBwdYGfUBKT2k-U_8K0)CFOuns% z&(U@6g&*YGh#0bsJ&@=2MWQr_)%1BlUay^T(7*eN7s}Y|)bw?$*ZXHxF*m>=zmn|h gtw1j(q|f_j*w%S)^Kc%(JS|_Ge>3vnZRLr70lp*QegFUf literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_dirge.nss b/_removed/x0_s0_dirge.nss new file mode 100644 index 0000000..4613125 --- /dev/null +++ b/_removed/x0_s0_dirge.nss @@ -0,0 +1,77 @@ +//:://///////////////////////////////////////////// +//:: Dirge +//:: x0_s0_dirge.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All creatures within the AoE take 2 points of Strength + and Dexterity ability score damage. + Lasts 1 round/level +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 2002 +//::////////////////////////////////////////////// +/* +Patch 1.71, fix by Shadoow + +- disabled aura stacking +- aoe signalized wrong spell ID +- moving bug fixed, now caster gains benefit of aura all the time, (cannot guarantee the others, +thats module-related) +*/ + +#include "70_inc_spells" +#include "x2_inc_spellhook" +#include "nw_i0_spells" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables including Area of Effect Object + spellsDeclareMajorVariables(); + //change from AOE_PER_FOGMIND to AOE_MOB_CIRCGOOD + effect eAOE = EffectAreaOfEffect(AOE_MOB_CIRCGOOD, "x0_s0_dirgeEN", "x0_s0_dirgeHB", "x0_s0_dirgeEX"); + effect eVis = EffectVisualEffect(VFX_DUR_AURA_ODD); + eAOE = EffectLinkEffects(eAOE, eVis); + int nDuration = spell.Level; + +// effect eCaster = EffectVisualEffect(VFX_DUR_BARD_SONG); //unused + + effect eFNF = EffectVisualEffect(VFX_FNF_SOUND_BURST); + //Apply the FNF to the spell location + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, spell.Loc); + + effect eImpact = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_ACID); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, spell.Loc); + + //Check Extend metamagic feat. + if(spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Create an instance of the AOE Object using the Apply Effect function + + //prevent stacking + RemoveEffectsFromSpell(spell.Target, spell.Id); + + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAOE, spell.Target, RoundsToSeconds(nDuration)); + spellsSetupNewAOE("VFX_MOB_CIRCGOOD","x0_s0_dirgehb"); +} diff --git a/_removed/x0_s0_earthquake.ncs b/_removed/x0_s0_earthquake.ncs new file mode 100644 index 0000000000000000000000000000000000000000..ca0beb30aa5e47bd469a264211e4a7536ece47be GIT binary patch literal 5505 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 aU%yII&rSYz+jflD(@OrPGEZu51nM6u5urr@ literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_earthquake.nss b/_removed/x0_s0_earthquake.nss new file mode 100644 index 0000000..36514a0 --- /dev/null +++ b/_removed/x0_s0_earthquake.nss @@ -0,0 +1,93 @@ +//:://///////////////////////////////////////////// +//:: Earthquake +//:: X0_S0_Earthquake +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* +// Ground shakes. 1d6 damage, max 10d6 +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 22 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs May 01, 2003 + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + + //Declare major variables + spellsDeclareMajorVariables(); + int nCasterLvl = spell.Level; + int nDamage; + float fDelay; + float nSize = RADIUS_SIZE_COLOSSAL; + effect eExplode = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30); + effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE); + effect eDam; + effect eShake = EffectVisualEffect(356); + //Limit Caster level for the purposes of damage + if (nCasterLvl > 20) + { + nCasterLvl = 20; + } + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShake, spell.Caster, RoundsToSeconds(6)); + + //Apply epicenter explosion on caster + //ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, GetLocation(OBJECT_SELF)); + + + //Declare the spell shape, size and the location. Capture the first target object in the shape. + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, nSize, spell.Loc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + //Cycle through the targets within the spell shape until an invalid object is captured. + while (GetIsObjectValid(oTarget)) + { + if (oTarget != spell.Caster && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id)); + //Get the distance between the explosion and the target to calculate delay + fDelay = GetDistanceBetweenLocations(spell.Loc, GetLocation(oTarget))/20; +// Earthquake does not allow spell resistance +// if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay)) +// { + nDamage = MaximizeOrEmpower(6, nCasterLvl, spell.Meta); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. (Don't bother for caster) + nDamage = GetReflexAdjustedDamage(nDamage, oTarget, spell.DC, SAVING_THROW_TYPE_NONE, spell.Caster); + //Set the damage effect + eDam = EffectDamage(nDamage, DAMAGE_TYPE_BLUDGEONING); + // * caster can't be affected by the spell + if(nDamage > 0) + { + // Apply effects to the currently selected target. + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); + //This visual effect is applied to the target object not the location as above. This visual effect + //represents the flame that erupts on the target not on the ground. + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } +// } + } + //Select the next target within the spell shape. + oTarget = GetNextObjectInShape(SHAPE_SPHERE, nSize, spell.Loc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + } +} diff --git a/_removed/x0_s0_elecjolt.ncs b/_removed/x0_s0_elecjolt.ncs new file mode 100644 index 0000000000000000000000000000000000000000..364d130c76851bd01f172e8f455b56fc267f6bfb GIT binary patch literal 10989 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 AiU0rr literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_elecjolt.nss b/_removed/x0_s0_elecjolt.nss new file mode 100644 index 0000000..3cd91c1 --- /dev/null +++ b/_removed/x0_s0_elecjolt.nss @@ -0,0 +1,61 @@ +//:://///////////////////////////////////////////// +//:: Electric Jolt +//:: [x0_s0_ElecJolt.nss] +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* +1d3 points of electrical damage to one target. +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 17 2002 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + + effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Make SR Check + if(!MyResistSpell(spell.Caster, spell.Target)) + { + //Set damage effect + + //1d3 of additional damage roughly for every 3 caster levels, but no more than 10d3. + int cMultiplier = GetCasterLevel(OBJECT_SELF) / 3; + if (cMultiplier <= 1) cMultiplier = 1; + if (cMultiplier >= 7) cMultiplier = 7; + int nDamage = MaximizeOrEmpower(3, cMultiplier, spell.Meta); + effect eBad = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); + //Apply the VFX impact and damage effect + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBad, spell.Target); + } + } +} diff --git a/_removed/x0_s0_ether.ncs b/_removed/x0_s0_ether.ncs new file mode 100644 index 0000000000000000000000000000000000000000..124ca020c9aadec0901db9d4a3be5b50c324b757 GIT binary patch literal 2814 zcmbtW&rcIU6rR~_%a3ia5+Vp9n<|iCP>>kBcv#xiY}^9rZVDdE1`#8%rlw6yxOnmE z*~ElD!}ur2#TfqpVvO;?frB9&dLY&}@9k`NnspN*O`!YDd*A!!dv9i0EqP{b@#ew` zV}pOLGWh8?nU=$kuE`HQ56>}-DBNHZtkdaygGgN<e7LAjiQN38c+wEt&*%ce--Rq= zAGH|p6@e_%4w%k?>I~w<-`^|)D+d}roQ7aK1i6TS2P}Rz+l}`*J{+?Qme33n)m)d< zgkCaL0+NH7hb$ALJJs<4%7d1-qy+@R!yXlq!ayyOa9BDdS;wXbENtEm+`zRwKd9P% z&8lW{!iy~90~&pWp#1Ve(0a8~uRm`zUI0VCmX^tuQkQ{P?zX7oK0zcJ)fPQrc`^;u zp^}-<JVK%PEryUxIs>Vn2ud~_qkqX>0Ks>P2A?9%HbG!+1T_fy(S@`Vf{rAF-a}Co z$_>~J%?Gx0LbeHgFM`SqEoUkrcfiG|<;7s#a_tIqz^(>Xx$Ffc`tI5_+XcNR&<*f3 zN2Br+c|n7uqP`mDv@q|kf)0deqzq#RLllnydq?^}%8=FE_C%N6*Y!%{DIk5@^{rNG zrv=mhSqBkEG*n<_!sf6tbcOWf%@NuxAfxbI?E<+RZ#N-G3zj3tn<3mWZ^|8mB4fR| z`*N$fXFb`i_X@<MEXoi~$uiyZtHw3#hKY+zJyux%%RHUyFr{p7Dk(f6<%611T3c08 zw1kvrYRZP=DJhwRlqEIAS@pw|aoh_XooM6{8<cI4j^Wgem=cyP0{Ed8_9Pl`>_8j3 zyh~#acT}t?PzaXhxSTJXwlO4@ms!U!`=S9)SZ5btJ>CtRiKq;AV}G70oZN^QF>_LG z1@~*fMkckQ-aS`X_MSqKNu{_PQH0va-5v|*^@6lwPQ=B;^F^VE&wwxEj&E0#V;ij1 z>}u61+cF2tTcW{$t2pK>oTX%f%39gE@7Ps^p!Xa>Y5{APODPqjs}i}y@rtFT)rn>U z5=OC3#rCa=^}tCh7tN&TsP;bWDBM`sGnf+e?J;mpd+T<|vE0B~aa_lLlwu*hZc{8w z=Tdelxf0x*=vCBftjxs&n`CSfLt6E?$Hm_2|FByTq1er5=fy!4B3$=>>`Y=v+eY+) zh3Xfn`nj#^=A~7N8#YFj&SjIl1aTS}y<^xFiK_1@M8%26e-M>eKruFwBX7opSol{% az3cEGilZ-h`31Ta>E_|80=z0tP4*XKI))Gc literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_ether.nss b/_removed/x0_s0_ether.nss new file mode 100644 index 0000000..a1322bd --- /dev/null +++ b/_removed/x0_s0_ether.nss @@ -0,0 +1,57 @@ +//:://///////////////////////////////////////////// +//:: Etherealness +//:: x0_s0_ether.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Like sanctuary except almost always guaranteed + to work. + Lasts one turn per level. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_DUR_SANCTUARY); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eSanc = EffectEthereal(); + + effect eLink = EffectLinkEffects(eVis, eSanc); + eLink = EffectLinkEffects(eLink, eDur); + + int nDuration = GetCasterLevel(spell.Caster); + //Enter Metamagic conditions + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); +} diff --git a/_removed/x0_s0_fleshsto.ncs b/_removed/x0_s0_fleshsto.ncs new file mode 100644 index 0000000000000000000000000000000000000000..874f70312feb9434a223993d471db492a8d81ebd GIT binary patch literal 15420 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_fleshsto.nss b/_removed/x0_s0_fleshsto.nss new file mode 100644 index 0000000..487d204 --- /dev/null +++ b/_removed/x0_s0_fleshsto.nss @@ -0,0 +1,45 @@ +//:://///////////////////////////////////////////// +//:: Flesh to Stone +//:: x0_s0_fleshsto +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* +//:: The target freezes in place, standing helpless. +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent Knowles +//:: Created On: October 16, 2002 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + DoPetrification(spell.Level, spell.Caster, spell.Target, spell.Id, spell.DC+40); + } +} diff --git a/_removed/x0_s0_inflict.ncs b/_removed/x0_s0_inflict.ncs new file mode 100644 index 0000000000000000000000000000000000000000..1bcd80f35da394e52e6f3f35c80009079cafb7da GIT binary patch literal 9856 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 PC0W7@p<Y?}v8etJGg0v) literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_inflict.nss b/_removed/x0_s0_inflict.nss new file mode 100644 index 0000000..e64c32c --- /dev/null +++ b/_removed/x0_s0_inflict.nss @@ -0,0 +1,63 @@ +//:://///////////////////////////////////////////// +//:: [Inflict Wounds] +//:: [X0_S0_Inflict.nss] +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +//:: This script is used by all the inflict spells +//:: +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 2002 +//:: Modified: 69MEH69 JUL2003 +//::////////////////////////////////////////////// +//:: VFX Pass By: +#include "X0_I0_SPELLS" // * this is the new spells include for expansion packs + +void main() +{ + int nSpellID = GetSpellId(); + object oTarget = GetSpellTargetObject(); + string sTag = GetTag(oTarget); + object oArea = GetArea(oTarget); + int nCHP = GetLocalInt(oArea, "nCHP" +sTag); + int nCure; + switch (nSpellID) + { +/*Minor*/ case 431: spellsInflictTouchAttack(1, 0, 1, 246, VFX_IMP_HEALING_G, nSpellID); + nCure = 1; + if(GetIsHenchmanDying(oTarget) && GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + SetLocalInt(oArea, "nCHP" +sTag, nCHP + nCure); + } + break; +/*Light*/ case 432: case 609: spellsInflictTouchAttack(d8(), 5, 8, 246, VFX_IMP_HEALING_G, nSpellID); + nCure = d8(1); + if(GetIsHenchmanDying(oTarget) && GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + SetLocalInt(oArea, "nCHP" +sTag, nCHP + nCure); + } + break; +/*Moderate*/ case 433: case 610: spellsInflictTouchAttack(d8(2), 10, 16, 246, VFX_IMP_HEALING_G, nSpellID); + nCure = d8(2); + if(GetIsHenchmanDying(oTarget) && GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + SetLocalInt(oArea, "nCHP" +sTag, nCHP + nCure); + } + break; +/*Serious*/ case 434: case 611: spellsInflictTouchAttack(d8(3), 15, 24, 246, VFX_IMP_HEALING_G, nSpellID); + nCure = d8(3); + if(GetIsHenchmanDying(oTarget) && GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + SetLocalInt(oArea, "nCHP" +sTag, nCHP + nCure); + } + break; +/*Critical*/ case 435: case 612: spellsInflictTouchAttack(d8(4), 20, 32, 246, VFX_IMP_HEALING_G, nSpellID); + nCure = d8(4); + if(GetIsHenchmanDying(oTarget) && GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + SetLocalInt(oArea, "nCHP" +sTag, nCHP + nCure); + } + break; + + } +} diff --git a/_removed/x0_s0_missstorm1.ncs b/_removed/x0_s0_missstorm1.ncs new file mode 100644 index 0000000000000000000000000000000000000000..558156f9ff56929bea89a6a2c36b1590b140b3ee GIT binary patch literal 13159 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 I{PC>!KW7A>IsgCw literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_missstorm1.nss b/_removed/x0_s0_missstorm1.nss new file mode 100644 index 0000000..10975a2 --- /dev/null +++ b/_removed/x0_s0_missstorm1.nss @@ -0,0 +1,211 @@ +//:://///////////////////////////////////////////// +//:: Isaacs Lesser Missile Storm +//:: x0_s0_MissStorm1 +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Up to 10 missiles, each doing 1d6 damage to all + targets in area. +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 31, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +//This version of the spell applies all damage as a cumulated single hit instead of spreading it among all the missiles. +//This has been done because before that the spell used to be useless against any target with 15 magical resistance or more. +void DoMassMissileStorm(int nD6Dice, int nCap, int nSpell, int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE, int nDAMAGETYPE = DAMAGE_TYPE_MAGICAL, int nONEHIT = FALSE, int nReflexSave = FALSE) +{ + if(spell.Caster == OBJECT_INVALID) spellsDeclareMajorVariables();//pre 1.70 spellscripts support + int nCasterLvl = spell.Level; + int i, nSAVETYPE, nCnt = 1; + effect eMissile = EffectVisualEffect(nMIRV); + effect eVis = EffectVisualEffect(nVIS); + float fDist = 0.0; + float fDelay = 0.0; + float fDelay2, fTime; + int nMissiles = nCasterLvl; + + if (nMissiles > nCap) + { + nMissiles = nCap; + } + + /* New Algorithm + 1. Count # of targets + 2. Determine number of missiles + 3. First target gets a missile and all Excess missiles + 4. Rest of targets (max nMissiles) get one missile + */ + int nEnemies = 0; + + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, spell.Loc, TRUE, OBJECT_TYPE_CREATURE); + //Cycle through the targets within the spell shape until an invalid object is captured. + while (GetIsObjectValid(oTarget)) + { + // * caster cannot be harmed by this spell + if (oTarget != spell.Caster && spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, spell.Caster)) + { + // GZ: You can only fire missiles on visible targets + // If the firing object is a placeable (such as a projectile trap), + // we skip the line of sight check as placeables can't "see" things. + if ( ( GetObjectType(spell.Caster) == OBJECT_TYPE_PLACEABLE ) || + GetObjectSeen(oTarget,spell.Caster)) + { + nEnemies++; + } + } + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, spell.Loc, TRUE, OBJECT_TYPE_CREATURE); + } + + if (nEnemies == 0) return; // * Exit if no enemies to hit + int nExtraMissiles = nMissiles / nEnemies; + + // April 2003 + // * if more enemies than missiles, need to make sure that at least + // * one missile will hit each of the enemies + if (nExtraMissiles <= 0) + { + nExtraMissiles = 1; + } + + switch(nDAMAGETYPE)//1.71: support for custom content missile storm spells with nonstandard damage type + { + case DAMAGE_TYPE_ACID: + nSAVETYPE = SAVING_THROW_TYPE_ACID; + break; + case DAMAGE_TYPE_ELECTRICAL: + nSAVETYPE = SAVING_THROW_TYPE_ELECTRICITY; + break; + case DAMAGE_TYPE_FIRE: + nSAVETYPE = SAVING_THROW_TYPE_FIRE; + break; + case DAMAGE_TYPE_COLD: + nSAVETYPE = SAVING_THROW_TYPE_COLD; + break; + case DAMAGE_TYPE_SONIC: + nSAVETYPE = SAVING_THROW_TYPE_SONIC; + break; + case DAMAGE_TYPE_POSITIVE: + nSAVETYPE = SAVING_THROW_TYPE_POSITIVE; + break; + case DAMAGE_TYPE_NEGATIVE: + nSAVETYPE = SAVING_THROW_TYPE_NEGATIVE; + break; + } + + // by default the Remainder will be 0 (if more than enough enemies for all the missiles) + int nRemainder = 0; + + if (nExtraMissiles >0) + nRemainder = nMissiles % nEnemies; + + if (nEnemies > nMissiles) + nEnemies = nMissiles; + + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, spell.Loc, TRUE, OBJECT_TYPE_CREATURE); + if (nSpell == SPELL_BALL_LIGHTNING)//1.71: ball lightning has a single target area of effect + { + oTarget = spell.Target; + nEnemies = 1; + nExtraMissiles = nMissiles; + nRemainder = 0; + } + //Cycle through the targets within the spell shape until an invalid object is captured. + while (GetIsObjectValid(oTarget) && nCnt <= nEnemies) + { + // * caster cannot be harmed by this spell + if (oTarget != spell.Caster && spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, spell.Caster) && + (GetObjectType(spell.Caster) == OBJECT_TYPE_PLACEABLE || GetObjectSeen(oTarget,spell.Caster))) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, nSpell)); + + // * recalculate appropriate distances + fDist = GetDistanceBetween(spell.Caster, oTarget); + fDelay = fDist/(3.0 * log(fDist) + 2.0); + + // Firebrand. + // It means that once the target has taken damage this round from the + // spell it won't take subsequent damage + if (nONEHIT) + { + nExtraMissiles = 1; + nRemainder = 0; + } + + //-------------------------------------------------------------- + // GZ: Moved SR check out of loop to have 1 check per target + // not one check per missile, which would rip spell mantels + // apart + //-------------------------------------------------------------- + if (!MyResistSpell(spell.Caster, oTarget, fDelay)) + { + nCap = nExtraMissiles + (nRemainder > 0);//1.71: this will distribute remainder missiles evenly amongs all targets + for (i=1; i <= nCap; i++) + { + //Roll damage + int nDam = MaximizeOrEmpower(6,nD6Dice,spell.Meta); + // if reflexsave allowed, make evasion check + if(nReflexSave) + { + nDam = GetReflexAdjustedDamage(nDam, oTarget, spell.DC, nSAVETYPE, spell.Caster); + } + + fDelay2 += 0.1; + fTime = fDelay + fDelay2; + + //Set damage effect + effect eDam = EffectDamage(nDam, nDAMAGETYPE); + //Apply the MIRV and damage effect + DelayCommand(fTime, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget)); + DelayCommand(fDelay2, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget)); + //do not bother when no damage should happen anyway + SetLocalInt(oTarget, "msldmg", GetLocalInt(oTarget, "msldmg") + nDam ); + if(i == (nExtraMissiles + nRemainder)) + { + effect eDamage = EffectDamage(GetLocalInt(oTarget, "msldmg"), nDAMAGETYPE); + DelayCommand(fTime, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget)); + DelayCommand(fTime, SetLocalInt(oTarget, "msldmg", 0)); + } + } + } // for + else + { // * apply a dummy visual effect + ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget); + } + nCnt++;// * increment count of missiles fired + nRemainder--; + } + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, spell.Loc, TRUE, OBJECT_TYPE_CREATURE); + } +} + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + spellsDeclareMajorVariables(); + //SpawnScriptDebugger(); + DoMassMissileStorm(1, 10, spell.Id); +} diff --git a/_removed/x0_s0_missstorm2.ncs b/_removed/x0_s0_missstorm2.ncs new file mode 100644 index 0000000000000000000000000000000000000000..472e17350b2ba970255973e9f1515830894c95fa GIT binary patch literal 13159 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 JYx(0@?|)>7pg#Zr literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_missstorm2.nss b/_removed/x0_s0_missstorm2.nss new file mode 100644 index 0000000..bceac53 --- /dev/null +++ b/_removed/x0_s0_missstorm2.nss @@ -0,0 +1,211 @@ +//:://///////////////////////////////////////////// +//:: Isaacs Greater Missile Storm +//:: x0_s0_MissStorm2 +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* + Up to 20 missiles, each doing 3d6 damage to each + target in area. +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 31, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +//This version of the spell applies all damage as a cumulated single hit instead of spreading it among all the missiles. +//This has been done because before that the spell used to be useless against any target with 15 magical resistance or more. +void DoMassMissileStorm(int nD6Dice, int nCap, int nSpell, int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE, int nDAMAGETYPE = DAMAGE_TYPE_MAGICAL, int nONEHIT = FALSE, int nReflexSave = FALSE) +{ + if(spell.Caster == OBJECT_INVALID) spellsDeclareMajorVariables();//pre 1.70 spellscripts support + int nCasterLvl = spell.Level; + int i, nSAVETYPE, nCnt = 1; + effect eMissile = EffectVisualEffect(nMIRV); + effect eVis = EffectVisualEffect(nVIS); + float fDist = 0.0; + float fDelay = 0.0; + float fDelay2, fTime; + int nMissiles = nCasterLvl; + + if (nMissiles > nCap) + { + nMissiles = nCap; + } + + /* New Algorithm + 1. Count # of targets + 2. Determine number of missiles + 3. First target gets a missile and all Excess missiles + 4. Rest of targets (max nMissiles) get one missile + */ + int nEnemies = 0; + + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, spell.Loc, TRUE, OBJECT_TYPE_CREATURE); + //Cycle through the targets within the spell shape until an invalid object is captured. + while (GetIsObjectValid(oTarget)) + { + // * caster cannot be harmed by this spell + if (oTarget != spell.Caster && spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, spell.Caster)) + { + // GZ: You can only fire missiles on visible targets + // If the firing object is a placeable (such as a projectile trap), + // we skip the line of sight check as placeables can't "see" things. + if ( ( GetObjectType(spell.Caster) == OBJECT_TYPE_PLACEABLE ) || + GetObjectSeen(oTarget,spell.Caster)) + { + nEnemies++; + } + } + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, spell.Loc, TRUE, OBJECT_TYPE_CREATURE); + } + + if (nEnemies == 0) return; // * Exit if no enemies to hit + int nExtraMissiles = nMissiles / nEnemies; + + // April 2003 + // * if more enemies than missiles, need to make sure that at least + // * one missile will hit each of the enemies + if (nExtraMissiles <= 0) + { + nExtraMissiles = 1; + } + + switch(nDAMAGETYPE)//1.71: support for custom content missile storm spells with nonstandard damage type + { + case DAMAGE_TYPE_ACID: + nSAVETYPE = SAVING_THROW_TYPE_ACID; + break; + case DAMAGE_TYPE_ELECTRICAL: + nSAVETYPE = SAVING_THROW_TYPE_ELECTRICITY; + break; + case DAMAGE_TYPE_FIRE: + nSAVETYPE = SAVING_THROW_TYPE_FIRE; + break; + case DAMAGE_TYPE_COLD: + nSAVETYPE = SAVING_THROW_TYPE_COLD; + break; + case DAMAGE_TYPE_SONIC: + nSAVETYPE = SAVING_THROW_TYPE_SONIC; + break; + case DAMAGE_TYPE_POSITIVE: + nSAVETYPE = SAVING_THROW_TYPE_POSITIVE; + break; + case DAMAGE_TYPE_NEGATIVE: + nSAVETYPE = SAVING_THROW_TYPE_NEGATIVE; + break; + } + + // by default the Remainder will be 0 (if more than enough enemies for all the missiles) + int nRemainder = 0; + + if (nExtraMissiles >0) + nRemainder = nMissiles % nEnemies; + + if (nEnemies > nMissiles) + nEnemies = nMissiles; + + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, spell.Loc, TRUE, OBJECT_TYPE_CREATURE); + if (nSpell == SPELL_BALL_LIGHTNING)//1.71: ball lightning has a single target area of effect + { + oTarget = spell.Target; + nEnemies = 1; + nExtraMissiles = nMissiles; + nRemainder = 0; + } + //Cycle through the targets within the spell shape until an invalid object is captured. + while (GetIsObjectValid(oTarget) && nCnt <= nEnemies) + { + // * caster cannot be harmed by this spell + if (oTarget != spell.Caster && spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, spell.Caster) && + (GetObjectType(spell.Caster) == OBJECT_TYPE_PLACEABLE || GetObjectSeen(oTarget,spell.Caster))) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, nSpell)); + + // * recalculate appropriate distances + fDist = GetDistanceBetween(spell.Caster, oTarget); + fDelay = fDist/(3.0 * log(fDist) + 2.0); + + // Firebrand. + // It means that once the target has taken damage this round from the + // spell it won't take subsequent damage + if (nONEHIT) + { + nExtraMissiles = 1; + nRemainder = 0; + } + + //-------------------------------------------------------------- + // GZ: Moved SR check out of loop to have 1 check per target + // not one check per missile, which would rip spell mantels + // apart + //-------------------------------------------------------------- + if (!MyResistSpell(spell.Caster, oTarget, fDelay)) + { + nCap = nExtraMissiles + (nRemainder > 0);//1.71: this will distribute remainder missiles evenly amongs all targets + for (i=1; i <= nCap; i++) + { + //Roll damage + int nDam = MaximizeOrEmpower(6,nD6Dice,spell.Meta); + // if reflexsave allowed, make evasion check + if(nReflexSave) + { + nDam = GetReflexAdjustedDamage(nDam, oTarget, spell.DC, nSAVETYPE, spell.Caster); + } + + fDelay2 += 0.1; + fTime = fDelay + fDelay2; + + //Set damage effect + effect eDam = EffectDamage(nDam, nDAMAGETYPE); + //Apply the MIRV and damage effect + DelayCommand(fTime, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget)); + DelayCommand(fDelay2, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget)); + //do not bother when no damage should happen anyway + SetLocalInt(oTarget, "msldmg", GetLocalInt(oTarget, "msldmg") + nDam ); + if(i == (nExtraMissiles + nRemainder)) + { + effect eDamage = EffectDamage(GetLocalInt(oTarget, "msldmg"), nDAMAGETYPE); + DelayCommand(fTime, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget)); + DelayCommand(fTime, SetLocalInt(oTarget, "msldmg", 0)); + } + } + } // for + else + { // * apply a dummy visual effect + ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget); + } + nCnt++;// * increment count of missiles fired + nRemainder--; + } + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_GARGANTUAN, spell.Loc, TRUE, OBJECT_TYPE_CREATURE); + } +} + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + spellsDeclareMajorVariables(); + //SpawnScriptDebugger(); + DoMassMissileStorm(1, 15, spell.Id); +} diff --git a/_removed/x0_s0_quillfire.ncs b/_removed/x0_s0_quillfire.ncs new file mode 100644 index 0000000000000000000000000000000000000000..4ecfa5d0449e379b2f780ff769fc92868d8c1a4c GIT binary patch literal 5120 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_quillfire.nss b/_removed/x0_s0_quillfire.nss new file mode 100644 index 0000000..d190e09 --- /dev/null +++ b/_removed/x0_s0_quillfire.nss @@ -0,0 +1,83 @@ +//:://///////////////////////////////////////////// +//:: Quillfire +//:: [x0_s0_quillfire.nss] +//:: Copyright (c) 2002 Bioware Corp. +//::////////////////////////////////////////////// +/* + Fires a cluster of quills at a target. Ranged Attack. + 2d8 + 1 point /2 levels (max 5) + +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 17 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs May 02, 2003 +/* +Patch 1.71 + +- poison made extraordinary +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables ( fDist / (3.0f * log( fDist ) + 2.0f) ) + spellsDeclareMajorVariables(); + int nCasterLvl = spell.Level; + int nDamage = 0; + int nCnt; + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Apply a single damage hit for each missile instead of as a single mass + //Make SR Check +// { + // BK: No spell resistance for quillfire + //if(!MyResistSpell(OBJECT_SELF, oTarget, fDelay)) +// { + //eMissile = EffectVisualEffect(VFX_IMP_MIRV_FLAME); + //* apply bonus damage for level + int nBonus = spell.Level / 2; + if (nBonus > 5) + { + nBonus = 5; + } + //Roll damage + int nDam = MaximizeOrEmpower(8,nBonus,spell.Meta,nBonus); + effect eDam = EffectDamage(nDam, DAMAGE_TYPE_MAGICAL); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, spell.Target); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, spell.Target); + // * also applies poison damage + effect ePoison = EffectPoison(POISON_LARGE_SCORPION_VENOM); + ePoison = ExtraordinaryEffect(ePoison); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, spell.Target); + + //Apply the MIRV and damage effect + //ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget); +// } +// } + } +} diff --git a/_removed/x0_s0_spikegroen.ncs b/_removed/x0_s0_spikegroen.ncs new file mode 100644 index 0000000000000000000000000000000000000000..5bc381481ac6ea89231517e23e9ce19e3a0ea4c4 GIT binary patch literal 12396 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_spikegroen.nss b/_removed/x0_s0_spikegroen.nss new file mode 100644 index 0000000..c121c41 --- /dev/null +++ b/_removed/x0_s0_spikegroen.nss @@ -0,0 +1,56 @@ +//:://///////////////////////////////////////////// +//:: Spike Growth: On Enter +//:: x0_s0_spikegroEN.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All creatures within the AoE take 1d4 acid damage + per round +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent Knowles +//:: Created On: September 6, 2002 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- flying and incorporeal creatures are immune +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + aoesDeclareMajorVariables(); + object oTarget = GetEnteringObject(); + float fDelay = GetRandomDelay(1.0, 2.2); + if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoe.Creator)) + { + //Fire cast spell at event for the target + SignalEvent(oTarget, EventSpellCastAt(aoe.AOE, spell.Id)); + //Spell resistance check + if(!spellsIsFlying(oTarget) && !GetCreatureFlag(oTarget, CREATURE_VAR_IS_INCORPOREAL) && !MyResistSpell(aoe.Creator, oTarget, fDelay)) + { + int nDam = MaximizeOrEmpower(8, 1, spell.Meta); + + effect eDam = EffectDamage(nDam, DAMAGE_TYPE_PIERCING); + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + //Apply damage and visuals + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); + + // * only apply a slow effect from this spell once + if(!GetHasSpellEffect(spell.Id, oTarget)) + { + //Make a Reflex Save to avoid the effects of the movement hit. + if(!MySavingThrow(SAVING_THROW_REFLEX, oTarget, spell.DC, SAVING_THROW_TYPE_NONE, aoe.Creator, fDelay)) + { + effect eSpeed = EffectMovementSpeedDecrease(50); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpeed, oTarget, HoursToSeconds(24)); + } + } + } + } +} diff --git a/_removed/x0_s0_spikegrohb.ncs b/_removed/x0_s0_spikegrohb.ncs new file mode 100644 index 0000000000000000000000000000000000000000..7407449a53b00f2c0b96c2b106fb268878f535fe GIT binary patch literal 14885 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_spikegrohb.nss b/_removed/x0_s0_spikegrohb.nss new file mode 100644 index 0000000..dcf4b7c --- /dev/null +++ b/_removed/x0_s0_spikegrohb.nss @@ -0,0 +1,78 @@ +//:://///////////////////////////////////////////// +//:: Spike Growth: On Heartbeat +//:: x0_s0_spikegroHB.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All creatures within the AoE take 1d4 acid damage + per round +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent Knowles +//:: Created On: September 6, 2002 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- aoe will vanish with caster +- flying and incorporeal creatures are immune +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + aoesDeclareMajorVariables(); + //-------------------------------------------------------------------------- + // When the caster is no longer there, all functions calling + // GetAreaOfEffectCreator will fail. Its better to remove the barrier then + //-------------------------------------------------------------------------- + if(!GetIsObjectValid(aoe.Creator)) + { + DestroyObject(aoe.AOE); + return; + } + + spellsDeclareMajorVariables(); + effect eSpeed = EffectMovementSpeedDecrease(50); + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + effect eDam; + float fDelay; + int nDamage; + + //Start cycling through the AOE Object for viable targets including doors and placable objects. + object oTarget = GetFirstInPersistentObject(aoe.AOE); + while(GetIsObjectValid(oTarget)) + { + if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoe.Creator)) + { + //Fire cast spell at event for the target + SignalEvent(oTarget, EventSpellCastAt(aoe.AOE, spell.Id)); + fDelay = GetRandomDelay(1.0, 2.2); + //Spell resistance check + if(!spellsIsFlying(oTarget) && !GetCreatureFlag(oTarget, CREATURE_VAR_IS_INCORPOREAL) && !MyResistSpell(aoe.Creator, oTarget, fDelay)) + { + nDamage = MaximizeOrEmpower(8, 1, spell.Meta); + eDam = EffectDamage(nDamage, DAMAGE_TYPE_PIERCING); + + //Apply damage and visuals + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); + + // * only apply a slow effect from this spell once + if (!GetHasSpellEffect(spell.Id, oTarget)) + { + //Make a Reflex Save to avoid the effects of the movement hit. + if(!MySavingThrow(SAVING_THROW_REFLEX, oTarget, spell.DC, SAVING_THROW_TYPE_NONE, aoe.Creator, fDelay)) + { + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpeed, oTarget, HoursToSeconds(24)); + } + } + } + } + //Get next target. + oTarget = GetNextInPersistentObject(aoe.AOE); + } +} diff --git a/_removed/x0_s0_woundwhis.ncs b/_removed/x0_s0_woundwhis.ncs new file mode 100644 index 0000000000000000000000000000000000000000..3c3c993605fdfc2183f15fe223c36e0330a39344 GIT binary patch literal 3071 zcmbtWOHbTZ6u!2HNAL(pL;{6StZ9=-iAW%*qMIz78Mm_P0W>om$Re_aSBo+U2+}re zvgx+#NR_(ikErq!(k`m5vdAK;swh%fu&5A=Ss+cndycR1bsS45jKs`6&+mNa++#14 z>rQj_=FD9o?C!?`fBlXyd+B4D>ci&?g&uL~(GTHT>)}po>zha6`f9kovDx~r{TP}H zDb16e+3SKL4&M+HqTB8MfykDW7^@{~O6Dp~%2SPGhXqTD=zo8Y5Wkt%3^=_O1@%oT zbJUUF{cPB0Nt<JV{KmglBEnx3fwU(ujjhD*CLInUVMn?`Xh;hj2<Qn1qP#Do{BVHb zu|>i|I{e58aZr{(F=J9?mz7A_%NhqR(&?=za4EJ!wx1Frgkk9=hrl2qgHc+f-#1h^ zRS~%uP`zgB14lv|Ub!6xVc^yqVa;na-CChnatnCpO#TU@;`~gwx3kf1f4jZ?01^7l zJWnx~t43gg1hPvO;YU*le@FIM6uB0lBP3TP-EoCTeoK%DB(Nc%K4;N?N<^h|8yW^# zV>Xnv_?xX&))U0+um~NDt+rY8>QrPNvFINqqBKZKKn)w!04mC&R!t}n#Cr)Sm(5;B zGx-cGPR-ATOK#v*(E+a(x|K>jEc5TcYkC2|9ibcGw3kQV4aEfp6^i?6J69xmpKH={ zku*j|wgZuru9WzR@d3)9ySrAGT@Jo)SGU(8>04{J_VzaRdW8AH0*C`1Dv+5`9AyTn zjHl>~aIuh#;<w%fW;xkzmQYwwPBESiQpLuusu+murQNNEt=)Zhb*r5QNKQQj1J@H; ztKO*DpHMd(QVRX<QvN@uMbf3>t!OSrhRe^oOL=iYb4hIo%Cf1uEc<oMrI3+jPIvJa z8j;I5)xuXt-$MhcEs8Okx)Dc-Rf{10%8Ysv4>)z8gD!9Jm}B=Onu0Nh>bgN8Fyl0B zV-#2|sjltx#RHz97emk|yFoJ%ry-txnHE}1!;T}8=cFoyIIvO3q*<~~?-ixJqlGBs zhWIEB5n*F?Qxx#yjl#zFy;zcnjH}>f+;4bQ?b?QmO|Mq-E1vQJd2>7%`j*07$_`Ln ztoUE}UQG*-zDIB!rrecsPR4lCQ7n1A5^i~U;@N=1DCMbo4Y%rk>F1@3XHs_5d=_;S z8;g2|DIwnOBj%O*l2`WKAaw8gf#0~7Lm_YT918PeX;rFN8Ej6Z5v7S$zS@K9BtdLe zguLuYj!Wt6@1a`*q0wzzo0b<<f(U{Sp))H&UKyBU-WJGyp0l5sx>LWrOi9AVIMbPE zQcIAZ2>gr@mz7k1PLUJ@XV^kYwlN&F88d9LFZEqV^CGXle33PVcq{VeNxiQSsmBgK zqYwvs<m-3|<FI1TUc9HWW1Y>i9(yKwYn)I@`o=bZ-!i|1p$Z(D?>y!3BJ(Tvlm2%c F@jou*;5h&Q literal 0 HcmV?d00001 diff --git a/_removed/x0_s0_woundwhis.nss b/_removed/x0_s0_woundwhis.nss new file mode 100644 index 0000000..dcf1aff --- /dev/null +++ b/_removed/x0_s0_woundwhis.nss @@ -0,0 +1,74 @@ +//:://///////////////////////////////////////////// +//:: Wounding Whispers +//:: x0_s0_WoundWhis.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Magical whispers cause 1d8 sonic damage to attackers who hit you. + Made the damage slightly more than the book says because we cannot + do the +1 per level. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//::////////////////////////////////////////////// +//:: Modified for wounding whispers, July 30 2002, Brent +//::////////////////////////////////////////////// +//:: Last Update By: Andrew Nobbs May 01, 2003 +/* +Patch 1.70 + +- damage wasn't random +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_POSITIVE); + int nDuration = spell.Level; + int nBonus = spell.Level/2; + effect eShield = EffectDamageShield(nBonus, DAMAGE_BONUS_1d6, DAMAGE_TYPE_SONIC); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + + //Link effects + effect eLink = EffectLinkEffects(eShield, eDur); + eLink = EffectLinkEffects(eLink, eVis); + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + + if (GetHasSpellEffect(spell.Id, spell.Target)) + { + RemoveEffectsFromSpell(spell.Target,spell.Id);//the old function would allow stacking after changes i have done + } + + //Enter Metamagic conditions + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); +} diff --git a/_removed/x0_s1_petrbreath.ncs b/_removed/x0_s1_petrbreath.ncs new file mode 100644 index 0000000000000000000000000000000000000000..8ae390c1b8830b70537f38c662ba7e395b0ebab6 GIT binary patch literal 13168 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 SD3M8)TIU(g9+WG?`Sjn82$4+y literal 0 HcmV?d00001 diff --git a/_removed/x0_s1_petrbreath.nss b/_removed/x0_s1_petrbreath.nss new file mode 100644 index 0000000..8455ee0 --- /dev/null +++ b/_removed/x0_s1_petrbreath.nss @@ -0,0 +1,36 @@ +//:://///////////////////////////////////////////////// +//:: X0_S1_PETRBREATH +//:: Petrification breath monster ability. +//:: Fortitude save (DC 17) or be turned to stone permanently. +//:: This will be changed to a temporary effect. +//:: Copyright (c) 2002 Floodgate Entertainment +//:: Created By: Naomi Novik +//:: Created On: 11/14/2002 +//:://///////////////////////////////////////////////// + +#include "x0_i0_spells" + +void main() +{ + object oTarget = GetSpellTargetObject(); + int nHitDice = GetHitDice(OBJECT_SELF); + + location lTargetLocation = GetSpellTargetLocation(); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) + { + int nSpellID = GetSpellId(); + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpellID)); + float fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + + object oSelf = OBJECT_SELF; + DelayCommand(fDelay, DoPetrification(nHitDice, oSelf, oTarget, nSpellID, 17)); + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + } +} diff --git a/_removed/x0_s1_petrgaze.ncs b/_removed/x0_s1_petrgaze.ncs new file mode 100644 index 0000000000000000000000000000000000000000..0eec807647f8538becd68d5b3c48d8a987c89ea5 GIT binary patch literal 13451 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 N&v5pjTp7-%{|27p<ktWI literal 0 HcmV?d00001 diff --git a/_removed/x0_s1_petrgaze.nss b/_removed/x0_s1_petrgaze.nss new file mode 100644 index 0000000..a47d221 --- /dev/null +++ b/_removed/x0_s1_petrgaze.nss @@ -0,0 +1,52 @@ +//:://///////////////////////////////////////////////// +//:: X0_S1_PETRGAZE +//:: Petrification gaze monster ability. +//:: Fortitude save (DC 15) or be turned to stone permanently. +//:: This will be changed to a temporary effect. +//:: Copyright (c) 2002 Floodgate Entertainment +//:: Created By: Naomi Novik +//:: Created On: 11/14/2002 +//:://///////////////////////////////////////////////// +//:: Used by Basilisk +/* +Patch 1.70, fix by Shadoow + +- was missing blinded check +*/ + +#include "x2_i0_spells" + +void main() +{ + //-------------------------------------------------------------------------- + // Make sure we are not blind + //-------------------------------------------------------------------------- + if( GZCanNotUseGazeAttackCheck(OBJECT_SELF)) + { + return; + } + + object oTarget = GetSpellTargetObject(); + int nHitDice = GetHitDice(OBJECT_SELF); + + + location lTargetLocation = GetSpellTargetLocation(); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) + { + int nSpellID = GetSpellId(); + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpellID)); + float fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + + object oSelf = OBJECT_SELF; + DelayCommand(fDelay, DoPetrification(nHitDice, oSelf, oTarget, nSpellID, 13)); + } + + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + } +} diff --git a/_removed/x0_s1_petrtouch.ncs b/_removed/x0_s1_petrtouch.ncs new file mode 100644 index 0000000000000000000000000000000000000000..392a55851b00c9bb3ecc5033f90ce870ea679679 GIT binary patch literal 12934 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 literal 0 HcmV?d00001 diff --git a/_removed/x0_s1_petrtouch.nss b/_removed/x0_s1_petrtouch.nss new file mode 100644 index 0000000..36767ec --- /dev/null +++ b/_removed/x0_s1_petrtouch.nss @@ -0,0 +1,29 @@ +//:://///////////////////////////////////////////////// +//:: X0_S1_PETRGAZE +//:: Petrification touch attack monster ability. +//:: Fortitude save (DC 15) or be turned to stone permanently. +//:: Copyright (c) 2002 Floodgate Entertainment +//:: Created By: Naomi Novik +//:: Created On: 11/14/2002 +//:://///////////////////////////////////////////////// +/* +Patch 1.70, fix by Shadooow + +- duration corrected (was target's HD instead of caster's) +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" + +void main() +{ + object oTarget = GetSpellTargetObject(); + int nHitDice = GetHitDice(OBJECT_SELF); + + if(spellsIsTarget(oTarget, SPELL_TARGET_SINGLETARGET, OBJECT_SELF)) + { + int nSpellID = GetSpellId(); + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpellID)); + DoPetrification(nHitDice, OBJECT_SELF, oTarget, nSpellID, 15); + } +} diff --git a/_removed/x0_s2_blkdead.ncs b/_removed/x0_s2_blkdead.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e702bdfa76ed58fd86503c1480cfa968829e9828 GIT binary patch literal 319 zcmeZs4ps;=)H85mU|_VDV*mmU1qK#25QBvoNXWA?ForWR39zs@I503UGyebo{|itC zM1Npl0V@&ZRged%cLwu-f*=l<t-`{}z~>hp9~|%E@9*pF?h#_d%D@oJ!U)wa%>Xp! zk1R-izb?dZn4#=YL!Gc1%8OzsE;FrlA<jT|5*JvvyN6?N2o|kizx`nVI-Q}45lGyF TIP4A7w;-V#EMS*^P+$N6bkas; literal 0 HcmV?d00001 diff --git a/_removed/x0_s2_blkdead.nss b/_removed/x0_s2_blkdead.nss new file mode 100644 index 0000000..eab66ed --- /dev/null +++ b/_removed/x0_s2_blkdead.nss @@ -0,0 +1,33 @@ +//:://///////////////////////////////////////////// +//:: x0_s2_blkdead +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Level 3 - 6: Summons Ghast + Level 7 - 10: Doom Knight +*/ +//::////////////////////////////////////////////// +//:: Created By: +//:: Created On: +//::////////////////////////////////////////////// + +void main() +{ + + + + + int nLevel = GetLevelByClass(CLASS_TYPE_BLACKGUARD, OBJECT_SELF); + effect eSummon; + float fDelay = 3.0; + int nDuration = nLevel; + if (nLevel >= 21) + eSummon = EffectSummonCreature("NW_S_DOOMKGHT2",VFX_FNF_SUMMON_UNDEAD); + else if (nLevel >= 7) + eSummon = EffectSummonCreature("NW_S_DOOMKGHT",VFX_FNF_SUMMON_UNDEAD); + else + eSummon = EffectSummonCreature("NW_S_GHAST",VFX_FNF_SUMMON_UNDEAD); + + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration)); + +} diff --git a/_removed/x1_s2_deatharrow.ncs b/_removed/x1_s2_deatharrow.ncs new file mode 100644 index 0000000000000000000000000000000000000000..af0ba05f452b1e56f6e92dee0477a77f85e057c2 GIT binary patch literal 3784 zcmcInJ!n)}6h8O9H<>XrCSx3bm+U@77mfd^wo|kb6kT-L?KUQHT?CC5iWY)`Sg8mK zA}d;1T3A?UrywF?VPRo0NQx9GQluEzK?Y~f{m#9UcP2MM!WzhX=KIb$_dDmFd*1c% z{$ttiyLar`N7VQBN8+DSMrnaoPh1=sA3bw!^wi%IBPYg2PW*Lp^up=$%nWofm(J}T zB6wD}(ht;bx0@N+#3A<A0?|%N41+Bfm4?hu4&Rj~{4yY#Ansa$*oJ`~W{LmVNMO={ z$u%1S!Ib(k7t4IMiP#5Iu(q5*!NI7{V=IAYD0NopOYsR2c;zFBEP`hV#1vF8kvesN zrYXgHmQpci&w3g$;0*ExE_<IP;0#eF-2!GHacR+d5M|?P#}z?gTb;uEW<dAWGR_`) zay8(r5HGwx_{ELOwKTjz7WfAdB#x`~b?XC3xCNhkuCjDVz&(fA^;sd8@+ZG~SITom z3kJGq(m8m}O0u~pca-FZg$KDxe{?lN8O=bMC_~j)fCL?6nY0%r;VzW4Yhr2FNa-1e z4{L%?13ne;SBtwYeqg!kb0v^oU{|Jwq@YIhn4_URSn@5QN?z&}5yC#>My=g~54RQ! zZm{Q|&9#IWhvby8eHb_H^bfLnzC9;6s4CA>HMW?loAHI>svgCSwW<x<eOI9td=yao z8K>B+gYHEv=wDScZfA2)8iaQR6faiG5SmW~LQCaBm--E(jbX!3d>i%QSh9D%X4)sd zPT0=)I?3voHr5Wsb+33j*OW7%HKCW=H@u;Y%GoAYxYr8hwSm4>C{IeD?-iPO^n*fE zkA75W!K0rP+T+o>LW>@qR4AVbXqZyyGLKFxwAZ6E3g!Mqgjt1FJlas`a*s9@+UHT} zi!dnq1+{Wy0$TN`uKEg(%I6~34tTVpR$J-OszPfXt+}1Hn`JN6aA<-#Dg75=4uP=| zW*AHoVb+4t0}$(&uV4!EeasY?VuX1IrW9eGf>{<}?t$rzFqgr|XD|$B(KZIA67e|z zW_g6!0j4j))WG!5XXp!<YJ`~tvm(O00W%O`o`6{yVeWvbMVL!qRz;XUbCWFeTTSjo z^mERuGnX+zHsh(sskZ2mxS4c)XGZqtKeAn)2gDrqpO)a!_FCjJ(^eU@Y!wRmu81?h zyNkcWgnR^)KLiWC3q+@-X*=R!+C83+Ea_g;=J3yS=eJyr=J?#_6MA`m;_Lh^de3|} zy~bVPVtVOmmtLOi(0hNOx(1vBPJB1L)Qae3s7Yv&&fP%mD1X+RbW;Gz_i=0hkAD2k z2VfJkv{w1NDrd#T_+Roo3ZwkZ*-F+U1-reZK9c*f?)+_4mRaIoIf+|xx99Lb3cjVt z>EN2wQ-2WaxMCLNW|M34Nc!Ofa(5O*{tH!>(6!@BO6m)%>TWiXi$pu;@&8H`Q9t@? Q&@4uc+|3&pRMQ##2W$-Pr2qf` literal 0 HcmV?d00001 diff --git a/_removed/x1_s2_deatharrow.nss b/_removed/x1_s2_deatharrow.nss new file mode 100644 index 0000000..ecd6eda --- /dev/null +++ b/_removed/x1_s2_deatharrow.nss @@ -0,0 +1,70 @@ +//:://///////////////////////////////////////////// +//:: x1_s2_deatharrow +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Seeker Arrow + - creates an arrow that automatically hits target. + - At level 4 the arrow does +2 magic damage + - at level 5 the arrow does +3 magic damage + + - normal arrow damage, based on base item type + + - Must have shortbow or longbow in hand. +*/ +//::////////////////////////////////////////////// +//:: Created By: +//:: Created On: +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- critical hit damage corrected (damage was always even before) +- added death VFX +- signal event placed before hit check, so it now removes GS/invis every time +*/ + +#include "x0_i0_spells" +#include "x2_inc_itemprop" + +void main() +{ + int nBonus = ArcaneArcherCalculateBonus(); + object oTarget = GetSpellTargetObject(); + + if (GetIsObjectValid(oTarget)) + { + // * Roll Touch Attack + int nTouch = TouchAttackRanged(oTarget, TRUE); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); + + if (nTouch > 0) + { + int nDamage = ArcaneArcherDamageDoneByBow(nTouch == 2); + if (nDamage > 0) + { + effect ePhysical = EffectDamage(nDamage, DAMAGE_TYPE_PIERCING,IPGetDamagePowerConstantFromNumber(nBonus)); + effect eMagic = EffectDamage(nBonus, DAMAGE_TYPE_MAGICAL); + ApplyEffectToObject(DURATION_TYPE_INSTANT, ePhysical, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eMagic, oTarget); + + int nSaveType = SAVING_THROW_TYPE_NONE; + if(GetIsImmune(oTarget, IMMUNITY_TYPE_DEATH, OBJECT_SELF)) + { + nSaveType = SAVING_THROW_TYPE_DEATH;//workaround for action cancel bug without changing save type + } + // * if target fails a save DC20 they die + int nDC = GetCasterLevel(OBJECT_SELF)+10; + if (!MySavingThrow(SAVING_THROW_FORT, oTarget, nDC, nSaveType)) + { + effect eDeath = EffectDeath(); + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); + } + } + } + } +} diff --git a/_removed/x2_inc_craft.nss b/_removed/x2_inc_craft.nss new file mode 100644 index 0000000..ee53e44 --- /dev/null +++ b/_removed/x2_inc_craft.nss @@ -0,0 +1,1439 @@ +//:://///////////////////////////////////////////// +//:: x2_inc_craft +//:: Copyright (c) 2003 Bioare Corp. +//::////////////////////////////////////////////// +/* + + Central include for crafting feat and + crafting skill system. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: 2003-05-09 +//:: Last Updated On: 2003-10-14 +//::////////////////////////////////////////////// +#include "x2_inc_itemprop" +#include "x2_inc_switches" + +struct craft_struct +{ + int nRow; + string sResRef; + int nDC; + int nCost; + string sLabel; +}; + +struct craft_receipe_struct +{ + int nMode; + object oMajor; + object oMinor; +}; + +const string X2_CI_CRAFTSKILL_CONV ="x2_p_craftskills"; + +// Brew Potion related Constants + +const int X2_CI_BREWPOTION_FEAT_ID = 944; // Brew Potion feat simulation +const int X2_CI_BREWPOTION_MAXLEVEL = 9; // Max Level for potions +const int X2_CI_BREWPOTION_COSTMODIFIER = 50; // gp Brew Potion XPCost Modifier + +const string X2_CI_BREWPOTION_NEWITEM_RESREF = "x2_it_pcpotion"; // ResRef for new potion item + +// Scribe Scroll related constants +const int X2_CI_SCRIBESCROLL_FEAT_ID = 945; +const int X2_CI_SCRIBESCROLL_COSTMODIFIER = 25; // Scribescroll Cost Modifier +const string X2_CI_SCRIBESCROLL_NEWITEM_RESREF = "x2_it_pcscroll"; // ResRef for new scroll item + +// Craft Wand related constants +const int X2_CI_CRAFTWAND_FEAT_ID = 946; +const int X2_CI_CRAFTWAND_MAXLEVEL = 9; +const int X2_CI_CRAFTWAND_COSTMODIFIER = 750; +const string X2_CI_CRAFTWAND_NEWITEM_RESREF = "x2_it_pcwand"; + +// 2da for the craftskills +const string X2_CI_CRAFTING_WP_2DA = "des_crft_weapon" ; +const string X2_CI_CRAFTING_AR_2DA = "des_crft_armor" ; +const string X2_CI_CRAFTING_MAT_2DA = "des_crft_mat"; + + +// 2da for matching spells to properties +const string X2_CI_CRAFTING_SP_2DA = "des_crft_spells" ; +// Base custom token for item modification conversations (do not change unless you want to change the conversation too) +const int X2_CI_CRAFTINGSKILL_CTOKENBASE = 13220; + +// Base custom token for DC item modification conversations (do not change unless you want to change the conversation too) +const int X2_CI_CRAFTINGSKILL_DC_CTOKENBASE = 14220; + +// Base custom token for DC item modification conversations (do not change unless you want to change the conversation too) +const int X2_CI_CRAFTINGSKILL_GP_CTOKENBASE = 14320; + +// Base custom token for DC item modification conversations (do not change unless you want to change the conversation too) +const int X2_CI_MODIFYARMOR_GP_CTOKENBASE = 14420; + +//How many items per 2da row in X2_IP_CRAFTING_2DA, do not change>4 until you want to create more conversation condition scripts as well +const int X2_CI_CRAFTING_ITEMS_PER_ROW = 5; + +// name of the scroll 2da +const string X2_CI_2DA_SCROLLS = "des_crft_scroll"; + +const int X2_CI_CRAFTMODE_INVALID = 0; +const int X2_CI_CRAFTMODE_CONTAINER = 1; // no longer used, but left in for the community to reactivate +const int X2_CI_CRAFTMODE_BASE_ITEM = 2; +const int X2_CI_CRAFTMODE_ASSEMBLE = 3; + +const int X2_CI_MAGICTYPE_INVALID = 0; +const int X2_CI_MAGICTYPE_ARCANE = 1; +const int X2_CI_MAGICTYPE_DIVINE = 2; + +const int X2_CI_MODMODE_INVALID = 0; +const int X2_CI_MODMODE_ARMOR = 1; +const int X2_CI_MODMODE_WEAPON = 2; + +// * Returns TRUE if an item is a Craft Base Item +// * to be used in spellscript that can be cast on items - i.e light +int CIGetIsCraftFeatBaseItem( object oItem ); + +// * Checks if the last spell cast was used to brew potion and will do the brewing process. +// * Returns TRUE if the spell was indeed used to brew a potion (regardless of the actual outcome of the brewing process) +// * Meant to be used in spellscripts only +int CICraftCheckBrewPotion(object oSpellTarget, object oCaster); + +// * Checks if the last spell cast was used to scribe a scroll and handles the scribe scroll process +// * Returns TRUE if the spell was indeed used to scribe a scroll (regardless of the actual outcome) +// * Meant to be used in spellscripts only +int CICraftCheckScribeScroll(object oSpellTarget, object oCaster); + +// * Create a new potion item based on the spell nSpellID on the creator +object CICraftBrewPotion(object oCreator, int nSpellID ); + +// * Create a new scroll item based on the spell nSpellID on the creator +object CICraftScribeScroll(object oCreator, int nSpellID); + + +// * Checks if the caster intends to use his item creation feats and +// * calls appropriate item creation subroutine if conditions are met (spell cast on correct item, etc). +// * Returns TRUE if the spell was used for an item creation feat +int CIGetSpellWasUsedForItemCreation(object oSpellTarget); + + +// * Returns the innate level of a spell. If bDefaultZeroToOne is given +// * Level 0 spell will be returned as level 1 spells +int CIGetSpellInnateLevel(int nSpellID, int bDefaultZeroToOne = FALSE) +{ + int nRet = StringToInt(Get2DAString(X2_CI_CRAFTING_SP_2DA, "Level", nSpellID)); + if (nRet == 0) + nRet =1; + + return nRet; +} + +// * Makes oPC do a Craft check using nSkill to create the item supplied in sResRe +// * If oContainer is specified, the item will be created there. +// * Throwing weapons are created with stack sizes of 10, ammo with 20 +// * oPC - The player crafting +// * nSkill - SKILL_CRAFT_WEAPON or SKILL_CRAFT_ARMOR, +// * sResRef - ResRef of the item to be crafted +// * nDC - DC to beat to succeed +// * oContainer - if a container is specified, create item inside +object CIUseCraftItemSkill(object oPC, int nSkill, string sResRef, int nDC, object oContainer = OBJECT_INVALID); + +// * Returns TRUE if a spell is prevented from being used with one of the crafting feats +int CIGetIsSpellRestrictedFromCraftFeat(int nSpellID, int nFeatID); + +// * Return craftitemstructdata +struct craft_struct CIGetCraftItemStructFrom2DA(string s2DA, int nRow, int nItemNo); + +// * Return the type of magic as one of the following constants +// * const int X2_CI_MAGICTYPE_INVALID = 0; +// * const int X2_CI_MAGICTYPE_ARCANE = 1; +// * const int X2_CI_MAGICTYPE_DIVINE = 2; +// * Parameters: +// * nClass - CLASS_TYPE_* constant +int CI_GetClassMagicType(int nClass) +{ + switch (nClass) + { + case CLASS_TYPE_CLERIC: + return X2_CI_MAGICTYPE_DIVINE; break; + case CLASS_TYPE_DRUID: + return X2_CI_MAGICTYPE_DIVINE; break; + case CLASS_TYPE_PALADIN: + return X2_CI_MAGICTYPE_DIVINE; break; + case CLASS_TYPE_BARD: + return X2_CI_MAGICTYPE_ARCANE; break; + case CLASS_TYPE_SORCERER: + return X2_CI_MAGICTYPE_ARCANE; break; + case CLASS_TYPE_WIZARD: + return X2_CI_MAGICTYPE_ARCANE; break; + case CLASS_TYPE_RANGER: + return X2_CI_MAGICTYPE_DIVINE; break; + } + return X2_CI_MAGICTYPE_INVALID; +} + +string GetMaterialComponentTag(int nPropID) +{ + string sRet = Get2DAString("des_matcomp","comp_tag",nPropID); + return sRet; +} + + +// ----------------------------------------------------------------------------- +// Return true if oItem is a crafting target item +// ----------------------------------------------------------------------------- +int CIGetIsCraftFeatBaseItem(object oItem) +{ + int nBt = GetBaseItemType(oItem); + // blank scroll, empty potion, wand + if (nBt == 101 || nBt == 102 || nBt == 103) + return TRUE; + else + return FALSE; +} + + +// ----------------------------------------------------------------------------- +// Georg, 2003-06-12 +// Create a new playermade potion object with properties matching nSpellID and return it +// ----------------------------------------------------------------------------- +object CICraftBrewPotion(object oCreator, int nSpellID ) +{ + + int nPropID = IPGetIPConstCastSpellFromSpellID(nSpellID); + + object oTarget; + // * GZ 2003-09-11: If the current spell cast is not acid fog, and + // * returned property ID is 0, bail out to prevent + // * creation of acid fog items. + if (nPropID == 0 && nSpellID != 0) + { + FloatingTextStrRefOnCreature(84544,oCreator); + return OBJECT_INVALID; + } + + if (nPropID != -1) + { + itemproperty ipProp = ItemPropertyCastSpell(nPropID,IP_CONST_CASTSPELL_NUMUSES_SINGLE_USE); + oTarget = CreateItemOnObject(X2_CI_BREWPOTION_NEWITEM_RESREF,oCreator); + AddItemProperty(DURATION_TYPE_PERMANENT,ipProp,oTarget); + } + return oTarget; +} + +// ----------------------------------------------------------------------------- +// Wrapper for the crafting cost calculation, returns GP required +// ----------------------------------------------------------------------------- +int CIGetCraftGPCost(int nLevel, int nMod) +{ + int nLvlRow = IPGetIPConstCastSpellFromSpellID(GetSpellId()); + int nCLevel = StringToInt(Get2DAString("irpr_spells","CasterLvl",nLvlRow)); + + // ------------------------------------------------------------------------- + // in case we don't get a valid CLevel, use spell level instead + // ------------------------------------------------------------------------- + if (nCLevel ==0) + { + nCLevel = nLevel; + } + int nRet = nCLevel * nLevel * nMod; + return nRet; + +} + +// ----------------------------------------------------------------------------- +// Georg, 2003-06-12 +// Create a new playermade wand object with properties matching nSpellID +// and return it +// ----------------------------------------------------------------------------- +object CICraftCraftWand(object oCreator, int nSpellID ) +{ + int nPropID = IPGetIPConstCastSpellFromSpellID(nSpellID); + + object oTarget; + // * GZ 2003-09-11: If the current spell cast is not acid fog, and + // * returned property ID is 0, bail out to prevent + // * creation of acid fog items. + if (nPropID == 0 && nSpellID != 0) + { + FloatingTextStrRefOnCreature(84544,oCreator); + return OBJECT_INVALID; + } + + + if (nPropID != -1) + { + itemproperty ipProp = ItemPropertyCastSpell(nPropID,IP_CONST_CASTSPELL_NUMUSES_1_CHARGE_PER_USE); + oTarget = CreateItemOnObject(X2_CI_CRAFTWAND_NEWITEM_RESREF,oCreator); + AddItemProperty(DURATION_TYPE_PERMANENT,ipProp,oTarget); + + + int nType = CI_GetClassMagicType(GetLastSpellCastClass()); + itemproperty ipLimit; + + if (nType == X2_CI_MAGICTYPE_DIVINE) + { + ipLimit = ItemPropertyLimitUseByClass(CLASS_TYPE_PALADIN); + AddItemProperty(DURATION_TYPE_PERMANENT,ipLimit,oTarget); + ipLimit = ItemPropertyLimitUseByClass(CLASS_TYPE_RANGER); + AddItemProperty(DURATION_TYPE_PERMANENT,ipLimit,oTarget); + ipLimit = ItemPropertyLimitUseByClass(CLASS_TYPE_DRUID); + AddItemProperty(DURATION_TYPE_PERMANENT,ipLimit,oTarget); + ipLimit = ItemPropertyLimitUseByClass(CLASS_TYPE_CLERIC); + AddItemProperty(DURATION_TYPE_PERMANENT,ipLimit,oTarget); + } + else if (nType == X2_CI_MAGICTYPE_ARCANE) + { + ipLimit = ItemPropertyLimitUseByClass(CLASS_TYPE_WIZARD); + AddItemProperty(DURATION_TYPE_PERMANENT,ipLimit,oTarget); + ipLimit = ItemPropertyLimitUseByClass(CLASS_TYPE_SORCERER); + AddItemProperty(DURATION_TYPE_PERMANENT,ipLimit,oTarget); + ipLimit = ItemPropertyLimitUseByClass(CLASS_TYPE_BARD); + AddItemProperty(DURATION_TYPE_PERMANENT,ipLimit,oTarget); + } + + int nCharges = GetLevelByClass(GetLastSpellCastClass(),OBJECT_SELF) + d10(); + + if (nCharges == 0) // stupi cheaters + { + nCharges = 10+d20(); + } + // Hard core rule mode enabled + if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_CRAFT_WAND_50_CHARGES)) + { + SetItemCharges(oTarget,50); + } + else + { + SetItemCharges(oTarget,nCharges); + } + // TODOL Add use restrictions there when item becomes available + } + return oTarget; +} + +// ----------------------------------------------------------------------------- +// Georg, 2003-06-12 +// Create and Return a magic wand with an item property +// matching nSpellID. Charges are set to d20 + casterlevel +// capped at 50 max +// ----------------------------------------------------------------------------- +object CICraftScribeScroll(object oCreator, int nSpellID) +{ + int nPropID = IPGetIPConstCastSpellFromSpellID(nSpellID); + object oTarget; + // Handle optional material components + string sMat = GetMaterialComponentTag(nPropID); + if (sMat != "") + { + object oMat = GetItemPossessedBy(oCreator,sMat); + if (oMat== OBJECT_INVALID) + { + FloatingTextStrRefOnCreature(83374, oCreator); // Missing material component + return OBJECT_INVALID; + } + else + { + DestroyObject (oMat); + } + } + + // get scroll resref from scrolls lookup 2da + int nClass =GetLastSpellCastClass (); + string sClass = "Wiz_Sorc"; + switch (nClass) + { + case CLASS_TYPE_WIZARD: + sClass = "Wiz_Sorc"; + break; + + case CLASS_TYPE_SORCERER: + sClass = "Wiz_Sorc"; + break; + case CLASS_TYPE_CLERIC: + sClass = "Cleric"; + break; + case CLASS_TYPE_PALADIN: + sClass = "Paladin"; + break; + case CLASS_TYPE_DRUID: + sClass = "Druid"; + break; + case CLASS_TYPE_RANGER: + sClass = "Ranger"; + break; + case CLASS_TYPE_BARD: + sClass = "Bard"; + break; + } + + if (sClass != "") + { + string sResRef = Get2DAString(X2_CI_2DA_SCROLLS,sClass,nSpellID); + if (sResRef != "") + { + oTarget = CreateItemOnObject(sResRef,oCreator); + } + + if (oTarget == OBJECT_INVALID) + { + WriteTimestampedLogEntry("x2_inc_craft::CICraftScribeScroll failed - Resref: " + sResRef + " Class: " + sClass + "(" +IntToString(nClass) +") " + " SpellID " + IntToString (nSpellID)); + } + } + return oTarget; +} + +// ----------------------------------------------------------------------------- +// Returns TRUE if the player used the last spell to brew a potion +// ----------------------------------------------------------------------------- +int CICraftCheckBrewPotion(object oSpellTarget, object oCaster) +{ + + object oSpellTarget = GetSpellTargetObject(); + object oCaster = OBJECT_SELF; + int nID = GetSpellId(); + int nLevel = CIGetSpellInnateLevel(nID,TRUE); + + // ------------------------------------------------------------------------- + // check if brew potion feat is there + // ------------------------------------------------------------------------- + if (GetHasFeat(X2_CI_BREWPOTION_FEAT_ID, oCaster) != TRUE) + { + FloatingTextStrRefOnCreature(40487, oCaster); // Item Creation Failed - Don't know how to create that type of item + return TRUE; + } + + // ------------------------------------------------------------------------- + // check if spell is below maxlevel for brew potions + // ------------------------------------------------------------------------- + if (nLevel > X2_CI_BREWPOTION_MAXLEVEL) + { + FloatingTextStrRefOnCreature(76416, oCaster); + return TRUE; + } + + // ------------------------------------------------------------------------- + // Check if the spell is allowed to be used with Brew Potions + // ------------------------------------------------------------------------- + if (CIGetIsSpellRestrictedFromCraftFeat(nID, X2_CI_BREWPOTION_FEAT_ID)) + { + FloatingTextStrRefOnCreature(83450, oCaster); + return TRUE; + } + + // ------------------------------------------------------------------------- + // XP/GP Cost Calculation + // ------------------------------------------------------------------------- + int nCost = CIGetCraftGPCost(nLevel, X2_CI_BREWPOTION_COSTMODIFIER); + float nExperienceCost = 0.04 * nCost; // xp = 1/25 of gp value + int nGoldCost = nCost ; + + // ------------------------------------------------------------------------- + // Does Player have enough gold? + // ------------------------------------------------------------------------- + if (GetGold(oCaster) < nGoldCost) + { + FloatingTextStrRefOnCreature(3786, oCaster); // Item Creation Failed - not enough gold! + return TRUE; + } + + int nHD = GetHitDice(oCaster); + int nMinXPForLevel = ((nHD * (nHD - 1)) / 2) * 1000; + int nNewXP = FloatToInt(GetXP(oCaster) - nExperienceCost); + + + // ------------------------------------------------------------------------- + // check for sufficient XP to cast spell + // ------------------------------------------------------------------------- + if (nMinXPForLevel > nNewXP || nNewXP == 0 ) + { + FloatingTextStrRefOnCreature(3785, oCaster); // Item Creation Failed - Not enough XP + return TRUE; + } + + // ------------------------------------------------------------------------- + // Here we brew the new potion + // ------------------------------------------------------------------------- + object oPotion = CICraftBrewPotion(oCaster, nID); + + // ------------------------------------------------------------------------- + // Verify Results + // ------------------------------------------------------------------------- + if (GetIsObjectValid(oPotion)) + { + TakeGoldFromCreature(nGoldCost, oCaster, TRUE); + SetXP(oCaster, nNewXP); + DestroyObject (oSpellTarget); + FloatingTextStrRefOnCreature(8502, oCaster); // Item Creation successful + return TRUE; + } + else + { + FloatingTextStrRefOnCreature(76417, oCaster); // Item Creation Failed + return TRUE; + } + +} + + + +// ----------------------------------------------------------------------------- +// Returns TRUE if the player used the last spell to create a scroll +// ----------------------------------------------------------------------------- +int CICraftCheckScribeScroll(object oSpellTarget, object oCaster) +{ + int nID = GetSpellId(); + + // ------------------------------------------------------------------------- + // check if scribe scroll feat is there + // ------------------------------------------------------------------------- + if (GetHasFeat(X2_CI_SCRIBESCROLL_FEAT_ID, oCaster) != TRUE) + { + FloatingTextStrRefOnCreature(40487, oCaster); // Item Creation Failed - Don't know how to create that type of item + return TRUE; + } + + // ------------------------------------------------------------------------- + // Check if the spell is allowed to be used with Scribe Scroll + // ------------------------------------------------------------------------- + if (CIGetIsSpellRestrictedFromCraftFeat(nID, X2_CI_SCRIBESCROLL_FEAT_ID)) + { + FloatingTextStrRefOnCreature(83451, oCaster); // can not be used with this feat + return TRUE; + } + + // ------------------------------------------------------------------------- + // XP/GP Cost Calculation + // ------------------------------------------------------------------------- + int nLevel = CIGetSpellInnateLevel(nID,TRUE); + int nCost = CIGetCraftGPCost(nLevel, X2_CI_SCRIBESCROLL_COSTMODIFIER); + float fExperienceCost = 0.04 * nCost; + int nGoldCost = nCost ; + + // ------------------------------------------------------------------------- + // Does Player have enough gold? + // ------------------------------------------------------------------------- + if (GetGold(oCaster) < nGoldCost) // enough gold? + { + FloatingTextStrRefOnCreature(3786, oCaster); // Item Creation Failed - not enough gold! + return TRUE; + } + + int nHD = GetHitDice(oCaster); + int nMinXPForLevel = ((nHD * (nHD - 1)) / 2) * 1000; + int nNewXP = FloatToInt(GetXP(oCaster) - fExperienceCost); + + // ------------------------------------------------------------------------- + // check for sufficient XP to cast spell + // ------------------------------------------------------------------------- + if (nMinXPForLevel > nNewXP || nNewXP == 0 ) + { + FloatingTextStrRefOnCreature(3785, oCaster); // Item Creation Failed - Not enough XP + return TRUE; + } + + // ------------------------------------------------------------------------- + // Here we scribe the scroll + // ------------------------------------------------------------------------- + object oScroll = CICraftScribeScroll(oCaster, nID); + + // ------------------------------------------------------------------------- + // Verify Results + // ------------------------------------------------------------------------- + if (GetIsObjectValid(oScroll)) + { + //---------------------------------------------------------------------- + // Some scrollsare ar not identified ... fix that here + //---------------------------------------------------------------------- + SetIdentified(oScroll,TRUE); + ActionPlayAnimation (ANIMATION_FIREFORGET_READ,1.0); + TakeGoldFromCreature(nGoldCost, oCaster, TRUE); + SetXP(oCaster, nNewXP); + DestroyObject (oSpellTarget); + FloatingTextStrRefOnCreature(8502, oCaster); // Item Creation successful + return TRUE; + } + else + { + FloatingTextStrRefOnCreature(76417, oCaster); // Item Creation Failed + return TRUE; + } + + return FALSE; +} + + +// ----------------------------------------------------------------------------- +// Returns TRUE if the player used the last spell to craft a wand +// ----------------------------------------------------------------------------- +int CICraftCheckCraftWand(object oSpellTarget, object oCaster) +{ + + int nID = GetSpellId(); + + // ------------------------------------------------------------------------- + // check if craft wand feat is there + // ------------------------------------------------------------------------- + if (GetHasFeat(X2_CI_CRAFTWAND_FEAT_ID, oCaster) != TRUE) + { + FloatingTextStrRefOnCreature(40487, oCaster); // Item Creation Failed - Don't know how to create that type of item + return TRUE; // tried item creation but do not know how to do it + } + + // ------------------------------------------------------------------------- + // Check if the spell is allowed to be used with Craft Wand + // ------------------------------------------------------------------------- + if (CIGetIsSpellRestrictedFromCraftFeat(nID, X2_CI_CRAFTWAND_FEAT_ID)) + { + FloatingTextStrRefOnCreature(83452, oCaster); // can not be used with this feat + return TRUE; + } + + int nLevel = CIGetSpellInnateLevel(nID,TRUE); + + // ------------------------------------------------------------------------- + // check if spell is below maxlevel for brew potions + // ------------------------------------------------------------------------- + if (nLevel > X2_CI_CRAFTWAND_MAXLEVEL) + { + FloatingTextStrRefOnCreature(83623, oCaster); + return TRUE; + } + + // ------------------------------------------------------------------------- + // XP/GP Cost Calculation + // ------------------------------------------------------------------------- + int nCost = CIGetCraftGPCost( nLevel, X2_CI_CRAFTWAND_COSTMODIFIER); + float nExperienceCost = 0.04 * nCost; + int nGoldCost = nCost; + + // ------------------------------------------------------------------------- + // Does Player have enough gold? + // ------------------------------------------------------------------------- + if (GetGold(oCaster) < nGoldCost) // enough gold? + { + FloatingTextStrRefOnCreature(3786, oCaster); // Item Creation Failed - not enough gold! + return TRUE; + } + + // more calculations on XP cost + int nHD = GetHitDice(oCaster); + int nMinXPForLevel = ((nHD * (nHD - 1)) / 2) * 1000; + int nNewXP = FloatToInt(GetXP(oCaster) - nExperienceCost); + + // ------------------------------------------------------------------------- + // check for sufficient XP to cast spell + // ------------------------------------------------------------------------- + if (nMinXPForLevel > nNewXP || nNewXP == 0 ) + { + FloatingTextStrRefOnCreature(3785, oCaster); // Item Creation Failed - Not enough XP + return TRUE; + } + + // ------------------------------------------------------------------------- + // Here we craft the wand + // ------------------------------------------------------------------------- + object oWand = CICraftCraftWand(oCaster, nID); + + // ------------------------------------------------------------------------- + // Verify Results + // ------------------------------------------------------------------------- + if (GetIsObjectValid(oWand)) + { + TakeGoldFromCreature(nGoldCost, oCaster, TRUE); + SetXP(oCaster, nNewXP); + DestroyObject (oSpellTarget); + FloatingTextStrRefOnCreature(8502, oCaster); // Item Creation successful + return TRUE; + } + else + { + FloatingTextStrRefOnCreature(76417, oCaster); // Item Creation Failed + return TRUE; + } + + return FALSE; +} + +// ----------------------------------------------------------------------------- +// Georg, July 2003 +// Checks if the caster intends to use his item creation feats and +// calls appropriate item creation subroutine if conditions are met +// (spell cast on correct item, etc). +// Returns TRUE if the spell was used for an item creation feat +// ----------------------------------------------------------------------------- +int CIGetSpellWasUsedForItemCreation(object oSpellTarget) +{ + object oCaster = OBJECT_SELF; + + // ------------------------------------------------------------------------- + // Spell cast on crafting base item (blank scroll, etc) ? + // ------------------------------------------------------------------------- + if (!CIGetIsCraftFeatBaseItem(oSpellTarget)) + { + return FALSE; // not blank scroll baseitem + } + else + { + // --------------------------------------------------------------------- + // Check Item Creation Feats were disabled through x2_inc_switches + // --------------------------------------------------------------------- + if (GetModuleSwitchValue(MODULE_SWITCH_DISABLE_ITEM_CREATION_FEATS) == TRUE) + { + FloatingTextStrRefOnCreature(83612, oCaster); // item creation disabled + return FALSE; + } + + // --------------------------------------------------------------------- + // Ensure that item creation does not work one item was cast on another + // --------------------------------------------------------------------- + if (GetSpellCastItem() != OBJECT_INVALID) + { + FloatingTextStrRefOnCreature(83373, oCaster); // can not use one item to enchant another + return TRUE; + } + + // --------------------------------------------------------------------- + // Ok, what kind of feat the user wants to use by examining the base itm + // --------------------------------------------------------------------- + int nBt = GetBaseItemType(oSpellTarget); + int nRet = FALSE; + switch (nBt) + { + case 101 : + // ------------------------------------------------- + // Brew Potion + // ------------------------------------------------- + nRet = CICraftCheckBrewPotion(oSpellTarget,oCaster); + break; + + + case 102 : + // ------------------------------------------------- + // Scribe Scroll + // ------------------------------------------------- + nRet = CICraftCheckScribeScroll(oSpellTarget,oCaster); + break; + + + case 103 : + // ------------------------------------------------- + // Craft Wand + // ------------------------------------------------- + nRet = CICraftCheckCraftWand(oSpellTarget,oCaster); + break; + + // you could add more crafting basetypes here.... + } + + return nRet; + + } + +} + +// ----------------------------------------------------------------------------- +// Makes oPC do a Craft check using nSkill to create the item supplied in sResRe +// If oContainer is specified, the item will be created there. +// Throwing weapons are created with stack sizes of 10, ammo with 20 +// ----------------------------------------------------------------------------- +object CIUseCraftItemSkill(object oPC, int nSkill, string sResRef, int nDC, object oContainer = OBJECT_INVALID) +{ + int bSuccess = GetIsSkillSuccessful(oPC, nSkill, nDC); + object oNew; + if (bSuccess) + { + // actual item creation + // if a crafting container was specified, create inside + if (oContainer == OBJECT_INVALID) + { + oNew =CreateItemOnObject(sResRef,oPC); + + } + else + { + oNew =CreateItemOnObject(sResRef,oContainer); + } + + int nBase = GetBaseItemType(oNew); + if (nBase == BASE_ITEM_BOLT || nBase == BASE_ITEM_ARROW || nBase == BASE_ITEM_BULLET) + { + SetItemStackSize(oNew, 20); + } + else if (nBase == BASE_ITEM_THROWINGAXE || nBase == BASE_ITEM_SHURIKEN || nBase == BASE_ITEM_DART) + { + SetItemStackSize(oNew, 10); + } + } + else + { + oNew = OBJECT_INVALID; + } + + return oNew; +} + +// ----------------------------------------------------------------------------- +// georg, 2003-06-13 ( +// Craft an item. This is only to be called from the crafting conversation +// spawned by x2_s2_crafting!!! +// ----------------------------------------------------------------------------- +int CIDoCraftItemFromConversation(int nNumber) +{ + string sNumber = IntToString(nNumber); + object oPC = GetPCSpeaker(); + //object oMaterial = GetLocalObject(oPC,"X2_CI_CRAFT_MATERIAL"); + object oMajor = GetLocalObject(oPC,"X2_CI_CRAFT_MAJOR"); + object oMinor = GetLocalObject(oPC,"X2_CI_CRAFT_MINOR"); + int nSkill = GetLocalInt(oPC,"X2_CI_CRAFT_SKILL"); + int nMode = GetLocalInt(oPC,"X2_CI_CRAFT_MODE"); + string sResult; + string s2DA; + int nDC; + + + DeleteLocalObject(oPC,"X2_CI_CRAFT_MAJOR"); + DeleteLocalObject(oPC,"X2_CI_CRAFT_MINOR"); + + if (!GetIsObjectValid(oMajor)) + { + FloatingTextStrRefOnCreature(83374,oPC); //"Invalid target" + DeleteLocalInt(oPC,"X2_CRAFT_SUCCESS"); + return FALSE; + } + else + { + if (GetItemPossessor(oMajor) != oPC) + { + FloatingTextStrRefOnCreature(83354,oPC); //"Invalid target" + DeleteLocalInt(oPC,"X2_CRAFT_SUCCESS"); + return FALSE; + } + } + + // If we are in container mode, + if (nMode == X2_CI_CRAFTMODE_CONTAINER) + { + if (!GetIsObjectValid(oMinor)) + { + FloatingTextStrRefOnCreature(83374,oPC); //"Invalid target" + DeleteLocalInt(oPC,"X2_CRAFT_SUCCESS"); + return FALSE; + } + else if (GetItemPossessor(oMinor) != oPC) + { + FloatingTextStrRefOnCreature(83354,oPC); //"Invalid target" + DeleteLocalInt(oPC,"X2_CRAFT_SUCCESS"); + return FALSE; + } + } + + + if (nSkill == 26) // craft weapon + { + s2DA = X2_CI_CRAFTING_WP_2DA; + } + else if (nSkill == 25) + { + s2DA = X2_CI_CRAFTING_AR_2DA; + } + + int nRow = GetLocalInt(oPC,"X2_CI_CRAFT_RESULTROW"); + struct craft_struct stItem = CIGetCraftItemStructFrom2DA(s2DA,nRow,nNumber); + object oContainer = OBJECT_INVALID; + + // --------------------------------------------------------------------------- + // We once used a crafting container, but found it too complicated. Code is still + // left in here for the community + // --------------------------------------------------------------------------- + if (nMode == X2_CI_CRAFTMODE_CONTAINER) + { + oContainer = GetItemPossessedBy(oPC,"x2_it_craftcont"); + } + + // Do the crafting... + object oRet = CIUseCraftItemSkill( oPC, nSkill, stItem.sResRef, stItem.nDC, oContainer) ; + + // * If you made an item, it should always be identified; + SetIdentified(oRet,TRUE); + + if (GetIsObjectValid(oRet)) + { + // ----------------------------------------------------------------------- + // Copy all item properties from the major object on the resulting item + // Through we problably won't use this, its a neat thing to have for the + // community + // to enable magic item creation from the crafting system + // ----------------------------------------------------------------------- + if (GetGold(oPC)<stItem.nCost) + { + DeleteLocalInt(oPC,"X2_CRAFT_SUCCESS"); + FloatingTextStrRefOnCreature(86675,oPC); + DestroyObject(oRet); + return FALSE; + } + else + { + TakeGoldFromCreature(stItem.nCost, oPC,TRUE); + IPCopyItemProperties(oMajor,oRet); + } + // set success variable for conversation + SetLocalInt(oPC,"X2_CRAFT_SUCCESS",TRUE); + } + else + { + TakeGoldFromCreature(stItem.nCost / 4, oPC,TRUE); + // make sure there is no success + DeleteLocalInt(oPC,"X2_CRAFT_SUCCESS"); + } + + // Destroy first material component + DestroyObject (oMajor); + + // if we are running in a container, destroy the second material component as well + if (nMode == X2_CI_CRAFTMODE_CONTAINER || nMode == X2_CI_CRAFTMODE_ASSEMBLE) + { + DestroyObject (oMinor); + } + int nRet = (oRet != OBJECT_INVALID); + return nRet; +} + +// ----------------------------------------------------------------------------- +// Retrieve craft information on a certain item +// ----------------------------------------------------------------------------- +struct craft_struct CIGetCraftItemStructFrom2DA(string s2DA, int nRow, int nItemNo) +{ + struct craft_struct stRet; + string sNumber = IntToString(nItemNo); + + stRet.nRow = nRow; + string sLabel = Get2DAString(s2DA,"Label"+ sNumber, nRow); + if (sLabel == "") + { + return stRet; // empty, no need to read further + } + int nStrRef = StringToInt(sLabel); + if (nStrRef != 0) // Handle bioware StrRefs + { + sLabel = GetStringByStrRef(nStrRef); + } + stRet.sLabel = sLabel; + stRet.nDC = StringToInt(Get2DAString(s2DA,"DC"+ sNumber, nRow)); + stRet.nCost = StringToInt(Get2DAString(s2DA,"CostGP"+ sNumber, nRow)); + stRet.sResRef = Get2DAString(s2DA,"ResRef"+ sNumber, nRow); + + return stRet; +} + +// ----------------------------------------------------------------------------- +// Return the cost +// ----------------------------------------------------------------------------- +int CIGetItemPartModificationCost(object oOldItem, int nPart) +{ + int nRet = StringToInt(Get2DAString(X2_IP_ARMORPARTS_2DA,"CraftCost",nPart)); + nRet = (GetGoldPieceValue(oOldItem) / 100 * nRet); + + // minimum cost for modification is 1 gp + if (nRet == 0) + { + nRet =1; + } + return nRet; +} + +// ----------------------------------------------------------------------------- +// Return the DC for modifying a certain armor part on oOldItem +// ----------------------------------------------------------------------------- +int CIGetItemPartModificationDC(object oOldItem, int nPart) +{ + int nRet = StringToInt(Get2DAString(X2_IP_ARMORPARTS_2DA,"CraftDC",nPart)); + // minimum cost for modification is 1 gp + return nRet; +} + +// ----------------------------------------------------------------------------- +// returns the dc +// dc to modify oOlditem to look like oNewItem +// ----------------------------------------------------------------------------- +int CIGetArmorModificationCost(object oOldItem, object oNewItem) +{ + int nTotal = 0; + int nPart; + for (nPart = 0; nPart<ITEM_APPR_ARMOR_NUM_MODELS; nPart++) + { + + if (GetItemAppearance(oOldItem,ITEM_APPR_TYPE_ARMOR_MODEL, nPart) !=GetItemAppearance(oNewItem,ITEM_APPR_TYPE_ARMOR_MODEL, nPart)) + { + nTotal+= CIGetItemPartModificationCost(oOldItem,nPart); + } + } + + // Modification Cost should not exceed value of old item +1 GP + if (nTotal > GetGoldPieceValue(oOldItem)) + { + nTotal = GetGoldPieceValue(oOldItem)+1; + } + return nTotal; +} + +// ----------------------------------------------------------------------------- +// returns the cost in gold piece that it would +// cost to modify oOlditem to look like oNewItem +// ----------------------------------------------------------------------------- +int CIGetArmorModificationDC(object oOldItem, object oNewItem) +{ + int nTotal = 0; + int nPart; + int nDC =0; + for (nPart = 0; nPart<ITEM_APPR_ARMOR_NUM_MODELS; nPart++) + { + + if (GetItemAppearance(oOldItem,ITEM_APPR_TYPE_ARMOR_MODEL, nPart) !=GetItemAppearance(oNewItem,ITEM_APPR_TYPE_ARMOR_MODEL, nPart)) + { + nDC = CIGetItemPartModificationDC(oOldItem,nPart); + if (nDC>nTotal) + { + nTotal = nDC; + } + } + } + + nTotal = GetItemACValue(oOldItem) + nTotal + 5; + + return nTotal; +} + +// ----------------------------------------------------------------------------- +// returns TRUE if the spell matching nSpellID is prevented from being used +// with the CraftFeat matching nFeatID +// This is controlled in des_crft_spells.2da +// ----------------------------------------------------------------------------- +int CIGetIsSpellRestrictedFromCraftFeat(int nSpellID, int nFeatID) +{ + string sCol; + if (nFeatID == X2_CI_BREWPOTION_FEAT_ID) + { + sCol ="NoPotion"; + } + else if (nFeatID == X2_CI_SCRIBESCROLL_FEAT_ID) + { + sCol = "NoScroll"; + } + else if (nFeatID == X2_CI_CRAFTWAND_FEAT_ID) + { + sCol = "NoWand"; + } + + string sRet = Get2DAString(X2_CI_CRAFTING_SP_2DA,sCol,nSpellID); + int nRet = (sRet == "1") ; + + return nRet; +} + +// ----------------------------------------------------------------------------- +// Retrieve the row in des_crft_bmat too look up receipe +// ----------------------------------------------------------------------------- +int CIGetCraftingReceipeRow(int nMode, object oMajor, object oMinor, int nSkill) +{ + if (nMode == X2_CI_CRAFTMODE_CONTAINER || nMode == X2_CI_CRAFTMODE_ASSEMBLE ) + { + int nMinorId = StringToInt(Get2DAString("des_crft_amat",GetTag(oMinor),1)); + int nMajorId = StringToInt(Get2DAString("des_crft_bmat",GetTag(oMajor),nMinorId)); + return nMajorId; + } + else if (nMode == X2_CI_CRAFTMODE_BASE_ITEM) + { + int nLookUpRow; + string sTag = GetTag(oMajor); + switch (nSkill) + { + case 26: nLookUpRow =1 ; break; + case 25: nLookUpRow= 2 ; break; + } + int nRet = StringToInt(Get2DAString(X2_CI_CRAFTING_MAT_2DA,sTag,nLookUpRow)); + return nRet; + } + else + { + return 0; // error + } +} + +// ----------------------------------------------------------------------------- +// used to set all variable required for the crafting conversation +// (Used materials, number of choises, 2da row, skill and mode) +// ----------------------------------------------------------------------------- +void CISetupCraftingConversation(object oPC, int nNumber, int nSkill, int nReceipe, object oMajor, object oMinor, int nMode) +{ + + SetLocalObject(oPC,"X2_CI_CRAFT_MAJOR",oMajor); + if (nMode == X2_CI_CRAFTMODE_CONTAINER || nMode == X2_CI_CRAFTMODE_ASSEMBLE ) + { + SetLocalObject(oPC,"X2_CI_CRAFT_MINOR", oMinor); + } + SetLocalInt(oPC,"X2_CI_CRAFT_NOOFITEMS",nNumber); // number of crafting choises for this material + SetLocalInt(oPC,"X2_CI_CRAFT_SKILL",nSkill); // skill used (craft armor or craft waeapon) + SetLocalInt(oPC,"X2_CI_CRAFT_RESULTROW",nReceipe); // number of crafting choises for this material + SetLocalInt(oPC,"X2_CI_CRAFT_MODE",nMode); +} + +// ----------------------------------------------------------------------------- +// oItem - The item used for crafting +// ----------------------------------------------------------------------------- +struct craft_receipe_struct CIGetCraftingModeFromTarget(object oPC,object oTarget, object oItem = OBJECT_INVALID) +{ + struct craft_receipe_struct stStruct; + + + if (GetBaseItemType(oItem) == 112 ) // small + { + stStruct.oMajor = oItem; + stStruct.nMode = X2_CI_CRAFTMODE_BASE_ITEM; + return stStruct; + } + + if (!GetIsObjectValid(oTarget)) + { + stStruct.nMode = X2_CI_CRAFTMODE_INVALID; + return stStruct; + } + + + // A small craftitem was used on a large one + if (GetBaseItemType(oItem) == 110 ) // small + { + if (GetBaseItemType(oTarget) == 109) // large + { + stStruct.nMode = X2_CI_CRAFTMODE_ASSEMBLE; // Mode is ASSEMBLE + stStruct.oMajor = oTarget; + stStruct.oMinor = oItem; + return stStruct; + } + else + { + FloatingTextStrRefOnCreature(84201,oPC); + } + + } + + // ----------------------------------------------------------------------------- + // *** CONTAINER IS NO LONGER USED IN OFFICIAL CAMPAIGN + // BUT CODE LEFT IN FOR COMMUNITY. + // THE FOLLOWING CONDITION IS NEVER TRUE FOR THE OC (no crafting container) + // To reactivate, create a container with tag x2_it_craftcont + int bCraftCont = (GetTag(oTarget) == "x2_it_craftcont"); + + + if (bCraftCont == TRUE) + { + // First item in container is baseitem .. mode = baseitem + if ( GetBaseItemType(GetFirstItemInInventory(oTarget)) == 112) + { + stStruct.nMode = X2_CI_CRAFTMODE_BASE_ITEM; + stStruct.oMajor = GetFirstItemInInventory(oTarget); + return stStruct; + } + else + { + object oTest = GetFirstItemInInventory(oTarget); + int nCount =1; + int bMajor = FALSE; + int bMinor = FALSE; + // No item in inventory ... mode = fail + if (!GetIsObjectValid(oTest)) + { + FloatingTextStrRefOnCreature(84200,oPC); + stStruct.nMode = X2_CI_CRAFTMODE_INVALID; + return stStruct; + } + else + { + while (GetIsObjectValid(oTest) && nCount <3) + { + if (GetBaseItemType(oTest) == 109) + { + stStruct.oMajor = oTest; + bMajor = TRUE; + } + else if (GetBaseItemType(oTest) == 110) + { + stStruct.oMinor = oTest; + bMinor = TRUE; + } + else if ( GetBaseItemType(oTest) == 112) + { + stStruct.nMode = X2_CI_CRAFTMODE_BASE_ITEM; + stStruct.oMajor = oTest; + return stStruct; + } + oTest = GetNextItemInInventory(oTarget); + if (GetIsObjectValid(oTest)) + { + nCount ++; + } + } + + if (nCount >2) + { + FloatingTextStrRefOnCreature(84356,oPC); + stStruct.nMode = X2_CI_CRAFTMODE_INVALID; + return stStruct; + } + else if (nCount <2) + { + FloatingTextStrRefOnCreature(84356,oPC); + stStruct.nMode = X2_CI_CRAFTMODE_INVALID; + return stStruct; + } + + if (bMajor && bMinor) + { + stStruct.nMode = X2_CI_CRAFTMODE_CONTAINER; + return stStruct; + } + else + { + FloatingTextStrRefOnCreature(84356,oPC); + //FloatingTextStringOnCreature("Temp: Wrong combination of items in the crafting container",oPC); + stStruct.nMode = X2_CI_CRAFTMODE_INVALID; + return stStruct; + } + + } + } + } + else + { + // not a container but a baseitem + if (GetBaseItemType(oTarget) == 112) + { + stStruct.nMode = X2_CI_CRAFTMODE_BASE_ITEM; + stStruct.oMajor = oTarget; + return stStruct; + + } + else + { + if (GetBaseItemType(oTarget) == 109 || GetBaseItemType(oTarget) == 110) + { + FloatingTextStrRefOnCreature(84357,oPC); + stStruct.nMode = X2_CI_CRAFTMODE_INVALID; + return stStruct; + } + else + { + FloatingTextStrRefOnCreature(84357,oPC); + // not a valid item + stStruct.nMode = X2_CI_CRAFTMODE_INVALID; + return stStruct; + + } + } + } +} + +// ----------------------------------------------------------------------------- +// *** Crafting Conversation Functions *** +// ----------------------------------------------------------------------------- +int CIGetInModWeaponOrArmorConv(object oPC) +{ + return GetLocalInt(oPC,"X2_L_CRAFT_MODIFY_CONVERSATION"); +} + + +void CISetCurrentModMode(object oPC, int nMode) +{ + if (nMode == X2_CI_MODMODE_INVALID) + { + DeleteLocalInt(oPC,"X2_L_CRAFT_MODIFY_MODE"); + } + else + { + SetLocalInt(oPC,"X2_L_CRAFT_MODIFY_MODE",nMode); + } +} + +int CIGetCurrentModMode(object oPC) +{ + return GetLocalInt(oPC,"X2_L_CRAFT_MODIFY_MODE"); +} + + +object CIGetCurrentModBackup(object oPC) +{ + return GetLocalObject(GetPCSpeaker(),"X2_O_CRAFT_MODIFY_BACKUP"); +} + +object CIGetCurrentModItem(object oPC) +{ + return GetLocalObject(GetPCSpeaker(),"X2_O_CRAFT_MODIFY_ITEM"); +} + + +void CISetCurrentModBackup(object oPC, object oBackup) +{ + SetLocalObject(GetPCSpeaker(),"X2_O_CRAFT_MODIFY_BACKUP",oBackup); +} + +void CISetCurrentModItem(object oPC, object oItem) +{ + SetLocalObject(GetPCSpeaker(),"X2_O_CRAFT_MODIFY_ITEM",oItem); +} + + +// ----------------------------------------------------------------------------- +// * This does multiple things: +// - store the part currently modified +// - setup the custom token for the conversation +// - zoom the camera to that part +// ----------------------------------------------------------------------------- +void CISetCurrentModPart(object oPC, int nPart, int nStrRef) +{ + SetLocalInt(oPC,"X2_TAILOR_CURRENT_PART",nPart); + + if (CIGetCurrentModMode(oPC) == X2_CI_MODMODE_ARMOR) + { + + // * Make the camera float near the PC + float fFacing = GetFacing(oPC) + 180.0; + + if (nPart == ITEM_APPR_ARMOR_MODEL_LSHOULDER || nPart == ITEM_APPR_ARMOR_MODEL_LFOREARM || + nPart == ITEM_APPR_ARMOR_MODEL_LHAND || nPart == ITEM_APPR_ARMOR_MODEL_LBICEP) + { + fFacing += 80.0; + } + + if (nPart == ITEM_APPR_ARMOR_MODEL_RSHOULDER || nPart == ITEM_APPR_ARMOR_MODEL_RFOREARM || + nPart == ITEM_APPR_ARMOR_MODEL_RHAND || nPart == ITEM_APPR_ARMOR_MODEL_RBICEP) + { + fFacing -= 80.0; + } + + float fPitch = 75.0; + if (fFacing > 359.0) + { + fFacing -=359.0; + } + + float fDistance = 3.5f; + if (nPart == ITEM_APPR_ARMOR_MODEL_PELVIS || nPart == ITEM_APPR_ARMOR_MODEL_BELT ) + { + fDistance = 2.0f; + } + + if (nPart == ITEM_APPR_ARMOR_MODEL_LSHOULDER || nPart == ITEM_APPR_ARMOR_MODEL_RSHOULDER ) + { + fPitch = 50.0f; + fDistance = 3.0f; + } + else if (nPart == ITEM_APPR_ARMOR_MODEL_LFOREARM || nPart == ITEM_APPR_ARMOR_MODEL_LHAND) + { + fDistance = 2.0f; + fPitch = 60.0f; + } + else if (nPart == ITEM_APPR_ARMOR_MODEL_NECK) + { + fPitch = 90.0f; + } + else if (nPart == ITEM_APPR_ARMOR_MODEL_RFOOT || nPart == ITEM_APPR_ARMOR_MODEL_LFOOT ) + { + fDistance = 3.5f; + fPitch = 47.0f; + } + else if (nPart == ITEM_APPR_ARMOR_MODEL_LTHIGH || nPart == ITEM_APPR_ARMOR_MODEL_RTHIGH ) + { + fDistance = 2.5f; + fPitch = 65.0f; + } + else if ( nPart == ITEM_APPR_ARMOR_MODEL_RSHIN || nPart == ITEM_APPR_ARMOR_MODEL_LSHIN ) + { + fDistance = 3.5f; + fPitch = 95.0f; + } + + if (GetRacialType(oPC) == RACIAL_TYPE_HALFORC) + { + fDistance += 1.0f; + } + + SetCameraFacing(fFacing, fDistance, fPitch,CAMERA_TRANSITION_TYPE_VERY_FAST) ; + } + + int nCost = GetLocalInt(oPC,"X2_TAILOR_CURRENT_COST"); + int nDC = GetLocalInt(oPC,"X2_TAILOR_CURRENT_DC"); + + SetCustomToken(X2_CI_MODIFYARMOR_GP_CTOKENBASE,IntToString(nCost)); + SetCustomToken(X2_CI_MODIFYARMOR_GP_CTOKENBASE+1,IntToString(nDC)); + + + SetCustomToken(XP_IP_ITEMMODCONVERSATION_CTOKENBASE,GetStringByStrRef(nStrRef)); +} + +int CIGetCurrentModPart(object oPC) +{ + return GetLocalInt(oPC,"X2_TAILOR_CURRENT_PART"); +} + + +void CISetDefaultModItemCamera(object oPC) +{ + float fDistance = 3.5f; + float fPitch = 75.0f; + float fFacing; + + if (CIGetCurrentModMode(oPC) == X2_CI_MODMODE_ARMOR) + { + fFacing = GetFacing(oPC) + 180.0; + if (fFacing > 359.0) + { + fFacing -=359.0; + } + } + else if (CIGetCurrentModMode(oPC) == X2_CI_MODMODE_WEAPON) + { + fFacing = GetFacing(oPC) + 180.0; + fFacing -= 90.0; + if (fFacing > 359.0) + { + fFacing -=359.0; + } + } + + SetCameraFacing(fFacing, fDistance, fPitch,CAMERA_TRANSITION_TYPE_VERY_FAST) ; +} + +void CIUpdateModItemCostDC(object oPC, int nDC, int nCost) +{ + SetLocalInt(oPC,"X2_TAILOR_CURRENT_COST", nCost); + SetLocalInt(oPC,"X2_TAILOR_CURRENT_DC",nDC); + SetCustomToken(X2_CI_MODIFYARMOR_GP_CTOKENBASE,IntToString(nCost)); + SetCustomToken(X2_CI_MODIFYARMOR_GP_CTOKENBASE+1,IntToString(nDC)); +} + + +// dc to modify oOlditem to look like oNewItem +int CIGetWeaponModificationCost(object oOldItem, object oNewItem) +{ + int nTotal = 0; + int nPart; + for (nPart = 0; nPart<=2; nPart++) + { + if (GetItemAppearance(oOldItem,ITEM_APPR_TYPE_WEAPON_MODEL, nPart) !=GetItemAppearance(oNewItem,ITEM_APPR_TYPE_WEAPON_MODEL, nPart)) + { + nTotal+= (GetGoldPieceValue(oOldItem)/4)+1; + } + } + + // Modification Cost should not exceed value of old item +1 GP + if (nTotal > GetGoldPieceValue(oOldItem)) + { + nTotal = GetGoldPieceValue(oOldItem)+1; + } + return nTotal; +} + + + diff --git a/_removed/x2_s0_acidshth.ncs b/_removed/x2_s0_acidshth.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e9ae392482e3b1ea1d1a318a028135ac04813972 GIT binary patch literal 3044 zcmbtW&u<%55PrMsBu&?9Lsd1UA#`Q>Ln;b1L?~Q1Z0)65u}&h}b<zV`xk(BUZWARf z&<hu?oRN??@JArdoPYyDLgK)oLVzlf0|!*);6tSFy>I+Be#^2_g)Mpg=FNOF^Ub_@ zyHsxn-T7Cp-%!eb@}k1$M4;Spem&QGWqqbHrq12}FkSE6+v#n+dq3T{lWuI@?LF*2 zz|NW6&PO}**Ax+_URE>e=;-KsAbVQk+^l&QwXf=|UM*7gQ^nIF{p)-)rqoyNRR>0o zRmD81;7$j8PVslb(>ezV{+&NPiin_oBm#F2A<4AVcP<zEL*YQ1Lg;7>EEwpa0MYNy zL;o;<;(<ruUtD}55k65B>brixq%P3`R783%AU5m;+d_qwPJZ%tV*?+L9OJ`;O&|wb zj|F2t(Eg{^UQ3fS3EQ2t6?M8{t1_+$1QV04{Do3=@p`(qv)S*zx4r#75Kg#dmTIAN z8^8<+jMhA61?HL6Ko?R~B|}8VNUms3v%KN_RYeh!7Da^mwTS*UBBm}}cN}V?0gSf# zRkV%QLtqX>gfeAX+amhqSmZtx(QigXH*m^89Us{sRHVfM&X^#`dks;py5oVR@;X?& zxHzA#gh|vy1)^3OHX7};F8`CL8zl(tDXIZZ$E7j;ATDAsP*PVvxU9*0!;(%8rCDUu zJvo%}+^A0_K7?{A++A<$DkmTGo7)?ZOsw~NdwZLEW6J&3LlFDYR3Nh;IeG@E5>GWa zE6GAKjsJEPgyqq4i-fSCoERUUV#dy{$rus&E4y3wdb^LpJ6rvHfHWFo7&wF2_1c}5 z{}QVaa8ua_l>UF1Q==x0Xw5Ql3QRt?P3p@_mPu|5(92!hWHoMECY1s&3${tT)ESyw zU@mfW>|t}#l*KT{t~(nTu_+P6Z@a^qWDU*=3{d4QX>&}Zk)oi@v31QM1bUp^cAmgy zbRGG@MAqO1`|33IN2|e}$lQ>pFXohm>G&BUEoV(C<iJNFvu@2hK38=6rUg+cg?K)L z7{(^-<|vRmjIh~xuhw)#&K2--A?`#?>)58t-Kf=y8<DXAc?;4Q_LRa|Dh6mSH{!SA zsAU1<&k;<g=(|xb@t93IV(H^GVpirS>kSx8(@!(%gw60~T;?w8NnKI*vtdOsu~;*7 z33+=5n3vltQ9TZmG`tZfap!gkg)+@cC@jaavNTu)Y|i8($`fmBt&8h$gxDg4GVh}t z*Ye)~gKjGbi*D!YoIa>Jh$Q(xbQU3$rGY+{X#wxgiT7uw?%1x((<ou*#nUs<WQL&J z2y(}$7mU=trzi!%1-g(@Hw(v1#sXc;OMBL_U-Z$}Z>!E}nTj%ba_=i7^&pTt3OJY} zx3VFO#hSypc-wf#IGdM!%$ec4<c!(m6Vm{8tMU?tEU@VQ>z2cd%$HJ6{tg2556zX> A)Bpeg literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_acidshth.nss b/_removed/x2_s0_acidshth.nss new file mode 100644 index 0000000..1e9d140 --- /dev/null +++ b/_removed/x2_s0_acidshth.nss @@ -0,0 +1,69 @@ +//:://///////////////////////////////////////////// +//:: Mestil's Acid Sheath +//:: X2_S0_AcidShth +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + This spell creates an acid shield around your + person. Any creature striking you with its body + does normal damage, but at the same time the + attacker takes 1d6 points +2 points per caster + level of acid damage. Weapons with exceptional + reach do not endanger thier uses in this way. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 7, 2002 +//:: 2003-07-07: Stacking Spell Pass, Georg Zoeller +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + +/* + Spellcast Hook Code + Added 2003-07-07 by Georg Zoeller + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(448); + int nDuration = spell.Level; + int nDamage = spell.Level/2; + effect eShield = EffectDamageShield(nDamage, DAMAGE_BONUS_1d6, DAMAGE_TYPE_ACID); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + + //Link effects + effect eLink = EffectLinkEffects(eShield, eDur); + eLink = EffectLinkEffects(eLink, eVis); + + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + + //Enter Metamagic conditions + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + // 2003-07-07: Stacking Spell Pass, Georg + RemoveEffectsFromSpell(spell.Target, spell.Id); + + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); +} diff --git a/_removed/x2_s0_batttide.ncs b/_removed/x2_s0_batttide.ncs new file mode 100644 index 0000000000000000000000000000000000000000..1e911f9ad9a3dbe93349add9c9963e891b9a2100 GIT binary patch literal 4127 zcmbtXPiP!f7=JUf*=({)yM~a)#x&!mX)zk@8Z@OKbh0~bm+of6>~xcYWk{1$gWDz~ zwzd~9UOfwff=5B{BwoCDvL3`!1rMQ!ROrD&DLLd2S%2^Q=FQIAY)6V&vODj4-{0T& zz3+XqP-@uC;_GMTg~(5w5ctd3!c5c0GS!FIL#aM7a_ggDb>-&P%Eo)Qg0<_x+WL)^ z+pQ0=Gt{+ncdIxpNMrt0F(%sW_Rr94Ns3u4SQFA#Zd|TjCfX0sA)<c^8?S)yO)4cH zh5R;#K={t=5X8l9LbwU?Z7arSf^diTGDMbyyKzmwk|xW5oBJ>(f1i*y_f1;-9TKq# z&ikeja#COinp^_QqyN_OM<UB<X?9nn=oi{Jn5<1`o+LL86m`Vbog|qDp)BH&s1JIK zlD7AlV%)Qc2u1|_iJ3~tG$;~Tf*&jmhF!)C#<93(XnX*Y_zdDR(_xZ_nirOXT75p4 zcYMF<`jxUvE}dsg>3i3f3iHcv2GyYIH2lDG{ifrk($bkeVGNl32&UZJnP6vYz14bu zbMpgO%9u%#Vm5IbiWQgzi(uRnDe`DvmaNFJkMNE>IVIBq*q93AZwMj*JVi3TXA;0* z5<$dJ`v!3XPsJ@BGPkmN0G<0xLIxwQO(y-`A(>B^gffbmkr|MV8d*dGSCJ;Fm@(x9 z<);8Zm&~-SvAhKoC+3R5qEmHi$bjnwPPyC&O8i`Pn{E}(Jw-NvX__nXPtvPO8P+)e zS$j%?cUBo7>Oe@1JR|C0NTm)TK4t&l$`NOKwIQ=yz0;~~u7T3O+FIG!S>Nds=1&%! zc+ABIFna_?mH{gJle338SWu4PS<eFF7f*K#Q9w>QK0ZPb8`~;kc$8h--nhB4eb2eR z(du@Pg!;%0^a<=*4d2U7QZ{Vb6#A(p`@hVHxJcPu)<ldRBA@FbrTT&<($&Do$_-s) zsnXCyQa!B9>LQf|KNLAmvGCDBpo|>R231-VVpMg*wj!$(fqdBva}pIe>Dfn?H@M8v z0%J+xjy-LV3RE3c+bAhky|SIP`=bKyu`iBdKb{S$iO3A$^u-MKL8a5kMjA<ST!ljM zW)aA^S+F|iip;*Fxs^&(@nWPR^o`N&f`D&pQX8H3TtRwdoI;@;ulR0FJGMc+>3Sa8 zu95++vs@T@m%>@<t)NyfS1wdsPgBr+jv$&R+vQS%#i-MfE_u9SVo7$Q+JL|@vQu+? zr{-L&B$<n9QfAcrEX*i67Uc|8LbzRn&Z)+tTdFwKz?rX9EB@642)UalK$xsci&E+8 zf#z7ZN8P|GS?%IFhymM6Lz4A4#)WR{&wyKVLWA2lJtJ>*=|r{qf8gw;At?;haoC9Z z#0zZwxuNUGC0U9CHp-Ts3ntYBsTu{}G2$gf)$b{y0^lCJpb~H7j_Qm(c+oHQUPtvJ zkG>qhjicNZx$|_*D+KDE&36>^ppRUMnlKj22KB|O$~xLvk@wMO!r^sHZPG8g0pyl= z2tyQDG!NZ!7-YWUeA4$mrZIBWOp^|XQ3&d~&qK*0OPS$$i2I}YEm39H1W$HS@k}9b zF`<-U>udHJrJbGZTq6`*jLpdK2qM`EowiSG)37k$)ZL)IwBUNAnqz&NCs|BrJVP0O zk@J`!)#OI<!$gH<x`~cNJkQX2j)!>UA9mByZn+dQI>+15MK)}MEhE`vwH{`a)eu^u z!S67K>YxUxqDV^^+#4DvEl?-YC&D41I37@*-!+COqp-rEH7RtY<s4^KVue*M${&dp zK^w!nfsE>s>v;aW>-fP^-Mj2~^(zZyNa(}s;%j-N{Ve`R3FO(X^$58SWAbf9e2J<{ zo&Qn3jfj3zI|FGhUj#~xSPc<RNb9we7V39T;X)DXmD)XSwcGz(QpojC$gd=O(NUlm d6XNIdlQE+>xOg}Ycy~g+od2f9!N<xL{{q7H5552Z literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_batttide.nss b/_removed/x2_s0_batttide.nss new file mode 100644 index 0000000..273371f --- /dev/null +++ b/_removed/x2_s0_batttide.nss @@ -0,0 +1,84 @@ +//:://///////////////////////////////////////////// +//:: Battletide +//:: X2_S0_BattTide +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + You create an aura that steals energy from your + enemies. Your enemies suffer a -2 circumstance + penalty on saves, attack rolls, and damage rolls, + once entering the aura. On casting, you gain a + +2 circumstance bonus to your saves, attack rolls, + and damage rolls. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Dec 04, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs 06/06/03 +/* +Patch 1.71, fix by Shadoow + +- disabled aura stacking +- moving bug fixed, now caster gains benefit of aura all the time, (cannot guarantee the others, +thats module-related) +*/ + +#include "70_inc_spells" +#include "x2_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-07-07 by Georg Zoeller + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eAOE = EffectAreaOfEffect(AOE_MOB_TIDE_OF_BATTLE); + effect eVis = EffectVisualEffect(VFX_IMP_AURA_UNEARTHLY); + effect eVis2 = EffectVisualEffect(VFX_IMP_HOLY_AID); + effect eSaves = EffectSavingThrowIncrease(SAVING_THROW_ALL,2); + effect eAttack = EffectAttackIncrease(2); + effect eDamage = EffectDamageIncrease(2,DAMAGE_TYPE_MAGICAL); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + //Link the effects + effect eLink = EffectLinkEffects(eAttack,eDamage); + eLink = EffectLinkEffects(eLink,eSaves); + eLink = EffectLinkEffects(eLink,eDur); + + eLink = EffectLinkEffects(eLink,eVis); + eLink = EffectLinkEffects(eLink,eAOE); + + int nDuration = spell.Level; + + //Make metamagic check for extend + if(spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + + //prevent stacking + RemoveEffectsFromSpell(spell.Target, spell.Id); + + //Apply the VFX impact and linked effects + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, spell.Target); + + //Create the AOE object at the selected location + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); + spellsSetupNewAOE("VFX_MOB_BATTLETIDE"); +} diff --git a/_removed/x2_s0_blckstff.ncs b/_removed/x2_s0_blckstff.ncs new file mode 100644 index 0000000000000000000000000000000000000000..4cda8f6902d81ab6d1e519e779d19d93aac73b45 GIT binary patch literal 5383 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 I?!K@72VMZP?f?J) literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_blckstff.nss b/_removed/x2_s0_blckstff.nss new file mode 100644 index 0000000..a0e2f4a --- /dev/null +++ b/_removed/x2_s0_blckstff.nss @@ -0,0 +1,96 @@ +//:://///////////////////////////////////////////// +//:: Blackstaff +//:: X2_S0_Blckstff +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Adds +4 enhancement bonus, On Hit: Dispel. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Nov 29, 2002 +//::////////////////////////////////////////////// +//:: Updated by Andrew Nobbs May 07, 2003 +//:: 2003-07-07: Stacking Spell Pass, Georg Zoeller +//:: 2003-07-15: Complete Rewrite to make use of Item Property System +/* +Patch 1.70, fix by Shadooow + +- VFX added if cast on weapon on ground +*/ + +#include "70_inc_spells" +#include "x2_i0_spells" +#include "x2_inc_spellhook" + +void AddBlackStaffEffectOnWeapon (object oTarget, float fDuration) +{ + IPSafeAddItemProperty(oTarget, ItemPropertyEnhancementBonus(5), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE); + //IPSafeAddItemProperty(oTarget, ItemPropertyOnHitProps(IP_CONST_ONHIT_DISPELMAGIC, IP_CONST_ONHIT_SAVEDC_16), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING); + itemproperty pStaff = ItemPropertyOnHitCastSpell(125, 1); + IPSafeAddItemProperty(oTarget, pStaff, fDuration); + SetLocalInt(oTarget, "Blackstaff", 1); + DelayCommand(fDuration-0.1, SetLocalInt(oTarget, "Blackstaff", 0)); + IPSafeAddItemProperty(oTarget, ItemPropertyVisualEffect(ITEM_VISUAL_EVIL), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE); +} + +void main() +{ + /* + Spellcast Hook Code + Added 2003-07-07 by Georg Zoeller + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + + // End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_IMP_EVIL_HELP); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + int nDuration = spell.Level; + + object oMyWeapon = IPGetTargetedOrEquippedMeleeWeapon(spell.Target); + object oPossessor = GetItemPossessor(oMyWeapon); + + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration * 2; //Duration is +100% + } + + if(GetIsObjectValid(oMyWeapon)) + { + //if the possessor isn't valid, nothing should happen + SignalEvent(oPossessor, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + + if (GetBaseItemType(oMyWeapon) == BASE_ITEM_QUARTERSTAFF) + { + if(GetIsObjectValid(oPossessor)) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPossessor); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oPossessor, RoundsToSeconds(nDuration)); + } + else + { + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, spell.Loc); + } + AddBlackStaffEffectOnWeapon(oMyWeapon, RoundsToSeconds(nDuration)); + } + else + { + FloatingTextStrRefOnCreature(83620, spell.Caster); // not a qstaff + } + } + else + { + FloatingTextStrRefOnCreature(83615, spell.Caster); + } +} diff --git a/_removed/x2_s0_bldethst.ncs b/_removed/x2_s0_bldethst.ncs new file mode 100644 index 0000000000000000000000000000000000000000..f368561430dc10d5b11246bb13577d390651deec GIT binary patch literal 5102 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 CA94)< literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_bldethst.nss b/_removed/x2_s0_bldethst.nss new file mode 100644 index 0000000..d6fd98e --- /dev/null +++ b/_removed/x2_s0_bldethst.nss @@ -0,0 +1,91 @@ +//:://///////////////////////////////////////////// +//:: Blade Thrist +//:: X2_S0_BldeThst +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Grants a +3 enhancement bonus to a slashing weapon +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Nov 27, 2002 +//::////////////////////////////////////////////// +//:: Updated by Andrew Nobbs May 08, 2003 +//:: 2003-07-07: Stacking Spell Pass, Georg Zoeller +//:: 2003-07-21: Complete Rewrite to make use of Item Property System +/* +Patch 1.70 + +- signal event never fired +- VFX added if cast on weapon on ground +*/ + +#include "70_inc_spells" +#include "x2_i0_spells" +#include "x2_inc_spellhook" + +void AddEnhanceEffectToWeapon(object oMyWeapon, float fDuration) +{ + IPSafeAddItemProperty(oMyWeapon, ItemPropertyEnhancementBonus(3), fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE); +} + +void main() +{ + /* + Spellcast Hook Code + Added 2003-07-07 by Georg Zoeller + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + int nDuration = 2 * spell.Level; + + object oMyWeapon = IPGetTargetedOrEquippedMeleeWeapon(); + object oPossessor = GetItemPossessor(oMyWeapon); + + if (spell.Meta == METAMAGIC_EXTEND) + { + nDuration = nDuration * 2; //Duration is +100% + } + + if(GetIsObjectValid(oMyWeapon)) + { + //if the possessor isn't valid, nothing should happen + SignalEvent(oPossessor, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + + //if (GetSlashingWeapon(oMyWeapon)) + //{ + if(GetIsObjectValid(oPossessor)) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPossessor); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oPossessor, RoundsToSeconds(nDuration)); + } + else + { + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, spell.Loc); + } + AddEnhanceEffectToWeapon(oMyWeapon, RoundsToSeconds(nDuration)); + /*} + else + { + FloatingTextStrRefOnCreature(83621, spell.Caster); // not a slashing weapon + } */ + } + else + { + FloatingTextStrRefOnCreature(83615, spell.Caster); + } +} diff --git a/_removed/x2_s0_crumble.ncs b/_removed/x2_s0_crumble.ncs new file mode 100644 index 0000000000000000000000000000000000000000..4cbe299f83bdbd0d045715ae2080a0ac94d500d7 GIT binary patch literal 6005 zcmc&&TWl0n7(O#QEteK3Pz!>ErBa9p3Zj7+4J_>dtGnH1cWKLm8Ou$PLJ4?%@x`bw zCMG6oOnfvkF`8&JKB_M&G5Q7p6EsFmAdv?``cO?1{Lc5!KRai-tPo?QVRz?0|MmMX z=bRZDsO3kt+_QO?G0UD=W$<rq-uUhO%lY~z&r5<f({tjv=-~MAljBF9I1wE>5FI*v zWc-<lr?Ijmv-14OEgK9qcHM1On(NoEpMmC_rR4Va<yKo;oxS#{NZN1fJ@8yK0l%*p zs5DP`sfS};&T>qdAjnzSg?Z{&Ay1xNyJ`Yjn(=cKyd3lTs>WLCe1&>uOhEZDN2}M7 z*VTUTn&o_gURv4Nk)P9QeXd<^PdKQ5r`kq5$2_W;pE0shS-85O&3L1})kFD9Bnl8` zV{{M~v`tBn0@X`C`HcPaR$=usKL~6Ds@n<EfZ<}`=R}4qzeChwh;LHcEmlhwD;hzt z<11r&`XPA9BiPdlcEV!QV&b%{RlEF#!)o8ET{_G(P22Q)gPTwm%0<&oy5^r({r^?E zsP_w6{-0p(`aolpgxm~<OF9KZeop0WMRbkb7nPz?p;nKoVSS`f4ccu+P*3xG`3a`Z zZJVRhCl60dJUKae4B4FPw~{nlTP{Pfdft~~RiHf^xi#YB47{T!>uiCc7RWIJ<M$ep zP{K;`J{MBb%32xVu6yLhj8Ja#vv8|bt8-dN=#_+PQb-pXB>$R_eo+$5*gm(8dL4)c zuIh}C2GwcO#|F)``2#?4^|me1aG?~Ik%6!p6$S@u(SZCeg(G1J&Rw&ex7Ck(`&U|p z4{A+{up{4Z^S0fg&WovuXXM2wAulJXd5yF_xU#Tt>R`=gx%BKrdGZh_a}G|7pFVx~ zber+N$-#-sQtLW!-QZ{$po%}8`EHqMpe)00Hw%KYZDmcjP#7B^r;Zn;q`gxbF+A!R zK6Ui?_^B5P2aZl;9i&hj-N2l|YOYqVcHGHU&2!PXLx}dj-(=DvgW;GXl9^i+dB+tQ zs0=wGeiJK4T#?aY%@GNjh-`I5ibM5SM0PJ}on)XgzWGE7X;H*jb=`R-Yl=XA)Q@wL z6gV?5jVvFPGRII)B?V=Ur46#5qQ+T4%c)qW|Ml5BowIHhVW&%HgEf(uA++yqlFdhT zruJ4!_G&1Mw*!In`hB@ZU(v0H9kW4W=WL?l_C!VOo1mM4Ku$GOoAi5UpH=6r11>9y z^|0);ZB!WvtJUIQs4@U=s}zPirO->w6_hK3#ofiQ>L|$e5k$LadvKtI#bnY^mu;_< zSSve8Z9rfd?UciMp<LKgY-KK~Nt;pstvI8YSj-u!gt$Eho&B}paG+QyMTK3(Qn9|j z1%xQ-))2PV<wU8vnxMHd>rob1m320*nG~?iG_<mw#<(wQ{RVJ5PB?IT>o-}TtP`cu zzk#!vhE`#qj%8ZF`eLzu%g{CCT3Jd1wp=XT5==S-Wk-mQO?N2O-KUbBA$?30UcgS? z#2xZtGB(i*sypjgFShlqUT;zQR+2fd5L6u1R6CmBHMtRBG;*G$x3=U^WLvMjDz0c~ zszQv$hkzl6>c`YK94aO#=js`UniFa;X>GMF;2P}no4bW~E;;B?yq8O;U1dcqAL7!& zC}ix)Zkx<2t2y{o*&WUCZBT-5B4$>i5pu@!zgDX_#QY!*K|iMcd)_SgbT67>NJ}Y6 zX7i)F@jaAM`dzX_eXF?yO)#-TmJo7BUpqFxR6fAa(2+t)SmM++1qF(G#x_TLqC%-u z8D#_1>Xp6ws&(KQpB1SE=e$|aCYz7zO2b#pAWD|PUGx&v#vV)hZGh9W2xG)A)O+U< zGV9s&tPPvY5_q#L-5(!vV2-j4nWnLm2c4%V@mXD!`ob!3*pT!{d~AN5tY}tMfsoI| z_uuRRp}~T@(-eBG5kHH$pG<I<-z*aEyyydStD>fWI)WJhN6!1RU;>CTPi-lhKT~Hx zjtr;w1z1<&+gPGSKL5ey%drNO3|&^3n`V9t?*-b-T3jY;qs98b-Y6U@>?(!P(C|Q1 zsDzO%Pg}6Xux2mw-j@n1ok-_834`HZVfY`*??%aCB2n;hMW5g3v(DtI!}WE3jw^bc zlt}Qj3NM%b`lLP2Z5+=sX00*r4w~GS!H*No{2_@-`-{}464frhX_S?S86elgjAv4; z$PQaiS>j@S&XMPXa>gCCk9e<X;9cHVsu!cZ;SjL5fR_t{Lt%|zn|L2^#zE#PL>tI3 z@c@ntgYR0L3!1wT#lyxu3K6{+hCE8gmT&4aGXykHjj>DeT2_DfE!Z2cJ1<q!EolS3 zF4}8zxPMP+Ht_p>RZBT7nvJ9)Z@Su((Z>)zY7~H2jp2I}8SBNRy;j*5h2`POC~oa? z3fUFzEsPW^)y5c(H>n3{2<Y+~)s_uF@NsH!#*sm&<nirQntX2Xvvq45aVv{+I8A7- z#)k<7fV0cIo$S>?uyZHgu-bPSvh;}8vj#-uv3t$3HR7xNoGVPMOjC*93)%(mCqRIA ziAnDD<zhlGuL=j>Hqz9E7#-wV<iK!I0K3SEexvuGDorVU56b4>y|D{EZ^!?&%;;V6 ta#IB~LJE2`7b7DP&GBzS9<7pc_txcM%8|z_Q}_#K=J-t3WqzXV{svQ&B2oYV literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_crumble.nss b/_removed/x2_s0_crumble.nss new file mode 100644 index 0000000..73f7c2a --- /dev/null +++ b/_removed/x2_s0_crumble.nss @@ -0,0 +1,118 @@ +//:://///////////////////////////////////////////// +//:: Crumble +//:: X2_S0_Crumble +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* +// This spell inflicts 1d6 points of damage per +// caster level to Constructs to a maximum of 15d6. +// This spell does not affect living creatures. +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: Oct 2003/ +//:: 2004-01-02: GZ: Removed Spell resistance check +//::////////////////////////////////////////////// +/* +Patch 1.70, fix by Shadooow + +- was missing target check and could affect friendly tarets at no-pvp area +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void DoCrumble (int nDam, object oCaster, object oTarget); + +void main() +{ + + /* + Spellcast Hook Code + Added 2003-07-07 by Georg Zoeller + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + // End of Spell Cast Hook + + spellsDeclareMajorVariables(); + int nCasterLvl = spell.Level; + int nType = GetObjectType(spell.Target); + int nRacial = GetRacialType(spell.Target); + + //Maximum caster level of 15. //minimum safety check is handled in new engine + if (nCasterLvl > 12) + { + nCasterLvl = 12; + } + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster) && + (nType == OBJECT_TYPE_CREATURE || nType == OBJECT_TYPE_PLACEABLE || nType == OBJECT_TYPE_DOOR) && + (GetRacialType(spell.Target) == RACIAL_TYPE_CONSTRUCT || GetLevelByClass(CLASS_TYPE_CONSTRUCT,spell.Target))) + { + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + effect eCrumb = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eCrumb, spell.Target); + + int nDam = MaximizeOrEmpower(6,nCasterLvl,spell.Meta); + nDam = FloatToInt(nDam * 1.5); + if (nDam>0)//can't happen anyway + { + //---------------------------------------------------------------------- + // * Sever the tie between spellId and effect, allowing it to + // * bypass any magic resistance + //---------------------------------------------------------------------- + /*DelayCommand(0.1,*/DoCrumble(nDam, spell.Caster, spell.Target);//); + } + } + //Make it work on non-constructs + else if (spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster) && + (nType == OBJECT_TYPE_CREATURE || nType == OBJECT_TYPE_PLACEABLE || nType == OBJECT_TYPE_DOOR)) + { + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + effect eCrumb = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eCrumb, spell.Target); + + int nDam = MaximizeOrEmpower(6,nCasterLvl,spell.Meta); + if (nDam>0)//can't happen anyway + { + //---------------------------------------------------------------------- + // * Sever the tie between spellId and effect, allowing it to + // * bypass any magic resistance + //---------------------------------------------------------------------- + /*DelayCommand(0.1,*/DoCrumble(nDam, spell.Caster, spell.Target);//); + } + } +} + +//------------------------------------------------------------------------------ +// This part is moved into a delayed function in order to alllow it to bypass +// Golem Spell Immunity. Magic works by rendering all effects applied +// from within a spellscript useless. Delaying the creation and application of +// an effect causes it to loose it's SpellId, making it possible to ignore +// Magic Immunity. Hacktastic! //shadooow: BS, useless, it does work without delay +//------------------------------------------------------------------------------ +void DoCrumble (int nDam, object oCaster, object oTarget) +{ + float fDist = GetDistanceBetween(oCaster, oTarget); + float fDelay = fDist/(3.0 * log(fDist) + 2.0); + effect eDam = EffectDamage(nDam, DAMAGE_TYPE_SONIC); + effect eMissile = EffectVisualEffect(VFX_FNF_MYSTICAL_EXPLOSION); + effect eCrumb = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); + effect eVis = EffectVisualEffect(135); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eCrumb, oTarget); + if (GetRacialType(oTarget) == RACIAL_TYPE_CONSTRUCT || GetLevelByClass(CLASS_TYPE_CONSTRUCT,oTarget)) + { + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget)); + } + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); + DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget)); +} diff --git a/_removed/x2_s0_icedagg.ncs b/_removed/x2_s0_icedagg.ncs new file mode 100644 index 0000000000000000000000000000000000000000..8090b49730e36692ee8551dde3a36c570d0ba4a9 GIT binary patch literal 11041 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 UYw<p*`S9(nKFXdYXZ+OhfB!%S82|tP literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_icedagg.nss b/_removed/x2_s0_icedagg.nss new file mode 100644 index 0000000..939d6db --- /dev/null +++ b/_removed/x2_s0_icedagg.nss @@ -0,0 +1,79 @@ +//:://///////////////////////////////////////////// +//:: Ice Dagger +//:: X2_S0_IceDagg +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* +// You create a dagger shapped piece of ice that +// flies toward the target and deals 1d4 points of +// cold damage per level (maximum od 5d4) +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Nov 25 , 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs, 02/06/2003 +/* +Patch 1.70 + +- removed delay from VFX and effect applications +*/ +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-07-07 by Georg Zoeller + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + int nCasterLvl = spell.Level; + int nDamage; + effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); + effect eDam; + + //Limit Caster level for the purposes of damage + if (nCasterLvl > 5) + { + nCasterLvl = 5; + } + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Get the distance between the explosion and the target to calculate delay +// fDelay = GetDistanceBetweenLocations(spell.Loc, GetLocation(spell.Target))/20;//there shouldn't be delay + if (!MyResistSpell(spell.Caster, spell.Target)) + { + //Roll damage for each target + nDamage = MaximizeOrEmpower(4,nCasterLvl,spell.Meta,2); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = GetReflexAdjustedDamage(nDamage, spell.Target, spell.DC, SAVING_THROW_TYPE_COLD, spell.Caster); + //Set the damage effect + eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD); + if(nDamage > 0) + { + // Apply effects to the currently selected target. + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, spell.Target); + //This visual effect is applied to the target object not the location as above. This visual effect + //represents the flame that erupts on the target not on the ground. + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, spell.Target); + } + } + } +} diff --git a/_removed/x2_s0_vinemcama.ncs b/_removed/x2_s0_vinemcama.ncs new file mode 100644 index 0000000000000000000000000000000000000000..11a9f61c5977ea13810e859ecdc10afdc5234502 GIT binary patch literal 2600 zcmai0&ubJ(6t1f2X|qmT#YMsOR~yt77bRK6y$CXnjR~|9$xKXcy>VR^Vf}GX-21Y( z1;M|-gGUdFp7kUKQSqRt7|??UK@YOzpc05*eXpvgYiu<G(^K!q_ul*Jz1L~CI?0id zox}T;TDon6!rwrmOw3Qs_>Y`dMs>CN)cO4PnUiN`PW*W)KXx=f_Q&y=bAO$MW@Vq| z?=vIY6%kkbtk$Z<#l_i#XFXU~YK=0rpEQK`R20<^R@dz5or<iBd9l%^@|>~-718pM zLKHo0hH6yaq?__8K4-0ony=CCJrDmFvE%nFv^UCv2R*?6E$Rr78y}a?dE(qLQDk$X z=(URcQ_ul37gZR*mj;FgWZ@mZ7ZMf47H_L98+nVgSA`zXRDmB+p|bCq<7qxV)lMgR zc508I-9v9j6;6cLjUke?j#6NSw#e#|Ld7Ez3k-*`T3NHxDaG0)-04*babA|}W1HK7 zR$xq{r{0JvoJfdXo-naBNa3`QP#F43v-C)seGWJm0OAw?ZlVJ!1#nl&DjXmiuxTDj zyUhSs5L{KS0(_jPRi%VaNW!6Ee<D8$C^;xHNTh!jnBIR{Od3K(B5|~Bh_^n6^=OfJ zLNvY``2>Xb-eUWx9Y{?hq4Z)Pjhu8gkk&*Rowl*+%cw(qJ~5AIkH^J85Oh6Neg<F) zs;`(OQiUs<RiOK&pDc28y%O0?vlOpCcT;P3AQz?0Z6CF+%za6Slc_Ijc2b!>e>3we z=?8k!SUr<H1NK<T-V*5DLPfldQ~?PD>=PAAZVbiA5*NxF^e{?H$(6aQtt17&tEY$a zgLyN{#-}=m(=6+B$44h8y5RGFjHPnpwzL8T7vo0NE>G#IAXk5bsFdZbV3v@^34eL{ zD$uDd!`QmtC$U`OahhPf`NUdqYeWjKx~1Jaiq7uysjQtgSkRs&o_$KvU(kYr?Zu3^ z)Gp8zyTU`TKfj6dtc2r(u>-d7gcA9bj(XzOTmx54^1fVyPh^gL^2C%{QD`c5q-{m@ z!O`SP*TL*pdE9XxU%Ah3#QfJGpk;jJ^r*b~X;TC3o2P%tJ5yub)@Yu#oBOjgZy#>u zc6HkJv<*9!cI=B<-y-wAj51F};q245EdQ$f?zJ2?5_9>@v(G2yY;Y*Zb*qtgI$E3o zr4pPr;2(>R*W!eW17`-{*z0u+`D-74+-T~JTvRz<T)j*b-D3I8B-n}A0rE!e%S@V; zOR!|(n)Q6(&x5yg6E#V`H}&{FG?{hB^3k*n?)k229%!c>lC9i(AXo>Al_SMc!Wbk< a!6T*bS<;|b@OwUZ5xHekv3wm3iTVWR`UUj> literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_vinemcama.nss b/_removed/x2_s0_vinemcama.nss new file mode 100644 index 0000000..82113af --- /dev/null +++ b/_removed/x2_s0_vinemcama.nss @@ -0,0 +1,44 @@ +//:://///////////////////////////////////////////// +//:: Vine Mine, Camouflage: On Enter +//:: X2_S0_VineMCamA +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Friendly creatures entering the zone of Vine Mine, + Camouflage have a +4 added to hide checks. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Nov 25, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs, 02/06/2003 +/* +Patch 1.70 + +- aoe signalized wrong spell ID +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" + +void main() +{ + //Declare major variables + aoesDeclareMajorVariables(); + object oTarget = GetEnteringObject(); + if(spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, aoe.Creator)) + { + if(!GetHasSpellEffect(spell.Id, oTarget)) + { + //Fire cast spell at event for the target + SignalEvent(oTarget, EventSpellCastAt(aoe.AOE, spell.Id, FALSE)); + + effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eSkill = EffectSkillIncrease(SKILL_HIDE, 8); + effect eLink = EffectLinkEffects(eDur, eSkill); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget); + } + } +} diff --git a/_removed/x2_s0_vinemhmpa.ncs b/_removed/x2_s0_vinemhmpa.ncs new file mode 100644 index 0000000000000000000000000000000000000000..fc78be7489963abf6175713b8ab080eac150437d GIT binary patch literal 2750 zcmai0L5Lhh6s@Z6>1;AlLqY;E*`za?2$5)3MK6L(CapWrnOUZ1vwLe-V<ezS4obX> zo&>?O2M-=SD0<d|NET7>pv1@`9y|!<AYl%xEUd5Iuj=WVZOsmBPyPD!{`;@~|2>0V zkzQPQ?Cd$E_I!Cv;cqTgCgCSC{v+%CaZ4S#dZT=K?e*(xS6;nZUV5p#^vdP6H(z@L zJNsvL-nzbUS`l&Iqw0v--rinMxz_ELQiqj^9?>v<r{Xw5*f_GQzf^3Gm|u@uD!<US z<vi9~O3#~4<c)M$FcD%OSbd_*%YISz2fg8FX*kNdc^z+e)`^mo2i|2g&DcMxn9p?u z3^fttO)lOx^aCyMD6#v67@h}-ueGPZ=Y$7tnmD$cX}aUm!4?4w05)QZFya5LRK<yP zKV`E<e6dd1=sC?T$Rk@|xVt;d%Hhf&8%_Px(}sROct37oMR?urFzKVT0xR?dtB({C zT98<fBaGF{yG2op^`vN^52nQVt>&LtZs&V}Go60+PTayu^nXBZ<1i>(6A>y$pJ|?5 z%<`Rp8v!6z0pJN9K&Aj5OIp<d*yb$F3)#3E;0l7v>h}O2EAFZq;VVKobetvfpny_? zia{#nu|<0CX>n<b6sg3~wjfYHauf3?kz^!0zSw;6`O_zD9Ss7jX{WS)5LjbpT@S30 zSmSFpR_i|QAwHjIN0i4;#vdT)JXe1>7q~*|Ps}dK!llhDQ2o;^;?EnAI}r<1lGi(r zsUv3)NNMwpkJ?h^dm+Te(;w>^f+B*ynF&)mz>{=Vx2x7=D$mwHzpb{2cbr>5f&kCS z7E*3^l604lm8*oq6r-k;T$#JtMo|EKX!UIQLfOsp;YzWT<#{n4E-sJ8(DN?ZQn_~9 z(}04Dajk0SQ$=OU)!!gWjp^(oOIVYX-@N@G<kVJS4Bh)vHzP081?|lz#)2Col6ccC zJ$0t4?3pu-xzh)O)~m#|rzG`-T}W`c>JdlneY#>+cnH?#J#lW=aC|UUz)7x<BA-%G zx7?U(<Ekm%f9K$dY_LvlnOZ4|Ox29ErKtXPGWpbX(ECj%Zn_iybD#H!`Hn+C$@t89 zqVeWe`8s_VuhU|sKkhA-*`Rwa&&t74ue77nmZvS)epcA`wEl|9`!wo0Rf)4s?=byO z<@>bcFp<dRMXx@e=(D|@fa@tE?`Cux14<@X9mDU6e?Cjnoo%m=GUPKe`f;MEKjot8 zd~x;DVWkrJP7<s{%m8_#&M=c=<q)j7xMIB#oae%Ox{g|=-Y2GdUs%q^{c<rIKzqKc zy5|R3L9vy44+P^t1|BHZ2&0jx2Xv%$lS=Fr5B{G7FCsT=8iucv!Fk)NZT_v*eki!E jS_hl1bl!(;KV0fVq#9#n__&wLKRE+QD|8fEo2mL2Is!O= literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_vinemhmpa.nss b/_removed/x2_s0_vinemhmpa.nss new file mode 100644 index 0000000..1e97b82 --- /dev/null +++ b/_removed/x2_s0_vinemhmpa.nss @@ -0,0 +1,47 @@ +//:://///////////////////////////////////////////// +//:: Vine Mine, Hamper Movement: On Enter +//:: X2_S0_VineMHmpA +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creatures entering the zone of Vine Mine, Hamper + Movement have their movement reduced by 1/2. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Nov 25, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs, 02/06/2003 +/* +Patch 1.70 + +- aoe signalized wrong spell ID +- incorporeal creatures could been affected +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + //Declare major variables + aoesDeclareMajorVariables(); + object oTarget = GetEnteringObject(); + //float fDelay = GetRandomDelay(1.0, 2.2); //unused + if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoe.Creator)) + { + if(!GetHasFeat(FEAT_WOODLAND_STRIDE, oTarget) && !GetCreatureFlag(oTarget, CREATURE_VAR_IS_INCORPOREAL)) + { + //Fire cast spell at event for the target + SignalEvent(oTarget, EventSpellCastAt(aoe.AOE, spell.Id)); + + effect eVis = EffectVisualEffect(VFX_IMP_SLOW); + effect eSlow = EffectMovementSpeedDecrease(70); + effect eLink = EffectLinkEffects(eVis, eSlow); + + //Apply reduced movement effect and VFX_Impact + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget); + } + } +} diff --git a/_removed/x2_s0_vinemhmpc.ncs b/_removed/x2_s0_vinemhmpc.ncs new file mode 100644 index 0000000000000000000000000000000000000000..53d3e76eb3fb21c3dc24557ee0370c9586f86fa5 GIT binary patch literal 3174 zcmai0J#1V>5Z>MQe0DfPti(2g#PPd>7!e4>guem_E|*7q(#xIYJIC%GhF}y4k`$oO zBRV7yC8D69qyQ0W3P7<UB2ff|NG>Q4Kf(nd7Y13FZ@<}nKj#avW$*3I%r`UN%+6lB z*^SQ3K631YQlqPf6n;h`Wh(p)jQ^GWzHmrQp1+j7wDQ`;m2<D0PtU%Xo_%?B<&9Tg zhh$%$<jsq-M-&mq9#RL?&d$zS#J#@yfX41y1tWDt*Mn*6b~+60LeUyUf0`*A=nulc z3iv;T#bv{f&krg6l@2V@HiUNFq}df?!h(s;5p^Z-`t)r5>L>gWZPtJ~W$Kw8Lz^`L zLfyaoSem4*ZrW-$I}7ujg}9N>_74@>G|g}Ipc2vGvI%^OM3wNIUa(A^_b8F*uB$MQ zQf-R&EoSqU%_e-#5<q^er#;uSOP926KRkxRr|~y#2~!V>CSwB#*A19k8VwR(4<qG; z*bWPyLU56-;ec)cA#SEn!+*c#=Z#2(73*up27+>lMxKNo(G;P`A_9SX8l5=pEVbi> zTu(h|sP~=MqX;{~>uQ}`9povn%DM>tBZY#^iZ8HO_SH-p-EP6xamiFqM8x^ApkJ}E zootqrsq}+aq6j-F+g>U3JqY1~kdP_*Oq2Lboa_c%F9Bj#0<6(Mu0~JN$_xNJV#7Qg z_ZlT!L2z09RKmxOQdJ1}oCI7}><{E#0VM}n1bN@w;yzUGV`FWrkae5N+srgH5kIU( z?vg~}fjx$+A*EvjKkCi=3YL$X0g4qGZMm@E6^ieOA6=CSi5Ep<T!P$7WkHCc4@?fO zfRL!F(P7)(?b4}nr|*|eLwCAXIt}DBykIjLx|1^a=Zb96wci_WKv%-muTBN3$mJ6= zELpf}Fbl+*XAyor5ZTRCNnY<ZQwNU1k<#WHn#1dmGS?&^;3K+^H7h6xLZ5G#O{TP; zmQ+?ZvpLLEo+*G{%|yhTrU*!I@vMm8yjrhB!_Jjg$T12`Ny%Jk2a*Ed$>n3|skD(K zou%%4oFv^|XKrz!2R{G8v_K~j<&FU;SsRKUA4(ppub^-6F{<FS67iEip8%cOGK`6P zmv8u0s$lAHy>8Pka6G6=j~|sm4cI=Lfw@x$<Jz;ty$`8y7xCy)1$V^V#doQS5#}M- zpSQ)iS-|nm*a3&RLyBCbqi(qATScjv_pNjAfvmGnZkSy(Wuu$(;%`TjPrZEih1jyi z6=(53^}LPGw;cjn#%E58ft6q87l`}u1){su>NV%mxZOCB#A$oJnc9hN+tW5|EAHC& zU4QAzvx}!J4UT{frvIsY&RY%>iH0wD_POGojn+%C&KUWo;U5Xf1iM3c>Hqnx5^->p zuDw1;mrwQa$BCwXmqHD!E6rqHZ!-uKi}y+%`o74dSvdqTCcKJk)=MROZoH<uQH$ie zmh*jjG3m9^xwsAP`Ghu3w&O0zR_+}rjRP5Y2vH`jXN`P-N1kpmrBTt~|IN}v<c7_F z;p=F~wTX{gvbV;%ec==I>qN~*5QdFNsmU7V*e}^+m2Mf2aEQR|H?m!kL-cdsgz?}4 id3UWGsF!j@dB;WWljj?tW`qd&zDfIRf)?tH_xV4g;=@M( literal 0 HcmV?d00001 diff --git a/_removed/x2_s0_vinemhmpc.nss b/_removed/x2_s0_vinemhmpc.nss new file mode 100644 index 0000000..c21e4c9 --- /dev/null +++ b/_removed/x2_s0_vinemhmpc.nss @@ -0,0 +1,63 @@ +//:://///////////////////////////////////////////// +//:: Vine Mine, Hamper Movement: Heartbeat +//:: X2_S0_VineMHmpC +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creatures entering the zone of Vine Mine, Hamper + Movement have their movement reduced by 1/2. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Now 25, 2002 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs, 02/06/2003 +/* +Patch 1.70 + +- aoe signalized wrong spell ID +- incorporeal creatures could been affected +*/ + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + //Declare major variables + aoesDeclareMajorVariables(); + + //-------------------------------------------------------------------------- + // GZ 2003-Oct-15 + // When the caster is no longer there, all functions calling + // GetAreaOfEffectCreator will fail. Its better to remove the barrier then + //-------------------------------------------------------------------------- + if(!GetIsObjectValid(aoe.Creator)) + { + DestroyObject(aoe.AOE); + return; + } + + effect eVis = EffectVisualEffect(VFX_IMP_SLOW); + effect eSlow = EffectMovementSpeedDecrease(70); + effect eLink = EffectLinkEffects(eVis, eSlow); + float fDelay; + + //Get first target in spell area + object oTarget = GetFirstInPersistentObject(aoe.AOE); + while(GetIsObjectValid(oTarget)) + { + if(!GetHasFeat(FEAT_WOODLAND_STRIDE, oTarget) && !GetCreatureFlag(oTarget, CREATURE_VAR_IS_INCORPOREAL)) + { + if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, aoe.Creator)) + { + SignalEvent(oTarget, EventSpellCastAt(aoe.AOE, spell.Id)); + fDelay = GetRandomDelay(0.0, 2.0); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextInPersistentObject(aoe.AOE); + } +} diff --git a/_removed/x2_s1_beholdatt.ncs b/_removed/x2_s1_beholdatt.ncs new file mode 100644 index 0000000000000000000000000000000000000000..29fa555ed675c1b9efaf3e8268da8cb189d28df8 GIT binary patch literal 38223 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 literal 0 HcmV?d00001 diff --git a/_removed/x2_s1_beholdatt.nss b/_removed/x2_s1_beholdatt.nss new file mode 100644 index 0000000..0280767 --- /dev/null +++ b/_removed/x2_s1_beholdatt.nss @@ -0,0 +1,30 @@ +//:://///////////////////////////////////////////// +//:: x2_s1_beholdatt +//:: Beholder Attack Spell Logic +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + + This spellscript is the core of the beholder's + attack logic. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: 2003-08-28 +//::////////////////////////////////////////////// +// Modified by Tony K for NWN2 2008-05-18 - only left +// for backward compatability +// Modified by Tony K for NWN1 2008-07-22 + + +#include "x2_inc_behai" + + +void main() +{ +// Jug_Debug(GetName(OBJECT_SELF) + " running special beholder ray AI"); + object oTarget = GetSpellTargetObject(); + + RunBeholderEyeAttacks(oTarget, TRUE); +} \ No newline at end of file diff --git a/_removed/x2_s1_beholdray.ncs b/_removed/x2_s1_beholdray.ncs new file mode 100644 index 0000000000000000000000000000000000000000..97e4299d1fec1b3538976a695e82a114d489032b GIT binary patch literal 11204 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 IE{W8C0rOc@N&o-= literal 0 HcmV?d00001 diff --git a/_removed/x2_s1_beholdray.nss b/_removed/x2_s1_beholdray.nss new file mode 100644 index 0000000..052a20a --- /dev/null +++ b/_removed/x2_s1_beholdray.nss @@ -0,0 +1,73 @@ +//:://///////////////////////////////////////////// +//:: Beholder Ray Attacks +//:: x2_s2_beholdray +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + Implementation for the new version of the + beholder rays, using projectiles instead of + rays +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: 2003-09-16 +//::////////////////////////////////////////////// +// Modified by dirtywick and Tony K for NWN2 2008-04-06 +// Modified by Tony K for NWN1 2008-07-22 + +#include "x0_i0_spells" + +#include "x2_inc_beholder" + +void main() +{ + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + + int nRay; + + switch (nSpell) + { + case 776: + nRay = BEHOLDER_RAY_DEATH; + break; + + case 777: + nRay = BEHOLDER_RAY_TK_THRUST; + break; + + case 778: + nRay = BEHOLDER_RAY_PETRI; + break; + + case 779: + nRay = BEHOLDER_RAY_CHARM_MON; + break; + + case 780: + nRay = BEHOLDER_RAY_SLOW; + break; + + case 783: + nRay = BEHOLDER_RAY_WOUND; + break; + + case 784: + nRay = BEHOLDER_RAY_FEAR; + break; + + case 785: + nRay = BEHOLDER_RAY_CHARM_PER; + break; + + case 786: + nRay = BEHOLDER_RAY_SLEEP; + break; + + case 787: + nRay = BEHOLDER_RAY_DISINTEGRATE; + break; + } + + DoBeholderRayAttack(nRay, oTarget, FALSE); +} \ No newline at end of file diff --git a/_removed/x2_s1_petrgaze.ncs b/_removed/x2_s1_petrgaze.ncs new file mode 100644 index 0000000000000000000000000000000000000000..1ce6e1d6323d0bf2fda136532c503b47953cb2fc GIT binary patch literal 14367 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 MhO-B?lwm&oZ}%$yX8-^I literal 0 HcmV?d00001 diff --git a/_removed/x2_s1_petrgaze.nss b/_removed/x2_s1_petrgaze.nss new file mode 100644 index 0000000..eaf235d --- /dev/null +++ b/_removed/x2_s1_petrgaze.nss @@ -0,0 +1,81 @@ +//:://///////////////////////////////////////////// +//:: Gaze attack for shifter forms +//:: x2_s1_petrgaze +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + + Petrification gaze for polymorph type + basilisk and medusa + +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: July, 09, 2003 +//::////////////////////////////////////////////// + +#include "x0_i0_spells" +#include "x2_inc_shifter" + +void main() +{ + //-------------------------------------------------------------------------- + // Enforce artifical use limit on that ability + //-------------------------------------------------------------------------- + if(ShifterDecrementGWildShapeSpellUsesLeft() < 1) + { + FloatingTextStrRefOnCreature(83576, OBJECT_SELF); + return; + } + + //-------------------------------------------------------------------------- + // Make sure we are not blind + //-------------------------------------------------------------------------- + if(GZCanNotUseGazeAttackCheck(OBJECT_SELF)) + { + return; + } + + //-------------------------------------------------------------------------- + // Calculate Save DC + //-------------------------------------------------------------------------- + int nDC = ShifterGetSaveDC(OBJECT_SELF,SHIFTER_DC_EASY_MEDIUM); + + float fDelay; + object oTarget = GetSpellTargetObject(); + int nHitDice = GetCasterLevel(OBJECT_SELF); + int nSpellID = GetSpellId(); + object oSelf = OBJECT_SELF; + + //-------------------------------------------------------------------------- + // Loop through all available targets in spellcone + //-------------------------------------------------------------------------- + location lFinalTarget = GetSpellTargetLocation(); + vector vFinalPosition; + if(lFinalTarget == GetLocation(OBJECT_SELF)) + { + // Since the target and origin are the same, we have to determine the + // direction of the spell from the facing of OBJECT_SELF (which is more + // intuitive than defaulting to East everytime). + + // In order to use the direction that OBJECT_SELF is facing, we have to + // instead we pick a point slightly in front of OBJECT_SELF as the target. + vector lTargetPosition = GetPositionFromLocation(lFinalTarget); + vFinalPosition.x = lTargetPosition.x + cos(GetFacing(OBJECT_SELF)); + vFinalPosition.y = lTargetPosition.y + sin(GetFacing(OBJECT_SELF)); + lFinalTarget = Location(GetAreaFromLocation(lFinalTarget),vFinalPosition,GetFacingFromLocation(lFinalTarget)); + } + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lFinalTarget, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(spellsIsTarget(oTarget,SPELL_TARGET_STANDARDHOSTILE,OBJECT_SELF) && oTarget != OBJECT_SELF) + { + // Let target know the negative spell has been cast + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpellID)); + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + DelayCommand(fDelay, DoPetrification(nHitDice, oSelf, oTarget, nSpellID, nDC)); + //Get next target in spell area + } + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lFinalTarget, TRUE); + } +} diff --git a/_removed/x2_s2_cursesong.ncs b/_removed/x2_s2_cursesong.ncs new file mode 100644 index 0000000000000000000000000000000000000000..102cfdde38cc81dadf1b58078a7d166eb65008da GIT binary patch literal 8800 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 R1VRoWoS$^iRK6!;^A|`Tw)X%4 literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_cursesong.nss b/_removed/x2_s2_cursesong.nss new file mode 100644 index 0000000..9daf11b --- /dev/null +++ b/_removed/x2_s2_cursesong.nss @@ -0,0 +1,431 @@ +//:://///////////////////////////////////////////// +//:: Curse Song +//:: X2_S2_CurseSong +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + This spells applies penalties to all of the + bard's enemies within 30ft for a set duration of + 10 rounds. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: May 16, 2003 +//::////////////////////////////////////////////// +//:: Last Updated By: Andrew Nobbs May 20, 2003 + +#include "x2_i0_spells" + +void main() +{ + + if (!GetHasFeat(FEAT_BARD_SONGS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(85587,OBJECT_SELF); // no more bardsong uses left + return; + } + + if (GetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(85764,OBJECT_SELF); // not useable when silenced + return; + } + + + //Declare major variables + int nLevel = GetLevelByClass(CLASS_TYPE_BARD); + int nRanks = GetSkillRank(SKILL_PERFORM); + int nPerform = nRanks; + int nDuration = 10; //+ nChr; + + effect eAttack; + effect eDamage; + effect eWill; + effect eFort; + effect eReflex; + effect eHP; + effect eAC; + effect eSkill; + + int nAttack; + int nDamage; + int nWill; + int nFort; + int nReflex; + int nHP; + int nAC; + int nSkill; + + if(GetHasFeat(424)) // lingering song + { + nDuration += 5; + } + + //Check to see if the caster has Lasting Impression and increase duration. + if(GetHasFeat(870)) + { + nDuration *= 5; + } + + /*if(nPerform >= 100 && nLevel >= 30) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 48; + nAC = 7; + nSkill = 18; + } + else if(nPerform >= 95 && nLevel >= 29) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 46; + nAC = 6; + nSkill = 17; + } + else if(nPerform >= 90 && nLevel >= 28) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 44; + nAC = 6; + nSkill = 16; + } + else if(nPerform >= 85 && nLevel >= 27) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 42; + nAC = 6; + nSkill = 15; + } + else if(nPerform >= 80 && nLevel >= 26) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 40; + nAC = 6; + nSkill = 14; + } + else*/ + if(nPerform >= 100 && nLevel >= 40) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 38; + nAC = 5; + nSkill = 13; + } + else if(nPerform >= 90 && nLevel >= 36) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 36; + nAC = 5; + nSkill = 12; + } + else if(nPerform >= 80 && nLevel >= 32) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 34; + nAC = 5; + nSkill = 11; + } + else if(nPerform >= 70 && nLevel >= 28) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 32; + nAC = 5; + nSkill = 10; + } + else if(nPerform >= 60 && nLevel >= 24) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 30; + nAC = 5; + nSkill = 9; + } + else if(nPerform >= 50 && nLevel >= 20) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 28; + nAC = 5; + nSkill = 8; + } + else if(nPerform >= 45 && nLevel >= 19) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 26; + nAC = 5; + nSkill = 7; + } + else if(nPerform >= 40 && nLevel >= 18) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 24; + nAC = 5; + nSkill = 6; + } + else if(nPerform >= 35 && nLevel >= 17) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 22; + nAC = 5; + nSkill = 5; + } + else if(nPerform >= 30 && nLevel >= 16) + { + nAttack = 2; + nDamage = 3; + nWill = 3; + nFort = 2; + nReflex = 2; + nHP = 20; + nAC = 5; + nSkill = 4; + } + else if(nPerform >= 24 && nLevel >= 15) + { + nAttack = 2; + nDamage = 3; + nWill = 2; + nFort = 2; + nReflex = 2; + nHP = 16; + nAC = 4; + nSkill = 3; + } + else if(nPerform >= 21 && nLevel >= 14) + { + nAttack = 2; + nDamage = 3; + nWill = 1; + nFort = 1; + nReflex = 1; + nHP = 16; + nAC = 3; + nSkill = 2; + } + else if(nPerform >= 18 && nLevel >= 11) + { + nAttack = 2; + nDamage = 2; + nWill = 1; + nFort = 1; + nReflex = 1; + nHP = 8; + nAC = 2; + nSkill = 2; + } + else if(nPerform >= 15 && nLevel >= 8) + { + nAttack = 2; + nDamage = 2; + nWill = 1; + nFort = 1; + nReflex = 1; + nHP = 8; + nAC = 0; + nSkill = 1; + } + else if(nPerform >= 12 && nLevel >= 6) + { + nAttack = 1; + nDamage = 2; + nWill = 1; + nFort = 1; + nReflex = 1; + nHP = 0; + nAC = 0; + nSkill = 1; + } + else if(nPerform >= 9 && nLevel >= 3) + { + nAttack = 1; + nDamage = 2; + nWill = 1; + nFort = 1; + nReflex = 0; + nHP = 0; + nAC = 0; + nSkill = 0; + } + else if(nPerform >= 6 && nLevel >= 2) + { + nAttack = 1; + nDamage = 1; + nWill = 1; + nFort = 0; + nReflex = 0; + nHP = 0; + nAC = 0; + nSkill = 0; + } + else if(nPerform >= 3 && nLevel >= 1) + { + nAttack = 1; + nDamage = 1; + nWill = 0; + nFort = 0; + nReflex = 0; + nHP = 0; + nAC = 0; + nSkill = 0; + } + + //If the bard has Extra Music and is at least 12lvl, give a small random bonus to this song + if (nLevel >= 12 && GetHasFeat(FEAT_EXTRA_MUSIC, OBJECT_SELF) ) + { + switch(d10()) + { + case 1: nAttack = nAttack + 1;break; + case 2: nDamage = nDamage + 1;break; + case 3: nWill = nWill + 1;break; + case 4: nFort = nFort + 1;break; + case 5: nReflex = nReflex + 1;break; + case 6: nAC = nAC + 1;break; + case 7: nSkill = nSkill + 1;break; + case 8: nWill = nWill + 2;break; + case 9: nFort = nFort + 2;break; + case 10: nReflex = nReflex + 2;break; + } + } + //End of Extra Music bonus + + effect eVis = EffectVisualEffect(VFX_IMP_DOOM); + + eAttack = EffectAttackDecrease(nAttack); + eDamage = EffectDamageDecrease(nDamage, DAMAGE_TYPE_SLASHING); + effect eLink = EffectLinkEffects(eAttack, eDamage); + + if(nWill > 0) + { + eWill = EffectSavingThrowDecrease(SAVING_THROW_WILL, nWill); + eLink = EffectLinkEffects(eLink, eWill); + } + if(nFort > 0) + { + eFort = EffectSavingThrowDecrease(SAVING_THROW_FORT, nFort); + eLink = EffectLinkEffects(eLink, eFort); + } + if(nReflex > 0) + { + eReflex = EffectSavingThrowDecrease(SAVING_THROW_REFLEX, nReflex); + eLink = EffectLinkEffects(eLink, eReflex); + } + if(nHP > 0) + { + //SpeakString("HP Bonus " + IntToString(nHP)); + eHP = EffectDamage(nHP, DAMAGE_TYPE_SONIC, DAMAGE_POWER_NORMAL); +// eLink = EffectLinkEffects(eLink, eHP); + } + if(nAC > 0) + { + eAC = EffectACDecrease(nAC, AC_DODGE_BONUS); + eLink = EffectLinkEffects(eLink, eAC); + } + if(nSkill > 0) + { + eSkill = EffectSkillDecrease(SKILL_ALL_SKILLS, nSkill); + eLink = EffectLinkEffects(eLink, eSkill); + } + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(507); + eLink = EffectLinkEffects(eLink, eDur); + + effect eImpact = EffectVisualEffect(VFX_IMP_HEAD_SONIC); + effect eFNF = EffectVisualEffect(VFX_FNF_LOS_EVIL_30); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, GetLocation(OBJECT_SELF)); + + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + + eHP = ExtraordinaryEffect(eHP); + eLink = ExtraordinaryEffect(eLink); + + if(!GetHasFeatEffect(871, oTarget)&& !GetHasSpellEffect(GetSpellId(),oTarget)) + { + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur2, OBJECT_SELF, RoundsToSeconds(nDuration)); + } + float fDelay; + while(GetIsObjectValid(oTarget)) + { + if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) + { + // * GZ Oct 2003: If we are deaf, we do not have negative effects from curse song + if (!GetHasEffect(EFFECT_TYPE_SILENCE,oTarget) && !GetHasEffect(EFFECT_TYPE_DEAF,oTarget)) + { + if(!GetHasFeatEffect(871, oTarget)&& !GetHasSpellEffect(GetSpellId(),oTarget)) + { + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); + if (nHP > 0) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SONIC), oTarget); + DelayCommand(0.01, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHP, oTarget)); + } + + if (!GetIsDead(oTarget)) + { + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + DelayCommand(GetRandomDelay(0.1,0.5),ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + else + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE), oTarget); + } + } + + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + } + DecrementRemainingFeatUses(OBJECT_SELF, FEAT_BARD_SONGS); +} diff --git a/_removed/x2_s2_discbreath.ncs b/_removed/x2_s2_discbreath.ncs new file mode 100644 index 0000000000000000000000000000000000000000..65f089d01ed6c47c6b0c4448af7118d0e74e2d1e GIT binary patch literal 946 zcmeZs4ps;=)H85mU|`-P#{dKz3JgqaV93k_gAl$D3oC<IUU__SVs1fVW_n(HN>Y4E zYFc7xP6<#(2u-G<z)*_;Y@&cRgEYhc|Nl=YFaXtYq@*Mjr6!hSu&{xwV`X44W@2Fm zvKYA)<Ut~`ARhBkm^9NlCRv~;GdED>JqCzMtj3r#!?ZAqF)}j(E&Rj40#?t$t)L1r z`4Wn#5>)gpil{O~l#v5PR0S%kj3TNE6}3YVRfCE~qKK+PMN3dbHK3yXD59EB(N!p- zT2RrWpx|Kq01XLH$iYGd#QqP~^8)Jg_rO4V#Rk@}pC}D)5E}Z3((n<XA(ki&NKVor xN&~_MhTlYKK=^^-6j2%wPGXozl!gy*Pcvi?rQt0?gE^@h*ua_R4}?@;007I-seb?f literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_discbreath.nss b/_removed/x2_s2_discbreath.nss new file mode 100644 index 0000000..bbf703a --- /dev/null +++ b/_removed/x2_s2_discbreath.nss @@ -0,0 +1,63 @@ +//:://///////////////////////////////////////////// +//:: Breath Weapon for Dragon Disciple Class +//:: x2_s2_discbreath +//:: Copyright (c) 2003Bioware Corp. +//::////////////////////////////////////////////// +/* + + Damage Type is Fire + Save is Reflex + Shape is cone, 30' == 10m + + Level Damage Save + --------------------------- + 3 2d10 19 + 7 4d10 19 + 10 6d10 19 + + after 10: + damage: 6d10 + 1d10 per 3 levels after 10 + savedc: increasing by 1 every 4 levels after 10 + + + +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: June, 17, 2003 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- wrong target check (could affect other NPCs) +- damage was the same for all creatures in AoE +- old evasion behaviour (now that evasion is applied will appear in log) +*/ + +#include "x0_i0_spells" + +void main() +{ + //This part is to avoid some weird stacking issues + if (GetLocalInt(OBJECT_SELF, "ddbreath") == 1) + { + IncrementRemainingFeatUses(OBJECT_SELF, FEAT_DRAGON_DIS_BREATH); + return; + } + location lLocation = GetSpellTargetLocation(); + SetLocalInt(OBJECT_SELF, "ddbreath", 1); + switch (GetCreatureWingType(OBJECT_SELF)) + { + case 4: ActionCastSpellAtLocation(239, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //red dragon breathing fire + case 34: ActionCastSpellAtLocation(236, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //black dragon breathing acid + case 35: ActionCastSpellAtLocation(241, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //blue dragon breathing lightning + case 36: ActionCastSpellAtLocation(239, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //brass dragon breathing fire + case 37: ActionCastSpellAtLocation(241, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //bronze dragon breathing lightning + case 38: ActionCastSpellAtLocation(236, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //copper dragon breathing acid + case 39: ActionCastSpellAtLocation(239, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //gold dragon breathing fire + case 40: ActionCastSpellAtLocation(240, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //green dragon breathing gas + case 41: ActionCastSpellAtLocation(237, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //silver dragon breathing cold + case 42: ActionCastSpellAtLocation(237, lLocation, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);break; //white dragon breathing cold + } + +} diff --git a/_removed/x2_s2_divwrath.ncs b/_removed/x2_s2_divwrath.ncs new file mode 100644 index 0000000000000000000000000000000000000000..d73405be4d965ed9460f4258954b101e0134382d GIT binary patch literal 1724 zcmai#zit#U5XQ$|dxe64BP2v{B(X#V2t@J(5j03hG>9ZT0UZ(r|7to!LrcXYq_~12 z1qITjh)@a&iYrneYKkkah;)4WjeU3CGbAf{<C)Jt&y2lukM2JX+Z%W8-V>?!*93oO zg4mi*Wz(bc#hXG!=azJ3JRTnfadopKjurm(Ud%&V8MsfxxyB@&u-?3GaAqcA^ZuC^ zd#)mDv<ija(*+#+UZmF|(eaTE41H^weMaJlII$glrV#sFcY}CXF{op4n7p&pRCA-J z#ZY<_;}1w_M*}&GrkW;d7nTFn2hp`YRS(6{mEH*Syq4lxvgZlV3RQY%YS;_vRAj#r zH1rrwvZvy!S8_sAbJ@Ku-0$afUy|(QuoS5OkqS&5DwyJH=?0lDMNr2q9#HK`{FRin zU8fCPJx1EPv>_(7HIbTOj5Lw`spPc+`AUKOsYOob^zWFJlE=JKAaAwERTi_JXkLw_ zLd?taWcl49+l*XsMNYm@AYUqwKeWguBkM<(lNSo)iv{v#i!70Rb>?nN&YU*Ao4A4a zYG3Kr-_oU^U@Ki-2;QgwpW@6-QUdO#@*sPu#lgosCqr7~K@Q<-6`~Q$3d#8nckE8s zj%&VhO@Gp|Xhg73wmTJFxW;^A{b>?(kpD>FdSO^?^aza<rjaJTCyq^fhkJb?=&d$5 zxM&2OIT@@PIOm$KKt~evW{Nk^9eP0}NCK;#C{QQ6hVA|-5j2?%_5TrfRvTb9Ia2_D X#2$+rFxhS;wA%dOeAeVRj)MFJW`-h> literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_divwrath.nss b/_removed/x2_s2_divwrath.nss new file mode 100644 index 0000000..3cbc785 --- /dev/null +++ b/_removed/x2_s2_divwrath.nss @@ -0,0 +1,142 @@ +//:://///////////////////////////////////////////// +//:: Divine Wrath +//:: x2_s2_DivWrath +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + The Divine Champion is able to channel a portion + of their gods power once per day giving them a +3 + bonus on attack rolls, damage, and saving throws + for a number of rounds equal to their Charisma + bonus. They also gain damage reduction of +1/5. + At 10th level, an additional +2 is granted to + attack rolls and saving throws. + + Epic Progression + Every five levels past 10 an additional +2 + on attack rolls, damage and saving throws is added. As well the damage + reduction increases by 5 and the damage power required to penetrate + damage reduction raises by +1 (to a maximum of /+5). +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Feb 05, 2003 +//:: Updated On: Jul 21, 2003 Georg Zoeller - +// Epic Level progession +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- did signalized wrong spell ID +*/ + +#include "nw_i0_spells" + +void main() +{ + //Declare major variables + object oTarget = OBJECT_SELF; + int nDuration = GetAbilityModifier(ABILITY_CHARISMA, OBJECT_SELF); + //Check that if nDuration is not above 0, make it 1. + if(nDuration <= 0) + { + FloatingTextStrRefOnCreature(100967,OBJECT_SELF); + return; + } + + effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY); + eVis = EffectLinkEffects(EffectVisualEffect(VFX_IMP_GOOD_HELP),eVis); + effect eAttack, eDamage, eSaving, eReduction; + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 622, FALSE)); + + int nAttackB = 3; + int nDamageB = DAMAGE_BONUS_3; + int nSaveB = 3 ; + int nDmgRedB = 5; + int nDmgRedP = DAMAGE_POWER_PLUS_ONE; + + // --------------- Epic Progression --------------------------- + + int nLevelDiv = GetLevelByClass(CLASS_TYPE_DIVINECHAMPION,oTarget); + int nLevelPal = GetLevelByClass(CLASS_TYPE_PALADIN,oTarget)-10; + int nLevelBlg = GetLevelByClass(CLASS_TYPE_BLACKGUARD,oTarget); + int nLevel = nLevelDiv; + if (nLevelPal > nLevel) nLevel = nLevelPal; + if (nLevelBlg > nLevel) nLevel = nLevelBlg; + + int nLevelB = (nLevel / 5)-1; + if (nLevelB <=0) + { + nLevelB =0; + } + else + { + nAttackB += (nLevelB*2); // +2 to attack every 5 levels past 5 + nSaveB += (nLevelB*2); // +2 to saves every 5 levels past 5 + } + + if (nLevelB >6 ) + { + nDmgRedP = DAMAGE_POWER_PLUS_FIVE; + nDmgRedB = 7*5; + nDamageB = DAMAGE_BONUS_17; + } + else if (nLevelB >5 ) + { + nDmgRedP = DAMAGE_POWER_PLUS_FIVE; + nDmgRedB = 6*5; + nDamageB = DAMAGE_BONUS_15; + } + else if (nLevelB >4 ) + { + nDmgRedP = DAMAGE_POWER_PLUS_FIVE; + nDmgRedB = 5*5; + nDamageB = DAMAGE_BONUS_13; + } + else if (nLevelB >3) + { + nDmgRedP = DAMAGE_POWER_PLUS_FOUR; + nDmgRedB = 4*5; + nDamageB = DAMAGE_BONUS_11; + } + else if (nLevelB >2) + { + nDmgRedP = DAMAGE_POWER_PLUS_THREE; + nDmgRedB = 3*5; + nDamageB = DAMAGE_BONUS_9; + } + else if (nLevelB >1) + { + nDmgRedP = DAMAGE_POWER_PLUS_TWO; + nDmgRedB = 2*5; + nDamageB = DAMAGE_BONUS_7; + } + else if (nLevelB >0) + { + nDamageB = DAMAGE_BONUS_5; + } + //-------------------------------------------------------------- + // + //-------------------------------------------------------------- + + eAttack = EffectAttackIncrease(nAttackB,ATTACK_BONUS_MISC); + eDamage = EffectDamageIncrease(nDamageB, DAMAGE_TYPE_DIVINE); + eSaving = EffectSavingThrowIncrease(SAVING_THROW_ALL,nSaveB, SAVING_THROW_TYPE_ALL); + eReduction = EffectDamageReduction(nDmgRedB, nDmgRedP); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + + effect eLink = EffectLinkEffects(eAttack, eDamage); + eLink = EffectLinkEffects(eSaving,eLink); + eLink = EffectLinkEffects(eReduction,eLink); + eLink = EffectLinkEffects(eDur,eLink); + eLink = SupernaturalEffect(eLink); + + // prevent stacking with self + RemoveEffectsFromSpell(oTarget, GetSpellId()); + + + //Apply the armor bonuses and the VFX impact + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); +} diff --git a/_removed/x2_s2_dragknght.ncs b/_removed/x2_s2_dragknght.ncs new file mode 100644 index 0000000000000000000000000000000000000000..43e360019389f46b6e0089cdd811ff490cd02307 GIT binary patch literal 3376 zcmds4&1(};5TCcZ=~tqyQm|TUmq`7tR;#E7ku_OmanqJ$sd|tlHno<fO-ZcKi}(k4 z76ktc@lWt1;?aYMiU$uKL_7ox)Oqvvz3vO^f_Tz~mb`g0^PBn2$8Ki|6?^{l$*C&< zJEjf*{`A>k^w7sN<VT!$9|O`DIu4_-wYBvIHBBxti+OXL+vdjj=`6`!TP7FrzwA{8 z;JIP-Z~=Y|7~LJ&VUyKQIt^GE$gWkxR=Bvnyii-g<6vuJb+xg!SPN^->QZA(Ik;$& z39~E(@i9&RoPnqn%VZdJ2T&85jPXMoEJ~$AS9rp!O?EiaBjFFQ1Q=euwN4Bn;uQW; zs&G_9pc#DC3~W4Iene^a8idv6BpLmapwfx>7?1eq5Z*Axk|RE9E7jUY{eD`4|2`qm zMnZVU#Pi;4Y^*K)zj=$+!w$*7(9JWUANo!u2+M9T@04Y8u>NRncsrb*3R~-o_4>U= zV+Gr>&q%X`>C|g<EaxF_(lB7BZ#O99RCF}9hxkl<ljDNmr+`G#sFMNqLWtB*(O94j zY6pz8KgS%r7uq<F0tvO+Li8>sY6#JXZISU^h`vY>!5}D6#<G}=7;{=KqcR9;t~^G0 z!|1U!m2(*2`1#Y}oa4JCtbkh%ono;P7Q}boop*f<?mJ&y(`Zb7KapRILAnx4B5O}z z55omb+8;?(WTZO~NyR34EaJmZb~??43a_&Npk8X!P|~|lueMr?tqd41O$_3T*icAj zLUM$xmR8Ol7RjPy4}RCHAc*JtNS0ej$SqP%F+JQ#8MCI$7$eHgHJ4Yb%}wXda=kl1 zGRjaGyeJtkD?vGXkXW<n67=0m_^&1*Zc=n_Y9?LlnoOSRCWYA<&BRDRxvQJp@G6># zm0&Whn|L!pWU`NP5u>A8o@4{EERr$mx?x+2Wr<LH-H2+U8k{Q7#wst1Hpj<FtSAVC zSH~E+z|o;@8zIN?xwDnEdsTxc+`}N=$E!g-p<syGXOp1$WLf2rEXQOjly4Rj88h<c z_FNI{CC!DE>SC{Q5yd9h?V>=ukdRw7@3}mWh#f*+_IZI@(#AHNop;M+ujon}ByU<Y zhT3Ixg|n3Gpfp?bu6k}+bI?6UXgWmL#X<_AT9xFBk5|kr4M+6`8tfsQk{dWB=bD!W zr+SiC)OZqA6gL*t47-GQyNy04DsyhZbNtY`;`v^1D}_R_%~L2$_oZbieI>9t+8t3h zvC>w1aCKtDCV5Chk8_;wM*j`nS`ZrD>@dE~WPk_Z`+q}cl83Z3)B_gLcM0@Arf%CV z4Jl68h(P)yn&c9sZUpg+f&EgdKc`5_C!YSL&~#Bsx+)yG854AIU+TL~jXw9w2E|qs Oo2To2g;wwn8-4-WI`oVH literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_dragknght.nss b/_removed/x2_s2_dragknght.nss new file mode 100644 index 0000000..2f1c6ca --- /dev/null +++ b/_removed/x2_s2_dragknght.nss @@ -0,0 +1,74 @@ +//:://///////////////////////////////////////////// +//:: Dragon Knight +//:: X2_S2_DragKnght +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Summons an adult red dragon for you to + command. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Feb 07, 2003 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x2_inc_toollib" +#include "x2_inc_spellhook" + +void main() +{ + /* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + */ + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + + //Declare major variables + spellsDeclareMajorVariables(); + effect eVis = EffectVisualEffect(460); + + if (GetCasterLevel(OBJECT_SELF) >= 40) + { + int nDuration = 10; + SetLocalString(OBJECT_SELF, "summoned_dragon", "na_s_epicdk"); + effect eSummon = EffectSummonCreature(GetLocalString(OBJECT_SELF, "summoned_dragon"),481,0.0,TRUE); + + // * make it so dragon cannot be dispelled + eSummon = ExtraordinaryEffect(eSummon); + //Apply the summon visual and summon the dragon. + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, RoundsToSeconds(nDuration)); + DelayCommand(1.0,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, spell.Loc)); + } + else if (GetCasterLevel(OBJECT_SELF) >= 31) + { + int nDuration = 20; + SetLocalString(OBJECT_SELF, "summoned_dragon", "na_s_dkadult"); + effect eSummon = EffectSummonCreature(GetLocalString(OBJECT_SELF, "summoned_dragon"),481,0.0,TRUE); + + // * make it so dragon cannot be dispelled + eSummon = ExtraordinaryEffect(eSummon); + //Apply the summon visual and summon the dragon. + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, RoundsToSeconds(nDuration)); + DelayCommand(1.0,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, spell.Loc)); + } + else + { + int nDuration = 20; + SetLocalString(OBJECT_SELF, "summoned_dragon", "na_s_dkyoung"); + effect eSummon = EffectSummonCreature(GetLocalString(OBJECT_SELF, "summoned_dragon"),481,0.0,TRUE); + + // * make it so dragon cannot be dispelled + eSummon = ExtraordinaryEffect(eSummon); + //Apply the summon visual and summon the dragon. + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, RoundsToSeconds(nDuration)); + DelayCommand(1.0,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, spell.Loc)); + } + +} diff --git a/_removed/x2_s2_epicward.ncs b/_removed/x2_s2_epicward.ncs new file mode 100644 index 0000000000000000000000000000000000000000..b928f9a2459e96e8751bd2a710e6e02bbc1113ea GIT binary patch literal 3014 zcmbtWOKTHR6ux(6(po3jDq^d(I>Z+!)jkm2xEPaB1}AMvV%jcb@QKApB?YA$H*Q@E zf(w6y_!D&F!XF^wYvDprq>C;J^}FZf-sX;Rpx8i@Igjt0^PO|gotbhyXilD<xG04G z=8(YOjzBnl^l=^i;paUk1z8N85~E^sbMrkcT_ur=CHJuMEsm+Dm}Fm1NZ5Q6p65d7 z3<vZrNcur|^!-bC1tHd4dRU`}Cl1+7xypN8c>4lU{?IsnK#`7WJ)`dnq_PJDWwybw z)PMOC5nef#c|WNKp?KtyVncZJ%_+QPYdmN#SiW^A0y5$V+7GI>v{hD#Kv8rId?p8! z0f$wo3)WF7Aqmw7hW`;L!=Z(#G)a@N-biavqZ!t`K0t|rkOL0?gi-O_M7r|ecB^%F zdHEg?b~t&SVmen1U|m?rwJ2RztrbNs9@$YQ#}(;lB1;kcj3ANe15$m>B10UN&W&$K zvc`-UfRAjAh8WR0i!d`rw9KMUTO#K-i@s|Sg+WkCRQjj}sREX!XH+LayqA#Wywew0 zCTGFo;d7JeT$n^vbRepwVWm<}%ltcuno)v+f1?}Vw2!Cq3*jOM4aI%+gJX)k^Okg= zBQ=?k?aq#rPLg=a`5~2EVf$uXbvb$1sxIGxr2l5?`pU}fm4a~IxJcqV4;9GlQ5;1^ zS2&+yu$PO4WEj8gE-=g8?PdwVf^x!myo)N9ZCx=k^5@!1_pi5C!y8MjY=Y!epfprd z3c{^7YW@-GMnFnoA0mqXZd`P`RH6mTC3Eh`<+<%ro}IB=GN+ha?$|E#aouw9dL%Y& zyTmh%j>`e6g^!LId6MnaZPAR;)a~W<hV!6X1o0K8(-Sk`)PZ$$d5Omyd!(x=2n5wh zNf4NEnzj*&qxa^fAM~36@1Yli(06x(X2OIao?eXe_STrvH;CjprYod+eH1e0l-#Xz zMPV;kX?eL2`wc`VH)c0O0pC&tYtDPIq%xAn!OMZT5ml{Yo6a_)S}m?b+6UxK^I(`= zMk;lA^#rKSR^m%>RI>oG=LoJt6uVN+iD*_OVX5QQ<(3!6%my5WDNZ$Ngw^nJoEOf_ zr0S^itkY3!Eb1Aigm}9K%wzSrs2qn$8eWW(xUrZ+A#d{>3iGk7Dm7LQHb=7=Wr@|k z*2T5aMQksGyy)E=m$K3SLARBJMYlXLt`4e7B1!&-&Rz(4Wta;V(RXw7ZBw`9mlvs< zun~^5Et>Qaq-hj<$B2VkYTr{NRVQA(U)r{ilC4QcZ^j<B*q8RMGe=+H%0b?Wym>P3 zE3|^w0=}bwgFSN9EMYt>NZN~wIy%<bB<nFGofp|rt)y>k1NhDJOBkxaL-Vg&4lgn< KdHeIV5Qsm}Pu4X6 literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_epicward.nss b/_removed/x2_s2_epicward.nss new file mode 100644 index 0000000..183336a --- /dev/null +++ b/_removed/x2_s2_epicward.nss @@ -0,0 +1,60 @@ +//:://///////////////////////////////////////////// +//:: Epic Ward +//:: X2_S2_EpicWard. +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + Makes the caster invulnerable to damage + (equals damage reduction 50/+20) + Lasts 1 round per level + +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: Aug 12, 2003 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "nw_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* + Spellcast Hook Code + Added 2003-06-23 by GeorgZ + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + +*/ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + +// End of Spell Cast Hook + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = spell.Level / 2; + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + int nLimit = 50*nDuration; + //Check for metamagic extend + if(spell.Meta == METAMAGIC_EXTEND) //Duration is +100% + {//1.70 added in order to allow metamagic override feature + nDuration = nDuration * 2; + } + effect eDur = EffectVisualEffect(495); + effect eProt = EffectDamageReduction(15, DAMAGE_POWER_PLUS_SIX, nLimit); + effect eLink = EffectLinkEffects(eDur, eProt); + eLink = EffectLinkEffects(eLink, eDur); + + // * Brent, Nov 24, making extraodinary so cannot be dispelled + eLink = ExtraordinaryEffect(eLink); + + RemoveEffectsFromSpell(spell.Target, spell.Id); + //Apply the armor bonuses and the VFX impact + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); +} diff --git a/_removed/x2_s2_epmagearm.ncs b/_removed/x2_s2_epmagearm.ncs new file mode 100644 index 0000000000000000000000000000000000000000..8e584bdb5ad90a2ea3fe618e77e0bca1885b65a6 GIT binary patch literal 3241 zcmbtW&ud&&6u$4rByDDBr&4TfjD3u@g=(}hNL?uMI`fo=Z;~)GoumtS)LJn(5}5%( z7b3WIEeI~$x)=Y1x^dwjP^5^9E(E1ykwqYW_d9cM-+g&LC}tot@7!~~bIx~u+_%vk zM&q@Yuia3p_2Y92e<vd4FYpui<|EHfT~*X*zo?eg(b3Uw&<wQ1f1?vz)V8e^{qz!L z_pW%*`BQ~qppW!_@9&0EKly%JK5{^{`zqx3KPrUEe!z!)K78%-;jcN6-;C($g+RkU zG}5OdZ|;tv9ct|MB0c#09{_h2Pzg}Sl!CGnA~~kSBvb(j5gt?W%18%AB_Tq!Nd!}X zBa;e*zxa+2wiGgM3q%$8=68(>j%rjK;(?~CwzNWnL%N-M6>cB!=nKzO$i%{|Jp_9{ z48ym+Qp!<4eG3ZY>_McF+B>i2S)RqiQ9ejU<9HA*=x%8!@1!q3q13v5EuVdQcQW~C zZ|`HcIN{e>s`c7q0Gk{;(hsJJ2fBMzODc-!7|CVbR<;@7{1ru!F*-!3Ka0rLhp9^| zk34E)3<MSczl%0FwxR<Ofh8;26A|b(BL9(y(DNdq8#ra4UK80MRKRjRmQ4`ky@M#X z{e{R;c?~RHyuOxi#aYrv1(HD?_j<#;E5Ea3oMedi5vl=B7i8}KATDAsP*T@sbV-x< zx+6U~m)gjvyEK<_S*UL$K7?{Ap57ViDrcWf`g<QhvUq25dp5f}YbgJop1Oz9bs)1M zIeJD_B%W4uR+5F}9Dci15dMngE-(tpiSgwrX6#K(#)zo7HQoK>_Vn}k{oP49KpHg| zhAv7&1;f#x`8=x;@ld(*ME}38s-j6R*>OxtBS@3)T$AqRhGXJac=^yZ*-nR!NmyaB z?wX_<qq)fi<|3nGTb{BdQx?M*yY6gc#HK_Lzw6IyVjG+lI6#$mrOoY@rZpVl=&DBu z^f<fiJde!HaMX+zZG%^wtJ63yR)alZ-H_VvS7mP*Os{DXX}MxjVZKcyvf_7w$8$xu zZ#rRxwGhu(h<R+nZixc9hz$`k@2!rG$h!<)E~KNR?~HA}IZg(Hw3iqgkhd<4VRspi z^!;23(BJH(Z>Pz?0VvNAOxyI`>(+R*tCCoHyb5M@er#{R;2iz*lTqA{-%0D-*`CxD z^}n50)VwL6OUT=Mz`QivO1f#B<?)R)OGmeAD3onpLt#CZlcm9`U~{<~QJGj{%Ym&T zwhE!ndy(T#+53Oc?F8Y_?Oj>bgQ|nbvj0P86+&Ga_JW1?GvfV;se5c!=c!28dGYi_ zG?^tRH-g+T>RBUo?<q<_aD^_U)V1N5%~+v}ed+ExJNo+7+&e8>Q8rKMeT7?jKax8N zIM^dM?Gnbrj>o-t%Xr5+Ta$A%$^2D)*&Om4O$)nic?m-nco-kM<?tf&gIvjSEkx>H D`d%8r literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_epmagearm.nss b/_removed/x2_s2_epmagearm.nss new file mode 100644 index 0000000..963e3cd --- /dev/null +++ b/_removed/x2_s2_epmagearm.nss @@ -0,0 +1,67 @@ +//:://///////////////////////////////////////////// +//:: Epic Mage Armor +//:: X2_S2_EpMageArm +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Gives the target +20 AC Bonus to Deflection, + Armor Enchantment, Natural Armor and Dodge. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Feb 07, 2003 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "nw_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + /* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = spell.Level; + effect eVis = EffectVisualEffect(495); + effect eAC1, eAC2, eAC3, eAC4; + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id, FALSE)); + //Check for metamagic extend + if(spell.Meta == METAMAGIC_EXTEND) //Duration is +100% + { + nDuration = nDuration * 2; + } + //Set the four unique armor bonuses + eAC1 = EffectACIncrease(3, AC_ARMOUR_ENCHANTMENT_BONUS); + eAC2 = EffectACIncrease(3, AC_SHIELD_ENCHANTMENT_BONUS); + eAC3 = EffectACIncrease(3, AC_DODGE_BONUS); + eAC4 = EffectACIncrease(3, AC_NATURAL_BONUS); + effect eDur = EffectVisualEffect(VFX_DUR_SANCTUARY); + + effect eLink = EffectLinkEffects(eAC1, eAC2); + eLink = EffectLinkEffects(eLink, eAC3); + eLink = EffectLinkEffects(eLink, eAC4); + eLink = EffectLinkEffects(eLink, eDur); + + RemoveEffectsFromSpell(spell.Target, spell.Id); + + // * Brent, Nov 24, making extraodinary so cannot be dispelled + eLink = ExtraordinaryEffect(eLink); + + //Apply the armor bonuses and the VFX impact + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, HoursToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, spell.Target, 1.0); +} diff --git a/_removed/x2_s2_gwildshp.ncs b/_removed/x2_s2_gwildshp.ncs new file mode 100644 index 0000000000000000000000000000000000000000..9f806556a1e15f21b9de0dc5268b3874fd72161f GIT binary patch literal 13721 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 G)&Bqi?gAbF literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_gwildshp.nss b/_removed/x2_s2_gwildshp.nss new file mode 100644 index 0000000..e40b15f --- /dev/null +++ b/_removed/x2_s2_gwildshp.nss @@ -0,0 +1,621 @@ +//:://///////////////////////////////////////////// +//:: Greater Wild Shape, Humanoid Shape +//:: x2_s2_gwildshp +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + Allows the character to shift into one of these + forms, gaining special abilities + + Credits must be given to mr_bumpkin from the NWN + community who had the idea of merging item properties + from weapon and armor to the creatures new forms. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: 2003-07-02 +//::////////////////////////////////////////////// +//:: Modified By: Deva Winblood +//:: Modified Date: January 26th, 2008 +//::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +Patch 1.71 + +- allowed to merge any custom non-weapon in left hand slot such as flags or +musical instruments +- added optional feature to stack ability bonuses from multiple items together +- added optional feature to merge bracers (when items are allowed to merge) +- added benefits of being incorporeal to the spectre shape (50% concealment and +the ability to walk through other creatures) +- a spectre polymorph now also release character from the effects of the grappling +- cured from horse include while retaining the shapeshifting horse check +- fixed dying when unpolymorphed as an result of sudden constitution bonus drop +which also could result to the server crash +*/ + +#include "70_inc_itemprop" +#include "x2_inc_itemprop" +#include "x2_inc_shifter" +#include "x3_inc_horse" + + +void main() +{ + //-------------------------------------------------------------------------- + // Declare major variables + //-------------------------------------------------------------------------- + int nSpell = GetSpellId(); + object oTarget = GetSpellTargetObject(); + effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); + int nShifter = GetLevelByClass(CLASS_TYPE_SHIFTER); + effect ePoly; + int nPoly; + + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + switch(GetPhenoType(oTarget)) + {// shape shifting not allowed while mounted + case 3: + case 5: + case 6: + case 8: + if(GetIsPC(oTarget)) + { + FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + } + // shape shifting not allowed while mounted + return; + } + } // check to see if abort due to being mounted + + // Feb 13, 2004, Jon: Added scripting to take care of case where it's an NPC + // using one of the feats. It will randomly pick one of the shapes associated + // with the feat. + switch(nSpell) + { + // Greater Wildshape I + case 646: nSpell = Random(5)+658; break; + // Greater Wildshape II + case 675: switch(Random(3)) + { + case 0: nSpell = 672; break; + case 1: nSpell = 678; break; + case 2: nSpell = 680; + } + break; + // Greater Wildshape III + case 676: switch(Random(3)) + { + case 0: nSpell = 670; break; + case 1: nSpell = 673; break; + case 2: nSpell = 674; + } + break; + // Greater Wildshape IV + case 677: switch(Random(3)) + { + case 0: nSpell = 679; break; + case 1: nSpell = 691; break; + case 2: nSpell = 694; + } + break; + // Humanoid Shape + case 681: nSpell = Random(3)+682; break; + // Undead Shape + case 685: nSpell = Random(3)+704; break; + // Dragon Shape + case 725: nSpell = Random(3)+707; break; + // Outsider Shape + case 732: nSpell = Random(3)+733; break; + // Construct Shape + case 737: nSpell = Random(3)+738; break; + } + + //-------------------------------------------------------------------------- + // Determine which form to use based on spell id, gender and level + //-------------------------------------------------------------------------- + switch (nSpell) + { + + //----------------------------------------------------------------------- + // Greater Wildshape I - Wyrmling Shape + //----------------------------------------------------------------------- + case 658: nPoly = POLYMORPH_TYPE_WYRMLING_RED; break; + case 659: nPoly = POLYMORPH_TYPE_WYRMLING_BLUE; break; + case 660: nPoly = POLYMORPH_TYPE_WYRMLING_BLACK; break; + case 661: nPoly = POLYMORPH_TYPE_WYRMLING_WHITE; break; + case 662: nPoly = POLYMORPH_TYPE_WYRMLING_GREEN; break; + + //----------------------------------------------------------------------- + // Greater Wildshape II - Minotaur, Gargoyle, Harpy + //----------------------------------------------------------------------- + case 672: if (nShifter < X2_GW2_EPIC_THRESHOLD) + nPoly = POLYMORPH_TYPE_HARPY; + else + nPoly = 97; + break; + + case 678: if (nShifter < X2_GW2_EPIC_THRESHOLD) + nPoly = POLYMORPH_TYPE_GARGOYLE; + else + nPoly = 98; + break; + + case 680: if (nShifter < X2_GW2_EPIC_THRESHOLD) + nPoly = POLYMORPH_TYPE_MINOTAUR; + else + nPoly = 96; + break; + + //----------------------------------------------------------------------- + // Greater Wildshape III - Drider, Basilisk, Manticore + //----------------------------------------------------------------------- + case 670: if (nShifter < X2_GW3_EPIC_THRESHOLD) + nPoly = POLYMORPH_TYPE_BASILISK; + else + nPoly = 99; + break; + + case 673: if (nShifter < X2_GW3_EPIC_THRESHOLD) + nPoly = POLYMORPH_TYPE_DRIDER; + else + nPoly = 100; + break; + + case 674: if (nShifter < X2_GW3_EPIC_THRESHOLD) + nPoly = POLYMORPH_TYPE_MANTICORE; + else + nPoly = 101; + break; + + //----------------------------------------------------------------------- + // Greater Wildshape IV - Dire Tiger, Medusa, MindFlayer + //----------------------------------------------------------------------- + case 679: nPoly = POLYMORPH_TYPE_MEDUSA; break; + case 691: nPoly = 68; break; // Mindflayer + case 694: nPoly = 69; break; // DireTiger + + + //----------------------------------------------------------------------- + // Humanoid Shape - Kobold Commando, Drow, Lizard Crossbow Specialist + //----------------------------------------------------------------------- + case 682: + if(nShifter< 17) + { + if (GetGender(OBJECT_SELF) == GENDER_MALE) //drow + nPoly = 59; + else + nPoly = 70; + } + else + { + if (GetGender(OBJECT_SELF) == GENDER_MALE) //drow + nPoly = 105; + else + nPoly = 106; + } + break; + case 683: + if(nShifter< 17) + { + nPoly = 82; break; // Lizard + } + else + { + nPoly =104; break; // Epic Lizard + } + case 684: if(nShifter< 17) + { + nPoly = 83; break; // Kobold Commando + } + else + { + nPoly = 103; break; // Kobold Commando + } + + //----------------------------------------------------------------------- + // Undead Shape - Spectre, Risen Lord, Vampire + //----------------------------------------------------------------------- + case 704: nPoly = 75; break; // Risen lord + + case 705: if (GetGender(OBJECT_SELF) == GENDER_MALE) // vampire + nPoly = 74; + else + nPoly = 77; + break; + + case 706: nPoly = 76; break; /// spectre + + //----------------------------------------------------------------------- + // Dragon Shape - Red Blue and Green Dragons + //----------------------------------------------------------------------- + case 707: nPoly = 72; break; // Ancient Red Dragon + case 708: nPoly = 71; break; // Ancient Blue Dragon + case 709: nPoly = 73; break; // Ancient Green Dragon + + + //----------------------------------------------------------------------- + // Outsider Shape - Rakshasa, Azer Chieftain, Black Slaad + //----------------------------------------------------------------------- + case 733: if (GetGender(OBJECT_SELF) == GENDER_MALE) //azer + nPoly = 85; + else // anything else is female + nPoly = 86; + break; + + case 734: if (GetGender(OBJECT_SELF) == GENDER_MALE) //rakshasa + nPoly = 88; + else // anything else is female + nPoly = 89; + break; + + case 735: nPoly =87; break; // slaad + + //----------------------------------------------------------------------- + // Construct Shape - Stone Golem, Iron Golem, Demonflesh Golem + //----------------------------------------------------------------------- + case 738: nPoly =91; break; // stone golem + case 739: nPoly =92; break; // demonflesh golem + case 740: nPoly =90; break; // iron golem + + } + + + //-------------------------------------------------------------------------- + // Determine which items get their item properties merged onto the shifters + // new form. + //-------------------------------------------------------------------------- + int bWeapon = ShifterMergeWeapon(nPoly); + int bArmor = ShifterMergeArmor(nPoly); + int bItems = ShifterMergeItems(nPoly); + int bArms = bItems && GetLocalInt(GetModule(),"71_POLYMORPH_MERGE_ARMS"); + //-------------------------------------------------------------------------- + // Store the old objects so we can access them after the character has + // changed into his new form + //-------------------------------------------------------------------------- + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); + object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); + object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); + object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); + object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); + object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); + object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); + object oArmsOld = GetItemInSlot(INVENTORY_SLOT_ARMS,OBJECT_SELF); + object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); + object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); + + if (GetIsObjectValid(oShield)) + { //1.71: this is now custom content compatible, polymorph will merge custom left-hand only items such as flags + if (GetWeaponRanged(oShield) || IPGetIsMeleeWeapon(oShield)) + { + oShield = OBJECT_INVALID; + } + } + + int nConBonus; + if (bWeapon) + { + nConBonus = IPGetBestConBonus(nConBonus,oWeaponOld); + } + if (bArmor) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmorOld); + nConBonus = IPGetBestConBonus(nConBonus,oHelmetOld); + nConBonus = IPGetBestConBonus(nConBonus,oShield); + } + if (bItems) + { + nConBonus = IPGetBestConBonus(nConBonus,oRing1Old); + nConBonus = IPGetBestConBonus(nConBonus,oRing2Old); + nConBonus = IPGetBestConBonus(nConBonus,oAmuletOld); + nConBonus = IPGetBestConBonus(nConBonus,oCloakOld); + nConBonus = IPGetBestConBonus(nConBonus,oBeltOld); + nConBonus = IPGetBestConBonus(nConBonus,oBootsOld); + } + if (bArms) + { + nConBonus = IPGetBestConBonus(nConBonus,oArmsOld); + } + + //-------------------------------------------------------------------------- + // Here the actual polymorphing is done + //-------------------------------------------------------------------------- + ePoly = EffectPolymorph(nPoly); + if(nConBonus > 0) + {//1.70: this fixes dying when unpolymorphed issue as well as server crash related to this + ePoly = EffectLinkEffects(ePoly,EffectAbilityIncrease(ABILITY_CONSTITUTION,nConBonus)); + } + if(nPoly == 76) + {//1.71: added benefits of being incorporeal into polymorph effect for spectre shape + ePoly = EffectLinkEffects(ePoly,EffectConcealment(50)); + ePoly = EffectLinkEffects(ePoly,EffectCutsceneGhost()); + if(GetHasSpellEffect(SPELL_BIGBYS_CRUSHING_HAND))//in a spectre polymorph, player releases from any kind of grapple + { + RemoveEffectsFromSpell(OBJECT_SELF, SPELL_BIGBYS_CRUSHING_HAND); + } + if(GetHasSpellEffect(SPELL_BIGBYS_GRASPING_HAND)) + { + RemoveEffectsFromSpell(OBJECT_SELF, SPELL_BIGBYS_GRASPING_HAND); + } + RemoveSpecificEffect(EFFECT_TYPE_ENTANGLE,OBJECT_SELF); + } + + + //This chunk of code makes outsider, undead and construct shapes stronger at shifter lvls 25, 27 and 30. + if (GetLevelByClass(CLASS_TYPE_SHIFTER) >= 25) + { + if (GetLevelByClass(CLASS_TYPE_SHIFTER) >= 30) + { + if (nSpell == 738) //Stone golem + { + ePoly = EffectLinkEffects(EffectACIncrease(20, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectACIncrease(3, AC_NATURAL_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 5), ePoly); + } + if (nSpell == 739) //Demonflesh golem + { + ePoly = EffectLinkEffects(EffectACIncrease(7, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(13), ePoly); + ePoly = EffectLinkEffects(EffectSpellResistanceIncrease(58), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 5), ePoly); + } + if (nSpell == 740) //Iron golem + { + ePoly = EffectLinkEffects(EffectACIncrease(5, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(13), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 3), ePoly); + } + if (nSpell == 733) //Azer + { + ePoly = EffectLinkEffects(EffectACIncrease(11, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(11), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 3), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(3, DAMAGE_TYPE_SLASHING), ePoly); + } + if (nSpell == 735) //Death slaad + { + ePoly = EffectLinkEffects(EffectACIncrease(5, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(17), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 3), ePoly); + } + if (nSpell == 704) //Risen Lord + { + ePoly = EffectLinkEffects(EffectACIncrease(11, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(11), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 3), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(6, DAMAGE_TYPE_SLASHING), ePoly); + } + if (nSpell == 705) //Vampire + { + ePoly = EffectLinkEffects(EffectACIncrease(3, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(15), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 3), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(6, DAMAGE_TYPE_BLUDGEONING), ePoly); + ePoly = EffectLinkEffects(EffectRegenerate(6, 6.0), ePoly); + } + if (nSpell == 706) //Spectre + { + ePoly = EffectLinkEffects(EffectACIncrease(16, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(13), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 5), ePoly); + } + } + else if (GetLevelByClass(CLASS_TYPE_SHIFTER) >= 27) + { + if (nSpell == 738) //Stone golem + { + ePoly = EffectLinkEffects(EffectACIncrease(16, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 4), ePoly); + } + if (nSpell == 739) //Demonflesh golem + { + ePoly = EffectLinkEffects(EffectACIncrease(5, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(7), ePoly); + ePoly = EffectLinkEffects(EffectSpellResistanceIncrease(56), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 4), ePoly); + } + if (nSpell == 740) //Iron golem + { + ePoly = EffectLinkEffects(EffectACIncrease(4, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(9), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2), ePoly); + } + if (nSpell == 733) //Azer + { + ePoly = EffectLinkEffects(EffectACIncrease(8, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(8), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(2, DAMAGE_TYPE_SLASHING), ePoly); + } + if (nSpell == 735) //Death slaad + { + ePoly = EffectLinkEffects(EffectACIncrease(4, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(12), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2), ePoly); + } + if (nSpell == 704) //Risen Lord + { + ePoly = EffectLinkEffects(EffectACIncrease(7, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(7), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(4, DAMAGE_TYPE_SLASHING), ePoly); + } + if (nSpell == 705) //Vampire + { + ePoly = EffectLinkEffects(EffectACIncrease(2, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(10), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(4, DAMAGE_TYPE_BLUDGEONING), ePoly); + ePoly = EffectLinkEffects(EffectRegenerate(4, 6.0), ePoly); + } + if (nSpell == 706) //Spectre + { + ePoly = EffectLinkEffects(EffectACIncrease(11, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(9), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 4), ePoly); + } + } + else + { + if (nSpell == 738) //Stone golem + { + ePoly = EffectLinkEffects(EffectACIncrease(8, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2), ePoly); + } + if (nSpell == 739) //Demonflesh golem + { + ePoly = EffectLinkEffects(EffectACIncrease(3, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(4), ePoly); + ePoly = EffectLinkEffects(EffectSpellResistanceIncrease(54), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2), ePoly); + } + if (nSpell == 740) //Iron golem + { + ePoly = EffectLinkEffects(EffectACIncrease(2, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(5), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 1), ePoly); + } + if (nSpell == 733) //Azer + { + ePoly = EffectLinkEffects(EffectACIncrease(4, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(4), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 1), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(1, DAMAGE_TYPE_SLASHING), ePoly); + } + if (nSpell == 735) //Death slaad + { + ePoly = EffectLinkEffects(EffectACIncrease(2, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(6), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 1), ePoly); + } + if (nSpell == 704) //Risen Lord + { + ePoly = EffectLinkEffects(EffectACIncrease(4, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(4), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 1), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(2, DAMAGE_TYPE_SLASHING), ePoly); + } + if (nSpell == 705) //Vampire + { + ePoly = EffectLinkEffects(EffectACIncrease(1, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(5), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 1), ePoly); + ePoly = EffectLinkEffects(EffectDamageIncrease(2, DAMAGE_TYPE_BLUDGEONING), ePoly); + ePoly = EffectLinkEffects(EffectRegenerate(2, 6.0), ePoly); + } + if (nSpell == 706) //Spectre + { + ePoly = EffectLinkEffects(EffectACIncrease(6, AC_SHIELD_ENCHANTMENT_BONUS), ePoly); + ePoly = EffectLinkEffects(EffectAttackIncrease(5), ePoly); + ePoly = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2), ePoly); + } + if ((nSpell == 707 || nSpell == 708 || nSpell == 709) && GetLevelByClass(CLASS_TYPE_SHIFTER, OBJECT_SELF) < 10) //Dragon nerf for pure druids + { + ePoly = EffectLinkEffects(EffectAttackDecrease(5), ePoly); + } + } + } + if (nSpell == 694) ePoly = EffectLinkEffects(EffectMovementSpeedIncrease(50), ePoly); //A little extra for shifters in dire tiger form :) + //The end of the shape boosts + + + ePoly = ExtraordinaryEffect(ePoly); + ClearAllActions(); // prevents an exploit + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE)); + + //-------------------------------------------------------------------------- + // This code handles the merging of item properties + //-------------------------------------------------------------------------- + object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); + object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); + + //identify weapon + SetIdentified(oWeaponNew, TRUE); + + //-------------------------------------------------------------------------- + // ...Weapons + //-------------------------------------------------------------------------- + if (bWeapon) + { + //---------------------------------------------------------------------- + // GZ: 2003-10-20 + // Sorry, but I was forced to take that out, it was confusing people + // and there were problems with updating the stats sheet. + //---------------------------------------------------------------------- + /* if (!GetIsObjectValid(oWeaponOld)) + { + //------------------------------------------------------------------ + // If we had no weapon equipped before, remove the old weapon + // to allow monks to change into unarmed forms by not equipping any + // weapon before polymorphing + //------------------------------------------------------------------ + DestroyObject(oWeaponNew); + } + else*/ + { + //------------------------------------------------------------------ + // Merge item properties... + //------------------------------------------------------------------ + IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); + } + } + + //-------------------------------------------------------------------------- + // ...Armor + //-------------------------------------------------------------------------- + if (bArmor) + { + //---------------------------------------------------------------------- + // Merge item properties from armor and helmet... + //---------------------------------------------------------------------- + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oShield,oArmorNew); + } + + //-------------------------------------------------------------------------- + // ...Magic Items + //-------------------------------------------------------------------------- + if (bItems) + { + //---------------------------------------------------------------------- + // Merge item properties from from rings, amulets, cloak, boots, belt + //---------------------------------------------------------------------- + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + } + if (bArms) + { + IPWildShapeCopyItemProperties(oArmsOld,oArmorNew); + } + if (GetLocalInt(GetModule(),"71_POLYMORPH_STACK_ABILITY_BONUSES")) + { + IPWildShapeStackAbilityBonuses(oArmorNew); + } + + //-------------------------------------------------------------------------- + // Set artificial usage limits for special ability spells to work around + // the engine limitation of not being able to set a number of uses for + // spells in the polymorph radial + //-------------------------------------------------------------------------- + ShifterSetGWildshapeSpellLimits(nSpell); + +} diff --git a/_removed/x2_s2_hellball.ncs b/_removed/x2_s2_hellball.ncs new file mode 100644 index 0000000000000000000000000000000000000000..3b3b8232929502b3aefc540a5ebc46c2a4aea412 GIT binary patch literal 8046 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 J@aOHC`9E?ePICYN literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_hellball.nss b/_removed/x2_s2_hellball.nss new file mode 100644 index 0000000..0d544bd --- /dev/null +++ b/_removed/x2_s2_hellball.nss @@ -0,0 +1,147 @@ +//:://///////////////////////////////////////////// +//:: Hellball +//:: X2_S2_HELLBALL +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + Long range area of effect spell + 10d6 sonic, acid, fire and lightning damage to all + objects in the area + + 10d6 points of negative energy damage to caster + if MODULE_SWITCH_EPIC_SPELLS_HURT_CASTER switch + was enabled on the module. + + This spell is supposed to hurt the caster if he + is stupid enough to stand in the area of effect + when all hell breaks loose. It will hurt other + players allied with the caster as well. These + effects are dependent on your difficulty setting + + Save is 20 + relevant ability score, or, when cast + by a placeable, equal to the placeables WILL Save + + There is no benefit from the evasion feats here + as the are of the spell is too large to avoid it + + +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Noobs, Georg Zoeller +//:: Created On: 2003-08-20 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- if cast on self, caster wont be affected in order to make the spell bit more usefull +*/ + +#include "70_inc_spells" +#include "x2_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + /* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + + // End of Spell Cast Hook + //Declare major variables + spellsDeclareMajorVariables(); + int nDamage1, nDamage2, nDamage3, nDamage4; + float fDelay; + effect eExplode = EffectVisualEffect(464); + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); + effect eVis2 = EffectVisualEffect(VFX_IMP_ACID_L); + effect eVis3 = EffectVisualEffect(VFX_IMP_SONIC); + + int nSpellDC = GetEpicSpellSaveDC(spell.Caster)+5; + + // if this option has been enabled, the caster will take damage for casting + // epic spells, as descripbed in the ELHB + if(GetModuleSwitchValue(MODULE_SWITCH_EPIC_SPELLS_HURT_CASTER)) + { + effect eCast = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + int nDamage5 = d6(10); + effect eDam5 = EffectDamage(nDamage5, DAMAGE_TYPE_NEGATIVE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, spell.Caster); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam5, spell.Caster); + } + + effect eDam1, eDam2, eDam3, eDam4, eDam5; + effect eKnock = EffectKnockdown(); + object oExclude = spell.Target == spell.Caster ? spell.Target : OBJECT_INVALID; + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, spell.Loc); + + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 20.0, spell.Loc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + + int nTotalDamage; + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oExclude && spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, spell.Caster)) + { + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, spell.Id)); + + fDelay = GetDistanceBetweenLocations(spell.Loc, GetLocation(oTarget))/20 + 0.5; + //Roll damage for each target + nDamage1 = d6(30); + nDamage2 = d6(30); + nDamage3 = d6(30); + nDamage4 = d6(30); + // no we don't care about evasion. there is no evasion to hellball + if(spell.Caster == spell.Target) //the spell is weaker when cast on self + { + nDamage1 = d6(10); + nDamage2 = d6(10); + nDamage3 = d6(10); + nDamage4 = d6(10); + } + if(MySavingThrow(SAVING_THROW_REFLEX, oTarget, nSpellDC, SAVING_THROW_TYPE_SPELL, spell.Caster, fDelay)) + { + nDamage1 /=2; + nDamage2 /=2; + nDamage3 /=2; + nDamage4 /=2; + } + nTotalDamage = nDamage1+nDamage2+nDamage3+nDamage4; + //Set the damage effect + eDam1 = EffectDamage(nDamage1, DAMAGE_TYPE_ACID); + eDam2 = EffectDamage(nDamage2, DAMAGE_TYPE_ELECTRICAL); + eDam3 = EffectDamage(nDamage3, DAMAGE_TYPE_FIRE); + eDam4 = EffectDamage(nDamage4, DAMAGE_TYPE_SONIC); + + if(nTotalDamage > 0) + { + if(nTotalDamage > 50) + { + DelayCommand(fDelay+0.3, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnock, oTarget, 3.0)); + } + + // Apply effects to the currently selected target. + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam1, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam3, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam4, oTarget)); + //This visual effect is applied to the target object not the location as above. This visual effect + //represents the flame that erupts on the target not on the ground. + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay+0.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); + DelayCommand(fDelay+0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis3, oTarget)); + } + } + //Select the next target within the spell shape. + oTarget = GetNextObjectInShape(SHAPE_SPHERE, 20.0, spell.Loc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + } +} diff --git a/_removed/x2_s2_mumdust.ncs b/_removed/x2_s2_mumdust.ncs new file mode 100644 index 0000000000000000000000000000000000000000..e1362d908f56d6cad0aea4beee6db3bcdcdbf6a8 GIT binary patch literal 3409 zcmcIn&1)4`6hC)nUi^4Z6KlX|nr3(s6-(6k5W5i>-y6%|%u9STiMo)%+LQ*LL|#D9 zh584$E(rby?%j6Rl?$PZc2P<xE?g8U;v$PcJolWr_syM7M}skeF!$W^@%x>xnRMH+ zyEJ#=)CGV&m%jr1+3A8cLcg}9e);^xaUhMcuVE54H#c9RrY$A*a?_rcwv8!yS|r)O zj*W*2XGC7mbF&8Gibaq6_qt^8kWSz@=O3|>c;nPywCkmD8ZAcAwa#Lkv}ypcV+#zq z0eB4qA>?5l9Kx|dS9rp!`{HP(N5XgLTEY-`^?Rl*F<Q@Nfsx@wB1q@h9>(<B$79No zvxnryGjiuk9gPvWr009xWXP_B&~|YZKmV8O^j5f@#vH}Yc5r1+pOGv4id<#EKhRQh z+eV2!eI`oW-mdKIv8$)kFb%ypNqc^><n>hhid|M#ni@3Do=Vs5Ecg3AuCCrfiaV_; zOK4SIqhmF5O`8bfG!de8IYQ9T=xD@`$hmu?MiPUc1QIEu4IGf?EYgEZvx+vToe0u? zm2>bXYvUYnB-C1G(H}X{DvSOaimbORdaXnh27^+bL><}iDxnoLsX$QQ@QxaB4V5zp zaQf_Ay5NO=gcb06sn_YmX`7!zf5{IK+*`muEo+3=$lv4_F(_B$U)0?hnY?cd>8?zw zk&*81OiEi79y30Kvez5jjAfO>yZvbOdz9?B*}t*2w!BsY>la)^@S3+ECbNVbMb?Y4 z;f^y|lpMfkvkIK}e7RXdZZYMA=>hLMF;I*VQGH>sa{I>Mp7-5KzX*_wY6L?Tr3QAK z^y-JH8ZKReIZqV-#Vq7aI{sC|r0_~0lP9K0d%kO!SS3+@Fioxmv0>trn6yljpqpeS zhlmT0j&6C9?N((`8KalSxU0mfL@2&wWi`<aP8C?kDz9*x|5I#pygDw(1&$7N+XOjA zMT)*zcX#LpFS&<Nyw6vIdP0Yx)IOaB!zcE&ib$4IiV8)nBatbqX%FX$!k#l+IF&9A zY8M$c&Tb(E{KZ0U^}IKl5|KE9jdmzV{Ky#FbbiV2^@5JCY%qB(ZVbK4=n7}4+(9(o z2`&bH&u~zjBQzbO*qwGoM7=7>mmII0Sydd}8)$HV;zWMpMc%hTRXE*~vZB^cSw(SU zsV<?sT}PiY@q*tDyfF1H1YwX|t4JYl^NJK!`!ZN6UnSX`EFvl<R@oXau8mw`%RE#? z&*!*VjQ&6AHb5BZ7Dw?zr3Mm27=B7R%RE%k&@WhwzK^4CIdwz3sz~{SO>m?wrAaM8 z>PE=EslQZG^F2jUIq~%EXXv7obTu5cr%H5jUz)p4k3RhqG0Iz!H&5Yvg|_lL7v2Nr C^#%g~ literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_mumdust.nss b/_removed/x2_s2_mumdust.nss new file mode 100644 index 0000000..bd8f388 --- /dev/null +++ b/_removed/x2_s2_mumdust.nss @@ -0,0 +1,77 @@ +//:://///////////////////////////////////////////// +//:: Mummy Dust +//:: X2_S2_MumDust +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Summons a strong warrior mummy for you to + command. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Feb 07, 2003 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x2_inc_spellhook" + +const float cDist = 5.0; +const int cNumbersumm = 2; + +void main() +{ + /* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + + //Declare major variables + spellsDeclareMajorVariables(); + int nDuration = 24; + //effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD); + //Summon the appropriate creature based on the summoner level + //Warrior Mummy + + //If PC is a powerful pale master, ignore the fact that he has low caster level and summon the strongest mummy + if ( GetLevelByClass(CLASS_TYPE_PALE_MASTER, OBJECT_SELF) > 19 ) + { + effect eSummon = EffectSummonCreature("NA_S_MUMMYDUST3",496,1.0); + eSummon = ExtraordinaryEffect(eSummon); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, HoursToSeconds(nDuration)); + + } + else if (GetCasterLevel(OBJECT_SELF) >= 40) + { + effect eSummon = EffectSummonCreature("NA_S_MUMMYDUST3",496,1.0); + if (GetLevelByClass(CLASS_TYPE_DRUID, OBJECT_SELF) > 20) eSummon = EffectSummonCreature("NA_S_TREANTDUST3",496,1.0); + eSummon = ExtraordinaryEffect(eSummon); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, HoursToSeconds(nDuration)); + + } + else if (GetCasterLevel(OBJECT_SELF) >= 31) + { + effect eSummon = EffectSummonCreature("NA_S_MUMMYDUST2",496,1.0); + if (GetLevelByClass(CLASS_TYPE_DRUID, OBJECT_SELF) > 20) eSummon = EffectSummonCreature("NA_S_TREANTDUST2",496,1.0); + eSummon = ExtraordinaryEffect(eSummon); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, HoursToSeconds(nDuration)); + + } + else + { + effect eSummon = EffectSummonCreature("NA_S_MUMMYDUST1",496,1.0); + if (GetLevelByClass(CLASS_TYPE_DRUID, OBJECT_SELF) > 20) eSummon = EffectSummonCreature("NA_S_TREANTDUST1",496,1.0); + eSummon = ExtraordinaryEffect(eSummon); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, spell.Loc, HoursToSeconds(nDuration)); + + } + +} diff --git a/_removed/x2_s2_poisonwp.ncs b/_removed/x2_s2_poisonwp.ncs new file mode 100644 index 0000000000000000000000000000000000000000..09b5e1b68f7af2836223b487f440b9b9ed1069cd GIT binary patch literal 3439 zcmb7GO=w(I7`^wsnXye$TTBXSjJZjv8xs>Pf+(mp9W@AT$xLlFI!tC>JEL)Cn0d8y zt>CII6cKS@U5M3%D{(0Wi>rX5S%eaTpoA>C2&IcG0`c7Q-J5xnPLg&O^XA^~_nhx% z-s!2FdHdOCCSOzPQ2j}T&jF*-O8=r#8GA}AHK9ViwY7CurEs{edDu`X%60E3&zmZB z+^P>HRNvF75LZE;dB_Y~;nO^egLOCvmCk;XR>7fgP$9tj5Ogxz{*lC09fWiUZJS$q zbyUs>M~{y?`E8MBE{}#8;}fFBqdeJkZ7whMnLXvh`^aCh@_Vo#`c5pjEtd52o#|)l zd!#n8r|a+AG|_eHRuB?VKV5qKcXrL~kDU&_qPfs1rF}U-eb<D45KOu16}Z3gB(gOJ z_ZnTIDUN2F&3f}iGaW}Cn9J3;V&dXODZ_uRX$Fo#FEW*4%fyw)oUK<|_1gKU*r?Y` zs}ar5w@S@wBR0i2E|w}$+00#v>7`tcTBcTyO{rdsi`AMrVdkSaj+&+!m7;1Rf}kA1 zj(($Bd1T-i@|x6asWn@M@F!0@a>(S0A4aF9@au3nY86V&3vr>rY+&_!*k-`COj;c{ zb*Wj5tM%Ic1|ShiJpwI%r4j9KVuv8D`c5_)^H-)SQR)5rNo<+)tMCQ}WGL{^MnhYA zeRb>z9`-Y4p{stW8(<yOM&@{lCCLP6ptKsDeXfu@Kb@a?voMp*<!7d+@`ZD`Y~k#g z>D-yqh1atu^BlYx@#DH7ImnAlM^E2uH`t;L9lXHQ5Y4Bc-wOOsRhHe*GazjOvfVE< zp6}?x(t4lsjHUyKRq4Qmwo_G*tADIq|JshQoJyrE1GM%AaE_}yJpC-1cE3T>-X>k^ z?DaOB1q(-4$>+$pxad^=v8}w(Ma@x^{efys2+iVQF?c^jpUFfEGwz#8#OASM)OmSR zR$jPDduFA32&`i>0J$w-u*A*qQ5U4&GOM;1l?;t$BkdxF=D&jchKpWFko+fgheW|n zgJo3+?m~)`L}#xtJg0TRbtrm(%bz%Lu#Pk~kv|`|evk5mFi_pn?jOcTOl|+KFkJL1 z6*=dPq2D8m$Ia-$xne7-Vs*8UiQ53;=3&#tQ6HUd%J&`#tASp_L}d;f4E311-TvET zs6ltzN1_CU?h^bd37bF(0_2XCnSIl;JhBybr|P>0qH0^&Ry*j5F1;%{G&3{4%k0PQ zLDyNs9n_PBNyf+iKpT7-5ZT8*CDgMl-N=p#N}BR_6Y>?2BTfe`!oAN<I_Qmdq#zOn zg!Sa3;lAEA{mn#iHj+J~?%4S_5wO&Im68C13)`~=Xe<8Z$o?O5)%A`fDl0w{8KOK- z`0d4b+cM7wpUeK$Dis3LRu@gIBWXZKS)O)FUF>}MHmL!8d?GHN$eU02<BR8CWNCI> zR<@6#U6fbdyVRny^4^dyz2IrR=ugPOBdi7AC{@!(W!7j>YD^?HS0WSYqVOQNm|{ZX zE+M?iP`I12MCA8cvc_F|@Nc@3wsci(_uv-^;YBGqGTO2K<i!^EQm0=3l0BO+cHNDP zyBgzuhw-2{<`WcyhB<l1K-F;Q+W2lO2?6^;zvW}VT^l+Nt~6gJG};3SjTJP5mvOfq n;R!h0{(r|yq5Qzi8TN-vHi}I+_c{8*G7ub=PSfPhS~u!{$$k5> literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_poisonwp.nss b/_removed/x2_s2_poisonwp.nss new file mode 100644 index 0000000..c58f7da --- /dev/null +++ b/_removed/x2_s2_poisonwp.nss @@ -0,0 +1,145 @@ +//:://///////////////////////////////////////////// +//:: Poison Weapon spellscript +//:: x2_s2_poisonwp +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + Spell allows to add temporary poison properties + to a melee weapon or stack of arrows + + The exact details of the poison are loaded from + a 2da defined in x2_inc_itemprop X2_IP_POSIONWEAPON_2DA + taken from the row that matches the last three letters + of GetTag(GetSpellCastItem()) + + Example: if an item is given the poison weapon property + and its tag ending on 004, the 4th row of the + 2da will be used (1d2IntDmg DC14 18 seconds) + + Rows 0 to 99 are bioware reserved + + Non Assassins have a chance of poisoning themselves + when handling an item with this spell + + Restrictions + ... only weapons and ammo can be poisoned + ... restricted to piercing / slashing damage + +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: 2003-05-11 +//:: Updated On: 2003-08-21 +//::////////////////////////////////////////////// +/* +Patch 1.70, fix by ILKAY + +- may now poison user if he fails in dexterity check +*/ + +#include "x2_inc_itemprop" +#include "x2_inc_switches" + +void main() +{ + + object oItem = GetSpellCastItem(); + object oPC = OBJECT_SELF; + object oTarget = GetSpellTargetObject(); + string sTag = GetTag(oItem); + + if (oTarget == OBJECT_INVALID || GetObjectType(oTarget) != OBJECT_TYPE_ITEM) + { + FloatingTextStrRefOnCreature(83359,oPC); //"Invalid target " + return; + } + int nType = GetBaseItemType(oTarget); + if (!IPGetIsMeleeWeapon(oTarget) && + !IPGetIsProjectile(oTarget) && + nType != BASE_ITEM_SHURIKEN && + nType != BASE_ITEM_DART && + nType != BASE_ITEM_THROWINGAXE) + { + FloatingTextStrRefOnCreature(83359,oPC); //"Invalid target " + return; + } + + if (IPGetIsBludgeoningWeapon(oTarget) && nType != BASE_ITEM_MORNINGSTAR) + { + FloatingTextStrRefOnCreature(83367,oPC); //"Weapon does not do slashing or piercing damage " + return; + } + + if (IPGetItemHasItemOnHitPropertySubType(oTarget, 19)) // 19 == itempoison + { + FloatingTextStrRefOnCreature(83407,oPC); // weapon already poisoned + return; + } + + // Get the 2da row to lookup the poison from the last three letters of the tag + int nRow = StringToInt(GetStringRight(sTag,3)); + + if (nRow ==0) + { + FloatingTextStrRefOnCreature(83360,oPC); //"Nothing happens + WriteTimestampedLogEntry ("Error: Item with tag " +GetTag(oItem) + " has the PoisonWeapon spellscript attached but tag does not contain 3 letter receipe code at the end!"); + return; + } + + int nSaveDC = StringToInt(Get2DAString(X2_IP_POISONWEAPON_2DA,"SaveDC",nRow)); + int nDuration = StringToInt(Get2DAString(X2_IP_POISONWEAPON_2DA,"Duration",nRow)); + int nPoisonType = StringToInt(Get2DAString(X2_IP_POISONWEAPON_2DA,"PoisonType",nRow)) ; + int nApplyDC = StringToInt(Get2DAString(X2_IP_POISONWEAPON_2DA,"ApplyCheckDC",nRow)) ; + + int bHasFeat = GetHasFeat(960, oPC); + if (!bHasFeat) // without handle poison feat, do ability check + { + // * Force attacks of opportunity + AssignCommand(oPC,ClearAllActions(TRUE)); + + + // Poison restricted to assassins and blackguards only? + if (GetModuleSwitchValue(MODULE_SWITCH_RESTRICT_USE_POISON_TO_FEAT) == TRUE) + { + FloatingTextStrRefOnCreature(84420,oPC); //"Failed" + return; + } + + int nDex = GetAbilityModifier(ABILITY_DEXTERITY,oPC) ; + int nCheck = d10(1)+10+nDex; + if (nCheck < nApplyDC) + { + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAbilityDecrease(nPoisonType, d2(1)), oPC, IntToFloat(nDuration)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_POISON_S), oPC); + FloatingTextStrRefOnCreature(83368,oPC); //"Failed" + return; + } + else + { + FloatingTextStrRefOnCreature(83370,oPC); //"Success" + } + } + else + { + // some feedback to + FloatingTextStrRefOnCreature(83369,oPC); //"Auto success " + } + + itemproperty ip = ItemPropertyOnHitProps(IP_CONST_ONHIT_ITEMPOISON,nSaveDC,nPoisonType); + IPSafeAddItemProperty(oTarget, ip,IntToFloat(nDuration),X2_IP_ADDPROP_POLICY_KEEP_EXISTING,TRUE,TRUE); + + effect eVis = EffectVisualEffect(VFX_IMP_PULSE_NATURE); + //technically this is not 100% safe but since there is no way to retrieve the sub + //properties of an item (i.e. itempoison), there is nothing we can do about it + if (IPGetItemHasItemOnHitPropertySubType(oTarget, 19)) + { + FloatingTextStrRefOnCreature(83361,oPC); //"Weapon is coated with poison" + IPSafeAddItemProperty(oTarget, ItemPropertyVisualEffect(ITEM_VISUAL_ACID),IntToFloat(nDuration),X2_IP_ADDPROP_POLICY_KEEP_EXISTING,TRUE,FALSE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, GetItemPossessor(oTarget)); + } + else + { + FloatingTextStrRefOnCreature(83360,oPC); //"Nothing happens + } + +} diff --git a/_removed/x2_s2_ruin.ncs b/_removed/x2_s2_ruin.ncs new file mode 100644 index 0000000000000000000000000000000000000000..1a1589058347ac3203bedaeca5a0312d32da217f GIT binary patch literal 6686 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 M@iEWi<6_PH0|m0vo&W#< literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_ruin.nss b/_removed/x2_s2_ruin.nss new file mode 100644 index 0000000..89497b6 --- /dev/null +++ b/_removed/x2_s2_ruin.nss @@ -0,0 +1,70 @@ +//:://///////////////////////////////////////////// +//:: Greater Ruin +//:: X2_S2_Ruin +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* +// The caster deals 35d6 damage to a single target + fort save for half damage +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Nov 18, 2002 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- spell now same as any non-epic direct target spell can hurt even neutral target +*/ + +#include "70_inc_spells" +#include "x2_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ + /* + Spellcast Hook Code + Added 2003-06-20 by Georg + If you want to make changes to all spells, + check x2_inc_spellhook.nss to find out more + + */ + + if (!X2PreSpellCastCode()) + { + // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell + return; + } + + // End of Spell Cast Hook + + //Declare major variables + spellsDeclareMajorVariables(); + + float fDist = GetDistanceBetween(spell.Caster, spell.Target); + float fDelay = fDist/(3.0 * log(fDist) + 2.0); + + int nSpellDC = GetEpicSpellSaveDC(spell.Caster)+5; + + if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) + { + //Fire cast spell at event for the specified target + SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); + //Roll damage + int nDam = d6(40); + //Set damage effect + + if(!MySavingThrow(SAVING_THROW_FORT, spell.Target, nSpellDC, SAVING_THROW_TYPE_SPELL, spell.Caster)) + { + nDam = d100(20); + } + + effect eDam = EffectDamage(nDam, DAMAGE_TYPE_POSITIVE, DAMAGE_POWER_PLUS_TWENTY); + ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), spell.Loc); + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(487), spell.Target); + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_BLOOD_CRT_RED), spell.Target); + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_BONE_MEDIUM), spell.Target); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, spell.Target)); + } +} diff --git a/_removed/x2_s2_shiftdom.ncs b/_removed/x2_s2_shiftdom.ncs new file mode 100644 index 0000000000000000000000000000000000000000..f76af0c880fa02c02e0686f75621086cb09610a5 GIT binary patch literal 5705 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 literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_shiftdom.nss b/_removed/x2_s2_shiftdom.nss new file mode 100644 index 0000000..a27edc4 --- /dev/null +++ b/_removed/x2_s2_shiftdom.nss @@ -0,0 +1,93 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Dominate (Shifter) +//:: x2_s2_shiftdom +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Georg Zoeller +//:: Created On: Oct, 2003 +//::////////////////////////////////////////////// +/* +Patch 1.70 + +- ability could been wasted on mind immune target +*/ + +#include "x0_i0_spells" +#include "x2_inc_shifter" + +void main() +{ + //------------------------------------------------------------------------- + // If blinded, I am not able to use this attack + //-------------------------------------------------------------------------- + if( GZCanNotUseGazeAttackCheck(OBJECT_SELF)) + { + return; + } + + //-------------------------------------------------------------------------- + // Enforce artifical use limit on that ability + //-------------------------------------------------------------------------- + /*if (ShifterDecrementGWildShapeSpellUsesLeft() <1 ) + { + FloatingTextStrRefOnCreature(83576, OBJECT_SELF); + return; + }*/ + + //-------------------------------------------------------------------------- + // Set up save DC and duration + //-------------------------------------------------------------------------- + int nDuration = Random(GetAbilityModifier(ABILITY_WISDOM))+d4(); + int nDC = ShifterGetSaveDC(OBJECT_SELF,SHIFTER_DC_VERY_EASY) + GetAbilityModifier(ABILITY_WISDOM); + + location lTargetLocation = GetSpellTargetLocation(); + effect eGaze = EffectDominated(); + effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED); + effect eLink = EffectLinkEffects(eDur, eVisDur); + + //Make it more useful for high-level shifters + int nBonus; + if (GetLevelByClass(CLASS_TYPE_SHIFTER) > 25) nBonus = GetLevelByClass(CLASS_TYPE_SHIFTER) - 25; + else nBonus = 0; + nDC = nDC + nBonus; + nDuration = nDuration + nBonus; + + //-------------------------------------------------------------------------- + // Loop through all targets in the cone, but only dominate one! + //-------------------------------------------------------------------------- + object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF && spellsIsTarget(oTarget,SPELL_TARGET_SELECTIVEHOSTILE,OBJECT_SELF)) + { + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_GAZE_DOMINATE)); + float fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + if(!GetIsImmune(oTarget, IMMUNITY_TYPE_MIND_SPELLS, OBJECT_SELF)) + { + if(!MySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, OBJECT_SELF, fDelay)) + { + //-------------------------------------------------------------------------- + // Effects do not stack + //-------------------------------------------------------------------------- + if (!GetHasSpellEffect(GetSpellId(),oTarget)) + { + eGaze = GetScaledEffect(eGaze, oTarget); + eLink = EffectLinkEffects(eLink, eGaze); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + break; + } + } + } + } + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} diff --git a/_removed/x2_s2_sumgrund.ncs b/_removed/x2_s2_sumgrund.ncs new file mode 100644 index 0000000000000000000000000000000000000000..6e704da7b93ddf078dae3030625887ba660e4309 GIT binary patch literal 1373 zcma)+&r2IY6vy9eCRH@1K|(41h-=%UKeF34s33K-2{o8)g6q$N3{k-rEQqBdo}{;4 zy!fwp=^rBGPzt^DoI@!dg!ty|F3k>^#Xao4w=?sZ@4h$t{owlMmNi!_1Elu~fY+c2 z{D};B3U4pcz_twvvnkf?cJF}aO(RF~U*I%S7%`{hiWSNj=Q5Eo>+m!T`=YY$xQ%+v zT}=b{oQ0fmK;Hc%&Q0CULX0>W5}m%p%#JO5A$j6;QHT7dASaTM=eGDFjz1lI6n066 zoL7)z$;kgI?Kc{v@l!!Qk0G(Xu~PPYxNYl@-xcJuM<aE$G)f9GA0l09PmfCYhYinC zE%%SUwoVU)wV=_-ek;(?n9iP41g{X9A?R7_^GO2oN<rpAWVx@-5o*x;)y8IBSh}XO zC54%N1hd?zIBUYvbshdF%uMp9lg=&2YYI!(BDhwNLm{%F{y|jDr-byIRd-{(nm}Ei z4QxPdac~g5P0!mEi+vg#oLe0D6|I+M@&jMo1ZDylwt3_zm|QTL9diNss?D+ad6L`o zgj8H}>Y}z$^#Yf|DQ^v0b&n!3%e*8nss_U|Ir#(Om6tvPg=oj<NtQQ_mdD>+q6GpB h7=bO(y@LZ%IE$uJhP$xiRJ12OJ0Q0n>|J|j!UGWvG~56H literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_sumgrund.nss b/_removed/x2_s2_sumgrund.nss new file mode 100644 index 0000000..e6e8269 --- /dev/null +++ b/_removed/x2_s2_sumgrund.nss @@ -0,0 +1,132 @@ +//:://///////////////////////////////////////////// +//:: Summon Greater Undead +//:: X2_S2_SumGrUnd +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + 2003-10-03 - GZ: Added Epic Progression + The level of the Pale Master determines the + type of undead that is summoned. + + Level 9 <= Mummy Warrior + Level 10 <= Spectre + Level 12 <= Vampire Rogue + Level 14 <= Bodak + Level 16 <= Ghoul King + Level 18 <= Vampire Mage + Level 20 <= Skeleton Blackguard + Level 22 <= Lich + Level 24 <= Lich Lord + Level 26 <= Alhoon + Level 28 <= Elder Alhoon + Level 30 <= Lesser Demi Lich + + Lasts 14 + Casterlevel rounds +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Feb 05, 2003 +//::////////////////////////////////////////////// + +void PMUpgradeSummon(object oSelf, string sScript) +{ + object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oSelf); + ExecuteScript ( sScript, oSummon); +} + +void main() +{ + + int nCasterLevel = GetLevelByClass(CLASS_TYPE_PALEMASTER,OBJECT_SELF); + int nDuration = 14 + nCasterLevel; + + effect eSummon; + + //-------------------------------------------------------------------------- + // Summon the appropriate creature based on the summoner level + //-------------------------------------------------------------------------- + if (nCasterLevel >= 30) + { + // * Dracolich + eSummon = EffectSummonCreature("S_DRACOLICH",496,0.0f,1); + } + else if (nCasterLevel >= 29) + { + // * Demi Lich + eSummon = EffectSummonCreature("X2_S_LICH_30",496,0.0f,1); + } + else if (nCasterLevel >= 28) + { + // * Mega Alhoon + eSummon = EffectSummonCreature("x2_s_lich_26",496,0.0f,1); + } + else if (nCasterLevel >= 26) + { + // * Alhoon + eSummon = EffectSummonCreature("X2_S_LICH_24",496,0.0f,1); + } + else if (nCasterLevel >= 24) + { + // * Lich + eSummon = EffectSummonCreature("X2_S_LICH_22",496,0.0f,0); + } + else if (nCasterLevel >= 22) + { + // * Lich + eSummon = EffectSummonCreature("X2_S_LICH_20",496,0.0f,0); + } + else if (nCasterLevel >= 20) + { + // * Skeleton Blackguard + eSummon = EffectSummonCreature("x2_s_bguard_18",VFX_IMP_HARM,0.0f,0); + } + else if (nCasterLevel >= 18) + { + // * Vampire Mage + eSummon = EffectSummonCreature("x2_s_vamp_18",VFX_FNF_SUMMON_UNDEAD,0.0f,1); + } + else if (nCasterLevel >= 16) + { + // * Ghoul King + eSummon = EffectSummonCreature("X2_S_GHOUL_16",VFX_IMP_HARM,0.0f,0); + } + else if (nCasterLevel >= 14) + { + // * Greater Bodak + eSummon = EffectSummonCreature("X2_S_BODAK_14",VFX_IMP_HARM,0.0f,0); + } + else if (nCasterLevel >= 12) + { + // * Vampire Rogue + eSummon = EffectSummonCreature("X2_S_VAMP_10",VFX_FNF_SUMMON_UNDEAD,0.0f,1); + } + else if (nCasterLevel >= 10) + { + eSummon = EffectSummonCreature("X2_S_SPECTRE_10",VFX_FNF_SUMMON_UNDEAD, 0.0f,1); + } + else + { + // * Mummy + eSummon = EffectSummonCreature("X2_S_MUMMY_9",VFX_IMP_HARM, 0.0f,0); + } + + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_LOS_EVIL_10),GetSpellTargetLocation()); + //Apply the summon visual and summon the two undead. + //ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetSpellTargetLocation()); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration)); + + // * If the character has a special pale master item equipped (variable set via OnEquip) + // * run a script on the summoned monster. + string sScript = GetLocalString(OBJECT_SELF,"X2_S_PM_SPECIAL_ITEM"); + if (sScript != "") + { + object oSelf = OBJECT_SELF; + DelayCommand(1.0,PMUpgradeSummon(oSelf,sScript)); + } +} + + + + + diff --git a/_removed/x2_s2_sumundead.ncs b/_removed/x2_s2_sumundead.ncs new file mode 100644 index 0000000000000000000000000000000000000000..fc0d929d02c100e6ff965639395880fb04742410 GIT binary patch literal 789 zcmZ{iy-ve05XaAn)20MahA<&Y_!t2J5)xu5p@b$<`k^=ww!8pOz{I=o3M{-yC!Qfg zg*sFU=W~MEDDhz5`Od#P+yBW>xGz^1mk$8?ULSCnF7S>txQ^4Y0W8(X+|^l86ieWa ztJ!2PfK$Y<-9vd|Kpt*NhwNW&z}6(qL^cYh&yfKjI4d#xfVkBGrn0AV*Z_7c1-x$r zS_Bk<_c%>kh_I*;yCqSz$XZ(TMA8QQtO3nd;OYOJ({L2D0^=I6x1;WSM|WQDPy(&j zYkb5s_QE7+XmR89oRV}~C$St!J&}pT_aZ-T;HY=Oz>oSrHGkvAml6S>Ip>uU(0ON+ zz0rW&nscn>P}j3@CT9LH^r9?G{IOCOrrc<BYK4M9Z~KHa<g4(REj5J0kph8!Rk2!0 psz)eQKKKCHR991aqB+NaR4=R2$-^q_O|NRwnu9EDuAg1H@CS#ku$%w@ literal 0 HcmV?d00001 diff --git a/_removed/x2_s2_sumundead.nss b/_removed/x2_s2_sumundead.nss new file mode 100644 index 0000000..0833efd --- /dev/null +++ b/_removed/x2_s2_sumundead.nss @@ -0,0 +1,78 @@ +//:://///////////////////////////////////////////// +//:: Summon Undead +//:: X2_S2_SumUndead +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + The level of the Pale Master determines the + type of undead that is summoned. +*/ +//::////////////////////////////////////////////// +//:: Created By: Andrew Nobbs +//:: Created On: Feb 05, 2003 +//:: Updated By: Georg Zoeller, Oct 2003 +//::////////////////////////////////////////////// + +void PMUpgradeSummon(object oSelf, string sScript) +{ + object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oSelf); + ExecuteScript ( sScript, oSummon); +} + +void main() +{ + //Declare major variables + int nCasterLevel = GetLevelByClass(CLASS_TYPE_PALEMASTER,OBJECT_SELF); + int nDuration = 14 + nCasterLevel; + + + //effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD); + effect eSummon; + //Summon the appropriate creature based on the summoner level + if (nCasterLevel <= 5) + { + //Ghoul + eSummon = EffectSummonCreature("NW_S_GHOUL",VFX_IMP_HARM,0.0f,0); + } + else if (nCasterLevel == 6) + { + //Shadow + eSummon = EffectSummonCreature("NW_S_SHADOW",VFX_IMP_HARM,0.0f,0); + } + else if (nCasterLevel == 7) + { + //Ghast + eSummon = EffectSummonCreature("NW_S_GHAST",VFX_IMP_HARM,0.0f,1); + } + else if (nCasterLevel == 8) + { + //Wight + eSummon = EffectSummonCreature("NW_S_WIGHT",VFX_FNF_SUMMON_UNDEAD,0.0f,1); + } + else if (nCasterLevel >= 9) + { + //Wraith + eSummon = EffectSummonCreature("X2_S_WRAITH",VFX_FNF_SUMMON_UNDEAD,0.0f,1); + } + + if (nCasterLevel >= 20) + { + // * Soul Stealer + eSummon = EffectSummonCreature("S_STEALER",496,0.0f,1); + } + // * Apply the summon visual and summon the two undead. + // * ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetSpellTargetLocation()); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_LOS_EVIL_10),GetSpellTargetLocation()); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration)); + + // * If the character has a special pale master item equipped (variable set via OnEquip) + // * run a script on the summoned monster. + string sScript = GetLocalString(OBJECT_SELF,"X2_S_PM_SPECIAL_ITEM"); + if (sScript != "") + { + object oSelf = OBJECT_SELF; + DelayCommand(1.0,PMUpgradeSummon(oSelf,sScript)); + } +} + + diff --git a/_removed/x2_s3_sequencer.ncs b/_removed/x2_s3_sequencer.ncs new file mode 100644 index 0000000000000000000000000000000000000000..3412fc24acdb474f833dbe1794a1eb77d0eede30 GIT binary patch literal 1523 zcmah}J#Q015S`t-OGr#UKq(NBVM3sc2_TUY2^3jKCW1IYAb}#sJ|~up&-iR2OMK)P zQ1BPhrJzFaHz+7TLO_us1qD)4SSVm-XZD;kG5Ctp?arIox9`o|!i_B6y_A~04&d#b z0eX%hc%a^bJ789>Bkwjn9zYAU<0$&x1=pb66t51z6<`9-8vMygFqou43^Sr72>o6V zYLf9vnOfh$W&8mnf6$p`momns+8x(}6ZbB!WLC1b=QEk5#hdB${33%Wl~_Gc6Vtrh zF-tY1qeAB$Q(lTE4W%uLk8`Po<y*E;wky?j%?0|suWcSmL-314;*DpMSU0Y@AIU=D z&!Uj($g0xY9_SG#Vh5l<%^3b8S^sgvujKvOa_ASh5UEWiu4oa>ifm*_-47a=&s8v} zl$+QHeavB4s;rfLe3V-&<uR=1ibbsYH7w+sQ-{UW6Mg8BE=D%fUBnYQG3E)$99>8} z(TWcLhbKa|<H<M6y|>kJ@F*LtUd5V%?2i$krkIX-$z*8H;Pul4@|v3P0`Z4aydugR zeU`w%|HYs8iNEL*-|Q2AXW~2*59M~Y0X(?6v|b7^tor3L(nmcAuo`UmwPK@83taWd z*szWprTRKHgGNofoT8=~m8RJ-^99?stQ}Od729dE7$2;EAK8o9K?~^FYvR|Oj5(>u zGqf9ZX}kSvFH-xQ!}m&d-OB-$ejRIU=`s{fW1LFX(v-f`HXk{k`i|z4CMG(GIx(vq zJ;5ooPc;kDo87HJwo@ptB38^vdZ06Z2^<g)zD6iYDJnjA%#PDmEcAs#I$=Y?&^gKw zDl>32ZMZ8<_eh)Tl{RG4PK%!1X?%*P;Qyt9`LX@}$pBJ@)5tcKai2TnIDfZ9ScE^H COS)qK literal 0 HcmV?d00001 diff --git a/_removed/x2_s3_sequencer.nss b/_removed/x2_s3_sequencer.nss new file mode 100644 index 0000000..77eba8b --- /dev/null +++ b/_removed/x2_s3_sequencer.nss @@ -0,0 +1,73 @@ +//:://///////////////////////////////////////////// +//:: x2_s3_sequencer +//:: Copyright (c) 2003 Bioware Corp. +//::////////////////////////////////////////////// +/* + Fires the spells stored on this sequencer. + GZ: - Also handles clearing off spells if the + item has the clear sequencer property + - added feedback strings +*/ +//::////////////////////////////////////////////// +//:: Created By: Brent +//:: Created On: July 31, 2003 +//:: Updated By: Georg +//::////////////////////////////////////////////// + +#include "x2_inc_itemprop" +void main() +{ + object oItem = GetSpellCastItem(); + object oPC = OBJECT_SELF; + + int i = 0; + int nSpellId = -1; + int nMode = GetSpellId(); + + int iMax = IPGetItemSequencerProperty(oItem); + + if (iMax ==0) // Should never happen unless you added clear sequencer to a non sequencer item + { + return; + } + if (nMode == 720 ) // clear seqencer + { + for (i = 1; i <= iMax; i++) + { + DeleteLocalInt(oItem, "X2_L_SPELLTRIGGER" + IntToString(i)); + } + DeleteLocalInt(oItem, "X2_L_NUMTRIGGERS"); + effect eClear = EffectVisualEffect(VFX_IMP_BREACH); + ApplyEffectToObject(DURATION_TYPE_INSTANT,eClear,OBJECT_SELF); + FloatingTextStrRefOnCreature(83882,OBJECT_SELF); // sequencer cleared + } + else + { + if (GetLocalInt(oPC, "SequencerUsed") == TRUE) + { + SendMessageToPC(oPC, "You can only use a single magic staff per day!"); + return; + } + int bSuccess = FALSE; + for (i = 1; i <= iMax; i++) + { + nSpellId = GetLocalInt(oItem, "X2_L_SPELLTRIGGER" + IntToString(i)); + if (nSpellId>0) + { + bSuccess = TRUE; + nSpellId --; // I added +1 to the spellID when the sequencer was created, so I have to remove it here + if (nSpellId == 636 || nSpellId == 637 || nSpellId == 638 || nSpellId == 639 || nSpellId == 640 || nSpellId == 695) + { + FloatingTextStringOnCreature("This spell is too powerful to be cast with your staff!",OBJECT_SELF); + return; + } + ActionCastSpellAtObject(nSpellId, oPC, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE); + SetLocalInt(oPC, "SequencerUsed", TRUE); + } + } + if (!bSuccess) + { + FloatingTextStrRefOnCreature(83886,OBJECT_SELF); // no spells stored + } + } +} diff --git a/_removed/x3_s2_palmount.ncs b/_removed/x3_s2_palmount.ncs new file mode 100644 index 0000000000000000000000000000000000000000..ec10f3537d6af83f2438fe5e0f04a3f58654bc61 GIT binary patch literal 21416 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 literal 0 HcmV?d00001 diff --git a/_removed/x3_s2_palmount.nss b/_removed/x3_s2_palmount.nss new file mode 100644 index 0000000..b55046d --- /dev/null +++ b/_removed/x3_s2_palmount.nss @@ -0,0 +1,39 @@ +//:://///////////////////////////////////////////// +//:: Post Mount Script for a Paladin Mount +//:: x3_s2_palmount +//:: Copyright (c) 2007 Bioware Corp. +//::////////////////////////////////////////////// +/* + This script is fired by the rider after successfully mounting + a summoned paladin mount. It's primary duty is to make sure monitoring + for paladin mount unsummoning still occurs while the mount is mounted. + + X3_EXTEND_PALMOUNT = string variable that if set on the module object + will allow a person to extend this paladin mount script to call other + scripts in a daisy chain type situation such as saddle bag handling ones. + +*/ +//::////////////////////////////////////////////// +//:: Created By: Deva B. Winblood +//:: Created On: 2008-01-01 +//:: Last Update: March 29th, 2008 +//::////////////////////////////////////////////// + +#include "x3_inc_horse" +void main() +{ + + object oRider = OBJECT_SELF; + object oHorse = GetLocalObject(oRider, "oX3_TempHorse"); + string sScript = GetLocalString(GetModule(), "X3_EXTEND_PALMOUNT"); + SetLocalObject(oRider, "oX3_PALADIN_MOUNT", oRider); + HORSE_SupportIncreaseSpeed(oRider, OBJECT_INVALID); + HORSE_SupportAdjustMountedArcheryPenalty(oRider); + HORSE_SupportApplyACBonus(oRider, oHorse); + HORSE_SupportApplyHPBonus(oRider, oHorse); + DelayCommand(0.5, HORSE_SupportApplyMountedSkillDecreases(oRider)); + SetLocalInt(oRider, "bX3_HORSE_MODIFIERS", TRUE); + HORSE_SupportMonitorPaladinUnsummon(oRider); + if (GetStringLength(sScript) > 0) ExecuteScript(sScript, oRider); + +} diff --git a/_removed/x3_s2_pdk_fear.ncs b/_removed/x3_s2_pdk_fear.ncs new file mode 100644 index 0000000000000000000000000000000000000000..1141644de7aae4df3f853238178d1bf413ecf6fd GIT binary patch literal 12645 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 literal 0 HcmV?d00001 diff --git a/_removed/x3_s2_pdk_fear.nss b/_removed/x3_s2_pdk_fear.nss new file mode 100644 index 0000000..b054a37 --- /dev/null +++ b/_removed/x3_s2_pdk_fear.nss @@ -0,0 +1,79 @@ +//:://///////////////////////////////////////////// +//:: Purple Dragon Knight - Fear ability +//:: x3_s2_pdk_fear.nss +//::////////////////////////////////////////////// +//:: Identical to the Fear Spell, except it uses +//:: the PDK's character level +//::////////////////////////////////////////////// +//:: Created By: Stratovarius +//:: Created On: Sept 22, 2005 +//::////////////////////////////////////////////// + +#include "70_inc_spells" +#include "x0_i0_spells" +#include "x2_inc_spellhook" + +void main() +{ +/* ----------------------------------------------------------------- +Spellcast Hook Code +Added 2003-06-20 by Georg +If you want to make changes to all spells, +check x2_inc_spellhook.nss to find out more */ + + if (!X2PreSpellCastCode()) + { +// If code within the PreSpellCastHook (i.e. UMD) +// reports FALSE, do not run this spell + return; + } +// End - Spell Cast Hook ------------------------------------------- + + // Declare/assign major variables + spellsDeclareMajorVariables(); + int nDamage;// Will hold damage value + float fDelay;// For delay value + int nCasterLevel = GetHitDice(spell.Caster);// Character level for caster level + float fDuration = RoundsToSeconds(nCasterLevel);// Determine duration based on level +// effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); //invalid vfx + effect eFear = EffectFrightened();// Get Frightened effect + effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);// Get VFX + effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20);// Get VFX + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);// Get VFX + + // Link the fear and mind effects + effect eLink = EffectLinkEffects(eFear, eMind); + eLink = EffectLinkEffects(eLink, eDur); + + // Apply Impact + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, spell.Loc); + + // Get first target in the spell cone + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, spell.Loc, TRUE); + + // Keep processing targets until no valid ones left + int nDC = 5 + nCasterLevel/2 + GetAbilityModifier(ABILITY_STRENGTH, spell.Caster); + while(GetIsObjectValid(oTarget)) + { + if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, spell.Caster)) + { + fDelay = GetRandomDelay(); + + // Cause the SpellCastAt event to be triggered on oTarget + SignalEvent(oTarget, EventSpellCastAt(spell.Caster, SPELL_FEAR));//direct ID here, well ok seems like intend + + // Make SR Check + if(!MyResistSpell(spell.Caster, oTarget, fDelay)) + { + //Make a will save + if(!MySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, spell.Caster, fDelay)) + { + //Apply the linked effects and the VFX impact + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration)); + } + } + } + //Get next target in the spell cone + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, spell.Loc, TRUE); + } +} diff --git a/_removed/x3_s2_pdk_inspir.ncs b/_removed/x3_s2_pdk_inspir.ncs new file mode 100644 index 0000000000000000000000000000000000000000..77dfdaeb92b48abf2982ce93802fe53f3bf7cead GIT binary patch literal 1209 zcmcIjJ4+l<6h8McvjG)Ef{mz`H7PVIE?C%!T39Ht5XCCXMza#|vG`i;^e0&BFR&IQ zKR~olyL4MvSSnapY$0yW{m#r}Mq(pmhrKiRobNoo@7()!V%E(U28YIp?5{53-v>uJ z#A9^)$iB@6)V@|NE|yj+rJu`d#ij4Xr61+e_R1D}+Fp5fD}_En#?~*?L5)V^k~13{ z`XbiwlJ{P7-0clLu&BhVW;ms8F`XV#P0U0=Kx#?@9T>$~>tsJV>?NxXh;{^^VD^Sx z4eT>Re9RMZcDhKT46ugH+vcBG6$OIIb6lG78!GEc^>V}R(`@O-s5D}DBkBIe=n7)2 z^{S+JgPh(Jr&o{ovu68S`D=v#&MQSjZ^W&?j&o$~==9Y!+jBY!l9ICe3L;<B1OtC7 zYsXwPJTKsW7%Rn_KII3g&b7$LV*x1)S)Jt*Q88{8p?DBLwfLi;4)Z2-$Wn+Civmq~ zL{$^EpTM?P8jojzH%lsFa!WM}n&ontH#wQZE%e`0nV>ruH-xZ4Bnq4iMC@ZUyB?Bx ze&(L3LplUNj@7-+fdsAm$9BO{I(_f-4nmwk9+aHHPQIfr!}zW_N->@jvH0>Z{RNDf tzQHf16Y(?qCLu1@QLe>(l)er@CsR7j3m{X!aU{b-XW7tZ=@M(*(H~A^3w;0p literal 0 HcmV?d00001 diff --git a/_removed/x3_s2_pdk_inspir.nss b/_removed/x3_s2_pdk_inspir.nss new file mode 100644 index 0000000..d90c439 --- /dev/null +++ b/_removed/x3_s2_pdk_inspir.nss @@ -0,0 +1,75 @@ +//:://///////////////////////////////////////////// +//:: Purple Dragon Knight - Inspire Courage +//:: x3_s2_pdk_inspir.nss +//::////////////////////////////////////////////// +//:: Increase attack, damage, saving throws to +//:: friends in area of spell +//::////////////////////////////////////////////// +//:: Created By: Stratovarius +//:: Created On: Sept 22, 2005 +//::////////////////////////////////////////////// +/* + Modified By : gaoneng erick + Modified On : may 6, 2006 + added custom vfx +*/ + +#include "x0_i0_spells" + +void main() +{ + if (GetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF)) + { + // Not useable when silenced. Floating text to user + FloatingTextStrRefOnCreature(85764,OBJECT_SELF); + return; + } + + //Declare major variables + int nChr = GetAbilityModifier(ABILITY_CHARISMA,OBJECT_SELF); + int nDuration = 5+ nChr; + effect eAttack = EffectAttackIncrease(2);// Attack effect increased + effect eDamage = EffectDamageIncrease(DAMAGE_BONUS_2, DAMAGE_TYPE_BLUDGEONING);// Increased damage effect + effect eLink = EffectLinkEffects(eAttack, eDamage);// link effects + + effect eSave = EffectSavingThrowIncrease(SAVING_THROW_WILL, 3, SAVING_THROW_TYPE_MIND_SPELLS);// Saving throw increase + eLink = EffectLinkEffects(eLink, eSave);// link in saving throw + eLink = ExtraordinaryEffect(eLink);// make effects ExtraOrdinary + + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);// Get VFX + eLink = EffectLinkEffects(eLink, eDur);// link VFXs + + effect eImpact = EffectVisualEffect(VFX_IMP_PDK_GENERIC_HEAD_HIT);// Get VFX + + // Apply effect at location + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PDK_INSPIRE_COURAGE), OBJECT_SELF); + DelayCommand(0.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PDK_GENERIC_PULSE), OBJECT_SELF)); + + // Get first target + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + + // Keep processing while oTarget is valid + while(GetIsObjectValid(oTarget)) + { + // * GZ Oct 2003: If we are silenced, we can not benefit from bard song + if (!GetHasEffect(EFFECT_TYPE_SILENCE,oTarget) && !GetHasEffect(EFFECT_TYPE_DEAF,oTarget)) + { + if(oTarget == OBJECT_SELF) + { + // oTarget is caster, apply effects + DelayCommand(0.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oTarget)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(eLink), oTarget, RoundsToSeconds(nDuration)); + + } + else if(GetIsNeutral(oTarget) || GetIsFriend(oTarget)) + { + // oTarget is a friend, apply effects + DelayCommand(0.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oTarget)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + } + } + + // Get next object in the sphere + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + } +} diff --git a/_removed/x3_s2_pdk_rally.ncs b/_removed/x3_s2_pdk_rally.ncs new file mode 100644 index 0000000000000000000000000000000000000000..d7546be7041617496972f443aa6c38d6e953d59f GIT binary patch literal 1083 zcmbVLJ4*vW5T4!JTm%h>h#<a}h=otIQ!GR+EEFw*!O9RH5y3|cK0B@a5!N=={s%48 z&d$QZ!a_mNB0@0Eesg!kpp7}Qx&3D5o0)GWvy&;C9vT>&ATp!v#Ge{V+Q;MR@R56i ziBZ$mL1sC-na{4TZDm%LGApaO?B2#MTN<h?hxwr%0%LtIwNSZSzGi06_%4a@_((dd z*WTfPP9Q3>syU|A39pT9`ZI!wVlh(FTD(2QtVJ@77I$IQF`|8OXy(^*1+Nkto%aVZ zFJ0*n<V!)RfCp8UD!A_0d>Q%vAV3VWRmbQ&VvKQJRn(2*^o|%^_r$LcrmvpghWXp- zI;Fus;<l^fEEzL4b92jhTn9mtQcjma1)V@~cDz@{jN3qbC&RH{Aw!RHgHWg11IV%> z979q^NkLggjLQaIEC9R`Zj>sO^n45Zdq^w_)Fy$B0DZy;j$|&J2H-Qmf|RVdwg&@2 zF8Tuz!=l*q8cn2&vr>!XfP;+pMaQL#jYwV#wr)`><ihV;(1OeZy5@2@P7{|jf0c{A zrPBZEf8zh#yf*%qd=;=!kCwtJxs>^6iTSdCLD3@YJP?L1#LnH<O5;|l1N}>|q(w+D Zg)q@6UA6fxfB6id^h;=+>^jb(rEh(E?sNbE literal 0 HcmV?d00001 diff --git a/_removed/x3_s2_pdk_rally.nss b/_removed/x3_s2_pdk_rally.nss new file mode 100644 index 0000000..0f9ec5e --- /dev/null +++ b/_removed/x3_s2_pdk_rally.nss @@ -0,0 +1,69 @@ +//:://///////////////////////////////////////////// +//:: Purple Dragon Knight - Rallying Cry +//:: x3_s2_pdk_rally.nss +//::////////////////////////////////////////////// +//:: Increase attack & movement for friends in +//:: area of spell +//::////////////////////////////////////////////// +//:: Created By: Stratovarius +//:: Created On: Sept 22, 2005 +//::////////////////////////////////////////////// +/* + Modified By : gaoneng erick + Modified On : may 6, 2006 + added custom vfx +*/ + +#include "x0_i0_spells" + +void main() +{ + if (GetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF)) + { +// Not useable when silenced. Floating text to user + FloatingTextStrRefOnCreature(85764,OBJECT_SELF); + return; + } + + //Declare major variables + int nChr = GetAbilityModifier(ABILITY_CHARISMA,OBJECT_SELF); + int nDuration = 1+ nChr; + effect eAttack = EffectAttackIncrease(2);// Increase attack by 1 + effect eSpeed = EffectMovementSpeedIncrease(25);// Increase movement + effect eLink = EffectLinkEffects(eAttack, eSpeed);// Link effects + eLink = ExtraordinaryEffect(eLink);// Make effects ExtraOrdinary + + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);// Get VFX + eLink = EffectLinkEffects(eLink, eDur);// Link effects + + effect eImpact = EffectVisualEffect(VFX_IMP_PDK_GENERIC_HEAD_HIT);// Get VFX + + // Apply effect at a location + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PDK_RALLYING_CRY), OBJECT_SELF); + DelayCommand(0.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PDK_GENERIC_PULSE), OBJECT_SELF)); + + // Get first object in sphere + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + // Keep processing until oTarget is not valid + while(GetIsObjectValid(oTarget)) + { + // * GZ Oct 2003: If we are silenced, we can not benefit from bard song + if (!GetHasEffect(EFFECT_TYPE_SILENCE,oTarget) && !GetHasEffect(EFFECT_TYPE_DEAF,oTarget)) + { + if(oTarget == OBJECT_SELF) + { + // oTarget is caster, apply effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(eLink), oTarget, RoundsToSeconds(nDuration)); + + } + else if(GetIsNeutral(oTarget) || GetIsFriend(oTarget)) + { + // oTarget is a friend, apply effects + DelayCommand(0.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oTarget)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + } + } + // Get next object in the sphere + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF)); + } +} diff --git a/_removed/x3_s2_pdk_shield.ncs b/_removed/x3_s2_pdk_shield.ncs new file mode 100644 index 0000000000000000000000000000000000000000..18e30b0c86575001e04666d7685d1fd233745f79 GIT binary patch literal 483 zcmah`yGlec5S=`(tBtH+C+c9ihz~5ReH4PSEUXBY@ov!In!tS&_rLrcJGZd7g~j&Q znMA=A7E^>_&dfO{C&P;|-W?wtodbyX9iX#{pjWua01iPbs<h5vV|00aWsBhQ+rs3} z&Oa*Ab=@Zr1}ActH^y-qegHxS_o2qzcnp5pU|m|Qo?MCM!A)J&P&c<|un4uEWFXho z77*uro4CYHauLbqQKgl8>K`2+Dl~3_q-ec;VM%hjAo@oKW^B6O`(-_;l`6IPmIXcX zRmO&-vJuf%OYwY%5FtU(o7S4MSQsG2M3x3PQ?WeLS$yrO+V3+FolOn|2Fo`-ctfm7 Q`Z|4v@#}grX4xWq0bzW1*Z=?k literal 0 HcmV?d00001 diff --git a/_removed/x3_s2_pdk_shield.nss b/_removed/x3_s2_pdk_shield.nss new file mode 100644 index 0000000..ed4ea1f --- /dev/null +++ b/_removed/x3_s2_pdk_shield.nss @@ -0,0 +1,40 @@ +//:://///////////////////////////////////////////// +//:: Purple Dragon Knight - Heroic Shield +//:: x3_s2_pdk_shield.nss +//::////////////////////////////////////////////// +//:: Applies a temporary AC bonus to one ally +//::////////////////////////////////////////////// +//:: Created By: Stratovarius +//::////////////////////////////////////////////// +/* + Modified By : gaoneng erick + Modified On : may 6, 2006 + added custom vfx +*/ + + +void main() +{ + //Declare main variables. + object oPC = OBJECT_SELF; + object oTarget = GetSpellTargetObject(); + int nBonus = 4; + + if (GetLocalInt(oPC, "PDKHeroicTracking")) + { + FloatingTextStringOnCreature("You can only use this ability once a round", oPC, FALSE); + return; + } + if (!GetIsFriend(oTarget)) + { + FloatingTextStringOnCreature("You cannot aid an enemy using this ability", oPC, FALSE); + return; + } + + effect eAC = EffectACIncrease(nBonus); + effect eVFX = EffectVisualEffect(VFX_IMP_PDK_HEROIC_SHIELD); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAC, oTarget, RoundsToSeconds(2)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oTarget); + SetLocalInt(oPC, "PDKHeroicTracking", TRUE); + DelayCommand(10.0, DeleteLocalInt(oPC, "PDKHeroicTracking")); +} diff --git a/_removed/x3_s2_pdk_stand.ncs b/_removed/x3_s2_pdk_stand.ncs new file mode 100644 index 0000000000000000000000000000000000000000..96503286d6d8c9ece76e3b0bb239b062a79a0e0f GIT binary patch literal 805 zcmd5)u`UHs5S_U@yDKE3coNC;xFN52f}qq8N}`eQ1F|jAh>lj}6MTgD1_h-~sZczL zLZJ}r%-p@tu0*1=#oaq|=giERGdr8Res6hkX@e-~P7%H#Pm<{+;j%10NF;&LONsZL zx!x;R3fGovd3zsDi4HhI@UmJn=$KiP0of)^Y7o-X9RYal=Et-mzE(%i6%qYey637~ z2tTy&fXDSw(5<X(-`&H=-LJ5dpD;`P3ak}soJyCi0*65W`@kaWS7beqz;Tv+bEUZf z*J*8g!k*q@-=jYB>gSsX328@WEc$Z5ebTu1Y9uf)!}Mb=RIVr&MFArZl3+$KPD2|J z6bHu!vOG~b9`_~)dJKYC<=ch2@`wfSB^1CKbd_4Wwi*B<pzm^HM;HHrM?=UU?Vsd4 R&zcL`!J2-~+H9UYeF1UEvDyFt literal 0 HcmV?d00001 diff --git a/_removed/x3_s2_pdk_stand.nss b/_removed/x3_s2_pdk_stand.nss new file mode 100644 index 0000000..cc3f09c --- /dev/null +++ b/_removed/x3_s2_pdk_stand.nss @@ -0,0 +1,58 @@ +//:://///////////////////////////////////////////// +//:: Purple Dragon Knight - Final Stand +//:: x3_s2_pdk_stand.nss +//::////////////////////////////////////////////// +//:: Add temporary hitpoints to friends in spell +//:: sphere. +//::////////////////////////////////////////////// +//:: Created By: Stratovarius +//:: Created On: Sept 22, 2005 +//::////////////////////////////////////////////// +/* + Modified By : gaoneng erick + Modified On : may 6, 2006 + added custom vfx +*/ + + +void main() +{ + object oPDK = OBJECT_SELF; + int nCount = GetLevelByClass(CLASS_TYPE_PURPLE_DRAGON_KNIGHT, oPDK) + GetAbilityModifier(ABILITY_CHARISMA, oPDK); + + int nHP = d10(10); + effect eHP = EffectTemporaryHitpoints(nHP);// Increase hit points + eHP = ExtraordinaryEffect(eHP);// Make effect ExtraOrdinary + effect eVis = EffectVisualEffect(VFX_IMP_PDK_GENERIC_HEAD_HIT);// Get VFX + + DelayCommand(0.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PDK_GENERIC_PULSE), oPDK)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PDK_FINAL_STAND), oPDK); + + int nTargetsLeft = nCount;// Number of targets equals level + + // Declare the spell shape, size and the location. Capture the first target object in the shape. + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); + + // Cycle through the targets within the spell shape until you run out of targets. + while (GetIsObjectValid(oTarget) && nTargetsLeft > 0) + { + if(oTarget == OBJECT_SELF) + { + DelayCommand(0.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, RoundsToSeconds(nCount)); + // Every time you apply effects, count down remaining targets + nTargetsLeft -= 1; + + } + else if(GetIsNeutral(oTarget) || GetIsFriend(oTarget)) + { + DelayCommand(0.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oTarget, RoundsToSeconds(nCount)); + // Every time you apply effects, count down + nTargetsLeft -= 1; + } + + // Select the next target within the spell shape. + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); + } +} diff --git a/_removed/x3_s2_pdk_wrath.ncs b/_removed/x3_s2_pdk_wrath.ncs new file mode 100644 index 0000000000000000000000000000000000000000..8368628cd834b12f9180584677cba831893b6b04 GIT binary patch literal 766 zcma)4Jx{|h5Is8%LPBC-U_pSzhQ#MzfSm<V#DoHr5)ma*lT?J?#ZO`Az`)4Rfq{Xc zB0S&KG|)&igYCO}e(&zZC&#C@bGUbKM5Mnq2;ZV5v)~RP(LM#LuIo=SeqY+!bhVBN z+{W1tGA5+mi>$QQQJQ9jEuwy}Ti7Zq`*}CHwPhZsJzLzxxs9&kBrd9u^m4F9j(Z(E z`cWjk3ZzGxh0bP#c4md5)J92C&7rfx3S&aUbgzEecf)Llq|UXkv#egVvNxK57q~mn zoKjLo;z1JP$U7Wie^4j`ru3;ADwm@2I&pR67}bqd&T0f~%b0I@2yRay2wEWc3sVS! z76`ZQg%C6#Z#-2cjyz8qLsF*17%%byT5;%kE}Zv3{ln)Tl(SE8#^5NvqA~H+t$F~O Ur-|*%*gy_{A<Mr=o_uKO8#nXkJOBUy literal 0 HcmV?d00001 diff --git a/_removed/x3_s2_pdk_wrath.nss b/_removed/x3_s2_pdk_wrath.nss new file mode 100644 index 0000000..8ee17d4 --- /dev/null +++ b/_removed/x3_s2_pdk_wrath.nss @@ -0,0 +1,60 @@ +//:://///////////////////////////////////////////// +//:: Purple Dragon Knight - Oath of Wrath +//:: x3_s2_pdk_wrath.nss +//::////////////////////////////////////////////// +//:: Applies a temporary Attack, Save, Damage, Skill bonus vs +//:: monsters of the targets racial type +//::////////////////////////////////////////////// +//:: Created By: Stratovarius +//:: Created On: Sept 22, 2005 +//::////////////////////////////////////////////// +/* + Modified By : gaoneng erick + Modified On : may 6, 2006 + added custom vfx +*/ + + +void main() +{ + //Declare main variables. + object oPC = OBJECT_SELF; + object oTarget = GetSpellTargetObject();// Target + + if (oPC == oTarget) + { + FloatingTextStringOnCreature("You cannot target yourself using this ability", oPC, FALSE); + return; + } + if (GetIsFriend(oTarget)) + { + FloatingTextStringOnCreature("You cannot target an ally using this ability", oPC, FALSE); + return; + } + + int nRace = GetRacialType(oTarget);// Get race of target + int nClass = GetLevelByClass(CLASS_TYPE_PURPLE_DRAGON_KNIGHT, oPC); + int nDur = nClass * 2;// Duration + int nBonus = 2;// Bonus value + + effect eAttack = EffectAttackIncrease(nBonus);// Increase attack + effect eDamage = EffectDamageIncrease(DAMAGE_BONUS_2, DAMAGE_TYPE_BLUDGEONING);// Increase damage + effect eSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, nBonus);// Increase saving throws + effect eSkill = EffectSkillIncrease(SKILL_ALL_SKILLS, nBonus); // Increase skills + + // Create 'versis racial type' effects + eAttack = VersusRacialTypeEffect(eAttack, nRace); + eDamage = VersusRacialTypeEffect(eDamage, nRace); + eSave = VersusRacialTypeEffect(eSave, nRace); + eSkill = VersusRacialTypeEffect(eSkill, nRace); + + // Apply effects to caster + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAttack, oPC, RoundsToSeconds(nDur)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDamage, oPC, RoundsToSeconds(nDur)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSave, oPC, RoundsToSeconds(nDur)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSkill, oPC, RoundsToSeconds(nDur)); + + // apply fx + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PDK_OATH), oPC); + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PDK_WRATH), oTarget); +}