diff --git a/README.md b/README.md index 2625896f..30901b63 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,4 @@ Extract archive contents to your NWN directory according to file type: | erf | erf | | tlk | tlk | | 2da | override | -| mod | module | \ No newline at end of file +| mod | modules | \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/ECL.2da b/nwn/nwnprc/trunk/2das/ECL.2da index 2ba563e4..e629c7da 100644 --- a/nwn/nwnprc/trunk/2das/ECL.2da +++ b/nwn/nwnprc/trunk/2das/ECL.2da @@ -1,258 +1,258 @@ 2DA V2.0 - Name LA RaceClassName RaceClass RaceHD -0 Dwarf 0 **** **** **** -1 Elf 0 **** **** **** -2 Gnome 0 **** **** **** -3 Halfling 0 **** **** **** -4 HalfElf 0 **** **** **** -5 HalfOrc 0 **** **** **** -6 Human 0 **** **** **** -7 Aberration **** **** **** **** -8 Animal **** **** **** **** -9 Beast **** **** **** **** -10 Construct **** **** **** **** -11 Dragon **** **** **** **** -12 Humanoid_Goblinoid **** **** **** **** -13 Humanoid_Monstrous **** **** **** **** -14 Humanoid_Orc **** **** **** **** -15 Humanoid_Reptilian **** **** **** **** -16 Elemental **** **** **** **** -17 Fey **** **** **** **** -18 Giant **** **** **** **** -19 Magical_Beast **** **** **** **** -20 Outsider **** **** **** **** -21 DELETED **** **** **** **** -22 DELETED **** **** **** **** -23 Shapechanger **** **** **** **** -24 Undead **** **** **** **** -25 Vermin **** **** **** **** -26 DELETED **** **** **** **** -27 DELETED **** **** **** **** -28 INVALID_RACE **** **** **** **** -29 Ooze **** **** **** **** -30 **** **** **** **** **** -31 **** **** **** **** **** -32 **** **** **** **** **** -33 **** 0 **** **** **** -34 **** 0 **** **** **** -35 **** 0 **** **** **** -36 **** **** **** **** **** -37 **** 0 **** **** **** -38 **** 1 **** **** **** -39 **** 0 **** **** **** -40 **** **** **** **** **** -41 **** **** **** **** **** -42 **** **** **** **** **** -43 **** **** **** **** **** -44 **** 0 **** **** **** -45 **** 0 **** **** **** -46 **** 0 **** **** **** -47 **** 0 **** **** **** -48 **** 0 **** **** **** -49 **** 0 **** **** **** -50 Drider 4 Aberration 11 6 -51 Wemic 3 MonsterousHumanoid 15 4 -52 Plant **** **** **** **** -53 Brownie 4 **** **** **** -54 Krinth 0 **** **** **** -55 Goliath 1 **** **** **** -56 FeralGargun 2 MonsterousHumanoid 15 2 -57 StoneChild 4 Outsider 24 2 -58 Hagspawn 2 **** **** **** -59 Taer 1 Giant 22 2 -60 **** **** **** **** **** -61 Neanderthal **** **** **** **** -62 FrostFolk 1 MonsterousHumanoid 15 4 -63 Uldra 1 **** **** **** -64 Extaminaar **** **** **** **** -65 Karsite 2 **** **** **** -66 Hybsil 2 **** **** **** -67 RethDekala 5 Outsider 24 5 -68 Arkamoi 4 MonsterousHumanoid 15 4 -69 Lashemoi 2 MonsterousHumanoid 15 2 -70 Turlemoi 4 MonsterousHumanoid 15 12 -71 Hadrimoi 4 MonsterousHumanoid 15 9 -72 RedspawnArcaniss 4 MonsterousHumanoid 15 8 -73 Gloura 2 Fey 17 7 -74 Muckdweller 0 Humanoid 14 **** -75 Aranea 4 Shapechanger 25 3 -76 Chitine 2 MonsterousHumanoid 15 2 -77 SpiretopDragon 2 Dragon 18 2 -78 **** **** **** **** **** -79 **** **** **** **** **** -80 **** **** **** **** **** -81 **** **** **** **** **** -82 **** **** **** **** **** -83 **** **** **** **** **** -84 Hound_Archon 5 Outsider 24 6 -85 **** **** **** **** **** -86 **** **** **** **** **** -87 **** **** **** **** **** -88 **** **** **** **** **** -89 **** **** **** **** **** -90 Mephling_Air 1 **** **** **** -91 Mephling_Earth 1 **** **** **** -92 Mephling_Fire 1 **** **** **** -93 Mephling_Water 1 **** **** **** -94 Khaasta 3 Outsider 24 3 -95 **** **** **** **** **** -96 Rakshasa_Naztharune 5 Outsider 24 11 -97 **** **** **** **** **** -98 **** **** **** **** **** -99 **** **** **** **** **** -100 **** **** **** **** **** -101 **** **** **** **** **** -102 **** **** **** **** **** -103 **** **** **** **** **** -104 **** **** **** **** **** -105 Stonehunter_Gnomes 0 **** **** **** -106 Fireblood_Dwarves 0 **** **** **** -107 Forestlord_Elf 0 **** **** **** -108 Frostblood_Orc 0 **** **** **** -109 Glimmerskin_Halfling 0 **** **** **** -110 Silverbrow_Human 0 **** **** **** -111 Sunscorch_Hobgoblin 1 **** **** **** -112 Viletooth_Lizardfolk 1 Humanoid 14 2 -113 **** **** **** **** **** -114 **** **** **** **** **** -115 Asherati 0 **** **** **** -116 Bhuka 0 **** **** **** -117 Marrulurk 1 MonsterousHumanoid 15 3 -118 Crucian 2 **** **** **** -119 Marrusault 2 MonsterousHumanoid 15 6 -120 Marrutact 3 MonsterousHumanoid 15 7 -121 Mongrelfolk 0 **** **** **** -122 Sharakim 1 **** **** **** -123 Underfolk 0 **** **** **** -124 Skulk 1 Humanoid 14 2 -125 Doppelganger 4 MonsterousHumanoid 15 4 -126 **** 0 **** **** **** -127 Skarn 0 **** **** **** -128 Rilkan 0 **** **** **** -129 Duskling 0 **** **** **** -130 Azurin 0 **** **** **** -131 Volodni 2 **** **** **** -132 **** **** **** **** **** -133 **** **** **** **** **** -134 **** **** **** **** **** -135 **** **** **** **** **** -136 **** **** **** **** **** -137 **** **** **** **** **** -138 **** 0 **** **** **** -139 **** **** **** **** **** -140 Tasloi 0 **** **** **** -141 **** **** **** **** **** -142 **** **** **** **** **** -143 Blue_Goblin 0 **** **** **** -144 **** **** **** **** **** -145 WarforgedCharger 4 Construct 13 4 -146 Shifter 0 **** **** **** -147 Changeling 0 **** **** **** -148 Kalashtar 0 **** **** **** -149 Warforged 0 **** **** **** -150 Rakshasa_Zakya 7 Outsider 24 7 -151 Arctic_Dwarf 2 **** **** **** -152 Gold_Dwarf 0 **** **** **** -153 Gray_Dwarf 1 **** **** **** -154 EmptyVessel 1 **** **** **** -155 Urdunnir 4 **** **** **** -156 Wild_Dwarf 0 **** **** **** -157 **** 0 **** **** **** -158 **** **** **** **** **** -159 Bralani 5 Outsider 24 6 -160 **** 0 **** **** **** -161 **** **** **** **** **** -162 Avariel 3 **** **** **** -163 Drow_Female 2 **** **** **** -164 Drow_Male 2 **** **** **** -165 Snow_Elf 0 **** **** **** -166 Sun_Elf 0 **** **** **** -167 Wild_Elf 0 **** **** **** -168 Wood_Elf 0 **** **** **** -169 **** **** **** **** **** -170 **** **** **** **** **** -171 **** **** **** **** **** -172 **** **** **** **** **** -173 **** 0 **** **** **** -174 Deep_Gnome_Svirfneblin 3 **** **** **** -175 Forest_Gnome 0 **** **** **** -176 Rock_Gnome 0 **** **** **** -177 **** **** **** **** **** -178 **** 0 **** **** **** -179 Whisper_Gnome 0 **** **** **** -180 Hadozee 0 **** **** **** -181 **** 2 **** **** **** -182 **** 1 **** **** **** -183 Half_Drow 0 **** **** **** -184 Gray_Orc 1 **** **** **** -185 **** **** **** **** **** -186 **** 0 **** **** **** -187 Orog 2 **** **** **** -188 **** 0 **** **** **** -189 **** 0 **** **** **** -190 Ghostwise_Halfling 1 **** **** **** -191 Tundra_Halfling 0 **** **** **** -192 Strongheart_Halfling 0 **** **** **** -193 Tallfellow_Halfling 0 **** **** **** -194 Deep_Halfling 0 **** **** **** -195 **** **** **** **** **** -196 **** **** **** **** **** -197 **** **** **** **** **** -198 Aasimar 1 **** **** **** -199 Air_Genasi 1 **** **** **** -200 Earth_Genasi 1 **** **** **** -201 Feyri 3 **** **** **** -202 Fire_Genasi 1 **** **** **** -203 Tanarukk 3 Outsider 24 5 -204 Tiefling 1 **** **** **** -205 Water_Genasi 1 **** **** **** -206 **** **** **** **** **** -207 Bariaur 1 **** **** **** -208 Centaur 2 MonsterousHumanoid 15 4 -209 Catfolk 1 **** **** **** -210 **** **** **** **** **** -211 FlindGnoll 2 Humanoid 14 2 -212 Ogre 2 Giant 22 4 -213 Goblin 0 **** **** **** -214 Orc 0 **** **** **** -215 Kobold 0 **** **** **** -216 Gnoll 1 Humanoid 14 2 -217 Bugbear 1 Humanoid 14 3 -218 Minotaur 2 MonsterousHumanoid 15 6 -219 Lizardfolk 1 Humanoid 14 2 -220 YuanTi_Pure 2 MonsterousHumanoid 15 4 -221 Hobgoblin 1 **** **** **** -222 Githyanki 2 **** **** **** -223 Githzerai 2 **** **** **** -224 Rakshasa 7 Outsider 24 7 -225 Illithid 7 Aberration 11 8 -226 Pixie 4 **** **** **** -227 Azer 4 Outsider 24 2 -228 **** **** **** **** **** -229 Half_Ogre 2 **** **** **** -230 Deep_Imaskari 0 **** **** **** -231 Troll 5 Giant 22 6 -232 Varag 2 Humanoid 14 3 -233 Hobgoblin_Warsoul 4 MonsterousHumanoid 15 10 -234 Troglodyte 2 Humanoid 14 2 -235 Neraphim 0 **** **** **** -236 Shadowswyft 1 **** **** **** -237 Nathri 1 **** **** **** -238 Buommans 0 **** **** **** -239 Spiker 0 **** **** **** -240 Wildren 1 **** **** **** -241 **** **** **** **** **** -242 **** **** **** **** **** -243 Spirit_Folk **** **** **** **** -244 Killoren 0 **** **** **** -245 **** 0 **** **** **** -246 Nezumi 0 Humanoid **** **** -247 **** **** **** **** **** -248 Poison_Dusk 1 **** **** **** -249 Dromite 1 **** **** **** -250 Elans 0 **** **** **** -251 Half_Giant 1 **** **** **** -252 Maenad 0 **** **** **** -253 Xeph 0 **** **** **** -254 254_LAST_LINE **** **** **** **** + Name LA RaceClassName RaceClass RaceHD +0 Dwarf 0 **** **** **** +1 Elf 0 **** **** **** +2 Gnome 0 **** **** **** +3 Halfling 0 **** **** **** +4 HalfElf 0 **** **** **** +5 HalfOrc 0 **** **** **** +6 Human 0 **** **** **** +7 Aberration **** **** **** **** +8 Animal **** **** **** **** +9 Beast **** **** **** **** +10 Construct **** **** **** **** +11 Dragon **** **** **** **** +12 Humanoid_Goblinoid **** **** **** **** +13 Humanoid_Monstrous **** **** **** **** +14 Humanoid_Orc **** **** **** **** +15 Humanoid_Reptilian **** **** **** **** +16 Elemental **** **** **** **** +17 Fey **** **** **** **** +18 Giant **** **** **** **** +19 Magical_Beast **** **** **** **** +20 Outsider **** **** **** **** +21 DELETED **** **** **** **** +22 DELETED **** **** **** **** +23 Shapechanger **** **** **** **** +24 Undead **** **** **** **** +25 Vermin **** **** **** **** +26 DELETED **** **** **** **** +27 DELETED **** **** **** **** +28 INVALID_RACE **** **** **** **** +29 Ooze **** **** **** **** +30 **** **** **** **** **** +31 **** **** **** **** **** +32 **** **** **** **** **** +33 **** 0 **** **** **** +34 **** 0 **** **** **** +35 **** 0 **** **** **** +36 **** **** **** **** **** +37 **** 0 **** **** **** +38 **** 1 **** **** **** +39 **** 0 **** **** **** +40 **** **** **** **** **** +41 **** **** **** **** **** +42 **** **** **** **** **** +43 **** **** **** **** **** +44 **** 0 **** **** **** +45 **** 0 **** **** **** +46 **** 0 **** **** **** +47 **** 0 **** **** **** +48 **** 0 **** **** **** +49 **** 0 **** **** **** +50 Drider 4 Aberration 11 6 +51 Wemic 3 MonsterousHumanoid 15 5 +52 Plant **** **** **** **** +53 Brownie 4 **** **** **** +54 Krinth 0 **** **** **** +55 Goliath 1 **** **** **** +56 FeralGargun 2 MonsterousHumanoid 15 2 +57 StoneChild 4 Outsider 24 2 +58 Hagspawn 2 **** **** **** +59 Taer 1 Giant 22 2 +60 **** **** **** **** **** +61 Neanderthal **** **** **** **** +62 FrostFolk 1 MonsterousHumanoid 15 4 +63 Uldra 1 **** **** **** +64 Extaminaar **** **** **** **** +65 Karsite 2 **** **** **** +66 Hybsil 2 **** **** **** +67 RethDekala 5 Outsider 24 5 +68 Arkamoi 4 MonsterousHumanoid 15 4 +69 Lashemoi 2 MonsterousHumanoid 15 2 +70 Turlemoi 4 MonsterousHumanoid 15 12 +71 Hadrimoi 4 MonsterousHumanoid 15 9 +72 RedspawnArcaniss 4 MonsterousHumanoid 15 8 +73 Gloura 2 Fey 17 7 +74 Muckdweller 0 Humanoid 14 **** +75 Aranea 4 Shapechanger 25 3 +76 Chitine 2 MonsterousHumanoid 15 2 +77 SpiretopDragon 2 Dragon 18 2 +78 **** **** **** **** **** +79 **** **** **** **** **** +80 **** **** **** **** **** +81 **** **** **** **** **** +82 **** **** **** **** **** +83 **** **** **** **** **** +84 Hound_Archon 5 Outsider 24 6 +85 **** **** **** **** **** +86 **** **** **** **** **** +87 **** **** **** **** **** +88 **** **** **** **** **** +89 **** **** **** **** **** +90 Mephling_Air 1 **** **** **** +91 Mephling_Earth 1 **** **** **** +92 Mephling_Fire 1 **** **** **** +93 Mephling_Water 1 **** **** **** +94 Khaasta 3 Outsider 24 3 +95 **** **** **** **** **** +96 Rakshasa_Naztharune 5 Outsider 24 11 +97 **** **** **** **** **** +98 **** **** **** **** **** +99 **** **** **** **** **** +100 **** **** **** **** **** +101 **** **** **** **** **** +102 **** **** **** **** **** +103 **** **** **** **** **** +104 **** **** **** **** **** +105 Stonehunter_Gnomes 0 **** **** **** +106 Fireblood_Dwarves 0 **** **** **** +107 Forestlord_Elf 0 **** **** **** +108 Frostblood_Orc 0 **** **** **** +109 Glimmerskin_Halfling 0 **** **** **** +110 Silverbrow_Human 0 **** **** **** +111 Sunscorch_Hobgoblin 1 **** **** **** +112 Viletooth_Lizardfolk 1 Humanoid 14 2 +113 **** **** **** **** **** +114 **** **** **** **** **** +115 Asherati 0 **** **** **** +116 Bhuka 0 **** **** **** +117 Marrulurk 1 MonsterousHumanoid 15 3 +118 Crucian 2 **** **** **** +119 Marrusault 2 MonsterousHumanoid 15 6 +120 Marrutact 3 MonsterousHumanoid 15 7 +121 Mongrelfolk 0 **** **** **** +122 Sharakim 1 **** **** **** +123 Underfolk 0 **** **** **** +124 Skulk 1 Humanoid 14 2 +125 Doppelganger 4 MonsterousHumanoid 15 4 +126 **** 0 **** **** **** +127 Skarn 0 **** **** **** +128 Rilkan 0 **** **** **** +129 Duskling 0 **** **** **** +130 Azurin 0 **** **** **** +131 Volodni 2 **** **** **** +132 **** **** **** **** **** +133 **** **** **** **** **** +134 **** **** **** **** **** +135 **** **** **** **** **** +136 **** **** **** **** **** +137 **** **** **** **** **** +138 **** 0 **** **** **** +139 **** **** **** **** **** +140 Tasloi 0 **** **** **** +141 **** **** **** **** **** +142 **** **** **** **** **** +143 Blue_Goblin 0 **** **** **** +144 **** **** **** **** **** +145 WarforgedCharger 4 Construct 13 4 +146 Shifter 0 **** **** **** +147 Changeling 0 **** **** **** +148 Kalashtar 0 **** **** **** +149 Warforged 0 **** **** **** +150 Rakshasa_Zakya 7 Outsider 24 7 +151 Arctic_Dwarf 2 **** **** **** +152 Gold_Dwarf 0 **** **** **** +153 Gray_Dwarf 1 **** **** **** +154 EmptyVessel 1 **** **** **** +155 Urdunnir 4 **** **** **** +156 Wild_Dwarf 0 **** **** **** +157 **** 0 **** **** **** +158 **** **** **** **** **** +159 Bralani 5 Outsider 24 6 +160 **** 0 **** **** **** +161 **** **** **** **** **** +162 Avariel 3 **** **** **** +163 Drow_Female 2 **** **** **** +164 Drow_Male 2 **** **** **** +165 Snow_Elf 0 **** **** **** +166 Sun_Elf 0 **** **** **** +167 Wild_Elf 0 **** **** **** +168 Wood_Elf 0 **** **** **** +169 **** **** **** **** **** +170 **** **** **** **** **** +171 **** **** **** **** **** +172 **** **** **** **** **** +173 **** 0 **** **** **** +174 Deep_Gnome_Svirfneblin 3 **** **** **** +175 Forest_Gnome 0 **** **** **** +176 Rock_Gnome 0 **** **** **** +177 **** **** **** **** **** +178 **** 0 **** **** **** +179 Whisper_Gnome 0 **** **** **** +180 Hadozee 0 **** **** **** +181 **** 2 **** **** **** +182 **** 1 **** **** **** +183 Half_Drow 0 **** **** **** +184 Gray_Orc 1 **** **** **** +185 **** **** **** **** **** +186 **** 0 **** **** **** +187 Orog 2 **** **** **** +188 **** 0 **** **** **** +189 **** 0 **** **** **** +190 Ghostwise_Halfling 1 **** **** **** +191 Tundra_Halfling 0 **** **** **** +192 Strongheart_Halfling 0 **** **** **** +193 Tallfellow_Halfling 0 **** **** **** +194 Deep_Halfling 0 **** **** **** +195 **** **** **** **** **** +196 **** **** **** **** **** +197 **** **** **** **** **** +198 Aasimar 1 **** **** **** +199 Air_Genasi 1 **** **** **** +200 Earth_Genasi 1 **** **** **** +201 Feyri 3 **** **** **** +202 Fire_Genasi 1 **** **** **** +203 Tanarukk 3 Outsider 24 5 +204 Tiefling 1 **** **** **** +205 Water_Genasi 1 **** **** **** +206 **** **** **** **** **** +207 Bariaur 1 **** **** **** +208 Centaur 2 MonsterousHumanoid 15 4 +209 Catfolk 1 **** **** **** +210 **** **** **** **** **** +211 FlindGnoll 2 Humanoid 14 2 +212 Ogre 2 Giant 22 4 +213 Goblin 0 **** **** **** +214 Orc 0 **** **** **** +215 Kobold 0 **** **** **** +216 Gnoll 1 Humanoid 14 2 +217 Bugbear 1 Humanoid 14 3 +218 Minotaur 2 MonsterousHumanoid 15 6 +219 Lizardfolk 1 Humanoid 14 2 +220 YuanTi_Pure 2 MonsterousHumanoid 15 4 +221 Hobgoblin 1 **** **** **** +222 Githyanki 2 **** **** **** +223 Githzerai 2 **** **** **** +224 Rakshasa 7 Outsider 24 7 +225 Illithid 7 Aberration 11 8 +226 Pixie 4 **** **** **** +227 Azer 4 Outsider 24 2 +228 **** **** **** **** **** +229 Half_Ogre 2 **** **** **** +230 Deep_Imaskari 0 **** **** **** +231 Troll 5 Giant 22 6 +232 Varag 2 Humanoid 14 3 +233 Hobgoblin_Warsoul 4 MonsterousHumanoid 15 10 +234 Troglodyte 2 Humanoid 14 2 +235 Neraphim 0 **** **** **** +236 Shadowswyft 1 **** **** **** +237 Nathri 1 **** **** **** +238 Buommans 0 **** **** **** +239 Spiker 0 **** **** **** +240 Wildren 1 **** **** **** +241 **** **** **** **** **** +242 **** **** **** **** **** +243 Spirit_Folk **** **** **** **** +244 Killoren 0 **** **** **** +245 **** 0 **** **** **** +246 Nezumi 0 Humanoid **** **** +247 **** **** **** **** **** +248 Poison_Dusk 1 **** **** **** +249 Dromite 1 **** **** **** +250 Elans 0 **** **** **** +251 Half_Giant 1 **** **** **** +252 Maenad 0 **** **** **** +253 Xeph 0 **** **** **** +254 254_LAST_LINE **** **** **** **** diff --git a/nwn/nwnprc/trunk/include/prc_inc_combat.nss b/nwn/nwnprc/trunk/include/prc_inc_combat.nss index c06deef8..6b143b54 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_combat.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_combat.nss @@ -8103,7 +8103,12 @@ void AttackLoopLogic(object oDefender, object oAttacker, if (DEBUG) DoDebug("entered AttackLoopLogic: bFirstAttack = " + IntToString(bFirstAttack) + ", cleave = " + IntToString(bIsCleaveAttack) + ", current action = " + GetActionName(iAction)); if (DEBUG) DoDebug("AttackLoopLogic: iMainAttacks = " + IntToString(iMainAttacks) + ", iOffHandAttacks = " + IntToString(iOffHandAttacks) + ", iBonusAttacks = " + IntToString(iBonusAttacks)); - int bIsRangedAttack = sAttackVars.bIsRangedWeapon || sAttackVars.iTouchAttackType == TOUCH_ATTACK_RANGED_SPELL || sAttackVars.iTouchAttackType == TOUCH_ATTACK_RANGED; + //int bIsRangedAttack = sAttackVars.bIsRangedWeapon || sAttackVars.iTouchAttackType == TOUCH_ATTACK_RANGED_SPELL || sAttackVars.iTouchAttackType == TOUCH_ATTACK_RANGED; + + int bIsRangedAttack = sAttackVars.bIsRangedWeapon || + sAttackVars.iTouchAttackType == TOUCH_ATTACK_RANGED_SPELL || + sAttackVars.iTouchAttackType == TOUCH_ATTACK_RANGED || + GetLocalInt(oAttacker, "WhirlingBlade"); // check for valid target etc., but only if it is not a cleave or circle kick (in this case we checked all of this before) if (!bIsCleaveAttack) diff --git a/nwn/nwnprc/trunk/include/prc_inc_factotum.nss b/nwn/nwnprc/trunk/include/prc_inc_factotum.nss index 2cdd906b..eee86b11 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_factotum.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_factotum.nss @@ -49,6 +49,8 @@ const int BRILLIANCE_SLOT_3 = 3919; ////////////////////////////////////////////////// /* Function definitions */ ////////////////////////////////////////////////// +void TriggerInspiration(object oPC, int nCombat); + void PrepareArcDilSpell(object oPC, int nSpell) { @@ -264,6 +266,21 @@ void FactotumTriggerAbil(object oPC, int nAbil) IPSafeAddItemProperty(oSkin, ipIP, 60.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); } +void TriggerInspiration(object oPC, int nCombat) +{ + SetLocalInt(oPC, "InspirationHBRunning", TRUE); + DelayCommand(0.249, DeleteLocalInt(oPC, "InspirationHBRunning")); + int nCurrent = GetIsInCombat(oPC); + // We just entered combat + if (nCurrent == TRUE && nCombat == FALSE) + SetInspiration(oPC); + else if (nCurrent == FALSE && nCombat == TRUE) // Just left combat + ClearInspiration(oPC); + + DelayCommand(0.25, TriggerInspiration(oPC, nCurrent)); +} + + /*void AddCunningBrillianceAbility(object oPC, int nAbil) { if (DEBUG) DoDebug("AddCunningBrillianceAbility "+IntToString(nAbil)); diff --git a/nwn/nwnprc/trunk/include/prc_spellf_inc.nss b/nwn/nwnprc/trunk/include/prc_spellf_inc.nss index 1b6042f6..f40f0f6c 100644 --- a/nwn/nwnprc/trunk/include/prc_spellf_inc.nss +++ b/nwn/nwnprc/trunk/include/prc_spellf_inc.nss @@ -487,7 +487,8 @@ void SpellfireChargeItem(object oPC, object oItem) AddSpellfireLevels(oPC, nNewCharges - 50); nNewCharges = 50; } - SetItemCharges(oItem, nCharges + nExpend); + //SetItemCharges(oItem, nCharges + nExpend); + SetItemCharges(oItem, nNewCharges); //Assuming 50 is the maximum //refunding excess charges } diff --git a/nwn/nwnprc/trunk/newspellbook/inv_dra_chillfog.nss b/nwn/nwnprc/trunk/newspellbook/inv_dra_chillfog.nss index a6953f09..78071029 100644 --- a/nwn/nwnprc/trunk/newspellbook/inv_dra_chillfog.nss +++ b/nwn/nwnprc/trunk/newspellbook/inv_dra_chillfog.nss @@ -21,7 +21,37 @@ level before dispersing. #include "inv_inc_invfunc" #include "inv_invokehook" + void main() +{ + if(!PreInvocationCastCode()) return; + + object oCaster = OBJECT_SELF; + object oExistingFog = GetLocalObject(oCaster, "ChillingFog"); + + // Check if there's an existing fog and destroy it + if(GetIsObjectValid(oExistingFog)) + { + DestroyObject(oExistingFog); + DeleteLocalObject(oCaster, "ChillingFog"); + } + + //Declare major variables including Area of Effect Object + location lTarget = PRCGetSpellTargetLocation(); + int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass()); + float fDuration = TurnsToSeconds(CasterLvl); + effect eAOE = EffectAreaOfEffect(INVOKE_AOE_CHILLFOG); + effect eImpact = EffectVisualEffect(257); + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, lTarget); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, fDuration); + + object oAoE = GetAreaOfEffectObject(lTarget, "INVOKE_AOE_CHILLFOG"); + SetAllAoEInts(INVOKE_CHILLING_FOG, oAoE, GetInvocationSaveDC(OBJECT_INVALID, OBJECT_SELF, INVOKE_CHILLING_FOG), 0, CasterLvl); + SetLocalObject(oCaster, "ChillingFog", oAoE); +} + + +/* void main() { if(!PreInvocationCastCode()) return; @@ -46,4 +76,4 @@ void main() object oAoE = GetAreaOfEffectObject(lTarget, "INVOKE_AOE_CHILLFOG"); SetAllAoEInts(INVOKE_CHILLING_FOG, oAoE, GetInvocationSaveDC(OBJECT_INVALID, OBJECT_SELF, INVOKE_CHILLING_FOG), 0, CasterLvl); SetLocalObject(oCaster, "ChillingFog", oAoE); -} \ No newline at end of file +} */ \ No newline at end of file diff --git a/nwn/nwnprc/trunk/newspellbook/moi_mld_heartfr.nss b/nwn/nwnprc/trunk/newspellbook/moi_mld_heartfr.nss index c48ba72b..f0f772ea 100644 --- a/nwn/nwnprc/trunk/newspellbook/moi_mld_heartfr.nss +++ b/nwn/nwnprc/trunk/newspellbook/moi_mld_heartfr.nss @@ -43,5 +43,42 @@ void main() // Add eventhook to the armor IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CHEST, oMeldshaper), ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING); AddEventScript(GetItemInSlot(INVENTORY_SLOT_CHEST, oMeldshaper), EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE); - } + } + else if (GetIsMeldBound(oMeldshaper, MELD_HEART_OF_FIRE) == CHAKRA_TOTEM) + { + // Add fire damage to natural weapons/unarmed strikes + object oTarget = GetItemInSlot(INVENTORY_SLOT_ARMS, oMeldshaper); + + // If no gloves, apply to PC skin as fallback + if (!GetIsObjectValid(oTarget)) + { + oTarget = GetPCSkin(oMeldshaper); + } + + // Apply fire damage based on essentia invested + int nDamageBonus = EssentiaToD4(nEssentia); + if (nDamageBonus != -1) + { + IPSafeAddItemProperty(oTarget, + ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_FIRE, nDamageBonus), + 9999.0, + X2_IP_ADDPROP_POLICY_KEEP_EXISTING); + } + } +/* else if (GetIsMeldBound(oMeldshaper, MELD_HEART_OF_FIRE) == CHAKRA_TOTEM) + { + // Add fire damage to natural weapons based on essentia invested + int nDamageDice = nEssentia; + if (nDamageDice > 0) + { + effect eDamage = EffectDamageIncrease(DAMAGE_BONUS_1d4, DAMAGE_TYPE_FIRE); + // Stack the effect for each point of essentia + int i; + for (i = 1; i < nDamageDice; i++) + { + eDamage = EffectLinkEffects(eDamage, EffectDamageIncrease(DAMAGE_BONUS_1d4, DAMAGE_TYPE_FIRE)); + } + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eDamage), oMeldshaper, 9999.0); + } + } */ } \ No newline at end of file diff --git a/nwn/nwnprc/trunk/newspellbook/tob_dmnd_prlbdt.nss b/nwn/nwnprc/trunk/newspellbook/tob_dmnd_prlbdt.nss index 2edc6702..fe48f9e2 100644 --- a/nwn/nwnprc/trunk/newspellbook/tob_dmnd_prlbdt.nss +++ b/nwn/nwnprc/trunk/newspellbook/tob_dmnd_prlbdt.nss @@ -121,6 +121,13 @@ void main() if (nBonus > 0) { + if(GetLocalInt(oTarget, "PearlOfBlackDoubt_JustHit")) + { + DeleteLocalInt(oTarget, "PearlOfBlackDoubt_JustHit"); + // Skip this heartbeat's bonus calculation + return; + } + if(DEBUG) DoDebug("Applying AC Bonus: " + IntToString(nBonus)); effect eAC = EffectACIncrease(nBonus); diff --git a/nwn/nwnprc/trunk/psionics/psi_pow_keenedge.nss b/nwn/nwnprc/trunk/psionics/psi_pow_keenedge.nss index ca7428d0..fe4ccdd0 100644 --- a/nwn/nwnprc/trunk/psionics/psi_pow_keenedge.nss +++ b/nwn/nwnprc/trunk/psionics/psi_pow_keenedge.nss @@ -39,7 +39,6 @@ void main() check psi_spellhook to find out more */ - if (!PsiPrePowerCastCode()) { // If code within the PrePowerCastHook (i.e. UMD) reports FALSE, do not run this spell @@ -49,24 +48,24 @@ void main() // End of Spell Cast Hook object oManifester = OBJECT_SELF; - object oTarget = IPGetTargetedOrEquippedMeleeWeapon(); - + object oItem = IPGetTargetedOrEquippedMeleeWeapon(); + // Validity check - if(!GetIsObjectValid(oTarget)) + if(!GetIsObjectValid(oItem)) { FloatingTextStrRefOnCreature(83615, oManifester); // Item must be weapon or creature holding a weapon return; } struct manifestation manif = - EvaluateManifestation(oManifester, oTarget, + EvaluateManifestation(oManifester, oItem, PowerAugmentationProfile(), METAPSIONIC_EXTEND ); if(manif.bCanManifest) { - int nDamageType = GetWeaponDamageType(oTarget); + int nDamageType = GetWeaponDamageType(oItem); effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM); float fDuration = 600.0f * manif.nManifesterLevel; if(manif.bExtend) fDuration *= 2; @@ -74,9 +73,10 @@ void main() if(nDamageType == DAMAGE_TYPE_PIERCING || nDamageType == DAMAGE_TYPE_SLASHING ) + { - SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, GetItemPossessor(oTarget)); - IPSafeAddItemProperty(oTarget, ItemPropertyKeen(), fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, TRUE, TRUE); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, GetItemPossessor(oItem)); + IPSafeAddItemProperty(oItem, ItemPropertyKeen(), fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); } } } diff --git a/nwn/nwnprc/trunk/scripts/prc_equip.nss b/nwn/nwnprc/trunk/scripts/prc_equip.nss index b42a8186..b0db8602 100644 --- a/nwn/nwnprc/trunk/scripts/prc_equip.nss +++ b/nwn/nwnprc/trunk/scripts/prc_equip.nss @@ -177,7 +177,7 @@ void main() // Only remove echoblade for weapon types while(GetIsEffectValid(eEffect)) { - if(GetEffectTag(eEffect) != "Echoblade") + if(GetEffectTag(eEffect) == "Echoblade") RemoveEffect(oPC, eEffect); eEffect = GetNextEffect(oPC); } diff --git a/nwn/nwnprc/trunk/scripts/prc_factotum.nss b/nwn/nwnprc/trunk/scripts/prc_factotum.nss index 2a8f07ea..6adf80a7 100644 --- a/nwn/nwnprc/trunk/scripts/prc_factotum.nss +++ b/nwn/nwnprc/trunk/scripts/prc_factotum.nss @@ -1,7 +1,8 @@ #include "prc_inc_factotum" #include "inc_dynconv" -void TriggerInspiration(object oPC, int nCombat); +//:: Moved to prc_inc_factotum --Jaysyn +/* void TriggerInspiration(object oPC, int nCombat); void TriggerInspiration(object oPC, int nCombat) { @@ -16,7 +17,7 @@ void TriggerInspiration(object oPC, int nCombat) DelayCommand(0.25, TriggerInspiration(oPC, nCurrent)); } - + */ void main() { int nEvent = GetRunningEvent(); @@ -68,6 +69,16 @@ void main() SetLocalInt(oPC, "InspirationHB", TRUE); } } + else if(EVENT_ONCLIENTENTER) + { + if(GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC) > 0) + { + DeleteLocalInt(oPC, "InspirationHB"); + DeleteLocalInt(oPC, "InspirationHBRunning"); + TriggerInspiration(oPC, FALSE); + SetLocalInt(oPC, "InspirationHB", TRUE); + } + } else if(nEvent == EVENT_ONPLAYERREST_FINISHED && nClass >= 2) { AssignCommand(oPC, ClearAllActions(TRUE)); diff --git a/nwn/nwnprc/trunk/scripts/prc_hvcm_btlcst.nss b/nwn/nwnprc/trunk/scripts/prc_hvcm_btlcst.nss index 1c1a8fbe..ece3cb29 100644 --- a/nwn/nwnprc/trunk/scripts/prc_hvcm_btlcst.nss +++ b/nwn/nwnprc/trunk/scripts/prc_hvcm_btlcst.nss @@ -6,6 +6,46 @@ #include "prc_alterations" void main() +{ + object oPC = OBJECT_SELF; + string sMsg; + + if (!GetLocalInt(oPC, "HavocMageBattlecast")) + { + // Activate + effect eFeat = EffectBonusFeat(FEAT_EPIC_IMPROVED_COMBAT_CASTING); + eFeat = UnyieldingEffect(eFeat); + TagEffect(eFeat, "BATTLECAST_FEAT"); + + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eFeat, oPC); + SetLocalInt(oPC, "HavocMageBattlecast", TRUE); + + sMsg = "*Battlecast Activated*"; + } + else + { + // Deactivate: remove the tagged unyielding effect + effect e = GetFirstEffect(oPC); + while (GetIsEffectValid(e)) + { + if (GetEffectTag(e) == "BATTLECAST_FEAT") + { + RemoveEffect(oPC, e); + break; + } + e = GetNextEffect(oPC); + } + + DeleteLocalInt(oPC, "HavocMageBattlecast"); + sMsg = "*Battlecast Deactivated*"; + } + + FloatingTextStringOnCreature(sMsg, oPC, FALSE); +} + + + +/* void main() { object oPC = OBJECT_SELF; @@ -29,4 +69,4 @@ void main() } FloatingTextStringOnCreature(nMes, oPC, FALSE); -} \ No newline at end of file +} */ \ No newline at end of file diff --git a/nwn/nwnprc/trunk/scripts/prc_onenter.nss b/nwn/nwnprc/trunk/scripts/prc_onenter.nss index c2bd364c..1f82753d 100644 --- a/nwn/nwnprc/trunk/scripts/prc_onenter.nss +++ b/nwn/nwnprc/trunk/scripts/prc_onenter.nss @@ -8,6 +8,7 @@ #include "prc_inc_dragsham" #include "shd_inc_myst" #include "prc_inc_template" +#include "prc_inc_factotum" void RestoreForsakerAbilities(object oPC) { @@ -244,6 +245,17 @@ void main() { RestoreForsakerAbilities(oPC); } + + if(GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC) > 0) + { + // Re-add all event hooks that were lost during disconnect + AddEventScript(oPC, EVENT_ONPLAYERREST_FINISHED, "prc_factotum", FALSE, FALSE); + // Reinitialize the Inspiration system + DeleteLocalInt(oPC, "InspirationHB"); + DeleteLocalInt(oPC, "InspirationHBRunning"); + TriggerInspiration(oPC, FALSE); + SetLocalInt(oPC, "InspirationHB", TRUE); + } ResetTouchOfVitality(oPC); DelayCommand(0.15, DeleteLocalInt(oPC,"ONENTER")); diff --git a/nwn/nwnprc/trunk/scripts/prc_onhitcast.nss b/nwn/nwnprc/trunk/scripts/prc_onhitcast.nss index 9908576e..2b3f3b6a 100644 --- a/nwn/nwnprc/trunk/scripts/prc_onhitcast.nss +++ b/nwn/nwnprc/trunk/scripts/prc_onhitcast.nss @@ -620,10 +620,11 @@ void main() if(DEBUG) DoDebug("prc_onhit: PoBD onHit >> restting AC."); DeleteLocalInt(oSpellOrigin, "PearlOfBlackDoubtBonus"); RemoveEffect(oSpellOrigin, eEffect); + + SetLocalInt(oSpellOrigin, "PearlOfBlackDoubt_JustHit", TRUE); } eEffect = GetNextEffect(oSpellOrigin); - } - + } } // Tactics of the Wolf if(GetHasSpellEffect(MOVE_WR_TACTICS_WOLF, oSpellOrigin) && GetBaseItemType(oItem) != BASE_ITEM_ARMOR) diff --git a/nwn/nwnprc/trunk/spells/sp_whrl_blade.nss b/nwn/nwnprc/trunk/spells/sp_whrl_blade.nss index 0c321254..e065430c 100644 --- a/nwn/nwnprc/trunk/spells/sp_whrl_blade.nss +++ b/nwn/nwnprc/trunk/spells/sp_whrl_blade.nss @@ -94,8 +94,36 @@ void main() float fLength = FeetToMeters(60.0); effect eNone; - SetLocalInt(oPC, "WhirlingBlade", TRUE); + + // Store original location to prevent movement + location lOrigin = GetLocation(oPC); + + object oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, fLength, lTarget, TRUE, + OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, vOrigin); + + while(GetIsObjectValid(oTarget)) + { + if (oTarget != oPC && GetIsReactionTypeHostile(oTarget, oPC)) + { + // Clear actions to prevent automatic movement + AssignCommand(oPC, ClearAllActions(TRUE)); + + // Perform the attack with stat bonus to BOTH attack and damage + DelayCommand(0.0, PerformAttack(oTarget, oPC, eNone, 0.0, + nStatBonus, nStatBonus, 0, // ? Fixed: was (nStatBonus, 0, 0) + "Whirling Blade: Hit!", "Whirling Blade: Miss!")); + + // Force caster back to original position if they moved + DelayCommand(0.1, AssignCommand(oPC, ActionJumpToLocation(lOrigin))); + } + oTarget = MyNextObjectInShape(SHAPE_SPELLCYLINDER, fLength, lTarget, TRUE, + OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, vOrigin); + } + + DelayCommand(1.0f, DeleteLocalInt(oPC, "WhirlingBlade")); + +/* SetLocalInt(oPC, "WhirlingBlade", TRUE); object oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, fLength, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, vOrigin); @@ -103,10 +131,11 @@ void main() { if (oTarget != oPC && GetIsReactionTypeHostile(oTarget, oPC)) { - DelayCommand(0.0, PerformAttack(oTarget, oPC, eNone, 0.0, nStatBonus, 0, 0, "Whirling Blade: Hit!", "Whirling Blade: Miss!")); + DelayCommand(0.0, PerformAttack(oTarget, oPC, eNone, 0.0, nStatBonus, nStatBonus, 0, + "Whirling Blade: Hit!", "Whirling Blade: Miss!", TOUCH_ATTACK_RANGED_SPELL)); } oTarget = MyNextObjectInShape(SHAPE_SPELLCYLINDER, fLength, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, vOrigin); - } + } */ DelayCommand(1.0f, DeleteLocalInt(oPC, "WhirlingBlade")); PRCSetSchool(); } \ No newline at end of file diff --git a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk index f3ff01ca..6b974ff9 100644 Binary files a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk and b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk differ diff --git a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml index ca6d81e4..4babe9b2 100644 --- a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml +++ b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml @@ -248,7 +248,7 @@ Every 2 levels the character gains new spells per day as if they had also gained Having become a paragon of the way of Bushido and achieved enlightenment, tales of your bravery and honour have spread far and wide. None dare oppose you or question your will. Hit Die: d10. -Skill Points at Each Additional Level: 4 + Int Modifier. +Skill Points at Each Additional Level: 4+ Int Modifier. Bonus Feats: The epic samurai gains a bonus feat every two levels after 20th. To further improve your Ancestral Daisho ability, you must take the Epic Ancestral Daisho feats. @@ -1988,7 +1988,7 @@ An unwilling creature can't be teleported by word of recall. Likewise, a creatur Knowledge is power and the quest for knowledge never ends. There is an ever lasting supply of divine lore for you, the epic archivist, to discover. Hit Die: d6 -- Skill Points: 4+ Int Modifier. +Skill Points: 4+ Int Modifier. Dark Knowledge (Ex): At 21st level and every 3 levels thereafter, the epic archivist gains an additional use of Dark Knowledge. Lore Mastery (Ex): The archivist adds an additional +1 bonus on all Lore skill checks at level 23 and every 5 levels thereafter. Bonus Feats: The epic archivist gains a bonus feat (selected from the list of epic class bonus feats) every three levels higher than 20th. @@ -5286,8 +5286,7 @@ Baelnorn Properties: +8 bonus to Hide, Listen, Move Silently, Search, Persuade, Myconid Algoid **** - **** - + **** **** **** Abundant Step (Su) @@ -5777,7 +5776,7 @@ Level With Bane guiding your every step, you have ascended through the ranks of Bane's faithful to become a symbol of his domination and power. Hit Die: d10. -Skill Points: 2 + Int Modifier. +Skill Points: 2+ Int Modifier. Bonus Feats: The Epic Champion of Bane gains a bonus feat every four levels. Special: Sacred Defense: Saving throws continue to improve by +1 every 2 levels. @@ -8044,7 +8043,7 @@ A mortal imbued with fiendish cruelty, the drow judicator is a knight most foul. -Hit Die: d8. -Proficiencies: All simple and martial weapons, light, medium and heavy armor, small and large shields --Skill Points: 2 + Int Modifier. +-Skill Points: 2+ Int Modifier. REQUIREMENTS Alignment: Any evil @@ -10516,7 +10515,7 @@ Epic Soulknife: The epic soulknife is adept at channeling the entirety of his psychic might into the creation of an increasingly potent blade of mental energy. Hit Die: d10 - Skill Points at Each Additional Level: 4 + Int modifier. + Skill Points at Each Additional Level: 4+ Int Modifier. Mind Blade: At 25th level and every five levels thereafter, the soulknife gains an additional +1 enhancement bonus on attack rolls and damage rolls (+6 at 25th, +7 at 30th, and so on). Mind Blade Enhancement: The epic soulknife's mind blade gains additional powers as the soulknife gains epic levels. At 22nd level and every four levels thereafter, the soulknife can improve the value of the weapon special abilities on his mind blade by 1 (+5 equivalent bonus at 22nd, +6 at 26th, and so on). As noted in the soulknife class description, reassigning qualities still takes 8 hours of concentration. Psychic strike: The epic soulknife's psychic strike progression continues past 20th level, continuing to grant an additional die (d8) of damage every four levels higher than 19th (+6d8 at 23rd, +7d8 at 27th, and so on). @@ -14756,8 +14755,7 @@ Level: Archetypal Form Type of Feat: Builder's Tool Prerequisite: A creature you don't want people to polymorph into -Specifics: The presence of this feat on a creature, as tested for using GetHasFeat(), prevents the use of it as a template -by users of PRC polymorphing mechanics (PnP Shifter, Soul Eater, etc.) +Specifics: The presence of this feat on a creature, as tested for using GetHasFeat(), prevents the use of it as a template by users of PRC polymorphing mechanics (PnP Shifter, Soul Eater, etc.) Use: Automatic, used in the function GetCanShiftIntoCreature() in prc_inc_shifting Soak 4 Damage Soak 6 Damage @@ -23076,7 +23074,7 @@ Special Abilities: (The following may or may not be in use, depending on the module switch settings) Level Adjustment: +3 -Racial Hit Dice/Class: 4 of Monstrous Humanoid +Racial Hit Dice/Class: 5 of Monstrous Humanoid The wild, empty savannah is not enough to satisfy your natural curiosity about the world for any length of time. Forsaking your own pride, at least for the time being, your wanderings have brought you in contact with the puny Two-Legs who leap so boldly into the face of adventure. Brownie brownie @@ -46384,7 +46382,7 @@ Level: 0 1 2 3 4 5 6 7 8 9 Hit Die: d8 -Skill Points at Each Additional Level: 4 + Int modifier. +Skill Points at Each Additional Level: 4+ Int Modifier. Spells: Your caster level is equal to your class level. Your number of spells per day does not increase after 20th level. @@ -68835,7 +68833,7 @@ Epic Warlock Bonus Feats: Craft Epic Magic Arms and Armor, Craft Epic Rod, Craft Hit Die: d6. -Skill Points at Each Additional Level: 4 + Int modifier. +Skill Points at Each Additional Level: 4+ Int Modifier. Spells: The epic shaman's caster level is equal to his class level. The shaman's number of spells per day does not increase after 20th level. @@ -75516,7 +75514,7 @@ Light Crossbow Healer (Default) (STARTING PACKAGE) -The default healer package is focused on survivability & increasing the amount of healing the Healer can perform per spell or skill check. +The default healer package is focused on survivability and increasing the amount of healing the Healer can perform per spell or skill check. Equipment: Torch @@ -76170,4 +76168,4 @@ Specifics: You gain a +4 perfection bonus on Will saving throws against charm an Type of Feat: Exalted Prerequisite: Wis 13+ Specifics: You gain a +2 bonus on saving throws to resist any fear effect, despair effect (such as the crushing despair spell), or similar mind-affecting condition, but not charms or compulsions (such as the charm person and dominate person spells) - + \ No newline at end of file diff --git a/nwn/nwnprc/trunk/tlk/prc_consortium.tlk b/nwn/nwnprc/trunk/tlk/prc_consortium.tlk index c68d9c5d..6b974ff9 100644 Binary files a/nwn/nwnprc/trunk/tlk/prc_consortium.tlk and b/nwn/nwnprc/trunk/tlk/prc_consortium.tlk differ