From 0b5b6912d2b8defef79f0fb5da52d58e11e56211 Mon Sep 17 00:00:00 2001 From: Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com> Date: Sun, 7 Sep 2025 17:32:31 -0400 Subject: [PATCH] 2025/09/07 Update Added Amulet of Mighty Fists +1 thru +5. Added Greenbound template. Fixed Evolved & Paragon templates. Updated several area names. --- _module/are/alchemistsshop.are.json | 4 +- _module/are/armorshop.are.json | 8 +- _module/are/ascensionsewer.are.json | 8 +- _module/are/cellar001.are.json | 8 +- _module/are/itemshop.are.json | 8 +- _module/are/merchantemp1.are.json | 8 +- _module/are/overspawningjail.are.json | 8 +- _module/are/sageshome.are.json | 8 +- _module/are/townofascension.are.json | 2 +- _module/are/trespasserstaver.are.json | 8 +- _module/are/weaponsshop.are.json | 8 +- _module/git/ascensionsewer.git.json | 8 +- _module/git/merchantemp1.git.json | 968 +++++++++++++++- _module/git/townofascension.git.json | 38 +- _module/ifo/module.ifo.json | 2 +- _module/itp/creaturepalcus.itp.json | 532 +++++++++ _module/itp/itempalcus.itp.json | 1485 +++++++++++++++++++++++++ _module/ncs/airlessaura1.ncs | Bin 3143 -> 3367 bytes _module/ncs/altardeath2.ncs | Bin 227 -> 243 bytes _module/ncs/codi_spawn.ncs | Bin 46684 -> 50689 bytes _module/ncs/creature_copy.ncs | Bin 0 -> 155747 bytes _module/ncs/jy_itnk_amf1.ncs | Bin 0 -> 12378 bytes _module/ncs/jy_itnk_amf2.ncs | Bin 0 -> 12378 bytes _module/ncs/jy_itnk_amf3.ncs | Bin 0 -> 12378 bytes _module/ncs/jy_itnk_amf4.ncs | Bin 0 -> 12378 bytes _module/ncs/jy_itnk_amf5.ncs | Bin 0 -> 12378 bytes _module/ncs/make_evolved.ncs | Bin 156870 -> 153534 bytes _module/ncs/make_greenbound.ncs | Bin 0 -> 22137 bytes _module/ncs/make_paragon.ncs | Bin 10762 -> 10834 bytes _module/ncs/moad_spawn.ncs | Bin 313028 -> 317129 bytes _module/ncs/prc_pwonspawn.ncs | Bin 349631 -> 350313 bytes _module/ncs/re_widget9.ncs | Bin 207 -> 175 bytes _module/ncs/silenttrigger.ncs | Bin 128 -> 144 bytes _module/ncs/silenttrigger2.ncs | Bin 128 -> 144 bytes _module/ncs/spawnb_cc_activ.ncs | Bin 180 -> 164 bytes _module/ncs/x2_def_spawn.ncs | Bin 43885 -> 47890 bytes _module/nss/creature_copy.nss | 216 ++++ _module/nss/inc_greenbound.nss | 10 + _module/nss/jy_itnk_amf1.nss | 173 +++ _module/nss/jy_itnk_amf2.nss | 175 +++ _module/nss/jy_itnk_amf3.nss | 175 +++ _module/nss/jy_itnk_amf4.nss | 174 +++ _module/nss/jy_itnk_amf5.nss | 173 +++ _module/nss/make_evolved.nss | 151 ++- _module/nss/make_greenbound.nss | 259 +++++ _module/nss/make_paragon.nss | 25 +- _module/nss/ms_name_inc.nss | 103 +- _module/nss/prc_pwonspawn.nss | 38 +- _module/utc/poa_nalfeshnee99.utc.json | 20 +- _module/uti/jy_itnk_amf1.uti.json | 117 ++ _module/uti/jy_itnk_amf2.uti.json | 117 ++ _module/uti/jy_itnk_amf3.uti.json | 148 +++ _module/uti/jy_itnk_amf4.uti.json | 148 +++ _module/uti/jy_itnk_amf5.uti.json | 210 ++++ 54 files changed, 5367 insertions(+), 176 deletions(-) create mode 100644 _module/ncs/creature_copy.ncs create mode 100644 _module/ncs/jy_itnk_amf1.ncs create mode 100644 _module/ncs/jy_itnk_amf2.ncs create mode 100644 _module/ncs/jy_itnk_amf3.ncs create mode 100644 _module/ncs/jy_itnk_amf4.ncs create mode 100644 _module/ncs/jy_itnk_amf5.ncs create mode 100644 _module/ncs/make_greenbound.ncs create mode 100644 _module/nss/creature_copy.nss create mode 100644 _module/nss/inc_greenbound.nss create mode 100644 _module/nss/jy_itnk_amf1.nss create mode 100644 _module/nss/jy_itnk_amf2.nss create mode 100644 _module/nss/jy_itnk_amf3.nss create mode 100644 _module/nss/jy_itnk_amf4.nss create mode 100644 _module/nss/jy_itnk_amf5.nss create mode 100644 _module/nss/make_greenbound.nss create mode 100644 _module/uti/jy_itnk_amf1.uti.json create mode 100644 _module/uti/jy_itnk_amf2.uti.json create mode 100644 _module/uti/jy_itnk_amf3.uti.json create mode 100644 _module/uti/jy_itnk_amf4.uti.json create mode 100644 _module/uti/jy_itnk_amf5.uti.json diff --git a/_module/are/alchemistsshop.are.json b/_module/are/alchemistsshop.are.json index 781bde98..4a28e250 100644 --- a/_module/are/alchemistsshop.are.json +++ b/_module/are/alchemistsshop.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Alchemists Shop" + "0": "Town of Ascension: Alchemists Shop" } }, "NoRest": { @@ -552,7 +552,7 @@ }, "Version": { "type": "dword", - "value": 127 + "value": 129 }, "Width": { "type": "int", diff --git a/_module/are/armorshop.are.json b/_module/are/armorshop.are.json index ca6bf8f4..70d4693d 100644 --- a/_module/are/armorshop.are.json +++ b/_module/are/armorshop.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Armor Shop" + "0": "Town of Ascension: Armor Shop" } }, "NoRest": { @@ -413,13 +413,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tin01" }, "Version": { "type": "dword", - "value": 55 + "value": 56 }, "Width": { "type": "int", diff --git a/_module/are/ascensionsewer.are.json b/_module/are/ascensionsewer.are.json index 072c5d91..f3474a3b 100644 --- a/_module/are/ascensionsewer.are.json +++ b/_module/are/ascensionsewer.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Ascension Sewer" + "0": "Town of Ascension: Sewers" } }, "NoRest": { @@ -2907,13 +2907,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tds01" }, "Version": { "type": "dword", - "value": 27 + "value": 28 }, "Width": { "type": "int", diff --git a/_module/are/cellar001.are.json b/_module/are/cellar001.are.json index a0786837..31e9bfa7 100644 --- a/_module/are/cellar001.are.json +++ b/_module/are/cellar001.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Cellar" + "0": "Town of Ascension: Cellar" } }, "NoRest": { @@ -1187,13 +1187,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tic01" }, "Version": { "type": "dword", - "value": 7 + "value": 8 }, "Width": { "type": "int", diff --git a/_module/are/itemshop.are.json b/_module/are/itemshop.are.json index 4b69c4d2..a3097e7a 100644 --- a/_module/are/itemshop.are.json +++ b/_module/are/itemshop.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Item Shop" + "0": "Town of Ascension: Item Shop" } }, "NoRest": { @@ -413,13 +413,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tin01" }, "Version": { "type": "dword", - "value": 44 + "value": 45 }, "Width": { "type": "int", diff --git a/_module/are/merchantemp1.are.json b/_module/are/merchantemp1.are.json index 525b1caf..70623137 100644 --- a/_module/are/merchantemp1.are.json +++ b/_module/are/merchantemp1.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Merchant's Emporium" + "0": "Town of Ascension: Merchant's Emporium" } }, "NoRest": { @@ -1015,13 +1015,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tin01" }, "Version": { "type": "dword", - "value": 51 + "value": 53 }, "Width": { "type": "int", diff --git a/_module/are/overspawningjail.are.json b/_module/are/overspawningjail.are.json index 73c15e3a..b3229483 100644 --- a/_module/are/overspawningjail.are.json +++ b/_module/are/overspawningjail.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Overspawning Jail" + "0": "| Overspawning Jail |" } }, "NoRest": { @@ -843,13 +843,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tic01" }, "Version": { "type": "dword", - "value": 9 + "value": 10 }, "Width": { "type": "int", diff --git a/_module/are/sageshome.are.json b/_module/are/sageshome.are.json index 356c365d..3fcaf021 100644 --- a/_module/are/sageshome.are.json +++ b/_module/are/sageshome.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Sage's Home" + "0": "Town of Ascension: Sage's Home" } }, "NoRest": { @@ -542,13 +542,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tic01" }, "Version": { "type": "dword", - "value": 37 + "value": 38 }, "Width": { "type": "int", diff --git a/_module/are/townofascension.are.json b/_module/are/townofascension.are.json index d07374d2..24255d38 100644 --- a/_module/are/townofascension.are.json +++ b/_module/are/townofascension.are.json @@ -6357,7 +6357,7 @@ }, "Version": { "type": "dword", - "value": 522 + "value": 525 }, "Width": { "type": "int", diff --git a/_module/are/trespasserstaver.are.json b/_module/are/trespasserstaver.are.json index 5d0bbffa..02bd3c11 100644 --- a/_module/are/trespasserstaver.are.json +++ b/_module/are/trespasserstaver.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Trespasser's Tavern" + "0": "Town of Ascension: Trespasser's Tavern" } }, "NoRest": { @@ -1230,13 +1230,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tin01" }, "Version": { "type": "dword", - "value": 209 + "value": 210 }, "Width": { "type": "int", diff --git a/_module/are/weaponsshop.are.json b/_module/are/weaponsshop.are.json index fa69262a..3fc41885 100644 --- a/_module/are/weaponsshop.are.json +++ b/_module/are/weaponsshop.are.json @@ -87,7 +87,7 @@ "Name": { "type": "cexolocstring", "value": { - "0": "Weapons Shop" + "0": "Town of Ascension: Weapons Shop" } }, "NoRest": { @@ -413,13 +413,17 @@ } ] }, + "TileBrdrDisabled": { + "type": "byte", + "value": 0 + }, "Tileset": { "type": "resref", "value": "tin01" }, "Version": { "type": "dword", - "value": 37 + "value": 38 }, "Width": { "type": "int", diff --git a/_module/git/ascensionsewer.git.json b/_module/git/ascensionsewer.git.json index 4a432303..a76efd24 100644 --- a/_module/git/ascensionsewer.git.json +++ b/_module/git/ascensionsewer.git.json @@ -2957,7 +2957,7 @@ "__struct_id": 2, "Orientation": { "type": "float", - "value": -3.092489242553711 + "value": -3.092488765716553 }, "X": { "type": "float", @@ -3182,7 +3182,7 @@ "__struct_id": 2, "Orientation": { "type": "float", - "value": 3.092488765716553 + "value": 3.092488288879395 }, "X": { "type": "float", @@ -5267,7 +5267,7 @@ "__struct_id": 2, "Orientation": { "type": "float", - "value": 3.092488765716553 + "value": 3.092488288879395 }, "X": { "type": "float", @@ -5815,7 +5815,7 @@ "__struct_id": 2, "Orientation": { "type": "float", - "value": -3.092489242553711 + "value": -3.092488765716553 }, "X": { "type": "float", diff --git a/_module/git/merchantemp1.git.json b/_module/git/merchantemp1.git.json index 1122ee61..2b7fa4b4 100644 --- a/_module/git/merchantemp1.git.json +++ b/_module/git/merchantemp1.git.json @@ -326989,7 +326989,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 4.59194296371528e-039 }, "XPosition": { "type": "float", @@ -327163,7 +327163,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724523475243312e-039 }, "XPosition": { "type": "float", @@ -327650,7 +327650,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.72453888952642e-039 }, "XPosition": { "type": "float", @@ -327884,7 +327884,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.459189227627206e-039 }, "XPosition": { "type": "float", @@ -328027,7 +328027,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.233725519775582e-029 }, "XPosition": { "type": "float", @@ -328230,7 +328230,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 4.59194296371528e-039 }, "XPosition": { "type": "float", @@ -328433,7 +328433,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.00001174683725e-039 }, "XPosition": { "type": "float", @@ -328951,7 +328951,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724524876541777e-039 }, "XPosition": { "type": "float", @@ -329094,7 +329094,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.459210247104171e-039 }, "XPosition": { "type": "float", @@ -329266,7 +329266,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.233557000905448e-029 }, "XPosition": { "type": "float", @@ -329438,7 +329438,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 4.59194296371528e-039 }, "XPosition": { "type": "float", @@ -329579,7 +329579,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.275526643102009e-039 }, "XPosition": { "type": "float", @@ -330068,7 +330068,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724524876541777e-039 }, "XPosition": { "type": "float", @@ -330335,7 +330335,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.275522439206616e-039 }, "XPosition": { "type": "float", @@ -330478,7 +330478,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.233388482035314e-029 }, "XPosition": { "type": "float", @@ -330619,7 +330619,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 4.59194296371528e-039 }, "XPosition": { "type": "float", @@ -330917,7 +330917,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.046940911263286e-038 }, "XPosition": { "type": "float", @@ -331358,7 +331358,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.275539254788188e-039 }, "XPosition": { "type": "float", @@ -331737,7 +331737,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724442199932381e-039 }, "XPosition": { "type": "float", @@ -331909,7 +331909,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 4.867446649592325e-039 }, "XPosition": { "type": "float", @@ -332315,7 +332315,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724442199932381e-039 }, "XPosition": { "type": "float", @@ -332456,7 +332456,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.918375116207948e-039 }, "XPosition": { "type": "float", @@ -332864,7 +332864,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724442199932381e-039 }, "XPosition": { "type": "float", @@ -333021,7 +333021,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.010205171371779e-038 }, "XPosition": { "type": "float", @@ -333461,7 +333461,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724442199932381e-039 }, "XPosition": { "type": "float", @@ -333620,7 +333620,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.908184658470044e-039 }, "XPosition": { "type": "float", @@ -333938,7 +333938,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724440798633917e-039 }, "XPosition": { "type": "float", @@ -334128,7 +334128,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.275535050892795e-039 }, "XPosition": { "type": "float", @@ -334446,7 +334446,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724440798633917e-039 }, "XPosition": { "type": "float", @@ -334954,7 +334954,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724440798633917e-039 }, "XPosition": { "type": "float", @@ -335551,7 +335551,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.415311448968065e-043 }, "XPosition": { "type": "float", @@ -335770,7 +335770,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724440798633917e-039 }, "XPosition": { "type": "float", @@ -336274,7 +336274,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724440798633917e-039 }, "XPosition": { "type": "float", @@ -336462,7 +336462,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.010205171371779e-038 }, "XPosition": { "type": "float", @@ -336902,7 +336902,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724440798633917e-039 }, "XPosition": { "type": "float", @@ -337216,7 +337216,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.010204050333007e-038 }, "XPosition": { "type": "float", @@ -337685,7 +337685,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.019389141377117e-038 }, "XPosition": { "type": "float", @@ -337906,7 +337906,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.083674268947404e-038 }, "XPosition": { "type": "float", @@ -338472,7 +338472,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724442199932381e-039 }, "XPosition": { "type": "float", @@ -338786,7 +338786,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.429324433611313e-043 }, "XPosition": { "type": "float", @@ -339476,7 +339476,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.056122919450774e-038 }, "XPosition": { "type": "float", @@ -339943,7 +339943,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.61149323397354e-043 }, "XPosition": { "type": "float", @@ -340691,7 +340691,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724534685631027e-039 }, "XPosition": { "type": "float", @@ -341753,7 +341753,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724534685631027e-039 }, "XPosition": { "type": "float", @@ -342036,7 +342036,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.046938248796204e-038 }, "XPosition": { "type": "float", @@ -342571,7 +342571,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.918394734386448e-039 }, "XPosition": { "type": "float", @@ -342823,7 +342823,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.183703758630197e-039 }, "XPosition": { "type": "float", @@ -343358,7 +343358,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724524876541777e-039 }, "XPosition": { "type": "float", @@ -343579,7 +343579,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.010205171371779e-038 }, "XPosition": { "type": "float", @@ -343893,7 +343893,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 8.724524876541777e-039 }, "XPosition": { "type": "float", @@ -344048,7 +344048,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 9.183703758630197e-039 }, "XPosition": { "type": "float", @@ -344362,7 +344362,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.010204610852393e-038 }, "XPosition": { "type": "float", @@ -344519,7 +344519,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.111224777664955e-038 }, "XPosition": { "type": "float", @@ -344833,7 +344833,7 @@ }, "XOrientation": { "type": "float", - "value": 0.0 + "value": 1.761963972641884e-026 }, "XPosition": { "type": "float", @@ -345634,6 +345634,866 @@ "type": "float", "value": -1.0 } + }, + { + "__struct_id": 113, + "AddCost": { + "type": "dword", + "value": 5999 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Cost": { + "type": "dword", + "value": 6000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +1 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "Infinite": { + "type": "byte", + "value": 1 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +1" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "Repos_PosX": { + "type": "word", + "value": 4 + }, + "Repos_Posy": { + "type": "word", + "value": 18 + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF1" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf1" + }, + "xModelPart1": { + "type": "word", + "value": 24 + }, + "XOrientation": { + "type": "float", + "value": 2.012448418241746e-026 + }, + "XPosition": { + "type": "float", + "value": -1.0 + }, + "YOrientation": { + "type": "float", + "value": 1.0 + }, + "YPosition": { + "type": "float", + "value": -1.0 + }, + "ZPosition": { + "type": "float", + "value": -1.0 + } + }, + { + "__struct_id": 114, + "AddCost": { + "type": "dword", + "value": 23999 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Cost": { + "type": "dword", + "value": 24000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +2 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "Infinite": { + "type": "byte", + "value": 1 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +2" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "Repos_PosX": { + "type": "word", + "value": 5 + }, + "Repos_Posy": { + "type": "word", + "value": 18 + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF2" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf2" + }, + "xModelPart1": { + "type": "word", + "value": 24 + }, + "XOrientation": { + "type": "float", + "value": 0.0 + }, + "XPosition": { + "type": "float", + "value": -1.0 + }, + "YOrientation": { + "type": "float", + "value": 1.0 + }, + "YPosition": { + "type": "float", + "value": -1.0 + }, + "ZPosition": { + "type": "float", + "value": -1.0 + } + }, + { + "__struct_id": 115, + "AddCost": { + "type": "dword", + "value": 23991 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Cost": { + "type": "dword", + "value": 54000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +3 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "Infinite": { + "type": "byte", + "value": 1 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +3" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 35 + }, + "CostValue": { + "type": "word", + "value": 3 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 128 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "Repos_PosX": { + "type": "word", + "value": 6 + }, + "Repos_Posy": { + "type": "word", + "value": 18 + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF3" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf3" + }, + "xModelPart1": { + "type": "word", + "value": 24 + }, + "XOrientation": { + "type": "float", + "value": 0.0 + }, + "XPosition": { + "type": "float", + "value": -1.0 + }, + "YOrientation": { + "type": "float", + "value": 1.0 + }, + "YPosition": { + "type": "float", + "value": -1.0 + }, + "ZPosition": { + "type": "float", + "value": -1.0 + } + }, + { + "__struct_id": 116, + "AddCost": { + "type": "dword", + "value": 25993 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Cost": { + "type": "dword", + "value": 96000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +4 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "Infinite": { + "type": "byte", + "value": 1 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +4" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 35 + }, + "CostValue": { + "type": "word", + "value": 7 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 128 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "Repos_PosX": { + "type": "word", + "value": 7 + }, + "Repos_Posy": { + "type": "word", + "value": 18 + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF4" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf4" + }, + "xModelPart1": { + "type": "word", + "value": 24 + }, + "XOrientation": { + "type": "float", + "value": 0.0 + }, + "XPosition": { + "type": "float", + "value": -1.0 + }, + "YOrientation": { + "type": "float", + "value": 1.0 + }, + "YPosition": { + "type": "float", + "value": -1.0 + }, + "ZPosition": { + "type": "float", + "value": -1.0 + } + }, + { + "__struct_id": 117, + "AddCost": { + "type": "dword", + "value": 6733 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Cost": { + "type": "dword", + "value": 150000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +5 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "Infinite": { + "type": "byte", + "value": 1 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +5" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 33 + }, + "CostValue": { + "type": "word", + "value": 6 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 123 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 35 + }, + "CostValue": { + "type": "word", + "value": 1 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 128 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 36 + }, + "CostValue": { + "type": "word", + "value": 1 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 129 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "Repos_PosX": { + "type": "word", + "value": 8 + }, + "Repos_Posy": { + "type": "word", + "value": 18 + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF5" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf5" + }, + "xModelPart1": { + "type": "word", + "value": 24 + }, + "XOrientation": { + "type": "float", + "value": 0.0 + }, + "XPosition": { + "type": "float", + "value": -1.0 + }, + "YOrientation": { + "type": "float", + "value": 1.0 + }, + "YPosition": { + "type": "float", + "value": -1.0 + }, + "ZPosition": { + "type": "float", + "value": -1.0 + } } ] } diff --git a/_module/git/townofascension.git.json b/_module/git/townofascension.git.json index 565bf0e5..f335683d 100644 --- a/_module/git/townofascension.git.json +++ b/_module/git/townofascension.git.json @@ -13450,11 +13450,11 @@ }, "X": { "type": "float", - "value": 71.30510711669922 + "value": 71.24748992919922 }, "Y": { "type": "float", - "value": 75.04737854003906 + "value": 75.09403228759766 }, "Z": { "type": "float", @@ -27841,7 +27841,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_WAYPOINT001" + "value": "NW_MAP_MAGIC" }, "TemplateResRef": { "type": "resref", @@ -27905,7 +27905,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_WAYPOINT001" + "value": "NW_MAP_WEAPONS" }, "TemplateResRef": { "type": "resref", @@ -27969,7 +27969,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_WAYPOINT001" + "value": "NW_MAP_ARMOR" }, "TemplateResRef": { "type": "resref", @@ -28033,7 +28033,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_WAYPOINT001" + "value": "NW_MAP_TAVERN" }, "TemplateResRef": { "type": "resref", @@ -30253,7 +30253,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_WAYPOINT001" + "value": "NW_MAP_CLOTHES" }, "TemplateResRef": { "type": "resref", @@ -30317,7 +30317,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_WAYPOINT001" + "value": "NW_MAP_SAGE" }, "TemplateResRef": { "type": "resref", @@ -30372,7 +30372,7 @@ "MapNote": { "type": "cexolocstring", "value": { - "0": "Merchants Emporium" + "0": "Merchant's Emporium" } }, "MapNoteEnabled": { @@ -30381,7 +30381,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_WAYPOINT001" + "value": "NW_MAP_MERCHANTS" }, "TemplateResRef": { "type": "resref", @@ -31209,6 +31209,7 @@ "LocalizedName": { "type": "cexolocstring", "value": { + "0": "Map Note", "id": 14814 } }, @@ -31225,7 +31226,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_MAPNOTE001" + "value": "NW_MAP_BANK" }, "TemplateResRef": { "type": "resref", @@ -31237,7 +31238,7 @@ }, "XPosition": { "type": "float", - "value": 69.18457794189453 + "value": 69.61856842041016 }, "YOrientation": { "type": "float", @@ -31334,6 +31335,7 @@ "LocalizedName": { "type": "cexolocstring", "value": { + "0": "Map Note", "id": 14814 } }, @@ -31350,7 +31352,7 @@ }, "Tag": { "type": "cexostring", - "value": "NW_MAPNOTE001" + "value": "NW_MAP_CELLAR" }, "TemplateResRef": { "type": "resref", @@ -31358,23 +31360,23 @@ }, "XOrientation": { "type": "float", - "value": -0.9972904920578003 + "value": -1.0 }, "XPosition": { "type": "float", - "value": 54.86586380004883 + "value": 55.38000106811523 }, "YOrientation": { "type": "float", - "value": -0.07356434315443039 + "value": 7.549790126404332e-008 }, "YPosition": { "type": "float", - "value": 79.65332794189453 + "value": 78.87999725341797 }, "ZPosition": { "type": "float", - "value": -5.7220458984375e-006 + "value": 0.009999999776482582 } }, { diff --git a/_module/ifo/module.ifo.json b/_module/ifo/module.ifo.json index cd280c6c..37161b1d 100644 --- a/_module/ifo/module.ifo.json +++ b/_module/ifo/module.ifo.json @@ -1201,7 +1201,7 @@ "Mod_Description": { "type": "cexolocstring", "value": { - "0": "Paths of Ascension [PRC8-CEP3]\n\nThis is the revised edition of the classic Paths of Ascension module, which is highly customized & more player friendly. This module has loads of customizing options right at your fingertips, color text, chat commands / emotes / appearances / 2 forges, if it can be created it's IN THERE!\n\nPRC'd By: Jaysyn\n\nSpell & Ability expansion by: rafhot\n\n(Requires PRC8 4.1.11+)" + "0": "Paths of Ascension [PRC8-CEP3]\n\nThis is the revised edition of the classic Paths of Ascension module, which is highly customized & more player friendly. This module has loads of customizing options right at your fingertips, color text, chat commands / emotes / appearances / 2 forges, if it can be created it's IN THERE!\n\nPRC'd By: Jaysyn\n\nSpell & Ability expansion by: rafhot\n\n(Requires PRC8 4.61+)" } }, "Mod_DuskHour": { diff --git a/_module/itp/creaturepalcus.itp.json b/_module/itp/creaturepalcus.itp.json index 47ba1590..80cfc8d6 100644 --- a/_module/itp/creaturepalcus.itp.json +++ b/_module/itp/creaturepalcus.itp.json @@ -3477,6 +3477,25 @@ "type": "resref", "value": "hobgoblin002" } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 0.3333333432674408 + }, + "FACTION": { + "type": "cexostring", + "value": "Hostile" + }, + "NAME": { + "type": "cexostring", + "value": "Hobgoblin Thrall" + }, + "RESREF": { + "type": "resref", + "value": "prc_wrsl_war" + } } ] }, @@ -4005,6 +4024,25 @@ "value": "prc_algoid" } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 8.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Defender" + }, + "NAME": { + "type": "cexostring", + "value": "Animated Tree" + }, + "RESREF": { + "type": "resref", + "value": "prc_anim_tree01" + } + }, { "__struct_id": 0, "CR": { @@ -32892,6 +32930,44 @@ "value": 90419 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 12.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Aranea" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_aranea001" + } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 1.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Badger" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_badger001" + } + }, { "__struct_id": 0, "CR": { @@ -32930,6 +33006,82 @@ "value": 12735 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 3.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Black Bear" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_blkbear001" + } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 3.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Boar" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_boar001" + } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 6.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Brown Bear" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_brnbear001" + } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 10.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Bulette" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_bueltte001" + } + }, { "__struct_id": 0, "CR": { @@ -32949,6 +33101,25 @@ "value": 12740 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 3.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Cooshee" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_cooshee001" + } + }, { "__struct_id": 0, "CR": { @@ -33025,6 +33196,25 @@ "value": 12737 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 1.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Dire Rat" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_direrat001" + } + }, { "__struct_id": 0, "CR": { @@ -33082,6 +33272,25 @@ "value": 12779 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 1.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Dog" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_dog001" + } + }, { "__struct_id": 0, "CR": { @@ -33405,6 +33614,25 @@ "value": "s_ghoulravager" } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 8.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Gorgon" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_gorgon001" + } + }, { "__struct_id": 0, "CR": { @@ -33709,6 +33937,25 @@ "value": 12766 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 1.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Hawk" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_hawk001" + } + }, { "__struct_id": 0, "CR": { @@ -33804,6 +34051,25 @@ "value": 12747 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 5.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Huge Viper" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_hgviper001" + } + }, { "__struct_id": 0, "CR": { @@ -33842,6 +34108,44 @@ "value": 12752 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 8.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Invisible Stalker" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_invstlk001" + } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 8.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Janni" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_janni001" + } + }, { "__struct_id": 0, "CR": { @@ -33899,6 +34203,25 @@ "value": "prc_s_firelarge" } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 3.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Large Viper" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_lgviper001" + } + }, { "__struct_id": 0, "CR": { @@ -33918,6 +34241,25 @@ "value": "prc_s_waterlarge" } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 3.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Leopard" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_leopard001" + } + }, { "__struct_id": 0, "CR": { @@ -33994,6 +34336,44 @@ "value": 90417 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 5.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Lion" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_lion001" + } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 9.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Manticore" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_mntcore001" + } + }, { "__struct_id": 0, "CR": { @@ -34051,6 +34431,63 @@ "value": 90421 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 10.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Nymph" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_nymph001" + } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 10.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Pixie" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_pixie001" + } + }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 8.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Polar Bear" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_plrbear001" + } + }, { "__struct_id": 0, "CR": { @@ -34108,6 +34545,25 @@ "value": 12767 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 5.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Satyr" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_satyr001" + } + }, { "__struct_id": 0, "CR": { @@ -34317,6 +34773,25 @@ "value": 12764 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 1.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Small Viper" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_smviper001" + } + }, { "__struct_id": 0, "CR": { @@ -34412,6 +34887,25 @@ "value": 12770 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 1.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Tiny Viper" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_tnviper001" + } + }, { "__struct_id": 0, "CR": { @@ -34564,6 +35058,25 @@ "value": 40645 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 6.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Wereboar" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_wrboar001" + } + }, { "__struct_id": 0, "CR": { @@ -34583,6 +35096,25 @@ "value": 12778 } }, + { + "__struct_id": 0, + "CR": { + "type": "float", + "value": 2.0 + }, + "FACTION": { + "type": "cexostring", + "value": "Commoner" + }, + "NAME": { + "type": "cexostring", + "value": "Summoned Wolf" + }, + "RESREF": { + "type": "resref", + "value": "prc_s_wolf001" + } + }, { "__struct_id": 0, "CR": { diff --git a/_module/itp/itempalcus.itp.json b/_module/itp/itempalcus.itp.json index 1c1d7960..d9dde7eb 100644 --- a/_module/itp/itempalcus.itp.json +++ b/_module/itp/itempalcus.itp.json @@ -1242,6 +1242,17 @@ "value": "legend5" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Pixie Armor" + }, + "RESREF": { + "type": "resref", + "value": "prc_amltlt_pixie" + } + }, { "__struct_id": 0, "NAME": { @@ -3650,6 +3661,28 @@ "value": "cr_bite_impgr2d6" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Imp. Grab Bite 1d6" + }, + "RESREF": { + "type": "resref", + "value": "prc_ig_bite1d6" + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Imp. Grab Bite 1d8" + }, + "RESREF": { + "type": "resref", + "value": "prc_ig_bite1d8" + } + }, { "__struct_id": 0, "NAME": { @@ -4464,6 +4497,39 @@ "value": "prc_vtth_bite_t" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Viper Bite, Huge" + }, + "RESREF": { + "type": "resref", + "value": "prc_viperbite004" + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Viper Bite, Large" + }, + "RESREF": { + "type": "resref", + "value": "prc_viperbite003" + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Viper Bite, Tiny" + }, + "RESREF": { + "type": "resref", + "value": "prc_viperbite001" + } + }, { "__struct_id": 0, "NAME": { @@ -6295,6 +6361,17 @@ "value": "cr_claw_impgrab1" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Imp. Grab Claw 1d8" + }, + "RESREF": { + "type": "resref", + "value": "prc_ig_claw1d8" + } + }, { "__struct_id": 0, "NAME": { @@ -8345,6 +8422,17 @@ "value": "immortalskin" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Janni Properties" + }, + "RESREF": { + "type": "resref", + "value": "prc_janni_hide01" + } + }, { "__struct_id": 0, "NAME": { @@ -8576,6 +8664,17 @@ "value": "niteskin" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Nymph Hide" + }, + "RESREF": { + "type": "resref", + "value": "prc_nymph_hide" + } + }, { "__struct_id": 0, "NAME": { @@ -8675,6 +8774,17 @@ "value": "meph_1dv" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Pixie Properties" + }, + "RESREF": { + "type": "resref", + "value": "prc_pixie_hide01" + } + }, { "__struct_id": 0, "NAME": { @@ -8939,6 +9049,17 @@ "value": "satanskin" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Satyr Hide" + }, + "RESREF": { + "type": "resref", + "value": "prc_satyr_hide01" + } + }, { "__struct_id": 0, "NAME": { @@ -9368,6 +9489,17 @@ "value": "prc_wf_feats" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Wereboar Properties" + }, + "RESREF": { + "type": "resref", + "value": "prc_wboar_hide01" + } + }, { "__struct_id": 0, "NAME": { @@ -13682,6 +13814,61 @@ "value": "amuletofdispel" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +1" + }, + "RESREF": { + "type": "resref", + "value": "jy_itnk_amf1" + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +2" + }, + "RESREF": { + "type": "resref", + "value": "jy_itnk_amf2" + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +3" + }, + "RESREF": { + "type": "resref", + "value": "jy_itnk_amf3" + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +4" + }, + "RESREF": { + "type": "resref", + "value": "jy_itnk_amf4" + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +5" + }, + "RESREF": { + "type": "resref", + "value": "jy_itnk_amf5" + } + }, { "__struct_id": 0, "NAME": { @@ -18895,6 +19082,17 @@ "value": 59 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1516" + }, + "STRREF": { + "type": "dword", + "value": 16976372 + } + }, { "__struct_id": 0, "RESREF": { @@ -19027,6 +19225,28 @@ "value": 780 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1500" + }, + "STRREF": { + "type": "dword", + "value": 16976348 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1505" + }, + "STRREF": { + "type": "dword", + "value": 16976348 + } + }, { "__struct_id": 0, "RESREF": { @@ -21502,6 +21722,28 @@ "value": 16828346 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1497" + }, + "STRREF": { + "type": "dword", + "value": 16976342 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1502" + }, + "STRREF": { + "type": "dword", + "value": 16976342 + } + }, { "__struct_id": 0, "RESREF": { @@ -21678,6 +21920,28 @@ "value": 16827530 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1503" + }, + "STRREF": { + "type": "dword", + "value": 16976354 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1508" + }, + "STRREF": { + "type": "dword", + "value": 16976354 + } + }, { "__struct_id": 0, "RESREF": { @@ -22987,6 +23251,39 @@ "value": 16830396 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1468" + }, + "STRREF": { + "type": "dword", + "value": 16990471 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1506" + }, + "STRREF": { + "type": "dword", + "value": 16990471 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1511" + }, + "STRREF": { + "type": "dword", + "value": 16990471 + } + }, { "__struct_id": 0, "RESREF": { @@ -25616,6 +25913,17 @@ "value": 6340 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1465" + }, + "STRREF": { + "type": "dword", + "value": 16990482 + } + }, { "__struct_id": 0, "RESREF": { @@ -25649,6 +25957,17 @@ "value": 16990502 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1462" + }, + "STRREF": { + "type": "dword", + "value": 16990476 + } + }, { "__struct_id": 0, "RESREF": { @@ -25737,6 +26056,61 @@ "value": 899 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1528" + }, + "STRREF": { + "type": "dword", + "value": 16976402 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1520" + }, + "STRREF": { + "type": "dword", + "value": 16976384 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1519" + }, + "STRREF": { + "type": "dword", + "value": 16976378 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1522" + }, + "STRREF": { + "type": "dword", + "value": 16976390 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1525" + }, + "STRREF": { + "type": "dword", + "value": 16976396 + } + }, { "__struct_id": 0, "RESREF": { @@ -27200,6 +27574,193 @@ "value": 931 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1470" + }, + "STRREF": { + "type": "dword", + "value": 16976216 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1473" + }, + "STRREF": { + "type": "dword", + "value": 16976230 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1478" + }, + "STRREF": { + "type": "dword", + "value": 16976230 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1476" + }, + "STRREF": { + "type": "dword", + "value": 16976244 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1481" + }, + "STRREF": { + "type": "dword", + "value": 16976244 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1479" + }, + "STRREF": { + "type": "dword", + "value": 16976258 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1484" + }, + "STRREF": { + "type": "dword", + "value": 16976258 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1494" + }, + "STRREF": { + "type": "dword", + "value": 16976328 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1499" + }, + "STRREF": { + "type": "dword", + "value": 16976328 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1482" + }, + "STRREF": { + "type": "dword", + "value": 16976272 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1487" + }, + "STRREF": { + "type": "dword", + "value": 16976272 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1485" + }, + "STRREF": { + "type": "dword", + "value": 16976286 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1490" + }, + "STRREF": { + "type": "dword", + "value": 16976286 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1488" + }, + "STRREF": { + "type": "dword", + "value": 16976300 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1493" + }, + "STRREF": { + "type": "dword", + "value": 16976300 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1491" + }, + "STRREF": { + "type": "dword", + "value": 16976314 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_scr_1496" + }, + "STRREF": { + "type": "dword", + "value": 16976314 + } + }, { "__struct_id": 0, "RESREF": { @@ -32440,6 +33001,39 @@ "LIST": { "type": "list", "value": [ + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_001" + }, + "STRREF": { + "type": "dword", + "value": 16989225 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_002" + }, + "STRREF": { + "type": "dword", + "value": 16989227 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_003" + }, + "STRREF": { + "type": "dword", + "value": 16989229 + } + }, { "__struct_id": 0, "RESREF": { @@ -32451,6 +33045,50 @@ "value": 1517 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_004" + }, + "STRREF": { + "type": "dword", + "value": 16989231 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_005" + }, + "STRREF": { + "type": "dword", + "value": 16989233 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_006" + }, + "STRREF": { + "type": "dword", + "value": 16989235 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_007" + }, + "STRREF": { + "type": "dword", + "value": 16989237 + } + }, { "__struct_id": 0, "NAME": { @@ -32473,6 +33111,94 @@ "value": 169 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_008" + }, + "STRREF": { + "type": "dword", + "value": 16989239 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_009" + }, + "STRREF": { + "type": "dword", + "value": 16989241 + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Benzoin" + }, + "RESREF": { + "type": "resref", + "value": "prc_herb_010" + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_011" + }, + "STRREF": { + "type": "dword", + "value": 16989245 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_012" + }, + "STRREF": { + "type": "dword", + "value": 16989247 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_013" + }, + "STRREF": { + "type": "dword", + "value": 16989249 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_014" + }, + "STRREF": { + "type": "dword", + "value": 16989251 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_015" + }, + "STRREF": { + "type": "dword", + "value": 16989253 + } + }, { "__struct_id": 0, "RESREF": { @@ -32484,6 +33210,72 @@ "value": 1519 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_016" + }, + "STRREF": { + "type": "dword", + "value": 16989255 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_017" + }, + "STRREF": { + "type": "dword", + "value": 16989257 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_018" + }, + "STRREF": { + "type": "dword", + "value": 16989259 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_019" + }, + "STRREF": { + "type": "dword", + "value": 16989261 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_020" + }, + "STRREF": { + "type": "dword", + "value": 16989263 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_021" + }, + "STRREF": { + "type": "dword", + "value": 16989265 + } + }, { "__struct_id": 0, "RESREF": { @@ -32495,6 +33287,50 @@ "value": 1522 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_022" + }, + "STRREF": { + "type": "dword", + "value": 16989267 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_023" + }, + "STRREF": { + "type": "dword", + "value": 16989269 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_024" + }, + "STRREF": { + "type": "dword", + "value": 16989271 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_025" + }, + "STRREF": { + "type": "dword", + "value": 16989273 + } + }, { "__struct_id": 0, "RESREF": { @@ -32506,6 +33342,17 @@ "value": 191 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_026" + }, + "STRREF": { + "type": "dword", + "value": 16989275 + } + }, { "__struct_id": 0, "RESREF": { @@ -32528,6 +33375,17 @@ "value": 1527 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_027" + }, + "STRREF": { + "type": "dword", + "value": 16989277 + } + }, { "__struct_id": 0, "NAME": { @@ -32638,6 +33496,116 @@ "value": "esminskin1" } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_028" + }, + "STRREF": { + "type": "dword", + "value": 16989279 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_029" + }, + "STRREF": { + "type": "dword", + "value": 16989281 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_030" + }, + "STRREF": { + "type": "dword", + "value": 16989283 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_031" + }, + "STRREF": { + "type": "dword", + "value": 16989285 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_032" + }, + "STRREF": { + "type": "dword", + "value": 16989287 + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Fine Herbs" + }, + "RESREF": { + "type": "resref", + "value": "prc_herb_000" + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_033" + }, + "STRREF": { + "type": "dword", + "value": 16989289 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_034" + }, + "STRREF": { + "type": "dword", + "value": 16989291 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_035" + }, + "STRREF": { + "type": "dword", + "value": 16989293 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_036" + }, + "STRREF": { + "type": "dword", + "value": 16989295 + } + }, { "__struct_id": 0, "NAME": { @@ -32792,6 +33760,28 @@ "value": "sdhaxe" } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_037" + }, + "STRREF": { + "type": "dword", + "value": 16989297 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_038" + }, + "STRREF": { + "type": "dword", + "value": 16989299 + } + }, { "__struct_id": 0, "RESREF": { @@ -32814,6 +33804,39 @@ "value": 1529 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_039" + }, + "STRREF": { + "type": "dword", + "value": 16989301 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_040" + }, + "STRREF": { + "type": "dword", + "value": 16989303 + } + }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Infusion of" + }, + "RESREF": { + "type": "resref", + "value": "prc_infusion_000" + } + }, { "__struct_id": 0, "NAME": { @@ -32825,6 +33848,39 @@ "value": "irongskin1" } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_041" + }, + "STRREF": { + "type": "dword", + "value": 16989305 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_042" + }, + "STRREF": { + "type": "dword", + "value": 16989307 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_043" + }, + "STRREF": { + "type": "dword", + "value": 16989309 + } + }, { "__struct_id": 0, "RESREF": { @@ -32847,6 +33903,17 @@ "value": 1535 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_044" + }, + "STRREF": { + "type": "dword", + "value": 16989311 + } + }, { "__struct_id": 0, "RESREF": { @@ -32858,6 +33925,17 @@ "value": 1536 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_045" + }, + "STRREF": { + "type": "dword", + "value": 16989313 + } + }, { "__struct_id": 0, "NAME": { @@ -32891,6 +33969,17 @@ "value": 1531 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_046" + }, + "STRREF": { + "type": "dword", + "value": 16989315 + } + }, { "__struct_id": 0, "NAME": { @@ -32913,6 +34002,28 @@ "value": 166 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_047" + }, + "STRREF": { + "type": "dword", + "value": 16989317 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_048" + }, + "STRREF": { + "type": "dword", + "value": 16989319 + } + }, { "__struct_id": 0, "RESREF": { @@ -32924,6 +34035,83 @@ "value": 177 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_049" + }, + "STRREF": { + "type": "dword", + "value": 16989321 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_050" + }, + "STRREF": { + "type": "dword", + "value": 16989323 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_051" + }, + "STRREF": { + "type": "dword", + "value": 16989325 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_052" + }, + "STRREF": { + "type": "dword", + "value": 16989327 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_053" + }, + "STRREF": { + "type": "dword", + "value": 16989329 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_054" + }, + "STRREF": { + "type": "dword", + "value": 16989331 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_055" + }, + "STRREF": { + "type": "dword", + "value": 16989333 + } + }, { "__struct_id": 0, "RESREF": { @@ -32935,6 +34123,83 @@ "value": 1541 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_056" + }, + "STRREF": { + "type": "dword", + "value": 16989335 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_057" + }, + "STRREF": { + "type": "dword", + "value": 16989337 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_058" + }, + "STRREF": { + "type": "dword", + "value": 16989339 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_059" + }, + "STRREF": { + "type": "dword", + "value": 16989341 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_060" + }, + "STRREF": { + "type": "dword", + "value": 16989343 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_061" + }, + "STRREF": { + "type": "dword", + "value": 16989345 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_062" + }, + "STRREF": { + "type": "dword", + "value": 16989347 + } + }, { "__struct_id": 0, "RESREF": { @@ -32946,6 +34211,17 @@ "value": 1544 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_063" + }, + "STRREF": { + "type": "dword", + "value": 16989349 + } + }, { "__struct_id": 0, "RESREF": { @@ -32957,6 +34233,39 @@ "value": 1545 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_064" + }, + "STRREF": { + "type": "dword", + "value": 16989351 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_065" + }, + "STRREF": { + "type": "dword", + "value": 16989353 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_066" + }, + "STRREF": { + "type": "dword", + "value": 16989355 + } + }, { "__struct_id": 0, "RESREF": { @@ -32968,6 +34277,17 @@ "value": 1547 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_067" + }, + "STRREF": { + "type": "dword", + "value": 16989357 + } + }, { "__struct_id": 0, "RESREF": { @@ -32979,6 +34299,39 @@ "value": 1549 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_068" + }, + "STRREF": { + "type": "dword", + "value": 16989359 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_069" + }, + "STRREF": { + "type": "dword", + "value": 16989361 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_070" + }, + "STRREF": { + "type": "dword", + "value": 16989363 + } + }, { "__struct_id": 0, "NAME": { @@ -33518,6 +34871,17 @@ "value": 1552 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_071" + }, + "STRREF": { + "type": "dword", + "value": 16989365 + } + }, { "__struct_id": 0, "NAME": { @@ -33551,6 +34915,61 @@ "value": "sdstaff3" } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_072" + }, + "STRREF": { + "type": "dword", + "value": 16989367 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_073" + }, + "STRREF": { + "type": "dword", + "value": 16989369 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_074" + }, + "STRREF": { + "type": "dword", + "value": 16989371 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_075" + }, + "STRREF": { + "type": "dword", + "value": 16989373 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_076" + }, + "STRREF": { + "type": "dword", + "value": 16989375 + } + }, { "__struct_id": 0, "RESREF": { @@ -33562,6 +34981,17 @@ "value": 172 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_077" + }, + "STRREF": { + "type": "dword", + "value": 16989377 + } + }, { "__struct_id": 0, "NAME": { @@ -33584,6 +35014,17 @@ "value": 178 } }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_078" + }, + "STRREF": { + "type": "dword", + "value": 16989379 + } + }, { "__struct_id": 0, "RESREF": { @@ -33594,6 +35035,28 @@ "type": "dword", "value": 83617 } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_079" + }, + "STRREF": { + "type": "dword", + "value": 16989381 + } + }, + { + "__struct_id": 0, + "RESREF": { + "type": "resref", + "value": "prc_herb_080" + }, + "STRREF": { + "type": "dword", + "value": 16989383 + } } ] }, @@ -35959,6 +37422,17 @@ "value": "minotaurarrow002" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Pixie Sleep Arrows" + }, + "RESREF": { + "type": "resref", + "value": "prc_wamma_sleep" + } + }, { "__struct_id": 0, "NAME": { @@ -37963,6 +39437,17 @@ "value": "darkalsdream" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Enserric the Rapier" + }, + "RESREF": { + "type": "resref", + "value": "iw_rapier" + } + }, { "__struct_id": 0, "NAME": { diff --git a/_module/ncs/airlessaura1.ncs b/_module/ncs/airlessaura1.ncs index 7961ea56e7141a11fb2998cd9c2310183487d756..8c294006855dbf9f3f56f1eb5a9be4ee2ee22c9e 100644 GIT binary patch delta 608 zcmZvZy-EW?5XWa`_re*8MldlNNKPeK1SByjG$8na;1>!CK7h!zc>+K^#$xKEk#69C7PHIlZ)g7VpQp^#*vi)OuD4g7E-e8hrg9+5^?+hJ z791Tw7ZE$1&Nt{R$lj)y1278V%VwdHBc%ec1vSK z_!u+kchFLxLJ{Hs*RaLcxQQ41i?ir+m1iiI_9g!CrNl>mm3Yb{x`wN~ zqvy1fko@O*A}#uQWz@nD)7WaGQD=SHdI)vH9{OSC=PiB{sf)!!lb!x zTMh=jyricE&sOUD_cQv9op_;SA(Uo(G~}C2L^8Dv8jjTB_4pw!@^gGYZv_f3pUctt f+8L$hXXN$P2`i?g=_zHRYsz*_*p8UMjsAx}PxZ{> delta 388 zcmZ23bzDN#&pB8j%uvt3iGhK~U5)_=I20II*gyRt5%1hKa7me9Vmh|NsBN zzyeak7&CENBjcsX3XBSq^%&VEJ1~k)PG(e`e1TDd;{yW=P>(Uw*tC_7BRVHr(k}oHJ1d{6}>#$fc7EewGk`|K}u~;&( z{GEKCMTrAwCD^>p;;dI$KsF@8L|B+Xt^|`zVAnyc?q&va{xGnBr5FVj!2B-^ETRw= zOooA9K_29p4`6kiFb|3RssPapv^tFuEb{_t9uqKFyqQE4Cja89WfYuT!JWhl jlLsm`WJC%S{>gegY?5GuM8PBnSS7@n{>+oJdG-JR4Z2?Y diff --git a/_module/ncs/altardeath2.ncs b/_module/ncs/altardeath2.ncs index 771f92435619b1e62142353c809352ba03889118..7a7ab4e348c584bff0963b9d91fefc3cd8793608 100644 GIT binary patch delta 78 zcmaFN_?gk!&pB8j%uvt3iGhLPvmB6M;80*-5@KNnF-O(0H-$<_y7O^ delta 35 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 V>#O@`^>qgEEd%`nCw?^ie*xDSy)FO% delta 5747 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 literal 0 HcmV?d00001 diff --git a/_module/ncs/jy_itnk_amf1.ncs b/_module/ncs/jy_itnk_amf1.ncs new file mode 100644 index 0000000000000000000000000000000000000000..61208afbc57d0a31d357c72b48f8216a6d3e2030 GIT binary patch literal 12378 zcmeHNYitzP6`q~7mxnDvE4ze;$;gIaz$8410EZB4ynurr#9kAqQdV176N6va3n`Tv zRZ1&G{nJKjqDl!RY89pZ(Z`SUN2N;rRYi)bHd56VB7USID18t@5~o6qTlc%)xp!vn z?Cg5oIHjrz(u`;3oO93PJLjHz@AmBL_l|72Z*#ljZ2sJ82mcm&j+=CoRn^X-!+ra* z9qIOg1N?ArA~7>FbK9v}>EJ%S!QtCI8y$J}oTU0b?SRvH-@#>@OO7eS(V)bq47D0W zNl0aExo*l$t<#e3Q5?IgQn)4{cG>9**`dPdnQU%kaErHRkC#55A1$!s**}djki|G?6Kau^48sHy{(bA$!Y8DQh8hTb7f8S*Q*`(vO@!I88h+f z5Aw>l+_ER_+q0s`p0nqM#>ev~TRmzk9u>p>;fi6^$Egm&fN}OKuhfR6)HE4wY3DjV zK@WuE`!U1|Ji7Qr#9O%s-omAbj&Exy>P@Fgxwra=gs}p?r54|6!^gMqnUdBZTGSb3 z`EDQKa%mIL7^c0aolk%nHD95>!bys2)$bdVDUp`9oZjg>eOuUF3PgSRk+Jhbqo=(5 z;9&kl!8>^_?-j%BrX;1EU$ojh4G zuII$nDzdIX8(E^BR=lQ^OZ=p=%(lU~>ZQgcVfkso{1zom*fcA)X_|rs(4#&o+M}pI z8J0@-_}JK))=Kf3*d7k)$|1V^jmq$9YrOI|#a1~l*fh&OPrLtJn<|WylMCCl+@no; zMxn>2JXPxIj&99%WxLw?Guh5ex;vXblJ3dSzoBW#pU6ZA8B@DYymI=|9u9)3GT5(EwdE}MGu3D6w(_r zalcDCnr9=*!GWYi)T!hT%~MSiH9REwuel8MWuacY%V-6YbdEoEJoE+fwmkHD!coFN)8V$Eux$d$qI> z!6iQ^bRUXB$Q5Bj(YDdFr}y=x+cIe{)7IXV_B!`_J-rz(eYCSb(;shRGtKJk$)pdY z`&xY4GU=lk^`smme;0;E@{@(!$hhYdAMWeyZtFYd9ZDag7@vLp`dK|gWPDMZnfa(Y#Q*0Q{toi* z(FH1D5M%Dddb4C<40oK;R}w-#kHu?)Q73w*dfRBi+D%UMt9j-mMPLBjd`Zk;4ymYA z)l&ZOEM+OOb;e;N9aBh0pg+(isk5~tazkpa#s=SXff@O`&Yu2sUq)q3ZZd&Z&8M;58F>S?7hsCiuXEqH)UR%>08fuHWM?nK>lj+ZMTaSh7M%-?Q` zE9z%2*RgdzQ30c=28`R@V1-7P!BOVUY9lt7Mq!#*XyM22^5K}MiPiXuNwBSg-$bdwIxKl3(^~xOK<}tsLIFdb0q{Y-MD~ZtF+JEE=^Y@ z=~2<-5xCVB`K_YqMD#`IRLTGF+wnm!*X6zx*X6blnjVUc39o_QZGH&{Cw7?wHr@N* zDFhxefehmhR)q0~aN|)2uX6YiZU=ScF;+vOFS4%1)vq4dP)i*|{p-{K@G}`7qW>!;+w?CQjeWk^^Sq5W{Fgnme}vnO7{yX2QfN@VG2)C+9y^+K7PBoD>?t|rd=Pd$3Q}b7+c>(?Pjp{ zWBCX#k&K$flWzriAHq=_?tX2>+|fH{g3~zMeTVcWgT$CJ^9>Z#`??0&#jx9GsbIc` zUiEmjHB(0|du&M%(7;%>h$mI$l=OfE}O(4tEL}`MB zzJxCpNub%LA2R03l>Mp;k*`KLU`%~m_dr)VlkM(2a4>T$yI(EzH*PV40Gz%E4?jr` zPDFNctEyBlLIMmbPqSSg`ig@oTk-Mw477ZuT3+DKt6GYY$vgZ_0%g%vas4d`0BWh6 za>57rI1teoJR!DeROj;wL?nnSv}5+`9Q`;jvxPQp~((O;P`@+$xW z8^HcrU?Qxs&aMx4mYk`}LMZ8}XDepC#CtbFrDTCj5exyq!=c>VA^GwPM7Nho37A+#B zUDg`@icg`brCy{*=%$_%`$-MWi%zcmUW?=I_ZPv4j?rGNhu$6L6MU`5vA(0@JZgYt z=y=!K-n`5w=!Q;qkxSAkzA|D^SJ$e!CklZNNCm~g89Er9}4k5v@ZlWSPC8Yp=(k0xC=2R3mFIPd(|C zA@D9nD*5_nNroO&J{?bWB1oPvLCyUe%bl_sUlq1YpqI;$!U4 z<~)%hO!K&f)kvk_9CIhOHWCpHx=@F{!l5-%(y)I+7K7PFK^z`g+vEo%p=pyPS57y& z%WX#iD%<0u9KW6n>7o33?Wa7xIMji&Qk)X}ubh%vuKq6oLG331f`v3vPiOz!JVy}d z8Ue&n4DLvn*)|giN>BMSwq$KJZWoWwp=8~jW664oBcWWEFIh~#@}#j93w*V*WJG=z X6|A$A2*-<=#RUtVjNQ11tylj7`&^9C literal 0 HcmV?d00001 diff --git a/_module/ncs/jy_itnk_amf2.ncs b/_module/ncs/jy_itnk_amf2.ncs new file mode 100644 index 0000000000000000000000000000000000000000..73da059bede1109985a5d873790d04df90d07f85 GIT binary patch literal 12378 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 literal 0 HcmV?d00001 diff --git a/_module/ncs/jy_itnk_amf3.ncs b/_module/ncs/jy_itnk_amf3.ncs new file mode 100644 index 0000000000000000000000000000000000000000..0c5e490e5105d1f5895b79fa3f94e107fcc4c4da GIT binary patch literal 12378 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 WV4a~vI9|*wE?Dqn?8ZfGz4{jz8;tz` literal 0 HcmV?d00001 diff --git a/_module/ncs/jy_itnk_amf4.ncs b/_module/ncs/jy_itnk_amf4.ncs new file mode 100644 index 0000000000000000000000000000000000000000..82803a1573ab8464f7c36dd4c269de561d6589e8 GIT binary patch literal 12378 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 literal 0 HcmV?d00001 diff --git a/_module/ncs/jy_itnk_amf5.ncs b/_module/ncs/jy_itnk_amf5.ncs new file mode 100644 index 0000000000000000000000000000000000000000..ce1a20ae1e151983a2e78a8c5f16b3d2831f4310 GIT binary patch literal 12378 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 literal 0 HcmV?d00001 diff --git a/_module/ncs/make_evolved.ncs b/_module/ncs/make_evolved.ncs index 09ee3311cff366a25865f73d9aeceee0aac766d5..152072b48acf1cda37ee13193cce94fea8e6577d 100644 GIT binary patch delta 2637 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 RHTRKSSe8r?Uixyo_5(B)jV}NI delta 463 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 C?1&@) delta 5931 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 diff --git a/_module/ncs/prc_pwonspawn.ncs b/_module/ncs/prc_pwonspawn.ncs index 4080ab7d0e6990b4047c1ac161714e7e104611ec..c3f7ffdefde504ca1dc6e1893893ffd34dff1313 100644 GIT binary patch delta 1012 zcma)4Pe@cj7@wIp``)g*nwC#9F^4FnQd5Wy5t?p`1h!af5kag^ed^}^^SP^8kVM3G zsMD;zkPdd~k_W@XLL_-Lc=4R!S`z;-q8B7apn;GBjqo6Y_JxE!$aC$b^iK>$Eul0xh=JF9F?gx=Aj zl9HP50NVh14|f#ENX8NXV_At4ZSo{=-Mlz}i_JSt&`$5;61YU4;7W$C1b)Q5aK#Kv zpbGY+*?8bC!w>YS?KWJa74l6~Fhx!I)Y&%xAC?$v+GW{0)EtQpt~#|IwrYE+rxkRf}nnYO|_}1S=E!%UWGXA1IyDH-ODgxA6XA z&IU7rZ6&8sWDZUs)v=Vj+RcW?QYrH%?3>4bZ_1m?s`#mCh^5*fA_~J1l2UNE^`oeTJ@wyCU&$4`Z^U3LYG; z1=V~k4*?e5dqoXoHSJNO+aDc?gomQqNSHJ>lGg2d;_lbG2Tl{Wp=+_Yp%X30zIsMU zzcxf-{kljUv$RM|4@HAoOs`{W1D$h1_Qnp`YumEtb|HH{Jgfx+J;czu16q*8Mx#3E zjTk$W96lixss-lSWn9|Px(nuJW`l&{Low2&lQ8$j_^XK46&cn^pTYl~u#xxKnkvmG zZn#Nn?F4R6ul*3iL4iquDS@j3e+eWGp5t~z%eFRxZC!56d&MTD>7v6A=V?uz*PL2_ zGM$RcaA`J?_XWZ>YPjml+k~&981n&&J~nbIKTYRcM_~Hix+}5nf~j>Enn|Fbk{C~- W)Ob=lBO`qwu{;}DzM-CyRz9L=3x#Nkj0~ERM6#`qrJ5oLB8X@x5CU7yaEWke zYG_dsgchMGLMTB@%Av8Oz@fn)cwMhS%kSKK{^#8DKleRnl&%aj z&$AM6QUJ@c+Jps(h(A=N>L4M+(?noNJY`;JVU`7)4Z@fr1P3M@2GsdQfrXs)zod&N z!ipd2=u_9Bfd}e)#MCmcSgePq zPMB_pT-Qlw+M%U%+_iAdZbpP69T2Y>5=O|l)T)HZSSHMGN*xSS?o{OqU(7JN3yQM; zXGe9swXX`J=!%K;o?Iq;VB0k$7<6|yCAlVfEO{w;FZt=-7QM@wAIi9^t-u}Dv^f8s z1`X=h5l<6f7W?(E;Jn@k1>Dd_pnR0k(-|F#8J*_RbSs~Za$1aXWzt4BceuFt(wJ3> I;;(BrzcILz$^ZZW diff --git a/_module/ncs/re_widget9.ncs b/_module/ncs/re_widget9.ncs index 3af1324581cf649a296b843b7119ef657c4e7e68..1005b0cf53a145e0bed02a347139cb324f482829 100644 GIT binary patch delta 76 zcmX@lxSmnm&pB8j%uvt3iGhJ(JrlDWkYeCaV3;VWpvl6@z*CeOpYK?dni!IwpTo@f b|Ns9V3_xLq7)B9gAoYm>NSHBAZ14vFjr9?$ delta 108 zcmZ3_c%D(x&pB8j%uvt3iGhLPJQK4VkYeCaU|?dND6Zhn$oT*N{~ru2(hNZQ4-*>; sD+5naYJ9$9QEFmHetr%!Nd5~0P?#ZxQA8O?ePRF-W=yCWCnop<08#HD@Bjb+ diff --git a/_module/ncs/silenttrigger.ncs b/_module/ncs/silenttrigger.ncs index 728e58e170279f7d39c19295b818e5a281b53e88..9e22b5b06f900127bc391c114fb6b11ad864eaf5 100644 GIT binary patch delta 50 zcmZo*oWQ8%=NzmMW~gW2#K6EXK@LbTa40Y^v9U5RNHQ=o{{R2~2Lp>V1CahRQ7R1p D0s0Mu delta 34 ocmbQh*uW^|=NzmMW~gW2#K6GNAO|EEI20II85krPCTgVt0BmgqT>t<8 diff --git a/_module/ncs/silenttrigger2.ncs b/_module/ncs/silenttrigger2.ncs index 90e8f4e514fd33a31c411f9796330c94a99ff188..2274260f3ac111434189c8bf6e1b15a4d110baa9 100644 GIT binary patch delta 50 zcmZo*oWQ8%=NzmMW~gW2#K6EXK@LbTa40Y^v9U5RNHQ=o{{R2~2Lp>V1CahRQ7R1p D0s0Mu delta 34 ocmbQh*uW^|=NzmMW~gW2#K6GNAO|EEI20II85krPCTgVt0BmgqT>t<8 diff --git a/_module/ncs/spawnb_cc_activ.ncs b/_module/ncs/spawnb_cc_activ.ncs index de4d1662e57a621adef6cef756bd631c3c2f091a..b571555b63ff9f0dfa3ca66717b25f0a536d8e63 100644 GIT binary patch delta 57 zcmdnOxP;Nr&pB8j%uvt3iGhJ(2@|s%kYeCaU|?Zo;0{PEO3f$V1^_`r3b_CP delta 73 zcmZ3&xP{Tt&pB8j%uvt3iGhJ(3lp;(kYeCaU|?cnVP)VBNGwXtD+w-0EYD+M1Ie&5 YFqknhGXDSn{|5t$Gy{)4-~a#s diff --git a/_module/ncs/x2_def_spawn.ncs b/_module/ncs/x2_def_spawn.ncs index 5af4cad62b9b2d8805a1ef326898469897622c4a..d2bfb079afaaa7ef67aeaba221e69678f75cf4a9 100644 GIT binary patch delta 8681 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 delta 5672 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 diff --git a/_module/nss/creature_copy.nss b/_module/nss/creature_copy.nss new file mode 100644 index 00000000..7ba824e9 --- /dev/null +++ b/_module/nss/creature_copy.nss @@ -0,0 +1,216 @@ +#include "nw_inc_gff" +#include "npc_template_inc" +#include "prc_inc_spells" +#include "prc_inc_util" +#include "prc_inc_json" + +//:: Adds Evolved SLA's to jCreature. +//:: +json json_AddEvolvedPowers(json jCreature, int nBaseHD, int nCasterLevel, int iEvolution) +{ + int nAttempts = 0; + json jSpecAbilityList = GffGetList(jCreature, "SpecAbilityList"); + if (jSpecAbilityList == JsonNull()) jSpecAbilityList = JsonArray(); + + while (nAttempts < 20) // safety cap + { + nAttempts++; + int nRandom = d12(1); + json jSpecAbility = JsonObject(); + + switch(nRandom) + { + case 1: + if (nBaseHD < 6) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 18); + break; + case 2: + if (nBaseHD < 5) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 23); + break; + case 3: + if (nBaseHD < 4) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 25); + break; + case 4: + if (nBaseHD < 3) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 26); + break; + case 5: + if (nBaseHD < 3) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 27); + break; + case 6: + if (nBaseHD < 7) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 364); + break; + case 7: + if (nBaseHD < 5) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 67); + break; + case 8: + if (nBaseHD < 4) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 88); + break; + case 9: + if (nBaseHD < 3) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 78); + break; + case 10: + if (nBaseHD < 4) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 82); + break; + case 11: + if (nBaseHD < 2) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 157); + break; + case 12: + if (nBaseHD < 5) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 566); + break; + default: + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 46); // Doom fallback + break; + } + + // If jSpecAbility still empty for some reason, retry + if (JsonGetType(jSpecAbility) != JSON_TYPE_OBJECT) continue; + + jSpecAbility = GffAddByte(jSpecAbility, "SpellCasterLevel", PRCMax(nCasterLevel, nBaseHD)); + jSpecAbility = GffAddByte(jSpecAbility, "SpellFlags", 1); + jSpecAbilityList = JsonArrayInsert(jSpecAbilityList, jSpecAbility); + break; + } + + return GffAddList(jCreature, "SpecAbilityList", jSpecAbilityList); +} + +//:: Apply Evolved effects to a non-PC creature +void ApplyEvolvedEffects(object oCreature, int nBaseHD, int nCasterLevel, int iEvolution) +{ +//:: Declare major variables + int bIncorporeal = GetIsIncorporeal(oCreature); + effect eVolved; + +//:: Boost caster & SLA level + SetLocalInt(oCreature, PRC_CASTERLEVEL_ADJUSTMENT, PRCMax(nCasterLevel, nBaseHD)); + +//:: AC Bonuses: +1 natural or +1 deflection if Incorporal + if(bIncorporeal) + { + eVolved = EffectACIncrease(1+iEvolution, AC_DEFLECTION_BONUS); + } + else + { + eVolved = EffectACIncrease(1+iEvolution, AC_NATURAL_BONUS); + } + +//:: Fast Healing 3 + eVolved = EffectLinkEffects(eVolved, EffectRegenerate(3, 6.0f)); + +//:: Make *really* permanent + eVolved = UnyieldingEffect(eVolved); + +//:: Apply everything + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVolved, oCreature); +} + + +void main() +{ +//:: Declare major variables + object oBaseCreature = OBJECT_SELF; + object oNewCreature; + + GetObjectUUID(oBaseCreature); + + int bIncorporeal = GetIsIncorporeal(oBaseCreature); + int iBaseRace = MyPRCGetRacialType(oBaseCreature); + int nCasterLevel = PRCGetCasterLevel(oBaseCreature); + + int iEvolution = 1; + int iOldEvolution = GetLocalInt(oBaseCreature, "UNDEAD_EVOLUTION"); + +//:: Creatures & NPCs only + if ((GetObjectType(oBaseCreature) != OBJECT_TYPE_CREATURE) || (GetIsPC(oBaseCreature) == TRUE)) + { + DoDebug("Not a creature"); + return; + } + +//:: Undead only + if(iBaseRace != RACIAL_TYPE_UNDEAD) + { + //SendMessageToPC(GetFirstPC(), "make_evolved: Invalid racial type for template."); + DoDebug("make_evolved: Invalid racial type for template."); + return; + } + + /* if(DEBUG) */DoDebug("make_evolved: Previous Evolution is: " +IntToString(iOldEvolution)); + + iEvolution = iEvolution + iOldEvolution; + + /* if(DEBUG) */DoDebug("make_evolved: Evolution is: " +IntToString(iEvolution)); + + int nBaseHD = GetHitDice(oBaseCreature); + int nBaseCR = FloatToInt(GetChallengeRating(oBaseCreature)); + + location lSpawnLoc = GetLocation(oBaseCreature); + + json jBaseCreature = ObjectToJson(oBaseCreature, FALSE); + json jNewCreature; + json jFinalCreature; + +//:: Update creature's name on first advancement + string sBaseName = GetName(oBaseCreature); + +//:: Add Spell-like abilities + jNewCreature = json_AddEvolvedPowers(jBaseCreature, nBaseHD, nCasterLevel, iEvolution); + +//:: Update stats + if(bIncorporeal) + { + //:: Incorporeal = CHA only + jNewCreature = json_UpdateCreatureStats(jNewCreature, oBaseCreature, 0, 0, 0, 0, 0, 2); + } + else + { + jNewCreature = json_UpdateCreatureStats(jNewCreature, oBaseCreature, 2, 0, 0, 0, 0, 2); + } + +//:: Apply effects + ApplyEvolvedEffects(oNewCreature, nBaseHD, nCasterLevel, iEvolution); + + + jFinalCreature = jNewCreature; + +//:: Destroy Original creature + DestroyObject(oBaseCreature, 0.0f); + +//:: Update the creature + oNewCreature = JsonToObject(jFinalCreature, lSpawnLoc); + + if(DEBUG) DoDebug("make_evolved: Final evolution is: " +IntToString(iEvolution)); + if (iEvolution == 1) + { + SetName(oNewCreature, "Evolved " + sBaseName); + } + else if (iEvolution == 2) + { + SetName(oNewCreature, "Greater " + sBaseName); + } + else + { + SetName(oNewCreature, sBaseName); + } + +//:: Update race field + SetSubRace(oNewCreature, "Undead (Augmented)"); + +//:: Update Age + SetAge(oNewCreature, GetAge(oNewCreature) + d100(1)); + +//:: Set variables + SetLocalInt(oNewCreature, "UNDEAD_EVOLUTION", iEvolution); + SetLocalInt(oNewCreature, "TEMPLATE_EVOLVED", 1); +} \ No newline at end of file diff --git a/_module/nss/inc_greenbound.nss b/_module/nss/inc_greenbound.nss new file mode 100644 index 00000000..512d8805 --- /dev/null +++ b/_module/nss/inc_greenbound.nss @@ -0,0 +1,10 @@ +/* Paragon Creature Template + + By: Jaysyn + Created: 2024-11-14 08:27:30 + + A greenbound creature looks much like it did before transformation, although certain changes are apparent. The creature's flesh has been replaced by pulpy wood and thickly corded creepers, and tiny branches stick out from its torso, arms, and legs. Any feathers, hair, or fur it once had have been replaced by some combination of green vines, moss, flowers, and leaves. + +Greenbound creatures speak any languages they knew before transformation, although their voices are now deep and gravelly. + +/* \ No newline at end of file diff --git a/_module/nss/jy_itnk_amf1.nss b/_module/nss/jy_itnk_amf1.nss new file mode 100644 index 00000000..a4b6421b --- /dev/null +++ b/_module/nss/jy_itnk_amf1.nss @@ -0,0 +1,173 @@ +//:://///////////////////////////////////////////// +//:: Amulet of Mighty Fists +1 +//:: jy_itnk_amf1 +//:: +//::////////////////////////////////////////////// +/* + Amulet of Mighty Fists +1 + Magic Item + (Dungeon Master's Guide v.3.5, p. 246) + + Price: 6,000 gp + Body Slot: Throat + Caster Level: 5th + Aura: Faint; (DC 18) Evocation + Activation: — + Weight: — lb. + + This amulet grants an enhancement bonus of +1 on attack + and damage rolls with unarmed attacks and natural weapons. + + Prerequisites: Craft Wondrous Item , Magic Fang, Greater + creator's caster level must be at least 3x the amulet's bonus. + + Cost to Create: 3,000 gp, 240 XP, 6 day(s). + +*/ +//::////////////////////////////////////////////// +//:: Modified By: Jaysyn +//:: Modified On: 2025-05-25 20:23:47 +//::////////////////////////////////////////////// + +#include "x2_inc_switches" +#include "inc_eventhook" +#include "prc_inc_combat" + +const string AMULET_RES = "jy_itnk_amf1"; +const string AMULET_EFFECT = "AMULET_MIGHTY_FISTS+1"; +const string SCRIPT_NAME = "jy_itnk_amf1"; + +// check if PC is wearing the amulet +int WearingAmulet(object oPC) +{ + object oNeck = GetItemInSlot(INVENTORY_SLOT_NECK, oPC); + return (GetIsObjectValid(oNeck) && + (GetResRef(oNeck) == AMULET_RES || GetTag(oNeck) == AMULET_RES)); +} + +// remove any lingering effect +void RemoveAmuletEffect(object oPC) +{ + effect e = GetFirstEffect(oPC); + while (GetIsEffectValid(e)) + { + if (GetEffectTag(e) == AMULET_EFFECT) + RemoveEffect(oPC, e); + e = GetNextEffect(oPC); + } +} + +// apply new effect +void ApplyAmuletEffect(object oPC) +{ + RemoveAmuletEffect(oPC); + + effect eMightyR = EffectAttackIncrease(1, ATTACK_BONUS_ONHAND); + effect eMightyL = EffectAttackIncrease(1, ATTACK_BONUS_OFFHAND); + effect eDmg = EffectDamageIncrease(DAMAGE_BONUS_1, DAMAGE_TYPE_MAGICAL); + + effect eLink = EffectLinkEffects(EffectLinkEffects(eMightyR, eMightyL), eDmg); + eLink = TagEffect(eLink, AMULET_EFFECT); + eLink = ExtraordinaryEffect(eLink); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_GOOD_HELP), oPC); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC); +} + +void main() +{ + int nEvent = GetUserDefinedItemEventNumber(); + object oPC; + object oItem; + + // Debug message + if(DEBUG) DoDebug("jy_itnk_amf1 >> Event: " + IntToString(nEvent)); + + switch (nEvent) + { + // Item equipped (any item) + case X2_ITEM_EVENT_EQUIP: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + if(DEBUG) DoDebug("jy_itnk_amf1 >> Equipped: " + GetName(oItem)); + + // If this is our amulet being equipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Register for equipment change events + AddEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + AddEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + + // Apply effect if unarmed + if (GetIsUnarmed(oPC)) + ApplyAmuletEffect(oPC); + } + // If a weapon is equipped while wearing the amulet, remove the effect + else if (WearingAmulet(oPC) && !GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf1 >> Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + // Item unequipped (any item) + case X2_ITEM_EVENT_UNEQUIP: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + if(DEBUG) DoDebug("jy_itnk_amf1 >> Unequipped: " + GetName(oItem)); + + // If this is our amulet being unequipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Remove effect immediately when amulet is unequipped + RemoveAmuletEffect(oPC); + + // Unregister events + RemoveEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + RemoveEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + } + // If a weapon is unequipped while wearing the amulet, and PC is now unarmed, + // apply the effect + else if (WearingAmulet(oPC) && GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf1 >> Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + + // Handle PRC eventhooks + case EVENT_ONPLAYEREQUIPITEM: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If a weapon was equipped, remove the amulet effect + if (!GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf1 >> PRC Eventhook: Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + case EVENT_ONPLAYERUNEQUIPITEM: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If they're now unarmed after unequipping something, apply the effect + if (GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf1 >> PRC Eventhook: Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + } +} \ No newline at end of file diff --git a/_module/nss/jy_itnk_amf2.nss b/_module/nss/jy_itnk_amf2.nss new file mode 100644 index 00000000..763c7755 --- /dev/null +++ b/_module/nss/jy_itnk_amf2.nss @@ -0,0 +1,175 @@ +//:://///////////////////////////////////////////// +//:: Amulet of Mighty Fists +2 +//:: jy_itnk_amf2 +//:: +//::////////////////////////////////////////////// +/* + Amulet of Might Fists +2 + Magic Item + (Dungeon Master's Guide v.3.5, p. 246) + + Price: 24,000 gp + Body Slot: Throat + Caster Level: 5th + Aura: Faint; (DC 18) Evocation + Activation: — + Weight: — lb. + + This amulet grants an enhancement bonus of +2 + on attack and damage rolls with unarmed attacks + and natural weapons. + + Prerequisites: Craft Wondrous Item , Magic Fang, + Greater creator’s caster level must be at least + 3x the amulet’s bonus. + + Cost to Create: 12,000 gp, 960 XP, 24 day(s). + +*/ +//::////////////////////////////////////////////// +//:: Modified By: Jaysyn +//:: Modified On: 2025-09-03 20:57:04 +//::////////////////////////////////////////////// + +#include "x2_inc_switches" +#include "inc_eventhook" +#include "prc_inc_combat" + +const string AMULET_RES = "jy_itnk_amf2"; +const string AMULET_EFFECT = "AMULET_MIGHTY_FISTS+2"; +const string SCRIPT_NAME = "jy_itnk_amf2"; + +// check if PC is wearing the amulet +int WearingAmulet(object oPC) +{ + object oNeck = GetItemInSlot(INVENTORY_SLOT_NECK, oPC); + return (GetIsObjectValid(oNeck) && + (GetResRef(oNeck) == AMULET_RES || GetTag(oNeck) == AMULET_RES)); +} + +// remove any lingering effect +void RemoveAmuletEffect(object oPC) +{ + effect e = GetFirstEffect(oPC); + while (GetIsEffectValid(e)) + { + if (GetEffectTag(e) == AMULET_EFFECT) + RemoveEffect(oPC, e); + e = GetNextEffect(oPC); + } +} + +// apply new effect +void ApplyAmuletEffect(object oPC) +{ + RemoveAmuletEffect(oPC); + + effect eMightyR = EffectAttackIncrease(2, ATTACK_BONUS_ONHAND); + effect eMightyL = EffectAttackIncrease(2, ATTACK_BONUS_OFFHAND); + effect eDmg = EffectDamageIncrease(DAMAGE_BONUS_2, DAMAGE_TYPE_MAGICAL); + + effect eLink = EffectLinkEffects(EffectLinkEffects(eMightyR, eMightyL), eDmg); + eLink = TagEffect(eLink, AMULET_EFFECT); + eLink = ExtraordinaryEffect(eLink); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_GOOD_HELP), oPC); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC); +} + +void main() +{ + int nEvent = GetUserDefinedItemEventNumber(); + object oPC; + object oItem; + + // Debug message + if(DEBUG) DoDebug("jy_itnk_amf2 >> Event: " + IntToString(nEvent)); + + switch (nEvent) + { + // Item equipped (any item) + case X2_ITEM_EVENT_EQUIP: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + if(DEBUG) DoDebug("jy_itnk_amf2 >> Equipped: " + GetName(oItem)); + + // If this is our amulet being equipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Register for equipment change events + AddEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + AddEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + + // Apply effect if unarmed + if (GetIsUnarmed(oPC)) + ApplyAmuletEffect(oPC); + } + // If a weapon is equipped while wearing the amulet, remove the effect + else if (WearingAmulet(oPC) && !GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf2 >> Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + // Item unequipped (any item) + case X2_ITEM_EVENT_UNEQUIP: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + if(DEBUG) DoDebug("jy_itnk_amf2 >> Unequipped: " + GetName(oItem)); + + // If this is our amulet being unequipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Remove effect immediately when amulet is unequipped + RemoveAmuletEffect(oPC); + + // Unregister events + RemoveEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + RemoveEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + } + // If a weapon is unequipped while wearing the amulet, and PC is now unarmed, + // apply the effect + else if (WearingAmulet(oPC) && GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf2 >> Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + + // Handle PRC eventhooks + case EVENT_ONPLAYEREQUIPITEM: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If a weapon was equipped, remove the amulet effect + if (!GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf2 >> PRC Eventhook: Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + case EVENT_ONPLAYERUNEQUIPITEM: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If they're now unarmed after unequipping something, apply the effect + if (GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf2 >> PRC Eventhook: Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + } +} \ No newline at end of file diff --git a/_module/nss/jy_itnk_amf3.nss b/_module/nss/jy_itnk_amf3.nss new file mode 100644 index 00000000..fa4b7b43 --- /dev/null +++ b/_module/nss/jy_itnk_amf3.nss @@ -0,0 +1,175 @@ +//:://///////////////////////////////////////////// +//:: Amulet of Mighty Fists +3 +//:: jy_itnk_amf3 +//:: +//::////////////////////////////////////////////// +/* + Amulet of Might Fists +3 + Magic Item + (Dungeon Master's Guide v.3.5, p. 246) + + Price: 54,000 gp + Body Slot: Throat + Caster Level: 5th + Aura: Faint; (DC 18) Evocation + Activation: — + Weight: — lb. + + This amulet grants an enhancement bonus of +3 + on attack and damage rolls with unarmed attacks + and natural weapons. + + Prerequisites: Craft Wondrous Item , Magic Fang, + Greater creator’s caster level must be at least + 3x the amulet’s bonus. + + Cost to Create: 27,000 gp, 2,160 XP, 54 day(s). + +*/ +//::////////////////////////////////////////////// +//:: Modified By: Jaysyn +//:: Modified On: 2025-05-25 20:23:47 +//::////////////////////////////////////////////// + +#include "x2_inc_switches" +#include "inc_eventhook" +#include "prc_inc_combat" + +const string AMULET_RES = "jy_itnk_amf3"; +const string AMULET_EFFECT = "AMULET_MIGHTY_FISTS+3"; +const string SCRIPT_NAME = "jy_itnk_amf3"; + +// check if PC is wearing the amulet +int WearingAmulet(object oPC) +{ + object oNeck = GetItemInSlot(INVENTORY_SLOT_NECK, oPC); + return (GetIsObjectValid(oNeck) && + (GetResRef(oNeck) == AMULET_RES || GetTag(oNeck) == AMULET_RES)); +} + +// remove any lingering effect +void RemoveAmuletEffect(object oPC) +{ + effect e = GetFirstEffect(oPC); + while (GetIsEffectValid(e)) + { + if (GetEffectTag(e) == AMULET_EFFECT) + RemoveEffect(oPC, e); + e = GetNextEffect(oPC); + } +} + +// apply new effect +void ApplyAmuletEffect(object oPC) +{ + RemoveAmuletEffect(oPC); + + effect eMightyR = EffectAttackIncrease(3, ATTACK_BONUS_ONHAND); + effect eMightyL = EffectAttackIncrease(3, ATTACK_BONUS_OFFHAND); + effect eDmg = EffectDamageIncrease(DAMAGE_BONUS_3, DAMAGE_TYPE_MAGICAL); + + effect eLink = EffectLinkEffects(EffectLinkEffects(eMightyR, eMightyL), eDmg); + eLink = TagEffect(eLink, AMULET_EFFECT); + eLink = ExtraordinaryEffect(eLink); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_GOOD_HELP), oPC); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC); +} + +void main() +{ + int nEvent = GetUserDefinedItemEventNumber(); + object oPC; + object oItem; + + // Debug message + if(DEBUG) DoDebug("jy_itnk_amf3 >> Event: " + IntToString(nEvent)); + + switch (nEvent) + { + // Item equipped (any item) + case X2_ITEM_EVENT_EQUIP: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + if(DEBUG) DoDebug("jy_itnk_amf3 >> Equipped: " + GetName(oItem)); + + // If this is our amulet being equipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Register for equipment change events + AddEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + AddEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + + // Apply effect if unarmed + if (GetIsUnarmed(oPC)) + ApplyAmuletEffect(oPC); + } + // If a weapon is equipped while wearing the amulet, remove the effect + else if (WearingAmulet(oPC) && !GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf3 >> Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + // Item unequipped (any item) + case X2_ITEM_EVENT_UNEQUIP: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + if(DEBUG) DoDebug("jy_itnk_amf3 >> Unequipped: " + GetName(oItem)); + + // If this is our amulet being unequipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Remove effect immediately when amulet is unequipped + RemoveAmuletEffect(oPC); + + // Unregister events + RemoveEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + RemoveEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + } + // If a weapon is unequipped while wearing the amulet, and PC is now unarmed, + // apply the effect + else if (WearingAmulet(oPC) && GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf3 >> Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + + // Handle PRC eventhooks + case EVENT_ONPLAYEREQUIPITEM: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If a weapon was equipped, remove the amulet effect + if (!GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf3 >> PRC Eventhook: Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + case EVENT_ONPLAYERUNEQUIPITEM: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If they're now unarmed after unequipping something, apply the effect + if (GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf3 >> PRC Eventhook: Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + } +} \ No newline at end of file diff --git a/_module/nss/jy_itnk_amf4.nss b/_module/nss/jy_itnk_amf4.nss new file mode 100644 index 00000000..8e6f0002 --- /dev/null +++ b/_module/nss/jy_itnk_amf4.nss @@ -0,0 +1,174 @@ +//:://///////////////////////////////////////////// +//:: Amulet of Mighty Fists +4 +//:: jy_itnk_amf4 +//:: +//::////////////////////////////////////////////// +/* + Amulet of Might Fists +4 + Magic Item + (Dungeon Master's Guide v.3.5, p. 246) + + Price: 96,000 gp + Body Slot: Throat + Caster Level: 5th + Aura: Faint; (DC 18) + Activation: — + Weight: — lb. + + This amulet grants an enhancement bonus of +4 + on attack and damage rolls with unarmed attacks + and natural weapons. + + Prerequisites: creator’s caster level must be at + least 3x the amulet’s bonus. + + Cost to Create: 48,000 gp, 3,840 XP, 96 day(s). + +*/ +//::////////////////////////////////////////////// +//:: Modified By: Jaysyn +//:: Modified On: 2025-05-25 20:23:47 +//::////////////////////////////////////////////// + +#include "x2_inc_switches" +#include "inc_eventhook" +#include "prc_inc_combat" + +const string AMULET_RES = "jy_itnk_amf4"; +const string AMULET_EFFECT = "AMULET_MIGHTY_FISTS+4"; +const string SCRIPT_NAME = "jy_itnk_amf4"; + +// check if PC is wearing the amulet +int WearingAmulet(object oPC) +{ + object oNeck = GetItemInSlot(INVENTORY_SLOT_NECK, oPC); + return (GetIsObjectValid(oNeck) && + (GetResRef(oNeck) == AMULET_RES || GetTag(oNeck) == AMULET_RES)); +} + +// remove any lingering effect +void RemoveAmuletEffect(object oPC) +{ + effect e = GetFirstEffect(oPC); + while (GetIsEffectValid(e)) + { + if (GetEffectTag(e) == AMULET_EFFECT) + RemoveEffect(oPC, e); + e = GetNextEffect(oPC); + } +} + +// apply new effect +void ApplyAmuletEffect(object oPC) +{ + RemoveAmuletEffect(oPC); + + effect eMightyR = EffectAttackIncrease(4, ATTACK_BONUS_ONHAND); + effect eMightyL = EffectAttackIncrease(4, ATTACK_BONUS_OFFHAND); + effect eDmg = EffectDamageIncrease(DAMAGE_BONUS_4, DAMAGE_TYPE_MAGICAL); + + effect eLink = EffectLinkEffects(EffectLinkEffects(eMightyR, eMightyL), eDmg); + eLink = TagEffect(eLink, AMULET_EFFECT); + eLink = ExtraordinaryEffect(eLink); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_GOOD_HELP), oPC); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC); +} + +void main() +{ + int nEvent = GetUserDefinedItemEventNumber(); + object oPC; + object oItem; + + // Debug message + if(DEBUG) DoDebug("jy_itnk_amf4 >> Event: " + IntToString(nEvent)); + + switch (nEvent) + { + // Item equipped (any item) + case X2_ITEM_EVENT_EQUIP: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + if(DEBUG) DoDebug("jy_itnk_amf4 >> Equipped: " + GetName(oItem)); + + // If this is our amulet being equipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Register for equipment change events + AddEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + AddEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + + // Apply effect if unarmed + if (GetIsUnarmed(oPC)) + ApplyAmuletEffect(oPC); + } + // If a weapon is equipped while wearing the amulet, remove the effect + else if (WearingAmulet(oPC) && !GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf4 >> Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + // Item unequipped (any item) + case X2_ITEM_EVENT_UNEQUIP: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + if(DEBUG) DoDebug("jy_itnk_amf4 >> Unequipped: " + GetName(oItem)); + + // If this is our amulet being unequipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Remove effect immediately when amulet is unequipped + RemoveAmuletEffect(oPC); + + // Unregister events + RemoveEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + RemoveEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + } + // If a weapon is unequipped while wearing the amulet, and PC is now unarmed, + // apply the effect + else if (WearingAmulet(oPC) && GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf4 >> Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + + // Handle PRC eventhooks + case EVENT_ONPLAYEREQUIPITEM: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If a weapon was equipped, remove the amulet effect + if (!GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf4 >> PRC Eventhook: Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + case EVENT_ONPLAYERUNEQUIPITEM: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If they're now unarmed after unequipping something, apply the effect + if (GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf4 >> PRC Eventhook: Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + } +} \ No newline at end of file diff --git a/_module/nss/jy_itnk_amf5.nss b/_module/nss/jy_itnk_amf5.nss new file mode 100644 index 00000000..46afa8a1 --- /dev/null +++ b/_module/nss/jy_itnk_amf5.nss @@ -0,0 +1,173 @@ +//:://///////////////////////////////////////////// +//:: Amulet of Mighty Fists +1 +//:: jy_itnk_amf5 +//:: +//::////////////////////////////////////////////// +/* + Amulet of Mighty Fists +1 + Magic Item + (Dungeon Master's Guide v.3.5, p. 246) + + Price: 6,000 gp + Body Slot: Throat + Caster Level: 5th + Aura: Faint; (DC 18) Evocation + Activation: — + Weight: — lb. + + This amulet grants an enhancement bonus of +1 on attack + and damage rolls with unarmed attacks and natural weapons. + + Prerequisites: Craft Wondrous Item , Magic Fang, Greater + creator's caster level must be at least 3x the amulet's bonus. + + Cost to Create: 3,000 gp, 240 XP, 6 day(s). + +*/ +//::////////////////////////////////////////////// +//:: Modified By: Jaysyn +//:: Modified On: 2025-05-25 20:23:47 +//::////////////////////////////////////////////// + +#include "x2_inc_switches" +#include "inc_eventhook" +#include "prc_inc_combat" + +const string AMULET_RES = "jy_itnk_amf5"; +const string AMULET_EFFECT = "AMULET_MIGHTY_FISTS+5"; +const string SCRIPT_NAME = "jy_itnk_amf5"; + +// check if PC is wearing the amulet +int WearingAmulet(object oPC) +{ + object oNeck = GetItemInSlot(INVENTORY_SLOT_NECK, oPC); + return (GetIsObjectValid(oNeck) && + (GetResRef(oNeck) == AMULET_RES || GetTag(oNeck) == AMULET_RES)); +} + +// remove any lingering effect +void RemoveAmuletEffect(object oPC) +{ + effect e = GetFirstEffect(oPC); + while (GetIsEffectValid(e)) + { + if (GetEffectTag(e) == AMULET_EFFECT) + RemoveEffect(oPC, e); + e = GetNextEffect(oPC); + } +} + +// apply new effect +void ApplyAmuletEffect(object oPC) +{ + RemoveAmuletEffect(oPC); + + effect eMightyR = EffectAttackIncrease(5, ATTACK_BONUS_ONHAND); + effect eMightyL = EffectAttackIncrease(5, ATTACK_BONUS_OFFHAND); + effect eDmg = EffectDamageIncrease(DAMAGE_BONUS_5, DAMAGE_TYPE_MAGICAL); + + effect eLink = EffectLinkEffects(EffectLinkEffects(eMightyR, eMightyL), eDmg); + eLink = TagEffect(eLink, AMULET_EFFECT); + eLink = ExtraordinaryEffect(eLink); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_GOOD_HELP), oPC); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC); +} + +void main() +{ + int nEvent = GetUserDefinedItemEventNumber(); + object oPC; + object oItem; + + // Debug message + if(DEBUG) DoDebug("jy_itnk_amf5 >> Event: " + IntToString(nEvent)); + + switch (nEvent) + { + // Item equipped (any item) + case X2_ITEM_EVENT_EQUIP: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + if(DEBUG) DoDebug("jy_itnk_amf5 >> Equipped: " + GetName(oItem)); + + // If this is our amulet being equipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Register for equipment change events + AddEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + AddEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + + // Apply effect if unarmed + if (GetIsUnarmed(oPC)) + ApplyAmuletEffect(oPC); + } + // If a weapon is equipped while wearing the amulet, remove the effect + else if (WearingAmulet(oPC) && !GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf5 >> Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + // Item unequipped (any item) + case X2_ITEM_EVENT_UNEQUIP: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + if(DEBUG) DoDebug("jy_itnk_amf5 >> Unequipped: " + GetName(oItem)); + + // If this is our amulet being unequipped + if (GetResRef(oItem) == AMULET_RES || GetTag(oItem) == AMULET_RES) + { + // Remove effect immediately when amulet is unequipped + RemoveAmuletEffect(oPC); + + // Unregister events + RemoveEventScript(oPC, EVENT_ONPLAYEREQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + RemoveEventScript(oPC, EVENT_ONPLAYERUNEQUIPITEM, SCRIPT_NAME, TRUE, FALSE); + } + // If a weapon is unequipped while wearing the amulet, and PC is now unarmed, + // apply the effect + else if (WearingAmulet(oPC) && GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf5 >> Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + + // Handle PRC eventhooks + case EVENT_ONPLAYEREQUIPITEM: + oPC = GetPCItemLastEquippedBy(); + oItem = GetPCItemLastEquipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If a weapon was equipped, remove the amulet effect + if (!GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf5 >> PRC Eventhook: Removing effect due to weapon equip"); + RemoveAmuletEffect(oPC); + } + break; + + case EVENT_ONPLAYERUNEQUIPITEM: + oPC = GetPCItemLastUnequippedBy(); + oItem = GetPCItemLastUnequipped(); + + // If not wearing the amulet, do nothing + if (!WearingAmulet(oPC)) + return; + + // If they're now unarmed after unequipping something, apply the effect + if (GetIsUnarmed(oPC)) + { + if(DEBUG) DoDebug("jy_itnk_amf5 >> PRC Eventhook: Adding effect due to weapon unequip"); + ApplyAmuletEffect(oPC); + } + break; + } +} \ No newline at end of file diff --git a/_module/nss/make_evolved.nss b/_module/nss/make_evolved.nss index 076624a3..76553e16 100644 --- a/_module/nss/make_evolved.nss +++ b/_module/nss/make_evolved.nss @@ -18,6 +18,86 @@ //:: Adds Evolved SLA's to jCreature. //:: json json_AddEvolvedPowers(json jCreature, int nBaseHD, int nCasterLevel, int iEvolution) +{ + int nAttempts = 0; + json jSpecAbilityList = GffGetList(jCreature, "SpecAbilityList"); + if (jSpecAbilityList == JsonNull()) jSpecAbilityList = JsonArray(); + + while (nAttempts < 20) // safety cap + { + nAttempts++; + int nRandom = d12(1); + json jSpecAbility = JsonObject(); + + switch(nRandom) + { + case 1: + if (nBaseHD < 6) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 18); + break; + case 2: + if (nBaseHD < 5) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 23); + break; + case 3: + if (nBaseHD < 4) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 25); + break; + case 4: + if (nBaseHD < 3) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 26); + break; + case 5: + if (nBaseHD < 3) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 27); + break; + case 6: + if (nBaseHD < 7) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 364); + break; + case 7: + if (nBaseHD < 5) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 67); + break; + case 8: + if (nBaseHD < 4) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 88); + break; + case 9: + if (nBaseHD < 3) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 78); + break; + case 10: + if (nBaseHD < 4) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 82); + break; + case 11: + if (nBaseHD < 2) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 157); + break; + case 12: + if (nBaseHD < 5) continue; + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 566); + break; + default: + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 46); // Doom fallback + break; + } + + // If jSpecAbility still empty for some reason, retry + if (JsonGetType(jSpecAbility) != JSON_TYPE_OBJECT) continue; + + jSpecAbility = GffAddByte(jSpecAbility, "SpellCasterLevel", PRCMax(nCasterLevel, nBaseHD)); + jSpecAbility = GffAddByte(jSpecAbility, "SpellFlags", 1); + jSpecAbilityList = JsonArrayInsert(jSpecAbilityList, jSpecAbility); + break; + } + + return GffAddList(jCreature, "SpecAbilityList", jSpecAbilityList); +} + + +/* json json_AddEvolvedPowers(json jCreature, int nBaseHD, int nCasterLevel, int iEvolution) { int nRandom = d12(1); @@ -44,7 +124,7 @@ json json_AddEvolvedPowers(json jCreature, int nBaseHD, int nCasterLevel, int iE 12 unholy blight 566 - 5th */ - switch(nRandom) +/* switch(nRandom) { case 1: if (nBaseHD >= 6) @@ -302,6 +382,7 @@ json json_AddEvolvedPowers(json jCreature, int nBaseHD, int nCasterLevel, int iE return jCreature = GffAddList(jCreature, "SpecAbilityList", jSpecAbilityList); } + */ //:: Apply Evolved effects to a non-PC creature void ApplyEvolvedEffects(object oCreature, int nBaseHD, int nCasterLevel, int iEvolution) @@ -340,34 +421,47 @@ void main() object oBaseCreature = OBJECT_SELF; object oNewCreature; + GetObjectUUID(oBaseCreature); + int bIncorporeal = GetIsIncorporeal(oBaseCreature); int iBaseRace = MyPRCGetRacialType(oBaseCreature); int nCasterLevel = PRCGetCasterLevel(oBaseCreature); - int iEvolution = GetLocalInt(oBaseCreature, "UNDEAD_EVOLUTION"); + int iEvolution = 1; + int iOldEvolution = GetLocalInt(oBaseCreature, "UNDEAD_EVOLUTION"); //:: Creatures & NPCs only if ((GetObjectType(oBaseCreature) != OBJECT_TYPE_CREATURE) || (GetIsPC(oBaseCreature) == TRUE)) { - if(DEBUG) DoDebug("Not a creature"); + DoDebug("Not a creature"); return; } - + //:: Undead only if(iBaseRace != RACIAL_TYPE_UNDEAD) { - //SendMessageToPC(GetFirstPC(), "make_evolved: Invalid racial type for template."); - if(DEBUG) DoDebug("make_evolved: Invalid racial type for template."); + DoDebug("make_evolved: Invalid racial type for template."); return; - } + } + + if(DEBUG) DoDebug("make_evolved: Previous Evolution is: " +IntToString(iOldEvolution)); + + iEvolution = iEvolution + iOldEvolution; + + if(DEBUG) DoDebug("make_evolved: Evolution is: " +IntToString(iEvolution)); int nBaseHD = GetHitDice(oBaseCreature); int nBaseCR = FloatToInt(GetChallengeRating(oBaseCreature)); - json jBaseCreature = ObjectToJson(oBaseCreature, TRUE); + location lSpawnLoc = GetLocation(oBaseCreature); + + json jBaseCreature = ObjectToJson(oBaseCreature, FALSE); json jNewCreature; json jFinalCreature; +//:: Get original name + string sBaseName = GetName(oBaseCreature); + //:: Add Spell-like abilities jNewCreature = json_AddEvolvedPowers(jBaseCreature, nBaseHD, nCasterLevel, iEvolution); @@ -381,35 +475,52 @@ void main() { jNewCreature = json_UpdateCreatureStats(jNewCreature, oBaseCreature, 2, 0, 0, 0, 0, 2); } + +//:: Delete original creature. + if (GetIsObjectValid(oBaseCreature)) + { + AssignCommand(oBaseCreature, ClearAllActions(TRUE)); + + // optional fade / vanish visuals + effect eBlank = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlank, oBaseCreature, 6.0f); + + DestroyObject(oBaseCreature, 0.1f); + } //:: Update CR jFinalCreature = json_UpdateCR(jNewCreature, nBaseCR, 1); //:: Update the creature - oNewCreature = JsonToObject(jFinalCreature, GetLocation(oBaseCreature)); - DestroyObject(oBaseCreature, 0.0f); + oNewCreature = JsonToObject(jFinalCreature, lSpawnLoc); //:: Apply effects ApplyEvolvedEffects(oNewCreature, nBaseHD, nCasterLevel, iEvolution); - PRCForceRest(oNewCreature); - -//:: Update creature's name on first advancement - string sBaseName = GetName(oNewCreature); - if(iEvolution < 1) +//:: Update name + if(DEBUG) DoDebug("make_evolved: Final evolution is: " +IntToString(iEvolution)); + if (iEvolution == 1) { - SetName(oNewCreature, "Evolved "+ sBaseName); + SetName(oNewCreature, "Evolved " + sBaseName); } - if(iEvolution < 4) + else if (iEvolution == 2) { - SetName(oNewCreature, "Greater "+ sBaseName); + SetName(oNewCreature, "Greater " + sBaseName); + } + else + { + SetName(oNewCreature, sBaseName); } //:: Update race field SetSubRace(oNewCreature, "Undead (Augmented)"); - + +//:: Update age SetAge(oNewCreature, GetAge(oNewCreature) + d100(1)); +//:: Freshen up + //DelayCommand(0.0f, PRCForceRest(oNewCreature)); + //:: Set variables - SetLocalInt(oNewCreature, "UNDEAD_EVOLUTION", iEvolution+1); + SetLocalInt(oNewCreature, "UNDEAD_EVOLUTION", iEvolution); SetLocalInt(oNewCreature, "TEMPLATE_EVOLVED", 1); } \ No newline at end of file diff --git a/_module/nss/make_greenbound.nss b/_module/nss/make_greenbound.nss new file mode 100644 index 00000000..6c929f89 --- /dev/null +++ b/_module/nss/make_greenbound.nss @@ -0,0 +1,259 @@ +/* Greenbound Creature Template + + By: Jaysyn + Created: 2025-09-06 22:24:15 + + A greenbound creature looks much like it did before + transformation, although certain changes are apparent. + The creature's flesh has been replaced by pulpy wood + and thickly corded creepers, and tiny branches stick + out from its torso, arms, and legs. Any feathers, hair, + or fur it once had have been replaced by some combination + of green vines, moss, flowers, and leaves. + + Greenbound creatures speak any languages they knew before + transformation, although their voices are now deep and + gravelly. + +/*/////////////////////////////////////////////////////////// + +#include "nw_inc_gff" +#include "prc_inc_spells" +#include "prc_inc_util" +#include "npc_template_inc" +#include "inc_debug" +#include "prc_inc_json" + +//:: Adds Greenbound SLA's to jCreature. +//:: +json json_AddGreenboundPowers(json jCreature) +{ + // Get the existing SpecAbilityList (if it exists) + json jSpecAbilityList = GffGetList(jCreature, "SpecAbilityList"); + + //:: Get creature's HD + int iHD = json_GetCreatureHD(jCreature); + + // Create the SpecAbilityList if it doesn't exist + if (jSpecAbilityList == JsonNull()) + { + jSpecAbilityList = JsonArray(); + } + +//:: Add Entangle at will (capped @ 20) + int i; + for (i = 0; i < 20; i++) + { + json jSpecAbility = JsonObject(); + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 53); + jSpecAbility = GffAddByte(jSpecAbility, "SpellCasterLevel", iHD); + jSpecAbility = GffAddByte(jSpecAbility, "SpellFlags", 1); + + // Manually add to the array + jSpecAbilityList = JsonArrayInsert(jSpecAbilityList, jSpecAbility); + } + +//:: Add Vine Mine 1x / Day + for (i = 0; i < 1; i++) + { + json jSpecAbility = JsonObject(); + jSpecAbility = GffAddWord(jSpecAbility, "Spell", 529); + jSpecAbility = GffAddByte(jSpecAbility, "SpellCasterLevel", iHD); + jSpecAbility = GffAddByte(jSpecAbility, "SpellFlags", 1); + + // Manually add to the array + jSpecAbilityList = JsonArrayInsert(jSpecAbilityList, jSpecAbility); + } + +//:: Add the list to the creature + jCreature = GffAddList(jCreature, "SpecAbilityList", jSpecAbilityList); + + return jCreature; +} + +//:: Apply Greenbound effects +void ApplyGreenboundEffects(object oCreature, int nBaseHD) +{ +//:: Declare major variables + int nNewCR; + object oSkin = GetPCSkin(oCreature); + + itemproperty ipIP; + + effect eGreenbound; + +//:: Give it a barkskin vfx + eGreenbound = EffectLinkEffects(eGreenbound, EffectVisualEffect(VFX_DUR_PROT_BARKSKIN)); + +//:: Plant Immunities + eGreenbound = EffectLinkEffects(eGreenbound, EffectImmunity(IMMUNITY_TYPE_STUN)); + + ipIP =ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_PARALYSIS); + IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE); + + ipIP =ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_POISON); + IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE); + + ipIP =ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_MINDSPELLS); + IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE); + + ipIP =ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_CRITICAL_HITS); + IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE); + + ipIP =ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_BACKSTAB); + IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE); + +//:: Set maximum hit points for each HD + int nMaxHP = GetMaxPossibleHP(oCreature); + SetCurrentHitPoints(oCreature, nMaxHP); + + DoDebug("nMaxHP is: "+IntToString(nMaxHP)+","); + +//:: Resistance to Cold and Electricity (Ex): A greenbound creature gains resistance 10 to cold and electricity. + eGreenbound = EffectLinkEffects(eGreenbound, EffectDamageResistance(DAMAGE_TYPE_ELECTRICAL, 10)); + eGreenbound = EffectLinkEffects(eGreenbound, EffectDamageResistance(DAMAGE_TYPE_COLD, 10)); + +//:: Damage Reduction (Ex): A greenbound creature has damage reduction 10/magic and slashing. + eGreenbound = EffectLinkEffects(eGreenbound, EffectDamageReduction(10, DAMAGE_POWER_PLUS_ONE)); + eGreenbound = EffectLinkEffects(eGreenbound, EffectDamageResistance(DAMAGE_TYPE_BLUDGEONING, 10)); + eGreenbound = EffectLinkEffects(eGreenbound, EffectDamageResistance(DAMAGE_TYPE_PIERCING, 10)); + +//:: Fast Healing (Ex): A greenbound creature heals 3 points of damage each round so long as it has at least 1 hit point. + eGreenbound = EffectLinkEffects(eGreenbound, EffectRegenerate(3, 6.0f)); + +//:: Tremorsense (Ex): Greenbound creatures can automatically sense the location of +//:: anything within 60 feet that is in contact with the ground. + eGreenbound = EffectLinkEffects(eGreenbound, EffectBonusFeat(488)); + +//:: Grapple Bonus (Ex): The thorny hooks on a greenbound creature's hands and feet +//:: grant it a +4 bonus on grapple checks. (Imp. Grapple) + eGreenbound = EffectLinkEffects(eGreenbound, EffectBonusFeat(2804)); + +//:: Immunity to Critical Hits + eGreenbound = EffectLinkEffects(eGreenbound, EffectBonusFeat(3585)); + +//:: Immunity to Sneak Attack + eGreenbound = EffectLinkEffects(eGreenbound, EffectBonusFeat(3591)); + +//:: Immunity to Poison + eGreenbound = EffectLinkEffects(eGreenbound, EffectBonusFeat(3590)); + +//:: Immunity to Mind Effects + eGreenbound = EffectLinkEffects(eGreenbound, EffectBonusFeat(3588)); + +//:: Low-Light Vision + eGreenbound = EffectLinkEffects(eGreenbound, EffectBonusFeat(354)); + +//:: Make *really* permanent + eGreenbound = UnyieldingEffect(eGreenbound); + +//:: Apply everything + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGreenbound, oCreature); + +//:: Add slam attack + string sResRef; + int nSize = PRCGetCreatureSize(oCreature); + //primary weapon + sResRef = "prc_warf_slam_"; + sResRef += GetAffixForSize(nSize+1); + AddNaturalPrimaryWeapon(oCreature, sResRef, 1); + +} + + +void main () +{ +//:: Declare major variables + object oBaseCreature = OBJECT_SELF; + object oNewCreature; + + string sBaseName = GetName(oBaseCreature); + + GetObjectUUID(oBaseCreature); + + int nRacial = MyPRCGetRacialType(oBaseCreature); + + //:: No Template Stacking + if(GetLocalInt(oBaseCreature, "TEMPLATE_GREENBOUND") > 0) + { + if(DEBUG) DoDebug("No Template Stacking"); + return; + } + + //:: Creatures & NPCs only + if ((GetObjectType(oBaseCreature) != OBJECT_TYPE_CREATURE) || (GetIsPC(oBaseCreature) == TRUE)) + { + if(DEBUG) DoDebug("Not a creature"); + return; + } +/* + + A "greenbound creature" is an acquired template that can be added to + any animal, fey, giant, humanoid, monstrous humanoid, or vermin. + +*/ + if(nRacial == RACIAL_TYPE_ABERRATION || nRacial == RACIAL_TYPE_CONSTRUCT || nRacial == RACIAL_TYPE_DRAGON || + nRacial == RACIAL_TYPE_ELEMENTAL || nRacial == RACIAL_TYPE_MAGICAL_BEAST || nRacial == RACIAL_TYPE_OOZE || + nRacial == RACIAL_TYPE_OUTSIDER || nRacial == RACIAL_TYPE_PLANT || nRacial == RACIAL_TYPE_UNDEAD ) + { + DoDebug("make_greenbound: Invalid racial type for template."); + return; + } + + int nBaseHD = GetHitDice(oBaseCreature); + int nBaseCR = FloatToInt(GetChallengeRating(oBaseCreature)); + + location lSpawnLoc = GetLocation(oBaseCreature); + + json jBaseCreature = ObjectToJson(oBaseCreature, TRUE); + json jNewCreature; + json jFinalCreature; + +//:: The creature's type changes to plant with the appropriate augmented subtype. +//:: Hit Dice: Change all current Hit Dice to d8s. + jNewCreature = JsonModifyRacialType(jBaseCreature, RACIAL_TYPE_PLANT); + +//:: Armor Class: A greenbound creature's natural armor bonus improves by 6 over that of the base creature. + jNewCreature = json_IncreaseBaseAC(jNewCreature, 6); + +//:: Abilities: Increase from the base creature as follows: Str +6, Dex +2, Con +4, Cha +4. + jNewCreature = json_UpdateCreatureStats(jNewCreature, oBaseCreature, 6, 2, 4, 0, 0, 4); + + if (GetIsObjectValid(oBaseCreature)) + { + AssignCommand(oBaseCreature, ClearAllActions(TRUE)); + + // optional fade / vanish visuals + effect eBlank = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlank, oBaseCreature, 6.0f); + + DestroyObject(oBaseCreature, 0.1f); + } + +//:: Spell-Like Abilities: At will - entangle, pass without trace, speak with plants; 1/day - wall of thorns. + jNewCreature = json_AddGreenboundPowers(jNewCreature); + +//:: Hit Dice: Change all current Hit Dice to d8s. + jNewCreature = json_RecalcMaxHP(jNewCreature, 8); + +//:: Challenge Rating: Same as the base creature +2 + jFinalCreature = json_UpdateCR(jNewCreature, nBaseCR, 2); + +//:: Update the creature + oNewCreature = JsonToObject(jFinalCreature, lSpawnLoc); + +//:: Apply the non-json effects + ApplyGreenboundEffects(oNewCreature, nBaseHD); + +//:: Update creature's name + SetName(oNewCreature, "Greenbound "+ sBaseName); + +//:: Update race field + SetSubRace(oNewCreature, "Plant (Augmented)"); + +//:: Freshen Up + //DelayCommand(0.0f, PRCForceRest(oNewCreature)); + +//:: Set variables + SetLocalInt(oNewCreature, "TEMPLATE_GREENBOUND", 1); +} \ No newline at end of file diff --git a/_module/nss/make_paragon.nss b/_module/nss/make_paragon.nss index 3b076464..b7e6796b 100644 --- a/_module/nss/make_paragon.nss +++ b/_module/nss/make_paragon.nss @@ -448,6 +448,10 @@ void main () object oBaseCreature = OBJECT_SELF; object oNewCreature; + location lSpawnLoc = GetLocation(oBaseCreature); + + GetObjectUUID(oBaseCreature); + //:: No Template Stacking if(GetLocalInt(oBaseCreature, "TEMPLATE_PARAGON") > 0) { @@ -474,14 +478,23 @@ void main () jNewCreature = json_UpdateBaseAC(jNewCreature, 5); jFinalCreature = json_UpdateCreatureStats(jNewCreature, oBaseCreature, 15, 15, 15, 15, 15, 15); +//:: Delete original creature. + if (GetIsObjectValid(oBaseCreature)) + { + AssignCommand(oBaseCreature, ClearAllActions(TRUE)); + + // optional fade / vanish visuals + effect eBlank = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlank, oBaseCreature, 6.0f); + + DestroyObject(oBaseCreature, 0.1f); + } + //:: Update the creature - oNewCreature = JsonToObject(jFinalCreature, GetLocation(oBaseCreature)); - DestroyObject(oBaseCreature, 0.0f); + oNewCreature = JsonToObject(jFinalCreature, lSpawnLoc); //:: Apply effects ApplyParagonEffects(oNewCreature, nBaseHD, nBaseCR); - - PRCForceRest(oNewCreature); //:: Adding extra 12 HP per HD as Temporary HP. effect eTempHP = EffectTemporaryHitpoints(nBaseHD * 12); @@ -491,5 +504,9 @@ void main () string sBaseName = GetName(oNewCreature); SetName(oNewCreature, "Paragon "+ sBaseName); +//:: Freshen Up + //DelayCommand(0.0f, PRCForceRest(oNewCreature)); + +//:: Set variables SetLocalInt(oNewCreature, "TEMPLATE_PARAGON", 1); } \ No newline at end of file diff --git a/_module/nss/ms_name_inc.nss b/_module/nss/ms_name_inc.nss index 2b5e0115..a81f1cc3 100644 --- a/_module/nss/ms_name_inc.nss +++ b/_module/nss/ms_name_inc.nss @@ -64,9 +64,11 @@ ///// FUNCTION DECLARATIONS //////////////////////////////////////////////////// -string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF); +//:: Function to get the class type with the highest level +int GetHighestClassType(object oCreature); -int GetHighestClassLevel(object oCreature = OBJECT_SELF); +//:: Returns class level based NPC titles +string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF); // Generates a Random First Name // based on Race and Gender @@ -103,7 +105,10 @@ void ms_Nomenclature(object oNPC = OBJECT_SELF) //:: Handles class level based NPC titles if (bClassTitle) { - sClassTitle = GetClassLevelTitle(GetHighestClassLevel(oNPC), oNPC); + int nClassType = GetHighestClassType(oNPC); + sClassTitle = GetClassLevelTitle(nClassType, oNPC); + + FloatingTextStringOnCreature("Title: " + sClassTitle, oNPC); } //:: Handles class based Henchman titles @@ -972,7 +977,7 @@ void ms_Nomenclature(object oNPC = OBJECT_SELF) if (bClassTitle) { - sRandomName = sBaseRace +" "+ sTitle; + sRandomName = sBaseRace +" "+ sClassTitle; } SetName(oNPC, (sRandomName)); @@ -1048,34 +1053,38 @@ string ms_RandomLastName(object oNPC = OBJECT_SELF) return Name; } -//:: Function to get the highest class level of an object, excluding racialtype classes -int GetHighestClassLevel(object oCreature) +//:: Function to get the class type with the highest level +int GetHighestClassType(object oCreature) { int nHighestLevel = -1; - int nClassTypes = 254; // Maximum number of class types - int i; + int nHighestClass = -1; + int nClassTypes = 254; // maximum - for (i = 0; i <= nClassTypes; i++) + int i = 0; + while (i <= nClassTypes) { - // Check if the class type is excluded + // Exclude racial/monster pseudo-classes if (i == CLASS_TYPE_ABERRATION || - i == CLASS_TYPE_ANIMAL || - i == CLASS_TYPE_BEAST || - i == CLASS_TYPE_CONSTRUCT || - i == CLASS_TYPE_DRAGON || - i == CLASS_TYPE_ELEMENTAL || - i == CLASS_TYPE_FEY || - i == CLASS_TYPE_GIANT || - i == CLASS_TYPE_HUMANOID || - i == CLASS_TYPE_MAGICAL_BEAST || - i == CLASS_TYPE_MONSTROUS || - i == CLASS_TYPE_OOZE || - i == CLASS_TYPE_OUTSIDER || - i == CLASS_TYPE_PLANT || - i == CLASS_TYPE_SHAPECHANGER || - i == CLASS_TYPE_UNDEAD || - i == CLASS_TYPE_VERMIN) + i == CLASS_TYPE_ANIMAL || + i == CLASS_TYPE_BEAST || + i == CLASS_TYPE_CONSTRUCT || + i == CLASS_TYPE_DRAGON || + i == CLASS_TYPE_ELEMENTAL || + i == CLASS_TYPE_FEY || + i == CLASS_TYPE_GIANT || + i == CLASS_TYPE_HUMANOID || + i == CLASS_TYPE_MAGICAL_BEAST || + i == CLASS_TYPE_MONSTROUS || + i == CLASS_TYPE_OOZE || + i == CLASS_TYPE_OUTSIDER || + i == CLASS_TYPE_PLANT || + i == CLASS_TYPE_SHAPECHANGER || + i == CLASS_TYPE_UNDEAD || + i == CLASS_TYPE_VERMIN) + { + i++; continue; + } int nLevel = GetLevelByClass(i, oCreature); if (nLevel > 0) @@ -1083,27 +1092,29 @@ int GetHighestClassLevel(object oCreature) if (nLevel > nHighestLevel) { nHighestLevel = nLevel; + nHighestClass = i; } } - else - { - break; // Reached an invalid class level, exit the loop - } + i++; } - return nHighestLevel; + if (nHighestClass != -1) + { + FloatingTextStringOnCreature("Highest Level class is " + IntToString(nHighestClass) + + " at level " + IntToString(nHighestLevel) + ".", oCreature); + } + + return nHighestClass; } - -//:: Handles class level based NPC titles +//:: Returns class level based NPC titles string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) { - string sTitle; - int nHighClass = GetHighestClassLevel(oNPC); - int nLevel = GetLevelByClass(nHighClass, oNPC); - int nGender = GetGender(oNPC); - - switch (nHighClass) + string sTitle; + int nLevel = GetLevelByClass(nClassType, oNPC); + int nGender = GetGender(oNPC); + + switch (nClassType) { case CLASS_TYPE_BARBARIAN: switch(nLevel) @@ -1174,8 +1185,8 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) {sTitle = "Conqueress"; break;} else {sTitle = "Conqueror"; break;} - } + break; case CLASS_TYPE_ROGUE: switch(nLevel) @@ -1236,6 +1247,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) sTitle = "Master Rogue"; break; } + break; case CLASS_TYPE_BARD: switch(nLevel) @@ -1335,6 +1347,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) sTitle = "Master Bard"; break; } + break; case CLASS_TYPE_SORCERER: case CLASS_TYPE_WIZARD: @@ -1396,6 +1409,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) sTitle = "Archmage"; break; } + break; case CLASS_TYPE_CLERIC: switch(nLevel) @@ -1468,6 +1482,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) {sTitle = "High Priest"; break;} } + break; case CLASS_TYPE_DRUID: switch(nLevel) @@ -1528,6 +1543,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) sTitle = "Archdruid"; break; } + break; case CLASS_TYPE_FIGHTER: switch(nLevel) @@ -1588,6 +1604,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) sTitle = "Grandmaster"; break; } + break; case CLASS_TYPE_MONK: switch(nLevel) @@ -1659,6 +1676,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) sTitle = "High Master"; break; } + break; case CLASS_TYPE_PALADIN: switch(nLevel) @@ -1730,7 +1748,8 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) sTitle = "High Master"; break; } - + break; + case CLASS_TYPE_RANGER: switch(nLevel) { @@ -1817,7 +1836,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF) sTitle = "Ranger Lord"; break; } - + break; } return sTitle; diff --git a/_module/nss/prc_pwonspawn.nss b/_module/nss/prc_pwonspawn.nss index e552ecd9..272e02d0 100644 --- a/_module/nss/prc_pwonspawn.nss +++ b/_module/nss/prc_pwonspawn.nss @@ -81,7 +81,10 @@ void main() string sCurrentDate = SQLite_GetSystemDate(); string sMonthDay = GetSubString(sCurrentDate, 0, 5); - object oArea = GetArea(OBJECT_SELF); + object oArea = GetArea(OBJECT_SELF); + int bIsNatural = GetIsAreaNatural(oArea); + int bAboveGround = GetIsAreaAboveGround(oArea); + object oSkelly; object oPC = GetFirstObjectInArea(oArea); @@ -137,7 +140,7 @@ void main() } //:: Paragon Check - if (Random(9999) == 0) + if (Random(10000) == 0) { if(GetLocalInt(OBJECT_SELF, "TEMPLATE_PARAGON") < 1) { @@ -145,6 +148,37 @@ void main() } } +//:: Greenbound Check + if (bIsNatural && bAboveGround) + { + if (iRacial == RACIAL_TYPE_FEY + || iRacial == RACIAL_TYPE_ANIMAL + || iRacial == RACIAL_TYPE_BEAST + || iRacial == RACIAL_TYPE_GIANT + || iRacial == RACIAL_TYPE_VERMIN) + { + if (Random(1000) == 0) + { + if (GetLocalInt(OBJECT_SELF, "TEMPLATE_GREENBOUND") < 1) + { + ExecuteScript("make_greenbound", OBJECT_SELF); + } + else + { + if (DEBUG) DoDebug("prc_pwonspawn >> Greenbound Check: Creature already has the Greenbound template."); + } + } + } + else + { + if (DEBUG) DoDebug("prc_pwonspawn >> Greenbound Check: Invalid racial type for template."); + } + } + else + { + if (DEBUG) DoDebug("prc_pwonspawn >> Greenbound Check: Area must be natural & above ground."); + } + //:: Setup Evolved Undead if(iRacial == RACIAL_TYPE_UNDEAD) { diff --git a/_module/utc/poa_nalfeshnee99.utc.json b/_module/utc/poa_nalfeshnee99.utc.json index c76d3e68..0128624e 100644 --- a/_module/utc/poa_nalfeshnee99.utc.json +++ b/_module/utc/poa_nalfeshnee99.utc.json @@ -733,14 +733,14 @@ "__struct_id": 1, "Feat": { "type": "word", - "value": 2511 + "value": 2510 } }, { "__struct_id": 1, "Feat": { "type": "word", - "value": 2510 + "value": 2511 } }, { @@ -848,13 +848,6 @@ "value": 5072 } }, - { - "__struct_id": 1, - "Feat": { - "type": "word", - "value": 5078 - } - }, { "__struct_id": 1, "Feat": { @@ -866,7 +859,7 @@ "__struct_id": 1, "Feat": { "type": "word", - "value": 5090 + "value": 5078 } }, { @@ -876,6 +869,13 @@ "value": 878 } }, + { + "__struct_id": 1, + "Feat": { + "type": "word", + "value": 5090 + } + }, { "__struct_id": 1, "Feat": { diff --git a/_module/uti/jy_itnk_amf1.uti.json b/_module/uti/jy_itnk_amf1.uti.json new file mode 100644 index 00000000..b1d5ac26 --- /dev/null +++ b/_module/uti/jy_itnk_amf1.uti.json @@ -0,0 +1,117 @@ +{ + "__data_type": "UTI ", + "AddCost": { + "type": "dword", + "value": 5999 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Comment": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +1" + }, + "Cost": { + "type": "dword", + "value": 6000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +1 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +1" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "PaletteID": { + "type": "byte", + "value": 21 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF1" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf1" + }, + "xModelPart1": { + "type": "word", + "value": 24 + } +} diff --git a/_module/uti/jy_itnk_amf2.uti.json b/_module/uti/jy_itnk_amf2.uti.json new file mode 100644 index 00000000..86102b93 --- /dev/null +++ b/_module/uti/jy_itnk_amf2.uti.json @@ -0,0 +1,117 @@ +{ + "__data_type": "UTI ", + "AddCost": { + "type": "dword", + "value": 23999 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Comment": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +2" + }, + "Cost": { + "type": "dword", + "value": 24000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +2 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +2" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "PaletteID": { + "type": "byte", + "value": 21 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF2" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf2" + }, + "xModelPart1": { + "type": "word", + "value": 24 + } +} diff --git a/_module/uti/jy_itnk_amf3.uti.json b/_module/uti/jy_itnk_amf3.uti.json new file mode 100644 index 00000000..505c7a9b --- /dev/null +++ b/_module/uti/jy_itnk_amf3.uti.json @@ -0,0 +1,148 @@ +{ + "__data_type": "UTI ", + "AddCost": { + "type": "dword", + "value": 23991 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Comment": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +3" + }, + "Cost": { + "type": "dword", + "value": 54000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +3 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +3" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "PaletteID": { + "type": "byte", + "value": 21 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 35 + }, + "CostValue": { + "type": "word", + "value": 3 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 128 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF3" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf3" + }, + "xModelPart1": { + "type": "word", + "value": 24 + } +} diff --git a/_module/uti/jy_itnk_amf4.uti.json b/_module/uti/jy_itnk_amf4.uti.json new file mode 100644 index 00000000..90994684 --- /dev/null +++ b/_module/uti/jy_itnk_amf4.uti.json @@ -0,0 +1,148 @@ +{ + "__data_type": "UTI ", + "AddCost": { + "type": "dword", + "value": 25993 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Comment": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +4" + }, + "Cost": { + "type": "dword", + "value": 96000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +4 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +4" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "PaletteID": { + "type": "byte", + "value": 21 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 35 + }, + "CostValue": { + "type": "word", + "value": 7 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 128 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF4" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf4" + }, + "xModelPart1": { + "type": "word", + "value": 24 + } +} diff --git a/_module/uti/jy_itnk_amf5.uti.json b/_module/uti/jy_itnk_amf5.uti.json new file mode 100644 index 00000000..bbe0aea9 --- /dev/null +++ b/_module/uti/jy_itnk_amf5.uti.json @@ -0,0 +1,210 @@ +{ + "__data_type": "UTI ", + "AddCost": { + "type": "dword", + "value": 6733 + }, + "BaseItem": { + "type": "int", + "value": 19 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Comment": { + "type": "cexostring", + "value": "Amulet of Mighty Fists +5" + }, + "Cost": { + "type": "dword", + "value": 150000 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This amulet grants an enhancement bonus of +5 on attack and damage rolls with unarmed attacks and natural weapons." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 0 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Amulet of Mighty Fists +5" + } + }, + "ModelPart1": { + "type": "byte", + "value": 24 + }, + "PaletteID": { + "type": "byte", + "value": 21 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 33 + }, + "CostValue": { + "type": "word", + "value": 6 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 123 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 35 + }, + "CostValue": { + "type": "word", + "value": 1 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 128 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 36 + }, + "CostValue": { + "type": "word", + "value": 1 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 129 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 28 + }, + "CostValue": { + "type": "word", + "value": 16 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 85 + }, + "Subtype": { + "type": "word", + "value": 0 + } + } + ] + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "JY_ITNK_AMF5" + }, + "TemplateResRef": { + "type": "resref", + "value": "jy_itnk_amf5" + }, + "xModelPart1": { + "type": "word", + "value": 24 + } +}