diff --git a/_module/ifo/module.ifo.json b/_module/ifo/module.ifo.json index 2328fba..6fc2d3f 100644 --- a/_module/ifo/module.ifo.json +++ b/_module/ifo/module.ifo.json @@ -848,7 +848,7 @@ }, "Mod_CustomTlk": { "type": "cexostring", - "value": "prc4_cep31_mrg" + "value": "prc8_cep31_mg" }, "Mod_CutSceneList": { "type": "list", @@ -865,7 +865,7 @@ "Mod_Description": { "type": "cexolocstring", "value": { - "0": "The Underworld 2\nCreated By: Guile / Genisys\nCreated On 4/17/07 to 8/29/10\n\nDiscord @ PRC Presents Channels & Player Resource Consortium \n" + "0": "The Underworld 2\nCreated By: Guile / Genisys\nCreated On 4/17/07 to 8/29/10\n\nDiscord @ PRC Presents Channels" } }, "Mod_DuskHour": { @@ -1040,13 +1040,6 @@ "value": "cep3_portraits" } }, - { - "__struct_id": 8, - "Mod_Hak": { - "type": "cexostring", - "value": "cep3_tiles2" - } - }, { "__struct_id": 8, "Mod_Hak": { diff --git a/_module/itp/creaturepalcus.itp.json b/_module/itp/creaturepalcus.itp.json index bd3e983..6dcb7e5 100644 --- a/_module/itp/creaturepalcus.itp.json +++ b/_module/itp/creaturepalcus.itp.json @@ -8,77 +8,6 @@ "LIST": { "type": "list", "value": [ - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 201 - }, - "LIST": { - "type": "list", - "value": [ - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 202 - }, - "STRREF": { - "type": "dword", - "value": 6688 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 203 - }, - "STRREF": { - "type": "dword", - "value": 6689 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 204 - }, - "STRREF": { - "type": "dword", - "value": 6690 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 205 - }, - "STRREF": { - "type": "dword", - "value": 6691 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 206 - }, - "STRREF": { - "type": "dword", - "value": 6692 - } - } - ] - }, - "STRREF": { - "type": "dword", - "value": 16966250 - } - }, { "__struct_id": 0, "ID": { @@ -1518,6 +1447,77 @@ "type": "dword", "value": 16966234 } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 201 + }, + "LIST": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 202 + }, + "STRREF": { + "type": "dword", + "value": 6688 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 203 + }, + "STRREF": { + "type": "dword", + "value": 6689 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 204 + }, + "STRREF": { + "type": "dword", + "value": 6690 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 205 + }, + "STRREF": { + "type": "dword", + "value": 6691 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 206 + }, + "STRREF": { + "type": "dword", + "value": 6692 + } + } + ] + }, + "STRREF": { + "type": "dword", + "value": 16966250 + } } ] }, diff --git a/_module/itp/itempalcus.itp.json b/_module/itp/itempalcus.itp.json index a516849..34310a4 100644 --- a/_module/itp/itempalcus.itp.json +++ b/_module/itp/itempalcus.itp.json @@ -12,77 +12,6 @@ "LIST": { "type": "list", "value": [ - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 177 - }, - "LIST": { - "type": "list", - "value": [ - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 178 - }, - "STRREF": { - "type": "dword", - "value": 6688 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 179 - }, - "STRREF": { - "type": "dword", - "value": 6689 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 180 - }, - "STRREF": { - "type": "dword", - "value": 6690 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 181 - }, - "STRREF": { - "type": "dword", - "value": 6691 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 182 - }, - "STRREF": { - "type": "dword", - "value": 6692 - } - } - ] - }, - "STRREF": { - "type": "dword", - "value": 16966250 - } - }, { "__struct_id": 0, "ID": { @@ -885,6 +814,77 @@ "type": "dword", "value": 16966235 } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 177 + }, + "LIST": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 178 + }, + "STRREF": { + "type": "dword", + "value": 6688 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 179 + }, + "STRREF": { + "type": "dword", + "value": 6689 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 180 + }, + "STRREF": { + "type": "dword", + "value": 6690 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 181 + }, + "STRREF": { + "type": "dword", + "value": 6691 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 182 + }, + "STRREF": { + "type": "dword", + "value": 6692 + } + } + ] + }, + "STRREF": { + "type": "dword", + "value": 16966250 + } } ] }, diff --git a/_module/itp/placeablepalcus.itp.json b/_module/itp/placeablepalcus.itp.json index 81f3844..9441678 100644 --- a/_module/itp/placeablepalcus.itp.json +++ b/_module/itp/placeablepalcus.itp.json @@ -12,77 +12,6 @@ "LIST": { "type": "list", "value": [ - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 177 - }, - "LIST": { - "type": "list", - "value": [ - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 178 - }, - "STRREF": { - "type": "dword", - "value": 6688 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 179 - }, - "STRREF": { - "type": "dword", - "value": 6689 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 180 - }, - "STRREF": { - "type": "dword", - "value": 6690 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 181 - }, - "STRREF": { - "type": "dword", - "value": 6691 - } - }, - { - "__struct_id": 0, - "ID": { - "type": "byte", - "value": 182 - }, - "STRREF": { - "type": "dword", - "value": 6692 - } - } - ] - }, - "STRREF": { - "type": "dword", - "value": 16966250 - } - }, { "__struct_id": 0, "ID": { @@ -164,6 +93,77 @@ "type": "dword", "value": 16967223 } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 177 + }, + "LIST": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 178 + }, + "STRREF": { + "type": "dword", + "value": 6688 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 179 + }, + "STRREF": { + "type": "dword", + "value": 6689 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 180 + }, + "STRREF": { + "type": "dword", + "value": 6690 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 181 + }, + "STRREF": { + "type": "dword", + "value": 6691 + } + }, + { + "__struct_id": 0, + "ID": { + "type": "byte", + "value": 182 + }, + "STRREF": { + "type": "dword", + "value": 6692 + } + } + ] + }, + "STRREF": { + "type": "dword", + "value": 16966250 + } } ] }, diff --git a/_module/ncs/entrmessgtrigger.ncs b/_module/ncs/entrmessgtrigger.ncs index 7385be6..faff100 100644 Binary files a/_module/ncs/entrmessgtrigger.ncs and b/_module/ncs/entrmessgtrigger.ncs differ diff --git a/_module/ncs/nw_s1_aurablnda.ncs b/_module/ncs/nw_s1_aurablnda.ncs new file mode 100644 index 0000000..bf9309b Binary files /dev/null and b/_module/ncs/nw_s1_aurablnda.ncs differ diff --git a/_module/ncs/nw_s1_auracoldc.ncs b/_module/ncs/nw_s1_auracoldc.ncs new file mode 100644 index 0000000..b9442d6 Binary files /dev/null and b/_module/ncs/nw_s1_auracoldc.ncs differ diff --git a/_module/ncs/nw_s1_auraelecc.ncs b/_module/ncs/nw_s1_auraelecc.ncs new file mode 100644 index 0000000..37cc6e4 Binary files /dev/null and b/_module/ncs/nw_s1_auraelecc.ncs differ diff --git a/_module/ncs/nw_s1_aurafirec.ncs b/_module/ncs/nw_s1_aurafirec.ncs new file mode 100644 index 0000000..de93fa1 Binary files /dev/null and b/_module/ncs/nw_s1_aurafirec.ncs differ diff --git a/_module/ncs/nw_s1_auramenca.ncs b/_module/ncs/nw_s1_auramenca.ncs new file mode 100644 index 0000000..c821d8b Binary files /dev/null and b/_module/ncs/nw_s1_auramenca.ncs differ diff --git a/_module/ncs/nw_s1_auraprota.ncs b/_module/ncs/nw_s1_auraprota.ncs new file mode 100644 index 0000000..468539b Binary files /dev/null and b/_module/ncs/nw_s1_auraprota.ncs differ diff --git a/_module/ncs/nw_s1_aurastuna.ncs b/_module/ncs/nw_s1_aurastuna.ncs new file mode 100644 index 0000000..38c9db3 Binary files /dev/null and b/_module/ncs/nw_s1_aurastuna.ncs differ diff --git a/_module/ncs/nw_s1_auraunata.ncs b/_module/ncs/nw_s1_auraunata.ncs new file mode 100644 index 0000000..adac269 Binary files /dev/null and b/_module/ncs/nw_s1_auraunata.ncs differ diff --git a/_module/ncs/nw_s1_aurauneaa.ncs b/_module/ncs/nw_s1_aurauneaa.ncs new file mode 100644 index 0000000..dab354c Binary files /dev/null and b/_module/ncs/nw_s1_aurauneaa.ncs differ diff --git a/_module/ncs/nw_s1_bltacid.ncs b/_module/ncs/nw_s1_bltacid.ncs new file mode 100644 index 0000000..be087ac Binary files /dev/null and b/_module/ncs/nw_s1_bltacid.ncs differ diff --git a/_module/ncs/nw_s1_bltcharm.ncs b/_module/ncs/nw_s1_bltcharm.ncs new file mode 100644 index 0000000..d0ee812 Binary files /dev/null and b/_module/ncs/nw_s1_bltcharm.ncs differ diff --git a/_module/ncs/nw_s1_bltchrdr.ncs b/_module/ncs/nw_s1_bltchrdr.ncs new file mode 100644 index 0000000..68c2848 Binary files /dev/null and b/_module/ncs/nw_s1_bltchrdr.ncs differ diff --git a/_module/ncs/nw_s1_bltcold.ncs b/_module/ncs/nw_s1_bltcold.ncs new file mode 100644 index 0000000..ea508f5 Binary files /dev/null and b/_module/ncs/nw_s1_bltcold.ncs differ diff --git a/_module/ncs/nw_s1_bltcondr.ncs b/_module/ncs/nw_s1_bltcondr.ncs new file mode 100644 index 0000000..ef215ae Binary files /dev/null and b/_module/ncs/nw_s1_bltcondr.ncs differ diff --git a/_module/ncs/nw_s1_bltconf.ncs b/_module/ncs/nw_s1_bltconf.ncs new file mode 100644 index 0000000..48278b4 Binary files /dev/null and b/_module/ncs/nw_s1_bltconf.ncs differ diff --git a/_module/ncs/nw_s1_bltdaze.ncs b/_module/ncs/nw_s1_bltdaze.ncs new file mode 100644 index 0000000..2984fa1 Binary files /dev/null and b/_module/ncs/nw_s1_bltdaze.ncs differ diff --git a/_module/ncs/nw_s1_bltdeath.ncs b/_module/ncs/nw_s1_bltdeath.ncs new file mode 100644 index 0000000..890709e Binary files /dev/null and b/_module/ncs/nw_s1_bltdeath.ncs differ diff --git a/_module/ncs/nw_s1_bltdexdr.ncs b/_module/ncs/nw_s1_bltdexdr.ncs new file mode 100644 index 0000000..005e10f Binary files /dev/null and b/_module/ncs/nw_s1_bltdexdr.ncs differ diff --git a/_module/ncs/nw_s1_bltdisese.ncs b/_module/ncs/nw_s1_bltdisese.ncs new file mode 100644 index 0000000..8580d05 Binary files /dev/null and b/_module/ncs/nw_s1_bltdisese.ncs differ diff --git a/_module/ncs/nw_s1_bltdomn.ncs b/_module/ncs/nw_s1_bltdomn.ncs new file mode 100644 index 0000000..c4c72ea Binary files /dev/null and b/_module/ncs/nw_s1_bltdomn.ncs differ diff --git a/_module/ncs/nw_s1_bltfire.ncs b/_module/ncs/nw_s1_bltfire.ncs new file mode 100644 index 0000000..026e977 Binary files /dev/null and b/_module/ncs/nw_s1_bltfire.ncs differ diff --git a/_module/ncs/nw_s1_bltintdr.ncs b/_module/ncs/nw_s1_bltintdr.ncs new file mode 100644 index 0000000..c5bd688 Binary files /dev/null and b/_module/ncs/nw_s1_bltintdr.ncs differ diff --git a/_module/ncs/nw_s1_bltknckd.ncs b/_module/ncs/nw_s1_bltknckd.ncs new file mode 100644 index 0000000..47f7841 Binary files /dev/null and b/_module/ncs/nw_s1_bltknckd.ncs differ diff --git a/_module/ncs/nw_s1_bltlightn.ncs b/_module/ncs/nw_s1_bltlightn.ncs new file mode 100644 index 0000000..7178527 Binary files /dev/null and b/_module/ncs/nw_s1_bltlightn.ncs differ diff --git a/_module/ncs/nw_s1_bltlvldr.ncs b/_module/ncs/nw_s1_bltlvldr.ncs new file mode 100644 index 0000000..87f18cc Binary files /dev/null and b/_module/ncs/nw_s1_bltlvldr.ncs differ diff --git a/_module/ncs/nw_s1_bltparal.ncs b/_module/ncs/nw_s1_bltparal.ncs new file mode 100644 index 0000000..b405a32 Binary files /dev/null and b/_module/ncs/nw_s1_bltparal.ncs differ diff --git a/_module/ncs/nw_s1_bltpoison.ncs b/_module/ncs/nw_s1_bltpoison.ncs new file mode 100644 index 0000000..d7368cb Binary files /dev/null and b/_module/ncs/nw_s1_bltpoison.ncs differ diff --git a/_module/ncs/nw_s1_bltshards.ncs b/_module/ncs/nw_s1_bltshards.ncs new file mode 100644 index 0000000..773c454 Binary files /dev/null and b/_module/ncs/nw_s1_bltshards.ncs differ diff --git a/_module/ncs/nw_s1_bltslow.ncs b/_module/ncs/nw_s1_bltslow.ncs new file mode 100644 index 0000000..fb260e7 Binary files /dev/null and b/_module/ncs/nw_s1_bltslow.ncs differ diff --git a/_module/ncs/nw_s1_bltstrdr.ncs b/_module/ncs/nw_s1_bltstrdr.ncs new file mode 100644 index 0000000..89e934a Binary files /dev/null and b/_module/ncs/nw_s1_bltstrdr.ncs differ diff --git a/_module/ncs/nw_s1_bltstun.ncs b/_module/ncs/nw_s1_bltstun.ncs new file mode 100644 index 0000000..2e56934 Binary files /dev/null and b/_module/ncs/nw_s1_bltstun.ncs differ diff --git a/_module/ncs/nw_s1_bltweb.ncs b/_module/ncs/nw_s1_bltweb.ncs new file mode 100644 index 0000000..1ffeb07 Binary files /dev/null and b/_module/ncs/nw_s1_bltweb.ncs differ diff --git a/_module/ncs/nw_s1_bltwisdr.ncs b/_module/ncs/nw_s1_bltwisdr.ncs new file mode 100644 index 0000000..33ec99e Binary files /dev/null and b/_module/ncs/nw_s1_bltwisdr.ncs differ diff --git a/_module/ncs/nw_s1_coneacid.ncs b/_module/ncs/nw_s1_coneacid.ncs new file mode 100644 index 0000000..53405d2 Binary files /dev/null and b/_module/ncs/nw_s1_coneacid.ncs differ diff --git a/_module/ncs/nw_s1_conecold.ncs b/_module/ncs/nw_s1_conecold.ncs new file mode 100644 index 0000000..87ea220 Binary files /dev/null and b/_module/ncs/nw_s1_conecold.ncs differ diff --git a/_module/ncs/nw_s1_conedisea.ncs b/_module/ncs/nw_s1_conedisea.ncs new file mode 100644 index 0000000..3bac3eb Binary files /dev/null and b/_module/ncs/nw_s1_conedisea.ncs differ diff --git a/_module/ncs/nw_s1_coneelec.ncs b/_module/ncs/nw_s1_coneelec.ncs new file mode 100644 index 0000000..703775a Binary files /dev/null and b/_module/ncs/nw_s1_coneelec.ncs differ diff --git a/_module/ncs/nw_s1_conesonic.ncs b/_module/ncs/nw_s1_conesonic.ncs new file mode 100644 index 0000000..2769739 Binary files /dev/null and b/_module/ncs/nw_s1_conesonic.ncs differ diff --git a/_module/ncs/nw_s1_dragfear.ncs b/_module/ncs/nw_s1_dragfear.ncs new file mode 100644 index 0000000..718a0a5 Binary files /dev/null and b/_module/ncs/nw_s1_dragfear.ncs differ diff --git a/_module/ncs/nw_s1_dragfeara.ncs b/_module/ncs/nw_s1_dragfeara.ncs new file mode 100644 index 0000000..2c330bb Binary files /dev/null and b/_module/ncs/nw_s1_dragfeara.ncs differ diff --git a/_module/ncs/nw_s1_feroc3.ncs b/_module/ncs/nw_s1_feroc3.ncs new file mode 100644 index 0000000..25681cd Binary files /dev/null and b/_module/ncs/nw_s1_feroc3.ncs differ diff --git a/_module/ncs/nw_s1_gazechaos.ncs b/_module/ncs/nw_s1_gazechaos.ncs new file mode 100644 index 0000000..1895f14 Binary files /dev/null and b/_module/ncs/nw_s1_gazechaos.ncs differ diff --git a/_module/ncs/nw_s1_gazecharm.ncs b/_module/ncs/nw_s1_gazecharm.ncs new file mode 100644 index 0000000..2a5a21f Binary files /dev/null and b/_module/ncs/nw_s1_gazecharm.ncs differ diff --git a/_module/ncs/nw_s1_gazeconfu.ncs b/_module/ncs/nw_s1_gazeconfu.ncs new file mode 100644 index 0000000..541ed76 Binary files /dev/null and b/_module/ncs/nw_s1_gazeconfu.ncs differ diff --git a/_module/ncs/nw_s1_gazedaze.ncs b/_module/ncs/nw_s1_gazedaze.ncs new file mode 100644 index 0000000..7ab2791 Binary files /dev/null and b/_module/ncs/nw_s1_gazedaze.ncs differ diff --git a/_module/ncs/nw_s1_gazedeath.ncs b/_module/ncs/nw_s1_gazedeath.ncs new file mode 100644 index 0000000..d7a2ae5 Binary files /dev/null and b/_module/ncs/nw_s1_gazedeath.ncs differ diff --git a/_module/ncs/nw_s1_gazedomn.ncs b/_module/ncs/nw_s1_gazedomn.ncs new file mode 100644 index 0000000..71b62c1 Binary files /dev/null and b/_module/ncs/nw_s1_gazedomn.ncs differ diff --git a/_module/ncs/nw_s1_gazedoom.ncs b/_module/ncs/nw_s1_gazedoom.ncs new file mode 100644 index 0000000..43625f0 Binary files /dev/null and b/_module/ncs/nw_s1_gazedoom.ncs differ diff --git a/_module/ncs/nw_s1_gazeevil.ncs b/_module/ncs/nw_s1_gazeevil.ncs new file mode 100644 index 0000000..a691fd0 Binary files /dev/null and b/_module/ncs/nw_s1_gazeevil.ncs differ diff --git a/_module/ncs/nw_s1_gazefear.ncs b/_module/ncs/nw_s1_gazefear.ncs new file mode 100644 index 0000000..58d41e1 Binary files /dev/null and b/_module/ncs/nw_s1_gazefear.ncs differ diff --git a/_module/ncs/nw_s1_gazegood.ncs b/_module/ncs/nw_s1_gazegood.ncs new file mode 100644 index 0000000..0d4a666 Binary files /dev/null and b/_module/ncs/nw_s1_gazegood.ncs differ diff --git a/_module/ncs/nw_s1_gazelaw.ncs b/_module/ncs/nw_s1_gazelaw.ncs new file mode 100644 index 0000000..66b5c26 Binary files /dev/null and b/_module/ncs/nw_s1_gazelaw.ncs differ diff --git a/_module/ncs/nw_s1_gazestun.ncs b/_module/ncs/nw_s1_gazestun.ncs new file mode 100644 index 0000000..b4d086e Binary files /dev/null and b/_module/ncs/nw_s1_gazestun.ncs differ diff --git a/_module/ncs/nw_s1_golemgas.ncs b/_module/ncs/nw_s1_golemgas.ncs new file mode 100644 index 0000000..5d6dbb8 Binary files /dev/null and b/_module/ncs/nw_s1_golemgas.ncs differ diff --git a/_module/ncs/nw_s1_hndbreath.ncs b/_module/ncs/nw_s1_hndbreath.ncs new file mode 100644 index 0000000..b65b433 Binary files /dev/null and b/_module/ncs/nw_s1_hndbreath.ncs differ diff --git a/_module/ncs/nw_s1_howlconf.ncs b/_module/ncs/nw_s1_howlconf.ncs new file mode 100644 index 0000000..449e6af Binary files /dev/null and b/_module/ncs/nw_s1_howlconf.ncs differ diff --git a/_module/ncs/nw_s1_howldaze.ncs b/_module/ncs/nw_s1_howldaze.ncs new file mode 100644 index 0000000..f035f3b Binary files /dev/null and b/_module/ncs/nw_s1_howldaze.ncs differ diff --git a/_module/ncs/nw_s1_howldeath.ncs b/_module/ncs/nw_s1_howldeath.ncs new file mode 100644 index 0000000..9ebbf49 Binary files /dev/null and b/_module/ncs/nw_s1_howldeath.ncs differ diff --git a/_module/ncs/nw_s1_howlfear.ncs b/_module/ncs/nw_s1_howlfear.ncs new file mode 100644 index 0000000..1fd746d Binary files /dev/null and b/_module/ncs/nw_s1_howlfear.ncs differ diff --git a/_module/ncs/nw_s1_howlparal.ncs b/_module/ncs/nw_s1_howlparal.ncs new file mode 100644 index 0000000..023c157 Binary files /dev/null and b/_module/ncs/nw_s1_howlparal.ncs differ diff --git a/_module/ncs/nw_s1_howlsonic.ncs b/_module/ncs/nw_s1_howlsonic.ncs new file mode 100644 index 0000000..ffe2ebe Binary files /dev/null and b/_module/ncs/nw_s1_howlsonic.ncs differ diff --git a/_module/ncs/nw_s1_howlstun.ncs b/_module/ncs/nw_s1_howlstun.ncs new file mode 100644 index 0000000..069669c Binary files /dev/null and b/_module/ncs/nw_s1_howlstun.ncs differ diff --git a/_module/ncs/nw_s1_krenscare.ncs b/_module/ncs/nw_s1_krenscare.ncs new file mode 100644 index 0000000..3b311a6 Binary files /dev/null and b/_module/ncs/nw_s1_krenscare.ncs differ diff --git a/_module/ncs/nw_s1_mephsalt.ncs b/_module/ncs/nw_s1_mephsalt.ncs new file mode 100644 index 0000000..687beb2 Binary files /dev/null and b/_module/ncs/nw_s1_mephsalt.ncs differ diff --git a/_module/ncs/nw_s1_mephsteam.ncs b/_module/ncs/nw_s1_mephsteam.ncs new file mode 100644 index 0000000..7d3b0fb Binary files /dev/null and b/_module/ncs/nw_s1_mephsteam.ncs differ diff --git a/_module/ncs/nw_s1_mumundead.ncs b/_module/ncs/nw_s1_mumundead.ncs new file mode 100644 index 0000000..6897b90 Binary files /dev/null and b/_module/ncs/nw_s1_mumundead.ncs differ diff --git a/_module/ncs/nw_s1_pulschrdr.ncs b/_module/ncs/nw_s1_pulschrdr.ncs new file mode 100644 index 0000000..79090d4 Binary files /dev/null and b/_module/ncs/nw_s1_pulschrdr.ncs differ diff --git a/_module/ncs/nw_s1_pulscold.ncs b/_module/ncs/nw_s1_pulscold.ncs new file mode 100644 index 0000000..f6a23ea Binary files /dev/null and b/_module/ncs/nw_s1_pulscold.ncs differ diff --git a/_module/ncs/nw_s1_pulscondr.ncs b/_module/ncs/nw_s1_pulscondr.ncs new file mode 100644 index 0000000..d44caaf Binary files /dev/null and b/_module/ncs/nw_s1_pulscondr.ncs differ diff --git a/_module/ncs/nw_s1_pulsdeath.ncs b/_module/ncs/nw_s1_pulsdeath.ncs new file mode 100644 index 0000000..8515306 Binary files /dev/null and b/_module/ncs/nw_s1_pulsdeath.ncs differ diff --git a/_module/ncs/nw_s1_pulsdexdr.ncs b/_module/ncs/nw_s1_pulsdexdr.ncs new file mode 100644 index 0000000..b9c212c Binary files /dev/null and b/_module/ncs/nw_s1_pulsdexdr.ncs differ diff --git a/_module/ncs/nw_s1_pulsdis.ncs b/_module/ncs/nw_s1_pulsdis.ncs new file mode 100644 index 0000000..80e023b Binary files /dev/null and b/_module/ncs/nw_s1_pulsdis.ncs differ diff --git a/_module/ncs/nw_s1_pulselec.ncs b/_module/ncs/nw_s1_pulselec.ncs new file mode 100644 index 0000000..fe87adb Binary files /dev/null and b/_module/ncs/nw_s1_pulselec.ncs differ diff --git a/_module/ncs/nw_s1_pulsfire.ncs b/_module/ncs/nw_s1_pulsfire.ncs new file mode 100644 index 0000000..48a086b Binary files /dev/null and b/_module/ncs/nw_s1_pulsfire.ncs differ diff --git a/_module/ncs/nw_s1_pulsholy.ncs b/_module/ncs/nw_s1_pulsholy.ncs new file mode 100644 index 0000000..9893e11 Binary files /dev/null and b/_module/ncs/nw_s1_pulsholy.ncs differ diff --git a/_module/ncs/nw_s1_pulsintdr.ncs b/_module/ncs/nw_s1_pulsintdr.ncs new file mode 100644 index 0000000..42308d3 Binary files /dev/null and b/_module/ncs/nw_s1_pulsintdr.ncs differ diff --git a/_module/ncs/nw_s1_pulslvldr.ncs b/_module/ncs/nw_s1_pulslvldr.ncs new file mode 100644 index 0000000..a9e40ad Binary files /dev/null and b/_module/ncs/nw_s1_pulslvldr.ncs differ diff --git a/_module/ncs/nw_s1_pulsneg.ncs b/_module/ncs/nw_s1_pulsneg.ncs new file mode 100644 index 0000000..0884cc4 Binary files /dev/null and b/_module/ncs/nw_s1_pulsneg.ncs differ diff --git a/_module/ncs/nw_s1_pulspois.ncs b/_module/ncs/nw_s1_pulspois.ncs new file mode 100644 index 0000000..cafb629 Binary files /dev/null and b/_module/ncs/nw_s1_pulspois.ncs differ diff --git a/_module/ncs/nw_s1_pulsspore.ncs b/_module/ncs/nw_s1_pulsspore.ncs new file mode 100644 index 0000000..723d855 Binary files /dev/null and b/_module/ncs/nw_s1_pulsspore.ncs differ diff --git a/_module/ncs/nw_s1_pulsstrdr.ncs b/_module/ncs/nw_s1_pulsstrdr.ncs new file mode 100644 index 0000000..a470f85 Binary files /dev/null and b/_module/ncs/nw_s1_pulsstrdr.ncs differ diff --git a/_module/ncs/nw_s1_pulswind.ncs b/_module/ncs/nw_s1_pulswind.ncs new file mode 100644 index 0000000..dec7caa Binary files /dev/null and b/_module/ncs/nw_s1_pulswind.ncs differ diff --git a/_module/ncs/nw_s1_pulswisdr.ncs b/_module/ncs/nw_s1_pulswisdr.ncs new file mode 100644 index 0000000..63eabf4 Binary files /dev/null and b/_module/ncs/nw_s1_pulswisdr.ncs differ diff --git a/_module/ncs/nw_s1_smokeclaw.ncs b/_module/ncs/nw_s1_smokeclaw.ncs new file mode 100644 index 0000000..25a13fa Binary files /dev/null and b/_module/ncs/nw_s1_smokeclaw.ncs differ diff --git a/_module/ncs/nw_s1_stink_a.ncs b/_module/ncs/nw_s1_stink_a.ncs new file mode 100644 index 0000000..7e7a88e Binary files /dev/null and b/_module/ncs/nw_s1_stink_a.ncs differ diff --git a/_module/ncs/nw_s1_tyrantfga.ncs b/_module/ncs/nw_s1_tyrantfga.ncs new file mode 100644 index 0000000..d293ff6 Binary files /dev/null and b/_module/ncs/nw_s1_tyrantfga.ncs differ diff --git a/_module/ncs/nw_s1_tyrantfog.ncs b/_module/ncs/nw_s1_tyrantfog.ncs new file mode 100644 index 0000000..609cad3 Binary files /dev/null and b/_module/ncs/nw_s1_tyrantfog.ncs differ diff --git a/_module/ncs/nw_s2_divprot.ncs b/_module/ncs/nw_s2_divprot.ncs new file mode 100644 index 0000000..09aac41 Binary files /dev/null and b/_module/ncs/nw_s2_divprot.ncs differ diff --git a/_module/ncs/nw_s3_balordeth.ncs b/_module/ncs/nw_s3_balordeth.ncs new file mode 100644 index 0000000..28b7bb8 Binary files /dev/null and b/_module/ncs/nw_s3_balordeth.ncs differ diff --git a/_module/ncs/onmoduleload.ncs b/_module/ncs/onmoduleload.ncs index e1ac235..cdf1987 100644 Binary files a/_module/ncs/onmoduleload.ncs and b/_module/ncs/onmoduleload.ncs differ diff --git a/_module/ncs/onunaquireitem.ncs b/_module/ncs/onunaquireitem.ncs index 6acdeff..5b28469 100644 Binary files a/_module/ncs/onunaquireitem.ncs and b/_module/ncs/onunaquireitem.ncs differ diff --git a/_module/ncs/time_keeper.ncs b/_module/ncs/time_keeper.ncs index 1dd0300..4e1010b 100644 Binary files a/_module/ncs/time_keeper.ncs and b/_module/ncs/time_keeper.ncs differ diff --git a/_module/nss/entrmessgtrigger.nss b/_module/nss/entrmessgtrigger.nss index d9079d2..c69e345 100644 --- a/_module/nss/entrmessgtrigger.nss +++ b/_module/nss/entrmessgtrigger.nss @@ -26,9 +26,7 @@ if (nInt != OBJECT_TYPE_WAYPOINT) else DelayCommand(1.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget))); -DelayCommand(7.0, FloatingTextStringOnCreature("Server Reboots at 10 minutes after Midnight, 8am, and 4pm Easter Standard Time.", oPC)); +DelayCommand(7.0, FloatingTextStringOnCreature("Server Reboots at 10 minutes after Midnight, 8am, and 4pm Eastern Standard Time.", oPC)); -//DelayCommand(8.0, FloatingTextStringOnCreature("The Underworld was created on 1/1/07 by Guile/Genisys", oPC)); - - -} +DelayCommand(8.0, FloatingTextStringOnCreature("The Underworld was created on 1/1/07 by Guile/Genisys", oPC)); +} \ No newline at end of file diff --git a/_module/nss/nw_s1_aurablnda.nss b/_module/nss/nw_s1_aurablnda.nss new file mode 100644 index 0000000..0babfaa --- /dev/null +++ b/_module/nss/nw_s1_aurablnda.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Aura of Blinding On Enter +//:: NW_S1_AuraBlndA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Upon entering the aura of the creature the player + must make a will save or be blinded because of the + sheer ugliness or beauty of the creature. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD/3); + + effect eBlind = EffectBlindness(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eVis = EffectVisualEffect(VFX_IMP_BLIND_DEAF_M); + effect eLink = EffectLinkEffects(eBlind, eDur); + + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + + //Entering object must make a will save or be blinded for the duration. + if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_BLINDING)); + if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC)) + { + //Apply the blind effect and the VFX impact + DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + } + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_auracoldc.nss b/_module/nss/nw_s1_auracoldc.nss new file mode 100644 index 0000000..49cd95e --- /dev/null +++ b/_module/nss/nw_s1_auracoldc.nss @@ -0,0 +1,62 @@ +//:://///////////////////////////////////////////// +//:: Aura of Frost on Heartbeat +//:: NW_S1_AuraColdC.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Prolonged exposure to the aura of the creature + causes frost damage to all within the aura. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nFrost = 1 + (nHD/3); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + + effect eDam; + effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); + + //Get the first target in the aura of cold + oTarget = GetFirstInPersistentObject(); + + while (GetIsObjectValid(oTarget)) + { +/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) + { + oTarget = GetNextInPersistentObject(OBJECT_SELF); + continue; + } */ + if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_COLD)); + //Roll damage based on the creatures HD + nDamage = d4(nFrost); + //Make a Fortitude save for half + if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_COLD)) + { + nDamage = nDamage / 2; + } + //Set the damage effect + eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD); + //Apply the VFX constant and damage effect + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + //Get the next target in the aura of cold + oTarget = GetNextInPersistentObject(); + } +} diff --git a/_module/nss/nw_s1_auraelecc.nss b/_module/nss/nw_s1_auraelecc.nss new file mode 100644 index 0000000..06994f4 --- /dev/null +++ b/_module/nss/nw_s1_auraelecc.nss @@ -0,0 +1,58 @@ +//:://///////////////////////////////////////////// +//:: Aura of Electricity on Heartbeat +//:: NW_S1_AuraElecC.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Prolonged exposure to the aura of the creature + causes electrical damage to all within the aura. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + int nHD = GetHitDice(oNPC); + int nZap = 1 + (nHD / 3); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 + nCHAMod + (nHD/2); + int nDamage; + + effect eDam; + effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); + + //Get first target in spell area + object oTarget = GetFirstInPersistentObject(); + while (GetIsObjectValid(oTarget)) + { +/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) + { + oTarget = GetNextInPersistentObject(OBJECT_SELF); + continue; + } */ + if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) + { + nDamage = d4(nZap); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_AURA_ELECTRICITY)); + //Make a saving throw check + if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY)) + { + nDamage = nDamage / 2; + } + eDam = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); + //Apply the VFX impact and effects + DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); + DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + //Get next target in spell area + oTarget = GetNextInPersistentObject(); + } +} diff --git a/_module/nss/nw_s1_aurafirec.nss b/_module/nss/nw_s1_aurafirec.nss new file mode 100644 index 0000000..a6b9638 --- /dev/null +++ b/_module/nss/nw_s1_aurafirec.nss @@ -0,0 +1,59 @@ +//:://///////////////////////////////////////////// +//:: Aura of Fire on Heartbeat +//:: NW_S1_AuraFireC.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Prolonged exposure to the aura of the creature + causes fire damage to all within the aura. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetFirstInPersistentObject(); //:: Get first target in spell area + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nBurn = 1 + (nHD/3); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + int nDamSave; + + effect eDam; + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); + + while(GetIsObjectValid(oTarget)) + { +/* if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) + { + oTarget = GetNextInPersistentObject(OBJECT_SELF); + continue; + } */ + if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_FIRE)); + //Roll damage + nDamage = d4(nBurn); + //Make a saving throw check + if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_FIRE)) + { + nDamage = nDamage / 2; + } + //Set the damage effect + eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + } + //Get next target in spell area + oTarget = GetNextInPersistentObject(); + } +} diff --git a/_module/nss/nw_s1_auramenca.nss b/_module/nss/nw_s1_auramenca.nss new file mode 100644 index 0000000..e786aaa --- /dev/null +++ b/_module/nss/nw_s1_auramenca.nss @@ -0,0 +1,46 @@ +//:://///////////////////////////////////////////// +//:: Aura of Menace On Enter +//:: NW_S1_AuraMencA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Upon entering the aura all those that fail + a will save are stricken with Doom. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); + + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + + int nDuration = 1 + (GetHitDice(oNPC)/3); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (GetHitDice(oNPC)/2); + int nLevel = GetCasterLevel(OBJECT_SELF); + int nMetaMagic = PRCGetMetaMagicFeat(); + + effect eVis = EffectVisualEffect(VFX_IMP_DOOM); + effect eLink = CreateDoomEffectsLink(); + + if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_AURA_MENACE)); + //Spell Resistance and Saving throw + if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC)) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink , oTarget, TurnsToSeconds(nDuration)); + } + } +} diff --git a/_module/nss/nw_s1_auraprota.nss b/_module/nss/nw_s1_auraprota.nss new file mode 100644 index 0000000..548f284 --- /dev/null +++ b/_module/nss/nw_s1_auraprota.nss @@ -0,0 +1,35 @@ +//:://///////////////////////////////////////////// +//:: Aura of Protection: On Enter +//:: NW_S1_AuraProtA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Acts as a double strength Magic Circle against + evil and a Minor Globe for those friends in + the area. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On:Jan 8, 2002, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +void main() +{ + //Declare major variables + effect eProt = CreateProtectionFromAlignmentLink(ALIGNMENT_EVIL); + effect eGlobe = EffectSpellLevelAbsorption(3, 0); + effect eDur = EffectVisualEffect(VFX_DUR_GLOBE_MINOR); + + effect eLink = EffectLinkEffects(eProt, eGlobe); + eLink = EffectLinkEffects(eLink, eDur); + + object oTarget = GetEnteringObject(); + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + //Faction Check + if(GetIsFriend(oTarget, GetAreaOfEffectCreator())) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget); + } +} diff --git a/_module/nss/nw_s1_aurastuna.nss b/_module/nss/nw_s1_aurastuna.nss new file mode 100644 index 0000000..03d0aae --- /dev/null +++ b/_module/nss/nw_s1_aurastuna.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Aura Stunning On Enter +//:: NW_S1_AuraStunA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Upon entering the aura of the creature the player + must make a will save or be stunned. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); + + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDuration = GetHitDice(oNPC); + int nDC = 10 + nCHAMod + (nDuration/2); + + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + + effect eVis = EffectVisualEffect(VFX_IMP_STUN); + effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eDeath = EffectStunned(); + effect eLink = EffectLinkEffects(eVis2, eDeath); + + nDuration = GetScaledDuration(nDuration, oTarget); + + if(!GetIsFriend(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_STUN)); + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_auraunata.nss b/_module/nss/nw_s1_auraunata.nss new file mode 100644 index 0000000..a597062 --- /dev/null +++ b/_module/nss/nw_s1_auraunata.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Aura of the Unnatural On Enter +//:: NW_S1_AuraMencA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Upon entering the aura all animals are struck with + fear. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); + effect eFear = EffectFrightened(); + effect eLink = EffectLinkEffects(eVis, eFear); + object oTarget = GetEnteringObject(); + + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + + int nDuration = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nRacial = GetRacialType(oTarget); + int nDC = 10 + nCHAMod + (GetHitDice(oNPC)/2); + + if(GetIsEnemy(oTarget)) + { + nDuration = (nDuration / 3) + 1; + //Make a saving throw check + if(nRacial == RACIAL_TYPE_ANIMAL) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_UNNATURAL)); + //if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) //:: This ability only affects animals & they don't get a save. + //{ + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + //} + } + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_aurauneaa.nss b/_module/nss/nw_s1_aurauneaa.nss new file mode 100644 index 0000000..6f4a75b --- /dev/null +++ b/_module/nss/nw_s1_aurauneaa.nss @@ -0,0 +1,46 @@ +//:://///////////////////////////////////////////// +//:: Aura Unearthly Visage On Enter +//:: NW_S1_AuraUnEaA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Upon entering the aura of the creature the player + must make a will save or be killed because of the + sheer ugliness or beauty of the creature. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + + effect eDeath = EffectDeath(); + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + + if(GetIsEnemy(oTarget, oNPC)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_AURA_UNEARTHLY_VISAGE)); + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget); + //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } +} diff --git a/_module/nss/nw_s1_bltacid.nss b/_module/nss/nw_s1_bltacid.nss new file mode 100644 index 0000000..ef53a16 --- /dev/null +++ b/_module/nss/nw_s1_bltacid.nss @@ -0,0 +1,66 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Acid +//:: NW_S1_BltAcid +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); + int nDC = 10 +nCONMod+ (nHD/2); + int nCount = nHD/2; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + effect eBolt; + + //ankheg + if(GetAppearanceType(oNPC) == APPEARANCE_TYPE_BEETLE_SLICER) + { + nDamage = d4(4); + } + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ACID)); + + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ACID); + + //Make a ranged touch attack + int nTouch = TouchAttackRanged(oTarget); + if(nTouch > 0) + { + if(nTouch == 2) + { + nDamage *= 2; + } + //Set damage effect + eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ACID); + if(nDamage > 0) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } +} diff --git a/_module/nss/nw_s1_bltcharm.nss b/_module/nss/nw_s1_bltcharm.nss new file mode 100644 index 0000000..df11d65 --- /dev/null +++ b/_module/nss/nw_s1_bltcharm.nss @@ -0,0 +1,47 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Charm +//:: NW_S1_BltCharm +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +//#include "wm_include" +#include "NW_I0_SPELLS" +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + nCount = GetScaledDuration(nCount, oTarget); + + effect eVis = EffectVisualEffect(VFX_IMP_CHARM); + effect eBolt = EffectCharmed(); + eBolt = GetScaledEffect(eBolt, oTarget); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eBolt, eDur); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_CHARM)); + //Make a saving throw check + if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_bltchrdr.nss b/_module/nss/nw_s1_bltchrdr.nss new file mode 100644 index 0000000..e734580 --- /dev/null +++ b/_module/nss/nw_s1_bltchrdr.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Charisma Drain +//:: NW_S1_BltChrDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Fortitude save is + needed to avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = nHD / 3; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_CHARISMA)); + //Make a saving throw check + if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) + { + eBolt = EffectAbilityDecrease(ABILITY_CHARISMA, nCount); + eBolt = SupernaturalEffect(eBolt); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltcold.nss b/_module/nss/nw_s1_bltcold.nss new file mode 100644 index 0000000..657f0fe --- /dev/null +++ b/_module/nss/nw_s1_bltcold.nss @@ -0,0 +1,60 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Cold +//:: NW_S1_BltCold +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = nHD/2; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_COLD)); + + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_COLD); + + //Make a ranged touch attack + int nTouch = TouchAttackRanged(oTarget); + if(nTouch > 0) + { + if(nTouch == 2) + { + nDamage *= 2; + } + //Set damage effect + eBolt = EffectDamage(nDamage, DAMAGE_TYPE_COLD); + if(nDamage > 0) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } +} diff --git a/_module/nss/nw_s1_bltcondr.nss b/_module/nss/nw_s1_bltcondr.nss new file mode 100644 index 0000000..9d85f04 --- /dev/null +++ b/_module/nss/nw_s1_bltcondr.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Constitution Drain +//:: NW_S1_BltConDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Fort save is + needed to avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD /3); + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_CONSTITUTION)); + //Make a saving throw check + if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) + { + eBolt = EffectAbilityDecrease(ABILITY_CONSTITUTION, nCount); + eBolt = SupernaturalEffect(eBolt); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltconf.nss b/_module/nss/nw_s1_bltconf.nss new file mode 100644 index 0000000..5bed7dc --- /dev/null +++ b/_module/nss/nw_s1_bltconf.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Confuse +//:: NW_S1_BltConf +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +//#include "wm_include" +#include "NW_I0_SPELLS" +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + nCount = GetScaledDuration(nCount, oTarget); + + effect eVis2 = EffectVisualEffect(VFX_IMP_CONFUSION_S); + effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eBolt = EffectConfused(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eBolt, eDur); + eLink = EffectLinkEffects(eLink, eVis); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_CONFUSE)); + //Make a saving throw check + if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_bltdaze.nss b/_module/nss/nw_s1_bltdaze.nss new file mode 100644 index 0000000..68d15c7 --- /dev/null +++ b/_module/nss/nw_s1_bltdaze.nss @@ -0,0 +1,47 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Daze +//:: NW_S1_BltDaze +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +//#include "wm_include" +#include "NW_I0_SPELLS" +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + nCount = GetScaledDuration(nCount, oTarget); + + effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eBolt = EffectDazed(); + eBolt = GetScaledEffect(eBolt, oTarget); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eBolt, eDur); + eLink = EffectLinkEffects(eLink, eVis); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DAZE)); + //Make a saving throw check + if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + } +} diff --git a/_module/nss/nw_s1_bltdeath.nss b/_module/nss/nw_s1_bltdeath.nss new file mode 100644 index 0000000..e2cbcd7 --- /dev/null +++ b/_module/nss/nw_s1_bltdeath.nss @@ -0,0 +1,47 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Death +//:: NW_S1_BltDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + effect eBolt = EffectDeath(); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DEATH)); + //Make a saving throw check + if(TouchAttackRanged(oTarget)) + { + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } +} + diff --git a/_module/nss/nw_s1_bltdexdr.nss b/_module/nss/nw_s1_bltdexdr.nss new file mode 100644 index 0000000..4ef34d8 --- /dev/null +++ b/_module/nss/nw_s1_bltdexdr.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Dexterity Drain +//:: NW_S1_BltDexDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Fort save is + needed to avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_DEXTERITY)); + //Make a saving throw check + if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) + { + eBolt = EffectAbilityDecrease(ABILITY_DEXTERITY, nCount); + eBolt = SupernaturalEffect(eBolt); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltdisese.nss b/_module/nss/nw_s1_bltdisese.nss new file mode 100644 index 0000000..6513a06 --- /dev/null +++ b/_module/nss/nw_s1_bltdisese.nss @@ -0,0 +1,73 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Disease +//:: NW_S1_BltDisease +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to infect + the target with a disease. The disease used + is chosen based upon the racial type of the + caster. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nRacial = MyPRCGetRacialType(oNPC); + int nDisease; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DISEASE)); + + //Here we use the racial type of the attacker to select an + //appropriate disease. + switch (nRacial) + { + case RACIAL_TYPE_VERMIN: + nDisease = DISEASE_VERMIN_MADNESS; + break; + case RACIAL_TYPE_UNDEAD: + nDisease = DISEASE_FILTH_FEVER; + break; + case RACIAL_TYPE_OUTSIDER: + if(GetTag(oNPC) == "NW_SLAADRED") + { + nDisease = DISEASE_RED_SLAAD_EGGS; + } + else + { + nDisease = DISEASE_DEMON_FEVER; + } + break; + case RACIAL_TYPE_MAGICAL_BEAST: + nDisease = DISEASE_SOLDIER_SHAKES; + break; + case RACIAL_TYPE_ABERRATION: + nDisease = DISEASE_BLINDING_SICKNESS; + break; + default: + nDisease = DISEASE_SOLDIER_SHAKES; + break; + } + //Assign effect and chosen disease + effect eBolt = EffectDisease(nDisease); + //Make the ranged touch attack. + if (TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltdomn.nss b/_module/nss/nw_s1_bltdomn.nss new file mode 100644 index 0000000..5027b45 --- /dev/null +++ b/_module/nss/nw_s1_bltdomn.nss @@ -0,0 +1,53 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Dominated +//:: NW_S1_BltDomn +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + if (nCount == 0) { nCount = 1; } + nCount = GetScaledDuration(nCount, oTarget); + + effect eVis = EffectVisualEffect(VFX_IMP_DOMINATE_S); + effect eBolt = EffectDominated(); + eBolt = GetScaledEffect(eBolt, oTarget); + effect eVis2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED); + eBolt = GetScaledEffect(eBolt, oTarget); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eBolt, eDur); + eLink = EffectLinkEffects(eLink, eVis2); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_DOMINATE)); + + //Make a saving throw check + if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltfire.nss b/_module/nss/nw_s1_bltfire.nss new file mode 100644 index 0000000..4f7a423 --- /dev/null +++ b/_module/nss/nw_s1_bltfire.nss @@ -0,0 +1,58 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Fire +//:: NW_S1_BoltFire +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = nHD/2; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_FIRE)); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_FIRE); + //Make a ranged touch attack + int nTouch = TouchAttackRanged(oTarget); + if(nTouch > 0) + { + if(nTouch == 2) + { + nDamage *= 2; + } + //Set damage effect + eBolt = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + if(nDamage > 0) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } +} diff --git a/_module/nss/nw_s1_bltintdr.nss b/_module/nss/nw_s1_bltintdr.nss new file mode 100644 index 0000000..f3ffbad --- /dev/null +++ b/_module/nss/nw_s1_bltintdr.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Intelligence Drain +//:: NW_S1_BltIntDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_INTELLIGENCE)); + //Make a saving throw check + if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) + { + eBolt = EffectAbilityDecrease(ABILITY_INTELLIGENCE, nCount); + eBolt = SupernaturalEffect(eBolt); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltknckd.nss b/_module/nss/nw_s1_bltknckd.nss new file mode 100644 index 0000000..6816964 --- /dev/null +++ b/_module/nss/nw_s1_bltknckd.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Knockdown +//:: NW_S1_BltKnckD +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = nHD/2; + if (nCount == 0) { nCount = 1; } + + effect eVis = EffectVisualEffect(VFX_IMP_SONIC); + effect eBolt = EffectKnockdown(); + effect eDam = EffectDamage(d6(), DAMAGE_TYPE_BLUDGEONING); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_KNOCKDOWN)); + + //Make a saving throw check + if (!/*Reflex Save*/ PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oTarget, RoundsToSeconds(3)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltlightn.nss b/_module/nss/nw_s1_bltlightn.nss new file mode 100644 index 0000000..024eafb --- /dev/null +++ b/_module/nss/nw_s1_bltlightn.nss @@ -0,0 +1,59 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Lightning +//:: NW_S1_BltLightn +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Does 1d6 per level to a single target. Reflex + save for half +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Aug 10, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = nHD/2; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, OBJECT_SELF,BODY_NODE_HAND); + effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_LIGHTNING)); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,SAVING_THROW_TYPE_ELECTRICITY); + //Make a ranged touch attack + int nTouch = TouchAttackRanged(oTarget); + if(nTouch > 0) + { + if(nTouch == 2) + { + nDamage *= 2; + } + //Set damage effect + eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); + if(nDamage > 0) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLightning, oTarget, 1.7); + } + } +} diff --git a/_module/nss/nw_s1_bltlvldr.nss b/_module/nss/nw_s1_bltlvldr.nss new file mode 100644 index 0000000..e3f14ca --- /dev/null +++ b/_module/nss/nw_s1_bltlvldr.nss @@ -0,0 +1,49 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Level Drain +//:: NW_S1_BltLvlDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = nHD/5; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eBolt = EffectNegativeLevel(1); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_LEVEL_DRAIN)); + + //Make a saving throw check + if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) + { + //eBolt = LEVEL DRAIN EFFECT + eBolt = SupernaturalEffect(eBolt); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltparal.nss b/_module/nss/nw_s1_bltparal.nss new file mode 100644 index 0000000..e4a6b59 --- /dev/null +++ b/_module/nss/nw_s1_bltparal.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Paralyze +//:: NW_S1_BltParal +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + if (nCount == 0) { nCount = 1; } + nCount = GetScaledDuration(nCount, oTarget); + + effect eVis = EffectVisualEffect(VFX_DUR_PARALYZED); + effect eBolt = EffectParalyze(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eBolt, eDur); + eLink = EffectLinkEffects(eLink, eVis); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_PARALYZE)); + //Make a saving throw check + if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + } +} diff --git a/_module/nss/nw_s1_bltpoison.nss b/_module/nss/nw_s1_bltpoison.nss new file mode 100644 index 0000000..8a34aca --- /dev/null +++ b/_module/nss/nw_s1_bltpoison.nss @@ -0,0 +1,123 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Poison +//:: NW_S1_BltPoison.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Must make a ranged touch attack. If successful + the target is struck down with poison that + scales with level. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 22, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nRacial = MyPRCGetRacialType(OBJECT_SELF); + int nPoison; + + effect ePoison; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_POISON)); + + //Determine the poison type based on the Racial Type and HD + switch (nRacial) + { + case RACIAL_TYPE_OUTSIDER: + if (nHD <= 9) + { + nPoison = POISON_QUASIT_VENOM; + } + else if (nHD > 9 && nHD < 13) + { + nPoison = POISON_BEBILITH_VENOM; + } + else if (nHD >= 13) + { + nPoison = POISON_PIT_FIEND_ICHOR; + } + break; + case RACIAL_TYPE_VERMIN: + if (nHD < 3) + { + nPoison = POISON_TINY_SPIDER_VENOM; + } + else if (nHD <= 3 && nHD < 6) + { + nPoison = POISON_SMALL_SPIDER_VENOM; + } + else if (nHD <= 6 && nHD < 9) + { + nPoison = POISON_MEDIUM_SPIDER_VENOM; + } + else if (nHD <= 9 && nHD < 12) + { + nPoison = POISON_LARGE_SPIDER_VENOM; + } + else if (nHD <= 12 && nHD < 15) + { + nPoison = POISON_HUGE_SPIDER_VENOM; + } + else if (nHD <= 15 && nHD < 18) + { + nPoison = POISON_GARGANTUAN_SPIDER_VENOM; + } + else if (nHD >= 18) + { + nPoison = POISON_COLOSSAL_SPIDER_VENOM; + } + break; + default: + if (nHD < 3) + { + nPoison = POISON_NIGHTSHADE; + } + else if (nHD <= 3 && nHD < 6) + { + nPoison = POISON_BLADE_BANE; + } + else if (nHD <= 6 && nHD < 9) + { + nPoison = POISON_BLOODROOT; + } + else if (nHD <= 9 && nHD < 12) + { + nPoison = POISON_LARGE_SPIDER_VENOM; + } + else if (nHD <= 12 && nHD < 15) + { + nPoison = POISON_LICH_DUST; + } + else if (nHD <= 15 && nHD < 18) + { + nPoison = POISON_DARK_REAVER_POWDER; + } + else if (nHD >= 18 ) + { + nPoison = POISON_BLACK_LOTUS_EXTRACT; + } + + break; + } + //Make a ranged touch attack + if (TouchAttackRanged (oTarget)) + { + ePoison = EffectPoison(nPoison); + //Apply effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget); + } +} + diff --git a/_module/nss/nw_s1_bltshards.nss b/_module/nss/nw_s1_bltshards.nss new file mode 100644 index 0000000..1b96e2b --- /dev/null +++ b/_module/nss/nw_s1_bltshards.nss @@ -0,0 +1,58 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Shards +//:: NW_S1_BltShard +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_SHARDS)); + + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC); + + //Make a ranged touch attack + int nTouch = TouchAttackRanged(oTarget); + if(nTouch > 0) + { + if(nTouch == 2) + { + nDamage *= 2; + } + //Set damage effect + eBolt = EffectDamage(nDamage, DAMAGE_TYPE_PIERCING, DAMAGE_POWER_PLUS_ONE); + if(nDamage > 0) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + } + } +} diff --git a/_module/nss/nw_s1_bltslow.nss b/_module/nss/nw_s1_bltslow.nss new file mode 100644 index 0000000..bf4813a --- /dev/null +++ b/_module/nss/nw_s1_bltslow.nss @@ -0,0 +1,47 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Slow +//:: NW_S1_BltSlow +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex save is + needed to or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: June 18 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + if (nCount == 0) { nCount = 1; } + + effect eVis = EffectVisualEffect(VFX_IMP_SLOW); + effect eBolt = EffectSlow(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eBolt, eDur); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_SLOW)); + //Make a saving throw check + if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltstrdr.nss b/_module/nss/nw_s1_bltstrdr.nss new file mode 100644 index 0000000..dd03161 --- /dev/null +++ b/_module/nss/nw_s1_bltstrdr.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Strength Drain +//:: NW_S1_BltStrDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Fort save is + needed to avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BOLT_ABILITY_DRAIN_STRENGTH)); + //Make a saving throw check + if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) + { + eBolt = EffectAbilityDecrease(ABILITY_STRENGTH, nCount); + eBolt = SupernaturalEffect(eBolt); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget, RoundsToSeconds(nHD)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_bltstun.nss b/_module/nss/nw_s1_bltstun.nss new file mode 100644 index 0000000..1d77008 --- /dev/null +++ b/_module/nss/nw_s1_bltstun.nss @@ -0,0 +1,50 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Stun +//:: NW_S1_BltStun +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Reflex or Will save is + needed to halve damage or avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD + 1) / 2; + if (nCount == 0) { nCount = 1; } + nCount = GetScaledDuration(nCount, oTarget); + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_STUN); + effect eBolt = EffectStunned(); + eBolt = GetScaledEffect(eBolt, oTarget); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eBolt, eDur); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_STUN)); + //Make a saving throw check + if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_bltweb.nss b/_module/nss/nw_s1_bltweb.nss new file mode 100644 index 0000000..9ed210a --- /dev/null +++ b/_module/nss/nw_s1_bltweb.nss @@ -0,0 +1,44 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Web +//:: NW_S1_BltWeb +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Glues a single target to the ground with + sticky strands of webbing. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 28, 2002 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); + int nDC = 10 +nCONMod+ (nHD/2); + int nCount = 1 + (nHD /2); + if (nCount == 0) { nCount = 1; } + + effect eVis = EffectVisualEffect(VFX_DUR_WEB); + effect eStick = EffectEntangle(); + effect eLink = EffectLinkEffects(eVis, eStick); + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_WEB)); + //Make a saving throw check + if (!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC) && TouchAttackRanged(oTarget)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount)); + } +} diff --git a/_module/nss/nw_s1_bltwisdr.nss b/_module/nss/nw_s1_bltwisdr.nss new file mode 100644 index 0000000..49643c0 --- /dev/null +++ b/_module/nss/nw_s1_bltwisdr.nss @@ -0,0 +1,48 @@ +//:://///////////////////////////////////////////// +//:: Bolt: Wisdom Drain +//:: NW_S1_BltWisDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature must make a ranged touch attack to hit + the intended target. Fort save is + needed to avoid effect. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nCount = (nHD /3); + if (nCount == 0) { nCount = 1; } + int nDamage = d6(nCount); + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eBolt; + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_BOLT_ABILITY_DRAIN_WISDOM)); + //Make a saving throw check + if (!/*Fort Save*/ PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE) && TouchAttackRanged(oTarget)) + { + eBolt = EffectAbilityDecrease(ABILITY_WISDOM, nCount); + eBolt = SupernaturalEffect(eBolt); + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBolt, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_coneacid.nss b/_module/nss/nw_s1_coneacid.nss new file mode 100644 index 0000000..2ab7dcf --- /dev/null +++ b/_module/nss/nw_s1_coneacid.nss @@ -0,0 +1,76 @@ +//:://///////////////////////////////////////////// +//:: Cone: Acid +//:: NW_S1_ConeAcid +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A cone of damage eminated from the monster. Does + a set amount of damage based upon the creatures HD + and can be halved with a Reflex Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + int nLoop = nHD / 3; + + float fDelay; + + if(nLoop == 0) + { + nLoop = 1; + } + + //Calculate the damage + for (nLoop; nLoop > 0; nLoop--) + { + nDamage = nDamage + d6(2); + } + location lTargetLocation = GetSpellTargetLocation(); + + effect eCone; + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + //Get first target in spell area + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_ACID)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ACID); + //Set damage effect + eCone = EffectDamage(nDamage, DAMAGE_TYPE_ACID); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + + diff --git a/_module/nss/nw_s1_conecold.nss b/_module/nss/nw_s1_conecold.nss new file mode 100644 index 0000000..24cc011 --- /dev/null +++ b/_module/nss/nw_s1_conecold.nss @@ -0,0 +1,76 @@ +//:://///////////////////////////////////////////// +//:: Cone: Cold +//:: NW_S1_ConeCold +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A cone of damage eminated from the monster. Does + a set amount of damage based upon the creatures HD + and can be halved with a Reflex Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + int nLoop = nHD / 3; + + float fDelay; + + if(nLoop == 0) + { + nLoop = 1; + } + + //Calculate the damage + for (nLoop; nLoop > 0; nLoop--) + { + nDamage = nDamage + d6(2); + } + location lTargetLocation = GetSpellTargetLocation(); + + effect eCone; + effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); + + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + //Get first target in spell area + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_COLD)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD); + //Set damage effect + eCone = EffectDamage(nDamage, DAMAGE_TYPE_COLD); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + } +} + + diff --git a/_module/nss/nw_s1_conedisea.nss b/_module/nss/nw_s1_conedisea.nss new file mode 100644 index 0000000..9abedbb --- /dev/null +++ b/_module/nss/nw_s1_conedisea.nss @@ -0,0 +1,99 @@ +//:://///////////////////////////////////////////// +//:: Cone: Disease +//:: NW_S1_ConeDisea +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creature spits out a cone of disease that cannot + be avoided unless a Reflex save is made. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 22, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nRacial = MyPRCGetRacialType(oNPC); + int nDisease; + + location lTargetLocation = GetSpellTargetLocation(); + + float fDelay; + + effect eCone = EffectDisease(nDisease); + effect eVis = EffectVisualEffect(VFX_IMP_DISEASE_S); + + + //Determine the disease type based on the Racial Type and HD + switch (nRacial) + { + case RACIAL_TYPE_OUTSIDER: + nDisease = DISEASE_DEMON_FEVER; + break; + case RACIAL_TYPE_VERMIN: + nDisease = DISEASE_VERMIN_MADNESS; + break; + case RACIAL_TYPE_UNDEAD: + if(nHD <= 3) + { + nDisease = DISEASE_ZOMBIE_CREEP; + } + else if (nHD > 3 && nHD <= 10) + { + nDisease = DISEASE_GHOUL_ROT; + } + else if(nHD > 10) + { + nDisease = DISEASE_MUMMY_ROT; + } + default: + if(nHD <= 3) + { + nDisease = DISEASE_MINDFIRE; + } + else if (nHD > 3 && nHD <= 10) + { + nDisease = DISEASE_RED_ACHE; + } + else if(nHD > 10) + { + nDisease = DISEASE_SHAKES; + } + + + break; + } + + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + //Get first target in spell area + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_DISEASE)); + //Get the delay time + 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, eCone, oTarget)); + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + + } +} + + + diff --git a/_module/nss/nw_s1_coneelec.nss b/_module/nss/nw_s1_coneelec.nss new file mode 100644 index 0000000..a4fa75b --- /dev/null +++ b/_module/nss/nw_s1_coneelec.nss @@ -0,0 +1,78 @@ +//:://///////////////////////////////////////////// +//:: Cone: Lightning +//:: NW_S1_ConeElec +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A cone of damage eminates from the monster. Does + a set amount of damage based upon the creatures HD + and can be halved with a Reflex Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + int nLoop = nHD / 3; + + float fDelay; + + if(nLoop == 0) + { + nLoop = 1; + } + + //Calculate the damage + for (nLoop; nLoop > 0; nLoop--) + { + nDamage = nDamage + d6(2); + } + location lTargetLocation = GetSpellTargetLocation(); + + effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_HAND); + effect eCone; + effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); + + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + //Get first target in spell area + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_CONE_LIGHTNING)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY); + //Set damage effect + eCone = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget,0.5)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + } +} + + diff --git a/_module/nss/nw_s1_conesonic.nss b/_module/nss/nw_s1_conesonic.nss new file mode 100644 index 0000000..79c1d46 --- /dev/null +++ b/_module/nss/nw_s1_conesonic.nss @@ -0,0 +1,75 @@ +//:://///////////////////////////////////////////// +//:: Cone: Sonic +//:: NW_S1_ConeSonic +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A cone of damage eminated from the monster. Does + a set amount of damage based upon the creatures HD + and can be halved with a Reflex Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + int nLoop = nHD / 3; + + float fDelay; + + if(nLoop == 0) + { + nLoop = 1; + } + + //Calculate the damage + for (nLoop; nLoop > 0; nLoop--) + { + nDamage = nDamage + d6(2); + } + location lTargetLocation = GetSpellTargetLocation(); + + effect eCone; + effect eVis = EffectVisualEffect(VFX_IMP_SONIC); + + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + //Get first target in spell area + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_CONE_SONIC)); + //Determine effect delay + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC,DAMAGE_TYPE_SONIC); + //Set damage effect + eCone = EffectDamage(nDamage, DAMAGE_TYPE_SONIC); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_dragfear.nss b/_module/nss/nw_s1_dragfear.nss new file mode 100644 index 0000000..f95e397 --- /dev/null +++ b/_module/nss/nw_s1_dragfear.nss @@ -0,0 +1,119 @@ +//:://///////////////////////////////////////////// +//:: Dragon Breath Fear +//:: NW_S1_DragFear +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Calculates the proper DC Save for the + breath weapon based on the HD of the dragon. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" +void main() +{ + //if (WildMagicOverride()) { return; } + //Declare major variables + int nAge = GetHitDice(OBJECT_SELF); + int nCount; + int nDC; + float fDelay; + object oTarget; + effect eBreath = EffectFrightened(); + effect eFear = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); + effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eBreath, eDur); + eLink = EffectLinkEffects(eLink, eFear); + + //Determine the duration and save DC + if (nAge <= 6) //Wyrmling + { + nDC = 13; + nCount = 1; + } + else if (nAge >= 7 && nAge <= 9) //Very Young + { + nDC = 15; + nCount = 2; + } + else if (nAge >= 10 && nAge <= 12) //Young + { + nDC = 17; + nCount = 3; + } + else if (nAge >= 13 && nAge <= 15) //Juvenile + { + nDC = 19; + nCount = 4; + } + else if (nAge >= 16 && nAge <= 18) //Young Adult + { + nDC = 21; + nCount = 5; + } + else if (nAge >= 19 && nAge <= 21) //Adult + { + nDC = 24; + nCount = 6; + } + else if (nAge >= 22 && nAge <= 24) //Mature Adult + { + nDC = 27; + nCount = 7; + } + else if (nAge >= 25 && nAge <= 27) //Old + { + nDC = 28; + nCount = 8; + } + else if (nAge >= 28 && nAge <= 30) //Very Old + { + nDC = 30; + nCount = 9; + } + else if (nAge >= 31 && nAge <= 33) //Ancient + { + nDC = 32; + nCount = 10; + } + else if (nAge >= 34 && nAge <= 37) //Wyrm + { + nDC = 34; + nCount = 11; + } + else if (nAge > 37) //Great Wyrm + { + nDC = 37; + nCount = 12; + } + PlayDragonBattleCry(); + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + //Get first target in spell area + while(GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF && !GetIsReactionTypeFriendly(oTarget)) + { + nCount = GetScaledDuration(nCount, oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_FEAR)); + //Determine the effect delay time + fDelay = GetDistanceBetween(oTarget, OBJECT_SELF)/20; + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, OBJECT_SELF, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCount))); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE); + } +} + + diff --git a/_module/nss/nw_s1_dragfeara.nss b/_module/nss/nw_s1_dragfeara.nss new file mode 100644 index 0000000..2bb5009 --- /dev/null +++ b/_module/nss/nw_s1_dragfeara.nss @@ -0,0 +1,45 @@ +//:://///////////////////////////////////////////// +//:: Aura of Fear On Enter +//:: NW_S1_DragFearA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Upon entering the aura of the creature the player + must make a will save or be struck with fear because + of the creatures presence. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" +void main() +{ + //Declare major variables + object oTarget = GetEnteringObject(); + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); + effect eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); + effect eDur2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eFear = EffectFrightened(); + effect eLink = EffectLinkEffects(eFear, eDur); + eLink = EffectLinkEffects(eLink, eDur2); + + int nHD = GetHitDice(GetAreaOfEffectCreator()); + int nDC = 10 + GetHitDice(GetAreaOfEffectCreator())/3; + int nDuration = GetScaledDuration(nHD, oTarget); + if(GetIsEnemy(oTarget, GetAreaOfEffectCreator())) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELLABILITY_AURA_FEAR)); + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } +} diff --git a/_module/nss/nw_s1_feroc3.nss b/_module/nss/nw_s1_feroc3.nss new file mode 100644 index 0000000..58a44cb --- /dev/null +++ b/_module/nss/nw_s1_feroc3.nss @@ -0,0 +1,41 @@ +//:://///////////////////////////////////////////// +//:: Ferocity 3 +//:: NW_S1_Feroc3 +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + The Dex and Str of the target increases +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Aug 13, 2001 +//::////////////////////////////////////////////// + +void main() +{ +//:: Declare major variables + object oNPC = OBJECT_SELF; + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION); //:: Determine the duration by getting the con modifier + int nIncrease = 9; + int nDuration = 1 + nCONMod; + if(nDuration == 0) { nDuration = 1; } + + + effect eDex = EffectAbilityIncrease(ABILITY_DEXTERITY, nIncrease); + effect eStr = EffectAbilityIncrease(ABILITY_STRENGTH, nIncrease); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + effect eLink = EffectLinkEffects(eStr, eDex); + eLink = EffectLinkEffects(eLink, eDur); + eLink = ExtraordinaryEffect(eLink); //:: Make effect extraordinary + + //effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE); + SignalEvent(oNPC, EventSpellCastAt(oNPC, SPELLABILITY_FEROCITY_3, FALSE)); + if (nCONMod > 0) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oNPC, RoundsToSeconds(nDuration)); + //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF) ; + } +} diff --git a/_module/nss/nw_s1_gazechaos.nss b/_module/nss/nw_s1_gazechaos.nss new file mode 100644 index 0000000..950ce62 --- /dev/null +++ b/_module/nss/nw_s1_gazechaos.nss @@ -0,0 +1,69 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Destroy Law +//:: NW_S1_GazeChaos +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save and are of Lawful alignment. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 13, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectDeath(); + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + if(GetAlignmentLawChaos(oTarget) == ALIGNMENT_LAWFUL) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DESTROY_LAW)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) + { + //Apply the VFX impact and effects + //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_gazecharm.nss b/_module/nss/nw_s1_gazecharm.nss new file mode 100644 index 0000000..e4a0622 --- /dev/null +++ b/_module/nss/nw_s1_gazecharm.nss @@ -0,0 +1,76 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Charm +//:: NW_S1_GazeCharm +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + if(nDuration == 0) { nDuration = 1; } + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectCharmed(); + + effect eVis = EffectVisualEffect(VFX_IMP_CHARM); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); + effect eLink = EffectLinkEffects(eDur, eVisDur); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) + { + nDuration = GetScaledDuration(nDuration, oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_CHARM)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) + { + eGaze = GetScaledEffect(eGaze, oTarget); + eLink = EffectLinkEffects(eLink, eGaze); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + + diff --git a/_module/nss/nw_s1_gazeconfu.nss b/_module/nss/nw_s1_gazeconfu.nss new file mode 100644 index 0000000..4add32f --- /dev/null +++ b/_module/nss/nw_s1_gazeconfu.nss @@ -0,0 +1,77 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Confusion +//:: NW_S1_GazeConfu +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + if(nDuration == 0) { nDuration = 1; } + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectConfused(); + effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eLink = EffectLinkEffects(eDur, eVisDur); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + if(oTarget != oNPC) + { + nDuration = GetScaledDuration(nDuration , oTarget); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_CONFUSION)); + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) + { + eGaze = GetScaledEffect(eGaze, oTarget); + eLink = EffectLinkEffects(eLink, eGaze); + + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_gazedaze.nss b/_module/nss/nw_s1_gazedaze.nss new file mode 100644 index 0000000..f0a8c2d --- /dev/null +++ b/_module/nss/nw_s1_gazedaze.nss @@ -0,0 +1,74 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Daze +//:: NW_S1_GazeDaze +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + if(nDuration == 0) { nDuration = 1; } + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectDazed(); + effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eLink = EffectLinkEffects(eGaze, eVisDur); + eLink = EffectLinkEffects(eLink, eDur); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + nDuration = GetScaledDuration(nDuration , oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DAZE)); + + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_gazedeath.nss b/_module/nss/nw_s1_gazedeath.nss new file mode 100644 index 0000000..635ee53 --- /dev/null +++ b/_module/nss/nw_s1_gazedeath.nss @@ -0,0 +1,66 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Death +//:: NW_S1_GazeDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectDeath(); + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) || oTarget != oNPC) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DEATH)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_gazedomn.nss b/_module/nss/nw_s1_gazedomn.nss new file mode 100644 index 0000000..56e56e0 --- /dev/null +++ b/_module/nss/nw_s1_gazedomn.nss @@ -0,0 +1,78 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Dominate +//:: NW_S1_GazeDomn +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + if(nDuration == 0) { nDuration = 1; } + + 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); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + nDuration = GetScaledDuration(nDuration , oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DOMINATE)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(GetIsEnemy(oTarget)) + { + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) + { + eGaze = GetScaledEffect(eGaze, oTarget); + eLink = EffectLinkEffects(eLink, eGaze); + + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_gazedoom.nss b/_module/nss/nw_s1_gazedoom.nss new file mode 100644 index 0000000..cb359b5 --- /dev/null +++ b/_module/nss/nw_s1_gazedoom.nss @@ -0,0 +1,74 @@ +//:://///////////////////////////////////////////// +//:: Gaze of Doom +//:: NW_S1_GazeDoom.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. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 22, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + if(nDuration == 0) { nDuration = 1; } + + location lTargetLocation = GetSpellTargetLocation(); + + effect eVis = EffectVisualEffect(VFX_IMP_DOOM); + effect eSaves = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2); + effect eAttack = EffectAttackDecrease(2); + effect eDamage = EffectDamageDecrease(2); + effect eSkill = EffectSkillDecrease(SKILL_ALL_SKILLS, 2); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eAttack, eDamage); + eLink = EffectLinkEffects(eLink, eSaves); + eLink = EffectLinkEffects(eLink, eSkill); + eLink = EffectLinkEffects(eLink, eDur); + + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, GetSpellTargetLocation()); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + if(oTarget != oNPC) + { + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DOOM)); + //Spell Resistance and Saving throw + if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC)) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink , oTarget, RoundsToSeconds(nDuration)); + } + } + } + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, GetSpellTargetLocation()); + } +} diff --git a/_module/nss/nw_s1_gazeevil.nss b/_module/nss/nw_s1_gazeevil.nss new file mode 100644 index 0000000..eb2a269 --- /dev/null +++ b/_module/nss/nw_s1_gazeevil.nss @@ -0,0 +1,70 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Deatroy Good +//:: NW_S1_GazeEvil +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 13, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectDeath(); + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_GOOD) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DEATH)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) + { + //Apply the VFX impact and effects + //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_gazefear.nss b/_module/nss/nw_s1_gazefear.nss new file mode 100644 index 0000000..333d85c --- /dev/null +++ b/_module/nss/nw_s1_gazefear.nss @@ -0,0 +1,74 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Fear +//:: NW_S1_GazeFear +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + if(nDuration == 0) { nDuration = 1; } + nDuration = GetScaledDuration(nDuration , oTarget); + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectFrightened(); + effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); + effect eLink = EffectLinkEffects(eGaze, eVisDur); + eLink = EffectLinkEffects(eLink, eDur); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + nDuration = GetScaledDuration(nDuration , oTarget); + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_FEAR)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, oNPC, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_gazegood.nss b/_module/nss/nw_s1_gazegood.nss new file mode 100644 index 0000000..6ce014d --- /dev/null +++ b/_module/nss/nw_s1_gazegood.nss @@ -0,0 +1,70 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Deatroy Evil +//:: NW_S1_GazeGood +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 13, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectDeath(); + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DEATH)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) + { + //Apply the VFX impact and effects + //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_gazelaw.nss b/_module/nss/nw_s1_gazelaw.nss new file mode 100644 index 0000000..14a9401 --- /dev/null +++ b/_module/nss/nw_s1_gazelaw.nss @@ -0,0 +1,71 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Deatroy Chaos +//:: NW_S1_GazeLaw +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 13, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + if(nDuration == 0) { nDuration = 1; } + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectDeath(); + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + if(GetAlignmentLawChaos(oTarget) == ALIGNMENT_CHAOTIC) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_DESTROY_LAW)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) + { + //Apply the VFX impact and effects + //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eGaze, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_gazestun.nss b/_module/nss/nw_s1_gazestun.nss new file mode 100644 index 0000000..8c44399 --- /dev/null +++ b/_module/nss/nw_s1_gazestun.nss @@ -0,0 +1,73 @@ +//:://///////////////////////////////////////////// +//:: Gaze: Stun +//:: NW_S1_GazeStun +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Cone shape that affects all within the AoE if they + fail a Will Save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 9, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "x0_i0_match" + +void main() +{ +//-------------------------------------------------------------------------- +// Make sure we are not blind +//-------------------------------------------------------------------------- + if (GetHasEffect(EFFECT_TYPE_BLINDNESS, OBJECT_SELF)) + { + FloatingTextStrRefOnCreature(84530, OBJECT_SELF, FALSE); + return; + } + + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDuration = 1 + (nHD / 3); + + location lTargetLocation = GetSpellTargetLocation(); + + effect eGaze = EffectStunned(); + effect eVis = EffectVisualEffect(VFX_IMP_STUN); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eVisDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eLink = EffectLinkEffects(eDur, eVisDur); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + nDuration = GetScaledDuration(nDuration , oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_GAZE_STUNNED)); + //Determine effect delay + float fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!/*WillSave*/PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) + { + eGaze = GetScaledEffect(eGaze, oTarget); + eLink = EffectLinkEffects(eLink, eGaze); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + diff --git a/_module/nss/nw_s1_golemgas.nss b/_module/nss/nw_s1_golemgas.nss new file mode 100644 index 0000000..6fb1495 --- /dev/null +++ b/_module/nss/nw_s1_golemgas.nss @@ -0,0 +1,41 @@ +//:://///////////////////////////////////////////// +//:: Golem Breath +//:: NW_S1_GolemGas +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Iron Golem spits out a cone of poison. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 22, 2001 +//::////////////////////////////////////////////// + +//#include "wm_include" +void main() +{ + //if (WildMagicOverride()) { return; } + //Declare major variables + location lTargetLocation = GetSpellTargetLocation(); + object oTarget; + effect eCone = EffectPoison(POISON_IRON_GOLEM); + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_GOLEM_BREATH_GAS)); + //Determine effect delay + float fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + //Apply poison effect + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTargetLocation, TRUE); + } +} + + + diff --git a/_module/nss/nw_s1_hndbreath.nss b/_module/nss/nw_s1_hndbreath.nss new file mode 100644 index 0000000..e142797 --- /dev/null +++ b/_module/nss/nw_s1_hndbreath.nss @@ -0,0 +1,66 @@ +//:://///////////////////////////////////////////// +//:: Hell Hound Fire Breath +//:: NW_S1_HndBreath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A cone of fire eminates from the hound. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); + int nDC = 10 +nCONMod+ (nHD/2); + int nDamage = d6(2); + + float fDelay; + + location lTargetLocation = GetSpellTargetLocation(); + + effect eCone; + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HELL_HOUND_FIREBREATH)); + + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE); + + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + + //Set damage effect + eCone = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eCone, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 11.0, lTargetLocation, TRUE); + } +} + + + diff --git a/_module/nss/nw_s1_howlconf.nss b/_module/nss/nw_s1_howlconf.nss new file mode 100644 index 0000000..f9d770e --- /dev/null +++ b/_module/nss/nw_s1_howlconf.nss @@ -0,0 +1,67 @@ +//:://///////////////////////////////////////////// +//:: Howl: Confuse +//:: NW_S1_HowlConf +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A howl emanates from the creature which affects + all within 20ft unless they make a save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/4); + int nDuration = 1 + (nHD/4); + if(nDuration == 0) { nDuration = 1; } + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_CONFUSION_S); + effect eHowl = EffectConfused(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND); + effect eLink = EffectLinkEffects(eHowl, eDur); + eLink = EffectLinkEffects(eLink, eDur2); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) + { + nDuration = GetScaledDuration(nDuration , oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_CONFUSE)); + fDelay = GetDistanceToObject(oTarget)/10; + //Make a saving throw check + if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + } +} + + diff --git a/_module/nss/nw_s1_howldaze.nss b/_module/nss/nw_s1_howldaze.nss new file mode 100644 index 0000000..bd8e20c --- /dev/null +++ b/_module/nss/nw_s1_howldaze.nss @@ -0,0 +1,65 @@ +//:://///////////////////////////////////////////// +//:: Howl: Daze +//:: NW_S1_HowlDaze +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A howl emanates from the creature which affects + all within 10ft unless they make a save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/4); + int nDuration = 1 + (nHD/4); + if(nDuration == 0) { nDuration = 1; } + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); + effect eHowl = EffectDazed(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND); + effect eLink = EffectLinkEffects(eHowl, eDur); + eLink = EffectLinkEffects(eLink, eDur2); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) + { + nDuration = GetScaledDuration(nDuration , oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_DAZE)); + fDelay = GetDistanceToObject(oTarget)/10; + //Make a saving throw check + if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS, oNPC, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_howldeath.nss b/_module/nss/nw_s1_howldeath.nss new file mode 100644 index 0000000..5730647 --- /dev/null +++ b/_module/nss/nw_s1_howldeath.nss @@ -0,0 +1,59 @@ +//:://///////////////////////////////////////////// +//:: Howl: Death +//:: NW_S1_HowlDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A howl emanates from the creature which affects + all within 10ft unless they make a save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/4); + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_ODD); + effect eHowl = EffectDeath(); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_DEATH)); + fDelay = GetDistanceToObject(oTarget)/10; + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_howlfear.nss b/_module/nss/nw_s1_howlfear.nss new file mode 100644 index 0000000..13dcfaf --- /dev/null +++ b/_module/nss/nw_s1_howlfear.nss @@ -0,0 +1,68 @@ +//:://///////////////////////////////////////////// +//:: Howl: Fear +//:: NW_S1_HowlFear +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A howl emanates from the creature which affects + all within 10ft unless they make a save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/4); + int nDuration = 1 + (nHD/4); + if(nDuration == 0) { nDuration = 1; } + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); + effect eHowl = EffectFrightened(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); + effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND); + effect eLink = EffectLinkEffects(eHowl, eDur); + eLink = EffectLinkEffects(eLink, eDur2); + + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) + { + fDelay = GetDistanceToObject(oTarget)/10; + nDuration = GetScaledDuration(nDuration , oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_FEAR)); + + //Make a saving throw check + if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_howlparal.nss b/_module/nss/nw_s1_howlparal.nss new file mode 100644 index 0000000..b0ecd43 --- /dev/null +++ b/_module/nss/nw_s1_howlparal.nss @@ -0,0 +1,65 @@ +//:://///////////////////////////////////////////// +//:: Howl: Paralysis +//:: NW_S1_HowlParal +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A howl emanates from the creature which affects + all within 10ft unless they make a save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/4); + int nDuration = 1 + (nHD/4); + if(nDuration == 0) { nDuration = 1; } + + float fDelay; + + effect eHowl = EffectParalyze(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD); + effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_ODD); + effect eLink = EffectLinkEffects(eHowl, eDur); + eLink = EffectLinkEffects(eLink, eDur2); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) + { + fDelay = GetDistanceToObject(oTarget)/10; + nDuration = GetScaledDuration(nDuration , oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_PARALYSIS)); + + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_NONE, oNPC, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_howlsonic.nss b/_module/nss/nw_s1_howlsonic.nss new file mode 100644 index 0000000..4de9768 --- /dev/null +++ b/_module/nss/nw_s1_howlsonic.nss @@ -0,0 +1,65 @@ +//:://///////////////////////////////////////////// +//:: Howl: Sonic +//:: NW_S1_HowlSonic +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A howl emanates from the creature which affects + all within 10ft unless they make a save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/4); + int nDamage; + int nSonic = nHD/4; + if(nSonic == 0) { nSonic = 1; } + + effect eVis = EffectVisualEffect(VFX_IMP_SONIC); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY); + + float fDelay; + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsFriend(oTarget) && oTarget != oNPC) + { + fDelay = GetDistanceToObject(oTarget)/20; + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_SONIC)); + nDamage = d6(nSonic); + //Make a saving throw check + if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SONIC, oNPC, fDelay)) + { + nDamage = nDamage / 2; + } + //Set damage effect + eHowl = EffectDamage(nDamage, DAMAGE_TYPE_SONIC); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + } +} \ No newline at end of file diff --git a/_module/nss/nw_s1_howlstun.nss b/_module/nss/nw_s1_howlstun.nss new file mode 100644 index 0000000..962d9b9 --- /dev/null +++ b/_module/nss/nw_s1_howlstun.nss @@ -0,0 +1,66 @@ +//:://///////////////////////////////////////////// +//:: Howl: Stun +//:: NW_S1_HowlStun +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A howl emanates from the creature which affects + all within 10ft unless they make a save. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "NW_I0_SPELLS" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/4); + int nDuration = 1 + (nHD/4); + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_STUN); + effect eHowl = EffectStunned(); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur2 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eImpact = EffectVisualEffect(VFX_FNF_HOWL_MIND); + effect eLink = EffectLinkEffects(eHowl, eDur); + eLink = EffectLinkEffects(eLink, eDur2); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && !GetIsFriend(oTarget) && oTarget != oNPC) + { + fDelay = GetDistanceToObject(oTarget)/10; + nDuration = GetScaledDuration(nDuration , oTarget); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_HOWL_STUN)); + + //Make a saving throw check + if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration))); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_krenscare.nss b/_module/nss/nw_s1_krenscare.nss new file mode 100644 index 0000000..7909916 --- /dev/null +++ b/_module/nss/nw_s1_krenscare.nss @@ -0,0 +1,61 @@ +//:://///////////////////////////////////////////// +//:: Krenshar Fear Stare +//:: NW_S1_KrenScare +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Causes those in the gaze to be struck with fear +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 8, 2002 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nMetaMagic = PRCGetMetaMagicFeat(); + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); + effect eFear = EffectFrightened(); + effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + //Link the fear and mind effects + effect eLink = EffectLinkEffects(eFear, eMind); + eLink = EffectLinkEffects(eLink, eDur); + + + //Get first target in the spell cone + oTarget = GetFirstObjectInShape(SHAPE_CONE, 10.0, GetSpellTargetLocation(), TRUE); + while(GetIsObjectValid(oTarget)) + { + //Make faction check + if(GetIsEnemy(oTarget)) + { + fDelay = GetDistanceToObject(oTarget)/20; + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_KRENSHAR_SCARE)); + //Make a will save + if(!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) + { + //Apply the linked effects and the VFX impact + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3))); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + //Get next target in the spell cone + oTarget = GetNextObjectInShape(SHAPE_CONE, 10.0, GetSpellTargetLocation(), TRUE); + } +} diff --git a/_module/nss/nw_s1_mephsalt.nss b/_module/nss/nw_s1_mephsalt.nss new file mode 100644 index 0000000..03b0b97 --- /dev/null +++ b/_module/nss/nw_s1_mephsalt.nss @@ -0,0 +1,63 @@ +//:://///////////////////////////////////////////// +//:: Salt Mephit Breath +//:: NW_S1_MephSalt +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Salt Mephit shoots out a bolt of corrosive material + that causes 1d4 damage and reduces AC and Attack by 2 + + This should be a cone - Jaysyn +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); + int nDC = 10 +nCONMod+ (nHD/2); + int nDamage = d4(); + + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + effect eBolt, eAttack, eAC; + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ACID); + + //Make a ranged touch attack + int nTouch = TouchAttackRanged(oTarget); + if(nDamage == 0) {nTouch = 0;} + if(nTouch > 0) + { + if(nTouch == 2) + { + nDamage *= 2; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MEPHIT_SALT_BREATH)); + + //Set damage, AC mod and attack mod effects + eBolt = EffectDamage(nDamage, DAMAGE_TYPE_ACID); + eAC = EffectACDecrease(2); + eAttack = EffectAttackDecrease(2); + effect eLink = EffectLinkEffects(eAttack, eAC); + eLink = EffectLinkEffects(eLink, eDur); + + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_mephsteam.nss b/_module/nss/nw_s1_mephsteam.nss new file mode 100644 index 0000000..9b46d89 --- /dev/null +++ b/_module/nss/nw_s1_mephsteam.nss @@ -0,0 +1,67 @@ +//:://///////////////////////////////////////////// +//:: Steam Mephit Breath +//:: NW_S1_MephSteam +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Steam Mephit shoots out a bolt of steam + that causes 1d4 damage and reduces AC by 4 + and Attack by 2 + + This should be a cone - Jaysyn +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 11, 2001 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); + int nDC = 10 +nCONMod+ (nHD/2); + int nDamage = d4(); + + + effect eVis = EffectVisualEffect(VFX_IMP_ACID_S); + effect eBolt, eAttack, eAC; + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + + + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE); + + //Make a ranged touch attack + int nTouch = TouchAttackRanged(oTarget); + if(nDamage == 0) {nTouch = 0;} + + if(nTouch > 0) + { + if(nTouch == 2) + { + nDamage *= 2; + } + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MEPHIT_STEAM_BREATH)); + + //Set damage, AC mod and attack mod effects + eBolt = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + eAC = EffectACDecrease(4); + eAttack = EffectAttackDecrease(2); + effect eLink = EffectLinkEffects(eAC, eAttack); + eLink = EffectLinkEffects(eLink, eDur); + + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(3)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eBolt, oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } +} diff --git a/_module/nss/nw_s1_mumundead.nss b/_module/nss/nw_s1_mumundead.nss new file mode 100644 index 0000000..f11db57 --- /dev/null +++ b/_module/nss/nw_s1_mumundead.nss @@ -0,0 +1,53 @@ +//:://///////////////////////////////////////////// +//:: Bolster Undead +//:: NW_S1_MumUndead +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + This spell increases the Turn Resistance of + all undead around the caster by an amount + scaled with HD. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 22, 2002 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nScaling = nHD / 4; + + if(nScaling == 0) {nScaling = 1;} + + float fDelay; + + effect eTurn = EffectTurnResistanceIncrease(nScaling); + effect eVis = EffectVisualEffect(VFX_IMP_HEAD_EVIL); + effect eImpact = EffectVisualEffect(VFX_FNF_LOS_EVIL_30); + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetLocation(oNPC)); + + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(GetIsFriend(oTarget)) + { + fDelay = GetRandomDelay(); + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_MUMMY_BOLSTER_UNDEAD, FALSE)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTurn, oTarget, RoundsToSeconds(10))); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(oNPC)); + } +} diff --git a/_module/nss/nw_s1_pulschrdr.nss b/_module/nss/nw_s1_pulschrdr.nss new file mode 100644 index 0000000..b55902c --- /dev/null +++ b/_module/nss/nw_s1_pulschrdr.nss @@ -0,0 +1,73 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Charisma Drain +//:: NW_S1_PulsDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + int nDamage = nHD/5; + + if (nDamage == 0) {nDamage = 1;} + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_CHARISMA)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Make a saving throw check + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) + { + //Set the Ability mod and change to supernatural effect + eHowl = EffectAbilityDecrease(ABILITY_CHARISMA, nDamage); + eHowl = SupernaturalEffect(eHowl); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get first target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + + diff --git a/_module/nss/nw_s1_pulscold.nss b/_module/nss/nw_s1_pulscold.nss new file mode 100644 index 0000000..c5ff7d2 --- /dev/null +++ b/_module/nss/nw_s1_pulscold.nss @@ -0,0 +1,68 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Cold +//:: NW_S1_PulsCold +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage = d6(nHD); + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_FROST_S); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_COLD); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_COLD)); + + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_COLD); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + eHowl = EffectDamage(nDamage, DAMAGE_TYPE_COLD); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + + diff --git a/_module/nss/nw_s1_pulscondr.nss b/_module/nss/nw_s1_pulscondr.nss new file mode 100644 index 0000000..bfdbfcf --- /dev/null +++ b/_module/nss/nw_s1_pulscondr.nss @@ -0,0 +1,71 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Constitution Drain +//:: NW_S1_PulsDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + int nDamage = nHD/5; + + if (nDamage == 0) {nDamage = 1;} + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_CONSTITUTION)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Make a saving throw check + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) + { + //Set the Ability mod and change to supernatural effect + eHowl = EffectAbilityDecrease(ABILITY_CONSTITUTION, nDamage); + eHowl = SupernaturalEffect(eHowl); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get first target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_pulsdeath.nss b/_module/nss/nw_s1_pulsdeath.nss new file mode 100644 index 0000000..7c949d1 --- /dev/null +++ b/_module/nss/nw_s1_pulsdeath.nss @@ -0,0 +1,68 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Death +//:: NW_S1_PulsDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + int nDamage = nHD/5; + + if (nDamage == 0) {nDamage = 1;} + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_DEATH); + effect eHowl = EffectDeath(); + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + if(oTarget != OBJECT_SELF) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DEATH)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH, oNPC, fDelay)) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + //DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + + diff --git a/_module/nss/nw_s1_pulsdexdr.nss b/_module/nss/nw_s1_pulsdexdr.nss new file mode 100644 index 0000000..d29872a --- /dev/null +++ b/_module/nss/nw_s1_pulsdexdr.nss @@ -0,0 +1,70 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Dexterity Drain +//:: NW_S1_PulsDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + int nDamage = nHD/5; + + if (nDamage == 0) {nDamage = 1;} + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_DEXTERITY)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Make a saving throw check + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) + { + //Set the Ability mod and change to supernatural effect + eHowl = EffectAbilityDecrease(ABILITY_DEXTERITY, nDamage); + eHowl = SupernaturalEffect(eHowl); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get first target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_pulsdis.nss b/_module/nss/nw_s1_pulsdis.nss new file mode 100644 index 0000000..f81568c --- /dev/null +++ b/_module/nss/nw_s1_pulsdis.nss @@ -0,0 +1,85 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Disease +//:: NW_S1_PulsDis +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of disease spreads out from the creature + and infects all those within 10ft +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Aug 14, 2000 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nRacial = MyPRCGetRacialType(oNPC); + int nHD = GetHitDice(oNPC); + int nDamage = d6(nHD); + int nDisease; + + float fDelay; + + effect eDisease; + effect ePulse = EffectVisualEffect(266); + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE); + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, ePulse, GetLocation(oNPC)); + + //Determine the disease type based on the Racial Type + switch (nRacial) + { + case RACIAL_TYPE_VERMIN: + nDisease = DISEASE_VERMIN_MADNESS; + break; + case RACIAL_TYPE_UNDEAD: + nDisease = DISEASE_FILTH_FEVER; + break; + case RACIAL_TYPE_OUTSIDER: + nDisease = DISEASE_DEMON_FEVER; + break; + case RACIAL_TYPE_MAGICAL_BEAST: + nDisease = DISEASE_SOLDIER_SHAKES; + break; + case RACIAL_TYPE_ABERRATION: + nDisease = DISEASE_BLINDING_SICKNESS; + break; + default: + nDisease = DISEASE_MINDFIRE; + break; + } + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_DISEASE)); + //Determine effect delay + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + eDisease = EffectDisease(nDisease); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + + diff --git a/_module/nss/nw_s1_pulselec.nss b/_module/nss/nw_s1_pulselec.nss new file mode 100644 index 0000000..2f85614 --- /dev/null +++ b/_module/nss/nw_s1_pulselec.nss @@ -0,0 +1,68 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Lightning +//:: NW_S0_CallLghtn.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + All creatures within 10ft of the creature take + 1d6 per HD up to 10d6 +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 22, 2001 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + + effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_S); + effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING, oNPC, BODY_NODE_CHEST); + effect eHowl = EffectVisualEffect(VFX_IMP_PULSE_COLD); + + DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eHowl, GetLocation(oNPC))); + + float fDelay; + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_LIGHTNING)); + //Roll the damage + nDamage = d6(nHD); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_ELECTRICITY); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + eHowl = EffectDamage(nDamage, DAMAGE_TYPE_ELECTRICAL); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLightning,oTarget, 0.5)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_pulsfire.nss b/_module/nss/nw_s1_pulsfire.nss new file mode 100644 index 0000000..9270aa9 --- /dev/null +++ b/_module/nss/nw_s1_pulsfire.nss @@ -0,0 +1,69 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Fire +//:: NW_S1_PulsFire +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_FIRE); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != OBJECT_SELF) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_FIRE)); + //Roll the damage + nDamage = d6(nHD); + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE); + //Determine effect delay + fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20; + eHowl = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + if(nDamage > 0) + { + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF)); + } +} + + diff --git a/_module/nss/nw_s1_pulsholy.nss b/_module/nss/nw_s1_pulsholy.nss new file mode 100644 index 0000000..20ae463 --- /dev/null +++ b/_module/nss/nw_s1_pulsholy.nss @@ -0,0 +1,89 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Holy +//:: NW_S1_PulsHoly +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. Undead are damaged, allies are healed. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M); + effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_HOLY); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Roll the amount to heal or damage + nDamage = d4(nHD); + //If the target is not undead + if (MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) + { + //Make a faction check + if(oTarget != oNPC) + { + if(GetIsFriend(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY, FALSE)); + //Set heal effect + eHowl = EffectHeal(nDamage); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + else + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_DIVINE); + //Set damage effect + eHowl = EffectDamage(nDamage, DAMAGE_TYPE_DIVINE) ; + if(nDamage > 0) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY)); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_pulsintdr.nss b/_module/nss/nw_s1_pulsintdr.nss new file mode 100644 index 0000000..8558364 --- /dev/null +++ b/_module/nss/nw_s1_pulsintdr.nss @@ -0,0 +1,72 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Intelligence Drain +//:: NW_S1_PulsDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + int nDamage = nHD/5; + + if (nDamage == 0) {nDamage = 1;} + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_INTELLIGENCE)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Make a saving throw check + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) + { + //Set the Ability mod and change to supernatural effect + eHowl = EffectAbilityDecrease(ABILITY_INTELLIGENCE, nDamage); + eHowl = SupernaturalEffect(eHowl); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get first target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF)); + } +} + diff --git a/_module/nss/nw_s1_pulslvldr.nss b/_module/nss/nw_s1_pulslvldr.nss new file mode 100644 index 0000000..f65e073 --- /dev/null +++ b/_module/nss/nw_s1_pulslvldr.nss @@ -0,0 +1,62 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Level Drain +//:: NW_S1_PulsLvlDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetLocation(oNPC)); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + fDelay = GetSpellEffectDelay(GetLocation(oNPC), oTarget)/20; + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) + { + //Apply the VFX impact and effects + eHowl = EffectNegativeLevel(1); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_pulsneg.nss b/_module/nss/nw_s1_pulsneg.nss new file mode 100644 index 0000000..9bfa749 --- /dev/null +++ b/_module/nss/nw_s1_pulsneg.nss @@ -0,0 +1,87 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Negative +//:: NW_S1_PulsDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. Undead are healed. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + int nDamage; + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M); + effect eVis2 = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Roll the amount to heal or damage + nDamage = d4(nHD); + //If the target is undead + if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + //Make a faction check + if(GetIsFriend(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY, FALSE)); + //Set heal effect + eHowl = EffectHeal(nDamage); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + else + { + if(!GetIsReactionTypeFriendly(oTarget) && MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) + { + //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE); + //Set damage effect + eHowl = EffectDamage(nDamage, DAMAGE_TYPE_NEGATIVE); + if(nDamage > 0) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_HOLY)); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget)); + } + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} diff --git a/_module/nss/nw_s1_pulspois.nss b/_module/nss/nw_s1_pulspois.nss new file mode 100644 index 0000000..252ae3a --- /dev/null +++ b/_module/nss/nw_s1_pulspois.nss @@ -0,0 +1,138 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Poison +//:: NW_S1_PulsPois +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. All who make a reflex save are not + poisoned. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 23, 2000 +//::////////////////////////////////////////////// +#include "prc_inc_racial" +//#include "wm_include" + +void main() +{ +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); + int nDC = 10 +nCONMod+ (nHD/2); + int nRacial = MyPRCGetRacialType(oNPC); + int nPoison; + + float fDelay; + + effect ePoison; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE); + + //Determine the poison type based on the Racial Type and HD + switch (nRacial) + { + case RACIAL_TYPE_OUTSIDER: + if (nHD <= 9) + { + nPoison = POISON_QUASIT_VENOM; + } + else if (nHD > 9 && nHD < 13) + { + nPoison = POISON_BEBILITH_VENOM; + } + else if (nHD >= 13) + { + nPoison = POISON_PIT_FIEND_ICHOR; + } + break; + case RACIAL_TYPE_VERMIN: + if (nHD < 3) + { + nPoison = POISON_TINY_SPIDER_VENOM; + } + else if (nHD <= 3 && nHD < 6) + { + nPoison = POISON_SMALL_SPIDER_VENOM; + } + else if (nHD <= 6 && nHD < 9) + { + nPoison = POISON_MEDIUM_SPIDER_VENOM; + } + else if (nHD <= 9 && nHD < 12) + { + nPoison = POISON_LARGE_SPIDER_VENOM; + } + else if (nHD <= 12 && nHD < 15) + { + nPoison = POISON_HUGE_SPIDER_VENOM; + } + else if (nHD <= 15 && nHD < 18) + { + nPoison = POISON_GARGANTUAN_SPIDER_VENOM; + } + else if (nHD >= 18) + { + nPoison = POISON_COLOSSAL_SPIDER_VENOM; + } + break; + default: + if (nHD < 3) + { + nPoison = POISON_NIGHTSHADE; + } + else if (nHD <= 3 && nHD < 6) + { + nPoison = POISON_BLADE_BANE; + } + else if (nHD <= 6 && nHD < 9) + { + nPoison = POISON_BLOODROOT; + } + else if (nHD <= 9 && nHD < 12) + { + nPoison = POISON_LARGE_SPIDER_VENOM; + } + else if (nHD <= 12 && nHD < 15) + { + nPoison = POISON_LICH_DUST; + } + else if (nHD <= 15 && nHD < 18) + { + nPoison = POISON_DARK_REAVER_POWDER; + } + else if (nHD >= 18 ) + { + nPoison = POISON_BLACK_LOTUS_EXTRACT; + } + break; + } + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_POISON)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + ePoison = EffectPoison(nPoison); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + + diff --git a/_module/nss/nw_s1_pulsspore.nss b/_module/nss/nw_s1_pulsspore.nss new file mode 100644 index 0000000..7e9e34d --- /dev/null +++ b/_module/nss/nw_s1_pulsspore.nss @@ -0,0 +1,50 @@ +//:://///////////////////////////////////////////// +//:: Vrock Spores +//:: NW_S1_PulsSpore +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of disease spreads out from the creature + and infects all those within 10ft +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 8, 2002 +//::////////////////////////////////////////////// +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + float fDelay; + effect eDisease; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_DISEASE)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + eDisease = EffectDisease(DISEASE_SOLDIER_SHAKES); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDisease, oTarget)); + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(oNPC)); + } +} diff --git a/_module/nss/nw_s1_pulsstrdr.nss b/_module/nss/nw_s1_pulsstrdr.nss new file mode 100644 index 0000000..5f88eab --- /dev/null +++ b/_module/nss/nw_s1_pulsstrdr.nss @@ -0,0 +1,71 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Strength Drain +//:: NW_S1_PulsDeath +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + int nDamage = nHD/5; + + if (nDamage == 0) {nDamage = 1;} + + float fDelay; + + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eHowl; + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + while(GetIsObjectValid(oTarget)) + { + if(oTarget != oNPC) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_STRENGTH)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Make a saving throw check + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) + { + //Set the Ability mod and change to supernatural effect + eHowl = EffectAbilityDecrease(ABILITY_STRENGTH, nDamage); + eHowl = SupernaturalEffect(eHowl); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + } + //Get next target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} + diff --git a/_module/nss/nw_s1_pulswind.nss b/_module/nss/nw_s1_pulswind.nss new file mode 100644 index 0000000..0572407 --- /dev/null +++ b/_module/nss/nw_s1_pulswind.nss @@ -0,0 +1,51 @@ +//:://///////////////////////////////////////////// +//:: Pulse Whirlwind +//:: NW_S1_PulsWind +//:: Copyright (c) 2001 Bioware Corp. +//:://///////////////////////////////////////////// +/* + All those that fail a save are knocked + down by the elemental whirlwind. +*/ +//:://///////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 8, 2002 +//:://///////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nSTRMod = GetAbilityModifier(ABILITY_STRENGTH, oNPC); + int nDC = 10 +nSTRMod+ (nHD/2); + + effect eDown = EffectKnockdown(); + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_WIND); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, oNPC); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != oNPC) + { + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDown, oTarget, 5.0); + } + //Get next target in spell area + } + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oNPC)); + } +} diff --git a/_module/nss/nw_s1_pulswisdr.nss b/_module/nss/nw_s1_pulswisdr.nss new file mode 100644 index 0000000..b1bf68c --- /dev/null +++ b/_module/nss/nw_s1_pulswisdr.nss @@ -0,0 +1,68 @@ +//:://///////////////////////////////////////////// +//:: Pulse: Wisdom Drain +//:: NW_S1_PulsWisDr +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + A wave of energy emanates from the creature which affects + all within 10ft. Damage can be reduced by half for all + damaging variants. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 14, 2000 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget; + + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + int nDamage = nHD/5; + + if (nDamage == 0) {nDamage = 1;} + + float fDelay; + + effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); + effect eHowl; + effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF); + + //Get first target in spell area + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF)); + while(GetIsObjectValid(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget) && oTarget != OBJECT_SELF) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_PULSE_ABILITY_DRAIN_WISDOM)); + //Determine effect delay + fDelay = GetDistanceBetween(oNPC, oTarget)/20; + //Make a saving throw check + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NEGATIVE, oNPC, fDelay)) + { + //Set the Ability mod and change to supernatural effect + eHowl = EffectAbilityDecrease(ABILITY_WISDOM, nDamage); + eHowl = SupernaturalEffect(eHowl); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHowl, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + } + } + //Get first target in spell area + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, GetLocation(OBJECT_SELF)); + } +} + diff --git a/_module/nss/nw_s1_smokeclaw.nss b/_module/nss/nw_s1_smokeclaw.nss new file mode 100644 index 0000000..6db3666 --- /dev/null +++ b/_module/nss/nw_s1_smokeclaw.nss @@ -0,0 +1,64 @@ +//:://///////////////////////////////////////////// +//:: Smoke Claws +//:: NW_S1_SmokeClaw +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + If a Belker succeeds at a touch attack the + target breaths in part of the Belker and suffers + 3d4 damage per round until a Fortitude save is + made. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 23 , 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//#include "wm_include" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); + int nDC = 10 +nCONMod+ (nHD/2); + + int bSave = FALSE; + + effect eVis = EffectVisualEffect(VFX_COM_BLOOD_REG_RED); + effect eSmoke; + float fDelay = 0.0; + + //Make a touch attack + if(TouchAttackMelee(oTarget)) + { + if(!GetIsReactionTypeFriendly(oTarget)) + { + //Make a saving throw check + while (bSave == FALSE) + { + //Make a saving throw check + if(!/*FortSave*/PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE, oNPC, fDelay)) + { + bSave = TRUE; + } + else + { + //Set damage + eSmoke = EffectDamage(d4(3)); + //Apply the VFX impact and effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eSmoke, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + //Increment the delay + fDelay = fDelay + 6.0; + } + } + } + } +} diff --git a/_module/nss/nw_s1_stink_a.nss b/_module/nss/nw_s1_stink_a.nss new file mode 100644 index 0000000..67652dd --- /dev/null +++ b/_module/nss/nw_s1_stink_a.nss @@ -0,0 +1,57 @@ +//:://///////////////////////////////////////////// +//:: Stinking Cloud On Enter +//:: NW_S1_Stink_A.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Those within the area of effect must make a + fortitude save or be dazed. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 17, 2001 +//::////////////////////////////////////////////// + +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); //Get the first object in the persistant area + + int nHD = GetHitDice(oNPC); + int nCONMod = GetAbilityModifier(ABILITY_CONSTITUTION, oNPC); + int nDC = 10 +nCONMod+ (nHD/2); + + effect eStink = EffectDazed(); + effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eMind, eStink); + eLink = EffectLinkEffects(eLink, eDur); + + effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S); + + float fDelay; + + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + + if(MyPRCGetRacialType(oTarget) != RACIAL_TYPE_VERMIN) + { + if(GetIsEnemy(oTarget)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_STINKING_CLOUD)); + //Make a Fort Save + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON)) + { + fDelay = GetRandomDelay(0.25, 1.0); + //Apply the VFX impact and linked effects + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); + DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(2))); + } + } + } +} diff --git a/_module/nss/nw_s1_tyrantfga.nss b/_module/nss/nw_s1_tyrantfga.nss new file mode 100644 index 0000000..a2752cb --- /dev/null +++ b/_module/nss/nw_s1_tyrantfga.nss @@ -0,0 +1,56 @@ +//:://///////////////////////////////////////////// +//:: Tyrant Fog Zombie Mist Heartbeat +//:: NW_S1_TyrantFgA.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creatures entering the area around the zombie + must save or take 1 point of Constitution + damage. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +#include "NW_I0_SPELLS" +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = GetAreaOfEffectCreator(); + object oTarget = GetEnteringObject(); + //if (NullMagicOverride(GetArea(oTarget), oTarget, oTarget)) {return;} + + int bAbsent = TRUE; + int nHD = GetHitDice(oNPC); + int nCHAMod = GetAbilityModifier(ABILITY_CHARISMA, oNPC); + int nDC = 10 +nCHAMod+ (nHD/2); + + effect eTest; + effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, 1); + eCon = ExtraordinaryEffect(eCon); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eLink = EffectLinkEffects(eCon, eDur); + + if(!GetHasSpellEffect(SPELLABILITY_TYRANT_FOG_MIST, oTarget)) + { + if(bAbsent == TRUE) + { + if(GetIsEnemy(oTarget, oNPC)) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oNPC, SPELLABILITY_TYRANT_FOG_MIST)); + //Make a saving throw check + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON)) + { + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(5)); + } + } + } + } +} diff --git a/_module/nss/nw_s1_tyrantfog.nss b/_module/nss/nw_s1_tyrantfog.nss new file mode 100644 index 0000000..e3ab9e6 --- /dev/null +++ b/_module/nss/nw_s1_tyrantfog.nss @@ -0,0 +1,25 @@ +//:://///////////////////////////////////////////// +//:: Tyrant Fog Zombie Mist +//:: NW_S1_TyrantFog.nss +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Creatures entering the area around the zombie + must save or take 1 point of Constitution + damage. +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: May 25, 2001 +//::////////////////////////////////////////////// +//#include "wm_include" +#include "prc_inc_spells" + +void main() +{ + //if (WildMagicOverride()) { return; } + + //Declare and apply the AOE + effect eAOE = EffectAreaOfEffect(AOE_MOB_TYRANT_FOG); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAOE, OBJECT_SELF, HoursToSeconds(100)); +} diff --git a/_module/nss/nw_s2_divprot.nss b/_module/nss/nw_s2_divprot.nss new file mode 100644 index 0000000..fff40ab --- /dev/null +++ b/_module/nss/nw_s2_divprot.nss @@ -0,0 +1,45 @@ +//:://///////////////////////////////////////////// +//:: Divine Protection +//:: NW_S2_DivProt.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 8, 2002 +//::////////////////////////////////////////////// +#include "prc_inc_spells" +//#include "wm_include" +void main() +{ + //if (WildMagicOverride()) { return; } + +//:: Declare major variables + object oNPC = OBJECT_SELF; + object oTarget = PRCGetSpellTargetObject(); + + effect eVis = EffectVisualEffect(VFX_DUR_SANCTUARY); + effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); + int nDC = 10 + GetAbilityModifier(ABILITY_CHARISMA) + GetLevelByTypeDivine(oNPC); + effect eSanc = EffectSanctuary(nDC); + + effect eLink = EffectLinkEffects(eVis, eSanc); + eLink = EffectLinkEffects(eLink, eDur); + //Fire cast spell at event for the specified target + SignalEvent(OBJECT_SELF, EventSpellCastAt(oNPC, SPELLABILITY_DIVINE_PROTECTION, FALSE)); + + int nDuration = GetLevelByTypeDivine(oNPC); + //Enter Metamagic conditions + int nMetaMagic = PRCGetMetaMagicFeat(); + if (nMetaMagic == METAMAGIC_EXTEND) + { + nDuration = nDuration *2; //Duration is +100% + } + //Apply the VFX impact and effects + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); +} + diff --git a/_module/nss/nw_s3_balordeth.nss b/_module/nss/nw_s3_balordeth.nss new file mode 100644 index 0000000..96d0afb --- /dev/null +++ b/_module/nss/nw_s3_balordeth.nss @@ -0,0 +1,62 @@ +// HCR v3.2.0 - Execute default death script after fireball effects is complete. +//:://////////////////////////////////////////////////////////////////////////// +//:: FileName: NW_S3_BALORDETH +//:://////////////////////////////////////////////////////////////////////////// +/* + Fireball explosion does 50 damage to all within 20ft. +*/ +//:://////////////////////////////////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Jan 9, 2002 +//:://////////////////////////////////////////////////////////////////////////// +#include "NW_I0_SPELLS" +#include "prc_inc_spells" +//:://////////////////////////////////////////////////////////////////////////// +void main() +{ + // Declare major variables. + int nMetaMagic = PRCGetMetaMagicFeat(); + int nDamage; + float fDelay; + effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M); + effect eDam; + + // Apply the fireball explosion. + effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL); + location lTarget = GetLocation(OBJECT_SELF); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget); + + // Cycle through the targets until an invalid object is captured. + object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR); + while (GetIsObjectValid(oTarget)) + { + // Fire cast spell at event for the specified target. + SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL)); + + // Calculate delay based on distance between explosion and the target. + fDelay = (GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20); + if (!PRCDoResistSpell(OBJECT_SELF, oTarget, FloatToInt(fDelay))) + { + // Adjust damage based on Reflex Save, Evasion and Improved Evasion. + nDamage = PRCGetReflexAdjustedDamage(50, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE); + if (nDamage > 0) + { + // Apply effects to the currently selected target. + eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); + 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. + oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR); + } + + // HCR 3.0 - Call default death script. + ExecuteScript("nw_c2_default7", OBJECT_SELF); +} +//:://////////////////////////////////////////////////////////////////////////// diff --git a/_module/nss/onmoduleload.nss b/_module/nss/onmoduleload.nss index b99b5c9..b204eeb 100644 --- a/_module/nss/onmoduleload.nss +++ b/_module/nss/onmoduleload.nss @@ -124,7 +124,7 @@ SetName(oRainbow2, ChaoticText(GetName(oRainbow2, TRUE))); if(MULTI == TRUE) { - DelayCommand(60.0, ExecuteScript("savepcinfo", OBJECT_SELF)); + //:: DelayCommand(60.0, ExecuteScript("savepcinfo", OBJECT_SELF)); //:: Not needed for EE } ////////////////////////////////////////////////////////////////////////// diff --git a/_module/nss/onunaquireitem.nss b/_module/nss/onunaquireitem.nss index f684a9b..cb3a942 100644 --- a/_module/nss/onunaquireitem.nss +++ b/_module/nss/onunaquireitem.nss @@ -51,7 +51,7 @@ string sMsg; //This script destroys all items dropped if not in combat (disarmed) //or if the item is put into a container in the module. //Simply place // before Execute to turn off. -ExecuteScript("trashem",OBJECT_SELF); +//ExecuteScript("trashem",OBJECT_SELF); //////////////////////////////////////////////////////////////////////// ////Pick Pocket Watch///// Testing... diff --git a/_module/nss/time_keeper.nss b/_module/nss/time_keeper.nss index 28a9b8a..892beef 100644 --- a/_module/nss/time_keeper.nss +++ b/_module/nss/time_keeper.nss @@ -44,7 +44,7 @@ const int nRestart = 0; //Set this to 0 if you are using Re-Load Module const int nReload = 0; //Set this to 0 if you are using Restart Server //Set the name of your module below if you are using Re-Load Module -const string sModuleName = "Guile's UNDERWORLD"; +const string sModuleName = "Underworld 2"; //Set the # below to what Time you want to reset the Module or Server //NOTE: The time is in minutes (Multiple Hours X 60) @@ -430,7 +430,7 @@ sResetTime += " Minutes."; /////////////////////////////////////////////////////////////// //Check The Reset System (every heartbeat!) -DoResetCheck(sColor, nMinute); +//:: DoResetCheck(sColor, nMinute); ///////////////////////////////////////////////////////////////// //Let's set some visual effects on the Time Keeper (ONCE!) @@ -500,7 +500,7 @@ else PrintString("Auto Quick Saved Fired, SEE SCRIPT: (time_keeper) LINE 488."); //Export all Non-Polymorphed PCs who are NOT between areas.. - DoExportCharacters(); + // DoExportCharacters(); //:: Not needed w/ NWNEE } //If it's a Single Player Module.. else if(nDoExport==2) @@ -697,7 +697,7 @@ void BootAll() //This Prototype is critical to the module, as it determines when to do reset. void DoResetCheck(string sMC, int nTMin) { -object oMe = OBJECT_SELF; +/* object oMe = OBJECT_SELF; string sColor = sMC; //Get the Module HeartBeats to count up total Minutes.. @@ -893,7 +893,7 @@ GiveWarnings(sColor); } -//PROTOTYPE END +//PROTOTYPE END */ } ////////////////////////////////////////////////////////////////// diff --git a/_release/Underworld 2 [PRC8-CEP3].7z b/_release/Underworld 2 [PRC8-CEP3].7z index 2530df1..c9e4b72 100644 Binary files a/_release/Underworld 2 [PRC8-CEP3].7z and b/_release/Underworld 2 [PRC8-CEP3].7z differ