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
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

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#qzFNM76e&#5y?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
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
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
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
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
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
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
zcmd6sPiS047{F)Vd%O9w*<`axL##>qOwv$d6Sgs0Q4gj<1&cKxjm3l8Xi{6Mp`^C1
zdeN&OcoI<$JxC3bgNGc71gTKk9;ApU<Pb^@A|8rV@Q_1f{oeP@ynWxi*U2-sJR7>p
z`{tW(zTfwKGdpkQ=rb?+GY7^ihlJSk>41QL&AxE*_~$zMkDkk3PV_9iU43o#&9k$o
zUtg%sy;_}{KRJ8;jklnsY_!zQ9vBs9vGlNbP}J-78(`V>^1&dU3m=0)>%e<^0>KbU
zWY{WS0FzG9?GIFDNSqU5NxBj&Z3z#WTWgi-sd;c?e!eiI<$KW@K5e2_u{NQ#&YWH-
z3^n<|fU=AO&VfxKY3yzvzo*+#LHtQlP&lC!3cenMT(%67CmU1yOJM(T`0oWE!UwNA
zE}W|_)F!~`GtXBmk5*uSap{ArfdV`<IjFigChpp~qB<X(jCcMwou0m^MhwFa!N>{u
zl7s9bA})aV$!PL&AUNWLAqeu>>XeK>T|er(VNWhW_kIWCIE+SCAp(JsT(>WS6kiq|
z7R^?plY8>6oqCK;XcA1I$+;p=TrajRsn&f(UuA0<wH+LOJsdu8%0<~mg6vl&qrSf<
z$Zj)P1?}BovL=-M#bjM5gF2>A1clMnJqGSjfY9Hnm2M;hy72_Md;(oLPFH@+pnKU$
zH=F_8{*-i`ak|dq2Hi0$-CzcEqbcc1ak|pG2Hmuk&d-2uUrM@;I9<mV2Hg=W-9QF(
zBPr?H<8<xc8FYuObbT4n4JXj$P{!BHVw|qHVbD!k>2_y8H<*&HErHH4=$^9D^=3dv
zzs~&kE-80~I9=PYL3hwf*OLL=K+4>;#OVr$4Y~;{U3Ug_eJSah<8-a347xEZT~`Kl
zyHnE9?u_lkT0S)BU?+(?Gk80}jV<42mNTI1O-V<)Ge+0EY|sr^={hr@>q$vRD-EM-
zx@pkC@3kd&r3~o0Q_^{;$LR8R3_4izEp#0_q@%Z;oxK6k{*nJ85DEV^r#CN7S2pN&
zS?St$NGCC_oQ`Dt{f=b({Vs`)NH`rukkREP4LVpiEV(PBprcXv+v|U!qm`cLj>g!Q
z&YLmlp!O_u&HocRfwjQtD1t0^Zq1-;v(n`aI<m-59`1GSh=k`ZC7tt`LDyoXbMG@9
zdClitS~}8Wxs$5~9c0H+nNA8i%IEg;j=bTk$~~qNw+uSSj)hK!beHgqDXB7(=*Vln
zX5MEyq*zvGdFFh3pmBI8zrw>qI_h&~2@8%-=Nc!<!AYMi_<P|?{G_8pXM#$)!KAK|
z{=uZ4l5R0+j-;}cN%KldJ4M(x;%H4uI>L0Dm2{FxTa@$=leQ}9bZ}xQ7qAW16@pd=
ztZUIzMfn`+K&>*Ja4kYR<PT(*>4f!-I&>lowaj$FiU@SXEgTDGF4GC?A9cP(9awRh
zPPlHN&L^k?vzY0Gt2F8?qK@|2QS8iTaTIm5&svB3Jc>HnXRX71&Z`6KppNi{L+*kC
zTTzGUXaIr^q6@UDU)C8Q|4{)V4hl6=Sk(&HbOmgxgI`d&PLT!@>@C!-#WX!>TlnOH
z`gz)ZBwK_KqD8)wL>oGCN%r;FaAlzFgO3yh?0i*uY_YGSo@8H-?KJFz#fbeI+uPR}
z)Ak=i$3P0J!4tHEft83&D6x1zOHGlmg3I90ISS|xtn-iCJETimJ46#tOY7iPm68v(
zB5wU`wM^dO=S}c!g=%9<^#S7`yiR7}fy_qwT*W>S!S^J<D=At+LGTN$l-kwcu4>Jr
zYb*AN%cwGjmwnjR^QL?O4h2&K1n=iD5m1ltut<pr=R+e$x(Q+)2?l^cuTdGiWjl|c
zHi!b-5^B-e;|#i5h%e%O_(WB>34Y58XwWZ#yyTEBw4!r(DJg$5Eci-G!xw|AOL--<
zazc+s(JBn$xJxJn-}N_mt>!HuC~z1%LU$4A-U*|Po%O)MTw5o5YeuDxqhez3Z<H$a
zrm=8&TpClCeAt&Fbepc_KBA=R2K)|ZQ^Sidquzo6)YCIJ;_Z5(w~4)1n76F9s3KEU
z*axvgje7m>YsmhwFEkc_91C{<@NgW9O1y&Yl%%i2Ocdx=*T+JknuUm<$xRIBv)B!C
c1(s$=A<S)ma0UK3cIBHp>e@zGA!EMy2X8?uCjbBd

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
zcmc&)dyG`o89(>V>;k*Xqqrb~z_74rQ409NC_;wa3rwAzB{RdLt#()!(A5>lg81kw
zO&_6&Ngo=m)h3!WH71SGXq!IMCbeQ3O#K4`q{Q0BCN$be3{9v7w!icH&UfdYyO$+a
zO(pKk{m%D(o$s7Gm7ZE*^NLR`Uu(?r=jIvwH?d&CR{qO{`cIyx=UdFoUH3Ky2kzc8
zFm(H_#`fD9+js07xMz4DR;H&`?%T6si6O^nSC~0wbaeC;aL!psesWiCzLnK67k_eR
z348Ri066cMJU<T`und-mMC;DyEH)QTm^_|>Z#~^&!pS+(|Ax!ZRXOA=r&A_x`A#ke
z_UW|AQ-?Fciho~gG3LdPL~oI+F=2aw5*LvLh=>@@ERYFU3KJ(vbODtLwgRVCEQeed
zDFd#+7=8jDB2UG7;^Avyn9JuuAl9k*z_h$({6ZWR9&Sps@GBn{?qIMpP*pn%6mndZ
zzPQj?AX=OKgbzmDb1Vwv`@#gL&VusN&&hO0*q=b+(n*tVit9{yCxNVvL9l)mbQYQ+
zq7~a54_HkagOJ}GrnThKG%Vei<JT~0m>*nKTR$g@L1#>!QC$IFx0s8zUezc!O0`C*
z($inv*k6r`W!2NFwY04(*GjvCRq)Wm$-FbBRZ*eP^c)3&eK+XLLM~}iNa$f25hqAq
z&4(jKjjy!LVROY&qrCVjsd6y%QN>IA`zNUOq6E)aK(LwswVa=b5`YIok28{(K%X;F
zkUChpKh~T;;8S3LrQ_~v($GoIvJzPsCuz%qrPRm>AMr;J-Q7exMdZ^3D{dO2Q7+c%
zjcQciT&(6>tv}$jNuhiNQpd{WjlFwz3=iM2d-q+?V`4ZSrMY_CWiVEUbmiy;t?ScN
zze8#q+EJ6mwtc_|fkOB)Ll7dXpx|c$g1-f%{sDG9AU0g9*yatvR;g!zby`4&6Ii<i
zbhHTy-xJWA3ZfVYrJ_MQtbwYU>~mBJMz0GF-4eF?^>8h`IDh4e#>Qef>O%ygYNOcO
zTWj>l_j0s3Dnq&V5DoZLYQp@De4&F%lk8|OblbRH??ERyXsj7=+Z>eL-#jS#L6s@R
zk-?gca(Vx7-|p>zOc)#<*t>VfUZl>;IVf>LQVPz@FpiSrZ0$hzQ;2OCeiS4Y$#5qE
z2bWW)FHey!FrpSiqxOv>Lw661++VzHXgIAPiCQSs?i?*9SF2as7qayfxR_P>hg{`5
zlHO>mM-upTN|hh;NqYJ#9!aWckYuM%vZYk>Nb(s{uJ%bvmAWIDO<SaNptX38ur>{g
zdW>1;x;$z~0|Kz^^Nb0+EgbmwG@?8tX^uTP5ftfVOJui0jx*b4QI2ljqwR$Wae`;8
zo2gh&MuYNWG4#_DOQqc_&!9c#NXoftA?<C4A#+2!UC=UB>n2aF{J1PGiCH+^#JedM
z$RtL#alLnRS&f3lNVM6dderBYZKHp4RIQeJBc*{~ua?B{yA*0En?YZHZ)sgAs(K94
zbp+CBl-=7ij>Ndrkrx7<BpXjooEspxm~#4}da<v#zBHb=I45mH!$(|1(XkjaWC{It
zD|mL-Hby<AV!2UVTPm08pBcx6vLTP-!tr@|Rw}OyZ_Y_;ly<DrdK=f7gk!Tfj3+(m
z<F2&y^SIkn!gF_U88-hGW0feEKa4xGIE-fo^4K+^7V`;_{()WBq#I9C(qXei(g$*r
zHbG{ikv+y-s!)HQA`}kJzy;LrpW1>laM76jUdMc~rEd>b!Bpvr(s@$z3Y~gNhar`L
zZgOWp;%V;0G(Vo(CZ@J5wG1@J{PsPYOYH2y8arPe3#17K-^7j|7?ma#IYF|Mij26G
z*-8&0w_(9rvCE@KH9t~Zl%mk%pU99M&XZyO%JjY*LsM--f3+S}qTWXDrfRWX>aR5V
z*EM=ewc^@x)QHxti+buc*yN@s&lc<|-OxBSEkQb=w|cla2VKwo>2q8|L#4MAk!0uf
zrW~_P(x`ZNCDT@^9QjMgw*S>kIvy%>vrG;O@g6{(k-ThRs)sjuQxBXD)H;~@pd=go
zM#f@_OjF9@j8(j~D!HOwQWlyIbX3KIs@K2gL9uBQ_Z1K7Vv*l%WwlJ^8szg+()jiG
zY(et5Ttd54RM_&9(A()HlVkT-&iNM<-Q(;oO~m*NGBbw<uOR$`N<|gDDhe@Uf*%EA
z+^6HuDVlT<DKpb+Rf6ds<2ok4`CI}g%ra|a2`0C9wPM~%!~+OT9zoMng5u>&$~rKf
zxpjGCeWO?|_itg(t=0QCY^v7bPgh{%f}=$u^HNR1SEZ?|Mi702#M7uHpv|$4@EL4M
z<PuIPxZ}`HBI|MJur-^==a14g&89=zCXH*r{?<;Mcne6+lDY~%EQxExsrGFy9(7&^
z3z+=6yD}Ju&#?p_a)4i$%-wu~y8L941V`NcksZCqcpfOyQ#?hm?Ld(ua<!Lq6P%c6
zLH|x1Ke$VIwJ)LdDGoY{apE~9G(LxKI1Z>~wfy{%-^$yhMYzAHZ7J1zHZ-CNTYqI^
zPovl$HEep?ge^rid#x1wmYJh1EE(%q37Y?otwi&jd~c>4Iudo+rrzf#>Z~I^U2}bL
zD7R92f)PvbG!J*M??2xvmvwli0G54lDMhYK`HvmVye)xB>Kn(EWN!DMI+A2-0=bb$
zX(r7O(P8N+ic8jeJ$gPUrmLt;^!I|Mzxy_o>!rqqr~=<xhxZkGD^ZQkHf|sA+Cl2{
zO&Q2-mK*#?e~jITF#9NGv)TA1nsh_KT^j+nIU&K~**Y0iqgn}<U2Z_$5cS+l_ADnH
z(Nq>IuFNMmRiTXVHDEUnH)7W2()tQ6Fda8xU99v(O-*eNCY4m0_`tJvQX9D=+WGt%
zWZsko#9!2e-gM~Dt1}jO8}=F1NI$9XkD*yNG!sR{ME>n7R_d6F*7rxX#=26qmgw7E
z@g*w74v-;2&uSS&sx0??GKUDTfC$eJA$9EcQA!TQdP21okGM*K>y@W1)QRq<E7(s7
zSTv^a2t4|3tOy=%lrGseLwGXr&6?EJi;6oR{^}Gy+}FBl@bPo!R*Ps=3-o8h&V^WR
zU$ty-bz#-ut6w>{x^p4dA(~4;0Ux$gipJlk#$3r;qRxd3Ah4O}egLJ^_QwX2u}n1k
z!z-tO=k@r178Cs{d0#;kjT1$h|3IYPN#pDByel1YHxp#55R<+B(|SNu(o+dpOF`6e
zEWo`d?ZU~OE4oi(KgP|gUVgehV$FWiULUUrtT#)$b`9*?VZZVIIB}CmmUy$n&!8Db
zih!3oq-@rzGH&{kgBsT9O}NPSrr#J6YxF_*&mfGa3!8)Ce2JI}ktcWW_-9cK2Dz6!
zn)G^T>?9eWjLQ^0L5{olgl_I&Hz<t!_{UMbd`wiaLyIE(`#u!NiYoVUjjH6_|FKFA
z+im3oRSDf?yIyj-m~Nj6kJ2R__Iu|)!1i4!z6;mUQEqOjI-;Y3{b3>-kiv`xv?lZ|
zD=_y}!LZ+h1I<x{3L@rI7?f;Yv-pG}(N)R+V56F)pDDU7!nJNYo4GRCpJ?G2<uIdw
za(Y=NuDE^V^Q#sfk(~qM3sF@Wlq}yA;bnvnVWDZ6dA4bpN|@@~COT?pvUI$Ylu$-F
zI6GjM)z%#TD6}PSG%EcB-)E#l(o$=ln=fR;QFWv+wg@WX#Rw^?)FPN7$WmExAzsO>
z`(&cMBAqB)J&V59?5bGA;{=yhOqzMlwJKEaGm=83Nq=-g%`+*Xdiwt^RfjV&#tK3c
zV+CxH43TW+-*d3;#pdSop}a#?;FYmOXXJI?35rk5dQ`zW_;HCNf=f^fL0Fi~`{+`o
zQ7x_CP^SQ7ELN|Jb0qafZW&fPl&T!96C!R59#N~!V7G^nFFL#$z}lBB1WA!PpkA!l
zpg$HQUrUhe2FPzK_4RG4M2&iXgUDb4<XZwaOCa0vi1(+iC%R2_u{_gzdRXBxrGvk~
z2xg^H;I8IQ-Hkjq(yW{dgIkjCX{ebuumw+XV7rj$_5&=JANrz$pN=c~lBDPi)&8Db
zr)vHU4&8-`)G1dupI_SE<_gAF3@>yv+(v#c*dTCnuT+ZlNN-JJpU;r<83ai|kXVxs
zZ?MQ@mvCo1VoWfeWEuD1WqK{mS4ReWb~ry4#vt;9ybS4s((S^f;Nb=<)sCOqb@cu2
zcRZ-R3x2?Z>h0UtJ*c~9GY@)Dv`~iZArCsiK_By=tq%GWljN7sc;c3!2O72ABZI!z
zxc&ocQP1#>k)f>BFJiT&cjTU-?HQyEEauk^jAX6#Shm%HUAONT$)N1U>V%C0!voug
zc4aIlkJY*v+dS|`SrYo;vSENuOYmQZoDcwE+RUVjgo)``=#qG=Iu4b8LiSC_OT_=U
zBVR^D<eOwYey5Y2$}4k1?2cE+d`l3%!Lp_zQa5-}fIT!;o;%o0uACi_DW-{}h5JMk
zQ$+WYNX=r-NQZ$XR+V6Y2;RY1F8e*c=D8H#`_sy#j&IDRFQka>yMQv`txlP7^lc>d
zP2R-B`f6zS3Fx%sp<jY}*ah`Xt7hw`iD_pnBvfq>KdiC8XGorsh~PYCp7g9>5M{T4
zEYJn`1wux{e$9zIZbh~np?^N>{G+kJtDeLWe=O%H=A7)dKIbpV@7vUPt5DJVeM9Q%
z$0`zRaf&z#dOU*E{78buK0&WXkd+Gm@(Ex`BKxxv?j@gKvqzAT`Q{;?pyUy>jIA$o
zn@`~XaHKVZV1-ZM{|01&PeA`8&G>o7bqz@qK+#@gD4`R6Pb8hL6*+4}K`Q`hJfa}-
zc(fx5ng^}~ytI=zA987T)P^m$jcHeNcG$Gb9NvWQ4RRZ0+fUZ8rbzfbMr$a?Z|#TE
zWp55;cY+Eu@FcZ;T(SeGiMEQogCR@!N+#?fHbLR``0WbDhe27FF$8V`$lV6ufsOcD
zx7GPSy{b6qK@A3RuM=p%VLEuKDKr<_>ykG9{HnBT`;PnYG-YVd$R7FK-Qe!M`yko<
z2#aKJg**Lxp3lE?@xG3N$SpN%!Y9c<{+f>~bAr!I`nhw^ORTr2892G9I_mrh7vgtS
zVc`1P$0b@08((euCwxPKf`t8etv1io>g4WEo5LMrTGHs~+2e_P0@@;56DI{W7uWq~
z2Wi18&CuAIv4Kv7=CB`{my)58nnHNV_Yl>SL(^-7B;M3Alx^s~Tkx}Hbsm8_e@YL}
z>V22;<t4U>jGhA1lpC1eEY*aA6Xo+2hC9Zc7Tc3o_Q7A|rdGyqR2VsF@#svs-Gk~>
zdWQ$qsdU(b>YL&{9<;@k-#)tQ0GrimS_WH0Nv>d$M?}tKtklJC87nt%MYaQ<n|N2|
zDt{%JPq3X_FYG{g3(1o8gX#8#YA(CEv?rjWNfgE3PsFWRv`S5uv|c7kjS0!o*{K{F
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
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

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
zcmdT~3vAVA761PKdvAfZtX%_Zd5vocGvewf&kn~zfsR)CqK_5k;-%2?n4>h%O{R-+
zzM>}6ICVZSq#)an`B=h3qhsr6Rh%PW(j{ohM1}?zqtn!+F-_|E&N<(`|MUNUz5jd3
zZQ>wl`~RKuo!581^F13kw8kH-{Ls?%O0E3voeKU<kE>`*-O=-j#Lmury`6h^_awS@
zB)YnHbw2iJA5cnsltaChZXW)RxaL27mn=~zvG{{(o|>4LxDZz{rN;D+dsH-{mEq5J
z08YEnyd<zFrkoDfEp{WIZ~oThiN>ZxYi)INO>1r418s@c=9>EY#D?0M4V$6mzqP#O
zZh2&(ZvWGW1DgJ>U5Mm6_%W`cs3uYnU#wXg1sY?tN}zd+mJ4(`qlF8!ocob>Q>#*c
za8Ua~@(KwzP_1*OC#Kw)5e&c$-R`cn`1iPJ?bYCZku|(5&>t{*QJ}{Obv`E0=NSE`
zKz~T6`x$}$n9;8b^i4*O33P<fQv&@nqeI#=_b=#v4C0|2{iplPthl55<C=<+)5!J;
zbqBI}r71<yl<W(K(fb6i%ji1ni$+w}kIF{8%G3&^Ja3`QMal_D@t9dURc0QMD$xNl
z^QeVFW*(E2l$lQNRGImLROvDEl!ZcOo|Tl8nd-M5GcoWdZMmV2`Pl}nY@hP84O-dS
z{A^dPY!!aC>sGcratG58hP^i(-Dh|p^a=DEj2;r`HyM3Wpx<It4$)^B{k-7qXY@+~
zeV)-*1bTweQGp&IG_pjXM;YBN&|{1~E6^7heM6w97`-gevy2W4^dzHK1o|SOQ5mxz
zF?w3?4lw$zKwo22dVHSHScTvnWVBMCLyWEz=&u;PSD;rJT`SPH7=2uze`1toDV~_z
z>x|0M`Zl9K6B2GP`b#|=W0x>-SK*)=^_IQZ8KkVVP!1!d%0hVxDJv|L-AGw&p){a%
z@A4E|P!z{`Fpm891^Lzd3YzmfgR~e;*LGReLH?wy9YI?3Od7k^2l<n-wg+j^y+T%z
z@NsRBKPhWxkQQB#M%Mj7{-ms~AT9FyG_uwN`IEA`gS5yOu*cR}C?7}4Mhj&NQfe%e
z)xxsdIb!X!#Dm4%E?gey`QDQ*9}Wsin*4x;wgplN*Nl@1+-qrM^6!x#&3(#h^<C&?
zi-ms+PKo85(R(Z$_oR{78sv8-gv8wzj;m<RW(#F7eK0-}Y?6#_Ly+e5p`v;V<sqch
zS}5y~vdKcBAl6wZh3U<14>n1f{h)<*F1@&|mL?`8wpnOB=uwA-LQ9K}S}1F<&BGQ7
zmBoiF6kb}m5lomd71bN3xwH8jN;`gU=Wi&H`28Ys!!%-k<7ldY4N2+h%0zQh{kDdt
zmgd?-Lru%3nnZO=Lo2MgdB2nwr%0i(dJA*dy90Clz%)NF-4D$019^VH^#l2SAmRt~
z-cA^%Hy4Lp<1c(Hp`91aLl6om1{2AB-(rZODw9#1b9ow7ow*nQ2YUk|PK!I{9Z*q>
z<=y=K2FKX+1eN_{E3{{b+Z^IHmwjz!ST#XkVr!N>=WQz&PzBdH$%V8Ftp6R>KkRGs
zW!Z+guK2iU(n@;9T(GAS`hEU07i{wcSE*H_Svs@FW&g5r!S>lJtL%4@3u(|RqL*OX
zFWP)tw!u_a$nkSbluIr$oHm`0Bwm#%bsMG03W4ezZl?T$X7KSFn~axvJyg#V+*wkM
zKbJv<zMf73oEQ9uth8%Lja%mu$Xe=R49c`{=MoWhbtwCqhw-AH@uG)uSBg;;VAD4}
z2pz_t>2qdcNJ?I{lkX&QUKvL01jRtFZqdN+o4{*P#nVt=1b@zgFdo!H-x^EkDo+bq
zIB4e37JRxCLmj%1JT|EgV=Jt=(N;Qsk($X?T?aGOJQH{y*9nu(FSQ03hIPG7%LSPY
zeVUCguv0)^XxC=*Mc2~Y`a)Jxq%w;*?4Hod^OI&rK^9hO-tdTLZY4*JN3%|!LzDKW
z$syR|<uLBI=h!1-CG4EvGjZ1oiSW3?t{*-6$E2B*P1PvMaokNNQT<Bqk>-uA8{qn-
zd5?!?9h`22WL+`HnTpXKQj_$Krtqs~tA<r<5lluMF8(=>ri|EMty9J$lXhh`&d}+9
zX5}b+0?4Ll>d7L!9902VrV~ImzJyNzdi|1VO6cW%xGz*%sc$ojc=!aMcN&>msd;m0
zr5UyqcRdQj3sLw4kWJhRbL>&(6F@dgoy;;l^X!mu*YOIEd-w#P`!CZ>(tFdX$RwHo
z(t9K)0L`0=2_Tz=R5qhMq$cSJAn)l4+R>QoGn<0RD||MiKAU<IUg5J@Cg{Ei&yrQZ
zm1%{~#+UF4pH0T=nJwHG8pC{k3oXJoRpAw0M={fJnOVd$w^CLby$=hoG~pFKo4D%*
z-c-are2M@66Zgz!*6<3i`!CZ>%5}b*Oro)o-XmGzHE%8|yw0Sl@IITGG*}SFRXZG`
zEr!ak=rHIw9|jE-#HXdB!xd|ajvJcy+0UBti{g2-<5}k2B$zWF*kQb?qiQ`<F_RG7
zN~4Oqg#<XCQ_rP4j{*7tIyFun943#LW;oHP_L_`FxvUKiZ<HE=jh&DD5+5#TYk{m!
zc{Jx(@@`9w(xm{%0sM2`Q+f@E({X)T0Du-kXW*lF&e=f6jgWNcZ@FYZD+lOGA@(qS
z!TBX}(p3*l-Cz;Y;Fw#V5yqC0t%w;K9NHr74h!uj(W3t~`cT79ESwjZ^Rk5oN4{D^
z^t6Qr2kuDwj)gYNv?ndJD@@yNp^Y$Yqw(DnK^d28%sCf&rCeOUw6;}m*qo?dUsqq(
zwk@%~sj<Da#&Z*c5@(@&7&I8aQvB+tuY#F)HPIg@eZT`6@*27i?C$P>zh?CAfAooc
z`w#T)frH~;>&44Wsz6R^B;qkQ+%%w|F}!3fr27u~X%SsLb)xHXE*ggW)5%L8-HQ%f
zEt`lghI~=8@r#DTgu^#Laq4hOblOd0Fg3rUyR&zHPuml{-P-USod>)3_I2+&=nFU8
z7gz-O!ps*XXouUCG#Nzgq<gHFjADRNx8w%IRG}vXFyw&cEuL%&Of_sWtnmI3ZYK2O
zJ5WZwj3hHuAshIDW4^(K`QwNJ7ifV816mL?B|!`HYtA}k0O3f3(T%iGPjZbRGL}j%
z$jx?-&uT0AybUEmUPCul5*_q%ah_+0MjZ(0pn8TOP;d(zG_Icv6$TJ{hym&(832A+
z4ZwgH1F#!2Hvm0^3rph>_NFH>fkbnfQ)E~m__i$hn}>cYSwat3Kg*jk@Ci+!+`%xJ
zJ5+QRJ~$Tdr|Ao|0||da5O5g51m<=|vHL#&$9*`@rC~%8>awR-v8M+|<0|>I7@rtp
zV<@=x@I?NIbPP8PBJ)9mo!(EWa)Hhx)EU&~NBWS4wwW;m&XPST5{x||!)3{z6evUv
z>(5sNY91YbPoNRzJt<JAWGLYm0)^~E^mPpQJ4k~uh`-?)l;1DHd`xB|*AP+x^Kn5S
zJzPhSIuhWzBDm;v9<=nyf_5HREl7oyKCWTGMe8qfd7HA{)Rb|w-uwCz`UWL}97us3
zu4Zt~A@rW^w%Ig=gmfEog>)Npg>)Npg>)Npg>)NpW!G)W+pk~-^rvmQ8DD5ph=wuG
zU2UE^W6}(whdhPMQ$k;uM7N<7!vU*&cMmO>sd@>jc>rM30fvU?FdVSUwCI2sh57;g
z8=}K-z@pEh!%)-t0Wk~FVK`t@V$orWe>xp7phI*R4&C{pKd_Wsqk;l+KrFBq#0~=^
z@b@?=a*uLt6qVTJ7te}rnhh_%Vs`R{1b&(9Q2jEz{I=N<Roi`yv^m#xg1KwJhsdfb
zdS08HHPHX$!UDhYOXIWRz+AF*Sz=R1UH!(^+U7)kT|-@40!`6na1r?nE1uO6EO8?w
zogU(*lODSj>7Slb>Dt*Ti;Oyt((hd^*RYnjM{Xf9s!L0+TDmk;`mMy>R6tB~S~HKw
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);
+}