2026/06/05 Update
Added Sanctified damage type. Added Holy damage type. Added Unholy damage type. Added Falling damage type. Added Ballistic damage type. Added Desiccation damage type. Fixed Major Missile's LABEL in spells.2da. Fixed Major Missile's LABEL in des_cft_spells.2da. Fixed Major Missile's LABEL in des_cft_scrolls.2da. Disabled incomplete PnP version of Shades spell. Astaroth's free crafting feats should drop off onRest, when expelling a vestige & when rebinding a vestige. Re-enabled caster level override variable clearing in GetInvokerLevel(). Change Piercing Cold's damagetype to Untyped. Constanted new damagetypes correctly for scripting (@lightbeard) Changed all force spells damagetype to force. Fixed issue with Initiators using Shadows Blade, Ironheart Aura and Shadow Trickster with dual-stances. Changed Eldritch Blast to Untyped damage. Fixed Path of Shadow screwing up caster levels. Changed Sanctify Martial strike to be Holy damage. Changed Vile Martial strike to be Vile damage. Updated Forsaker to work with Warforged "Armor". Added a SignalEvent() to Invisible Needle so it would break Invisibility when it should. Fixed equip exploit with Shou Disciple and monk weapons. Changed Saint template's Holy Touch to do Holy Damage. Changed Horrid Wilting to do Desiccation damage. Fixed Break Enchantment's targeting. Fixed the Command spell to obey mind immunity. Changed Damning Darkness to do Unholy damage. Change the Necrotic spells to do Vile damage. Made Persistent Blade more like PnP and made it dispellable.
This commit is contained in:
@@ -1,3 +1,23 @@
|
|||||||
|
Commit: Jaysyn904
|
||||||
|
Date: Thur May 28
|
||||||
|
|
||||||
|
Updated damagtypes.2da for CEP3 reserved rows.
|
||||||
|
Added and setup Darkvision icon.
|
||||||
|
Added and setup Ultravision icon.
|
||||||
|
Added spell icon for Thicket of Blades.
|
||||||
|
Fixed Blacklight, Cloud of the Archeai, Darkness, Deeper Darkness, Damning Darkness, Utterdark, Grasping Shadows, Dawn and Dusk and Child of Shadow and Light for Telflammar Shadowlord's Shadow Blur and Shadow Sight abilities.
|
||||||
|
Updated Blacklight's TLK entry.
|
||||||
|
Created a constant for Shadow Discorporation.
|
||||||
|
Fixed Shadow Time never ending on the targets.
|
||||||
|
Updated prc_inc_combat to use monk iterative progression if warranted.
|
||||||
|
Updated PRCGetIsRealSpellKnownByClass() to handle Sublime Chord better. (@Lightbeard)
|
||||||
|
Added class heartbeat script for Shadowlord to handle Shadow Blur and Shadow Sight.
|
||||||
|
Added ShadowlordEffects() to prc_inc_spells.
|
||||||
|
Added constants for new damagetypes.
|
||||||
|
Completely rewrote Verminlord's Vermin Domination.
|
||||||
|
Fixed duration for Empathic Feedback.
|
||||||
|
Fixed Morality Undone to not break characters over a server reset.
|
||||||
|
|
||||||
Commit: Jaysyn904
|
Commit: Jaysyn904
|
||||||
Date: Weds May 27
|
Date: Weds May 27
|
||||||
|
|
||||||
|
|||||||
@@ -23,3 +23,9 @@
|
|||||||
19 Force 282 ****
|
19 Force 282 ****
|
||||||
20 Untyped 288 ****
|
20 Untyped 288 ****
|
||||||
21 Vile 84 ****
|
21 Vile 84 ****
|
||||||
|
22 Sanctified 289 ****
|
||||||
|
23 Holy 289 ****
|
||||||
|
24 Unholy 288 ****
|
||||||
|
25 Falling **** ****
|
||||||
|
26 Ballistic **** ****
|
||||||
|
27 Dessication 84 ****
|
||||||
|
|||||||
@@ -1,22 +1,28 @@
|
|||||||
2DA V2.0
|
2DA V2.0
|
||||||
|
|
||||||
Label FeedbackStrref ColorR ColorG ColorB
|
Label FeedbackStrref ColorR ColorG ColorB
|
||||||
0 Physical 5594 **** **** ****
|
0 Physical 5594 **** **** ****
|
||||||
1 Magical 5593 204 119 255
|
1 Magical 5593 204 119 255
|
||||||
2 Acid 10458 0 102 0
|
2 Acid 10458 0 102 0
|
||||||
3 Cold 10459 153 255 255
|
3 Cold 10459 153 255 255
|
||||||
4 Divine 10460 255 255 0
|
4 Divine 10460 255 255 0
|
||||||
5 Electrical 10461 0 102 255
|
5 Electrical 10461 0 102 255
|
||||||
6 Fire 10462 235 141 0
|
6 Fire 10462 235 141 0
|
||||||
7 Negative 10463 110 3 3
|
7 Negative 10463 110 3 3
|
||||||
8 Positive 10464 176 4 159
|
8 Positive 10464 176 4 159
|
||||||
9 Sonic 10465 120 120 120
|
9 Sonic 10465 120 120 120
|
||||||
10 **** **** **** **** ****
|
10 CEP3_RESERVED **** **** **** ****
|
||||||
11 Poison 16820375 64 255 54
|
11 Poison 16820375 64 255 54
|
||||||
12 **** **** **** **** ****
|
12 CEP3_RESERVED **** **** **** ****
|
||||||
13 Psychic 16820377 133 14 135
|
13 Psychic 16820377 133 14 135
|
||||||
14 **** **** **** **** ****
|
14 CEP3_RESERVED **** **** **** ****
|
||||||
15 Radiant 16820379 227 191 9
|
15 Radiant 16820379 227 191 9
|
||||||
16 Force 16820380 15 209 183
|
16 Force 16820380 95 158 160
|
||||||
17 Untyped 16820354 250 250 250
|
17 Untyped 16820354 250 250 250
|
||||||
18 Vile 16820357 185 32 38
|
18 Vile 16820357 185 32 38
|
||||||
|
19 Sanctified 16820336 255 215 0
|
||||||
|
20 Holy 16820339 250 250 210
|
||||||
|
21 Unholy 16820342 128 0 128
|
||||||
|
22 Falling 16820345 122 0 0
|
||||||
|
23 Ballistic 16820348 128 128 128
|
||||||
|
24 Dessication 16820351 139 69 19
|
||||||
|
|||||||
@@ -1,26 +1,31 @@
|
|||||||
2DA V2.0
|
2DA V2.0
|
||||||
|
|
||||||
Label CharsheetStrref DamageTypeGroup
|
Label CharsheetStrref DamageTypeGroup
|
||||||
0 Bludgeoning 58345 0
|
0 Bludgeoning 58345 0
|
||||||
1 Piercing 58341 0
|
1 Piercing 58341 0
|
||||||
2 Slashing 58344 0
|
2 Slashing 58344 0
|
||||||
3 Magical 58302 1
|
3 Magical 58302 1
|
||||||
4 Acid 58303 2
|
4 Acid 58303 2
|
||||||
5 Cold 58304 3
|
5 Cold 58304 3
|
||||||
6 Divine 58305 4
|
6 Divine 58305 4
|
||||||
7 Electrical 58306 5
|
7 Electrical 58306 5
|
||||||
8 Fire 58308 6
|
8 Fire 58308 6
|
||||||
9 Negative 58309 7
|
9 Negative 58309 7
|
||||||
10 Positive 58310 8
|
10 Positive 58310 8
|
||||||
11 Sonic 58311 9
|
11 Sonic 58311 9
|
||||||
12 Base 58301 0
|
12 Base 58301 0
|
||||||
13 CEP3_RESERVED **** ****
|
13 CEP3_RESERVED **** ****
|
||||||
14 Poison 16820368 11
|
14 Poison 16820368 11
|
||||||
15 CEP3_RESERVED **** ****
|
15 CEP3_RESERVED **** ****
|
||||||
16 Psychic 16820370 13
|
16 Psychic 16820370 13
|
||||||
17 CEP3_RESERVED **** ****
|
17 CEP3_RESERVED **** ****
|
||||||
18 Radiant 16820372 15
|
18 Radiant 16820372 15
|
||||||
19 Force 16820373 16
|
19 Force 16820373 16
|
||||||
20 Untyped 16820355 17
|
20 Untyped 16820355 17
|
||||||
21 Vile 16820358 18
|
21 Vile 16820358 18
|
||||||
22 **** **** ****
|
22 Sanctified 16820337 19
|
||||||
|
23 Holy 16820340 20
|
||||||
|
24 Unholy 16820343 21
|
||||||
|
25 Falling 16820346 22
|
||||||
|
26 Ballistic 16820349 23
|
||||||
|
27 Dessication 16820352 24
|
||||||
|
|||||||
@@ -2248,7 +2248,7 @@
|
|||||||
2244 Dragon_Breath_Prismatic **** **** **** **** **** ****
|
2244 Dragon_Breath_Prismatic **** **** **** **** **** ****
|
||||||
2245 ManyShot **** **** **** **** **** ****
|
2245 ManyShot **** **** **** **** **** ****
|
||||||
2246 ManyShot2 **** **** **** **** **** ****
|
2246 ManyShot2 **** **** **** **** **** ****
|
||||||
2247 Magic_Missile prc_scr_1127 **** **** **** **** ****
|
2247 Major_Missile prc_scr_1127 **** **** **** **** ****
|
||||||
2248 ManyShot4 **** **** **** **** **** ****
|
2248 ManyShot4 **** **** **** **** **** ****
|
||||||
2249 ManyShot6 **** **** **** **** **** ****
|
2249 ManyShot6 **** **** **** **** **** ****
|
||||||
2250 Examine_Recipe **** **** **** **** **** ****
|
2250 Examine_Recipe **** **** **** **** **** ****
|
||||||
|
|||||||
@@ -2248,7 +2248,7 @@
|
|||||||
2244 Dragon_Breath_Prismatic **** 1 1 1 9 0
|
2244 Dragon_Breath_Prismatic **** 1 1 1 9 0
|
||||||
2245 ManyShot **** 1 1 1 1 0
|
2245 ManyShot **** 1 1 1 1 0
|
||||||
2246 ManyShot2 **** 1 1 1 1 0
|
2246 ManyShot2 **** 1 1 1 1 0
|
||||||
2247 Magic_Missile 1127 1 1 0 5 0
|
2247 Major_Missile 1127 1 1 0 5 0
|
||||||
2248 ManyShot4 **** 1 1 1 1 0
|
2248 ManyShot4 **** 1 1 1 1 0
|
||||||
2249 ManyShot6 **** 1 1 1 1 0
|
2249 ManyShot6 **** 1 1 1 1 0
|
||||||
2250 Examine_Recipe **** 1 1 1 1 0
|
2250 Examine_Recipe **** 1 1 1 1 0
|
||||||
|
|||||||
@@ -25,3 +25,9 @@
|
|||||||
21 16820366 Force 0.55 28
|
21 16820366 Force 0.55 28
|
||||||
22 16820354 Untyped 0.55 8
|
22 16820354 Untyped 0.55 8
|
||||||
23 16820357 Vile 0.55 9
|
23 16820357 Vile 0.55 9
|
||||||
|
24 16820336 Sanctified 0.55 5
|
||||||
|
25 16820339 Holy 0.55 5
|
||||||
|
26 16820342 Unholy 0.55 9
|
||||||
|
27 16820345 Falling 0.55 ****
|
||||||
|
28 16820348 Ballistic 0.55 ****
|
||||||
|
29 16820351 Dessication 0.55 6
|
||||||
|
|||||||
@@ -2248,7 +2248,7 @@
|
|||||||
2244 Dragon_Breath_Prismatic 84513 is_PrisSpray V S vs 0x00 0x3e inidra_dragpris **** **** **** **** **** **** 9 2000 head **** **** **** **** **** **** out 3000 **** var_conepris **** sar_conepris 0 **** **** **** **** **** Mind-Affecting 1 **** **** **** **** **** 11 **** 2 84515 1 0 84514 1 **** **** **** 1 cone 20 **** 19 **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
2244 Dragon_Breath_Prismatic 84513 is_PrisSpray V S vs 0x00 0x3e inidra_dragpris **** **** **** **** **** **** 9 2000 head **** **** **** **** **** **** out 3000 **** var_conepris **** sar_conepris 0 **** **** **** **** **** Mind-Affecting 1 **** **** **** **** **** 11 **** 2 84515 1 0 84514 1 **** **** **** 1 cone 20 **** 19 **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
2245 ManyShot 16826084 **** V S 0 0x00 0x3a ft_manyshot **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 1000 **** **** **** **** 1 wamar_001 ballistic hand **** path **** 0 2246 2248 2249 **** **** 2 **** 3 16826085 0 0 **** 1 3306 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
2245 ManyShot 16826084 **** V S 0 0x00 0x3a ft_manyshot **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 1000 **** **** **** **** 1 wamar_001 ballistic hand **** path **** 0 2246 2248 2249 **** **** 2 **** 3 16826085 0 0 **** 1 3306 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
2246 ManyShot2 16826013 ife_wepspec_Lbw V S 0 0x00 0x3e ft_manyshot **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 2245 3 **** 0 0 **** 1 525208810 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
2246 ManyShot2 16826013 ife_wepspec_Lbw V S 0 0x00 0x3e ft_manyshot **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 2245 3 **** 0 0 **** 1 525208810 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
2247 Magic_Missile 16826070 is_MagMiss V L vs 0x3d 0x3A sp_mjmagmiss **** **** **** **** **** 5 5 1500 hand **** vco_mehancold03 **** sco_mehancold03 vs_chant_evoc_lm vs_chant_evoc_lf out 1000 **** vca_outsonic **** sca_outsonic 0 **** **** **** **** path **** 1 **** **** **** **** **** 2 **** 1 16826071 1 0 **** 1 **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
2247 Major_Missile 16826070 is_MagMiss V L vs 0x3d 0x3A sp_mjmagmiss **** **** **** **** **** 5 5 1500 hand **** vco_mehancold03 **** sco_mehancold03 vs_chant_evoc_lm vs_chant_evoc_lf out 1000 **** vca_outsonic **** sca_outsonic 0 **** **** **** **** path **** 1 **** **** **** **** **** 2 **** 1 16826071 1 0 **** 1 **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
2248 ManyShot4 16826014 ife_wepspec_Lbw V S 0 0x00 0x3e ft_manyshot **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 2245 3 **** 0 0 **** 1 525274346 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
2248 ManyShot4 16826014 ife_wepspec_Lbw V S 0 0x00 0x3e ft_manyshot **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 2245 3 **** 0 0 **** 1 525274346 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
2249 ManyShot6 16826015 ife_wepspec_Lbw V S 0 0x00 0x3e ft_manyshot **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 2245 3 **** 0 0 **** 1 525339882 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
2249 ManyShot6 16826015 ife_wepspec_Lbw V S 0 0x00 0x3e ft_manyshot **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** 2245 3 **** 0 0 **** 1 525339882 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
2250 Examine_Recipe 16824431 is_divine G P vs 0x3a 0x08 prccraft_read **** **** **** **** **** **** 1 1500 hand **** **** **** **** **** **** out 0 **** **** **** **** 0 **** **** **** **** **** **** 0 2254 2255 **** **** **** **** **** 4 16824432 1 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
2250 Examine_Recipe 16824431 is_divine G P vs 0x3a 0x08 prccraft_read **** **** **** **** **** **** 1 1500 hand **** **** **** **** **** **** out 0 **** **** **** **** 0 **** **** **** **** **** **** 0 2254 2255 **** **** **** **** **** 4 16824432 1 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
@@ -19342,7 +19342,7 @@
|
|||||||
19338 RethDekala_RecoverManeuver 16790298 ife_mastelem T P 0 **** 0x01 tob_gen_recover **** **** **** **** **** **** 9 0 head **** vco_smhanevil01 **** sco_mehannatr01 vs_chant_ench_lm vs_chant_ench_lf self 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 10 **** 3 **** 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
19338 RethDekala_RecoverManeuver 16790298 ife_mastelem T P 0 **** 0x01 tob_gen_recover **** **** **** **** **** **** 9 0 head **** vco_smhanevil01 **** sco_mehannatr01 vs_chant_ench_lm vs_chant_ench_lf self 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 10 **** 3 **** 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
19339 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
19339 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
19340 Shadow_Conjuration_Conversation 16790387 is_ShadConj I P s **** 0x01 shdconj_convrun **** **** **** **** **** **** 4 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 24732 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
19340 Shadow_Conjuration_Conversation 16790387 is_ShadConj I P s **** 0x01 shdconj_convrun **** **** **** **** **** **** 4 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 24732 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
19341 PNP_SHADES 908 is_Shades I S vs 0x00 0x2F **** **** **** **** **** **** 9 9 **** **** **** **** **** **** vs_chant_illu_hm vs_chant_illu_hf **** **** **** **** **** **** **** **** **** **** **** **** **** 0 19342 19343 19344 19345 19346 **** **** 4 6251 1 0 **** 1 24733 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
19341 PNP_SHADES 908 is_Shades I S vs 0x00 0x2F **** **** **** **** **** **** **** 9 **** **** **** **** **** **** vs_chant_illu_hm vs_chant_illu_hf **** **** **** **** **** **** **** **** **** **** **** **** **** 0 19342 19343 19344 19345 19346 **** **** 4 6251 1 0 **** 1 24733 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
19342 PNP_SHADES_QS1 16790382 is_Shades I S s **** 0x3F prc_shdconj_quik **** **** **** **** **** **** 9 1500 **** **** **** **** **** vs_chant_illu_hm vs_chant_illu_hf **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 11 19341 1 **** 1 0 **** 1 436887709 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
19342 PNP_SHADES_QS1 16790382 is_Shades I S s **** 0x3F prc_shdconj_quik **** **** **** **** **** **** 9 1500 **** **** **** **** **** vs_chant_illu_hm vs_chant_illu_hf **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 11 19341 1 **** 1 0 **** 1 436887709 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
19343 PNP_SHADES_QS2 16790383 is_Shades I S s **** 0x3F prc_shdconj_quik **** **** **** **** **** **** 9 1500 **** **** **** **** **** vs_chant_illu_hm vs_chant_illu_hf **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 11 19341 1 **** 1 0 **** 1 436953245 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
19343 PNP_SHADES_QS2 16790383 is_Shades I S s **** 0x3F prc_shdconj_quik **** **** **** **** **** **** 9 1500 **** **** **** **** **** vs_chant_illu_hm vs_chant_illu_hf **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 11 19341 1 **** 1 0 **** 1 436953245 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
19344 PNP_SHADES_QS3 16790384 is_Shades I S s **** 0x3F prc_shdconj_quik **** **** **** **** **** **** 9 1500 **** **** **** **** **** vs_chant_illu_hm vs_chant_illu_hf **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 11 19341 1 **** 1 0 **** 1 437018781 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
19344 PNP_SHADES_QS3 16790384 is_Shades I S s **** 0x3F prc_shdconj_quik **** **** **** **** **** **** 9 1500 **** **** **** **** **** vs_chant_illu_hm vs_chant_illu_hf **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 11 19341 1 **** 1 0 **** 1 437018781 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
|
|||||||
@@ -362,6 +362,17 @@ string GetBindingClassFile(int nClass)
|
|||||||
|
|
||||||
void ApplyVestige(object oBinder, int nVestige)
|
void ApplyVestige(object oBinder, int nVestige)
|
||||||
{
|
{
|
||||||
|
//:: Remove Astaroth's crafting feat to allow leveling up.
|
||||||
|
effect eOld = GetFirstEffect(oBinder);
|
||||||
|
while (GetIsEffectValid(eOld))
|
||||||
|
{
|
||||||
|
if (GetEffectTag(eOld) == "AstarothCraftingFeat")
|
||||||
|
{
|
||||||
|
RemoveEffect(oBinder, eOld);
|
||||||
|
}
|
||||||
|
eOld = GetNextEffect(oBinder);
|
||||||
|
}
|
||||||
|
|
||||||
PRCRemoveSpellEffects(nVestige, oBinder, oBinder);
|
PRCRemoveSpellEffects(nVestige, oBinder, oBinder);
|
||||||
GZPRCRemoveSpellEffects(nVestige, oBinder, FALSE);
|
GZPRCRemoveSpellEffects(nVestige, oBinder, FALSE);
|
||||||
ActionCastSpellOnSelf(nVestige, METAMAGIC_NONE, oBinder);
|
ActionCastSpellOnSelf(nVestige, METAMAGIC_NONE, oBinder);
|
||||||
@@ -393,7 +404,18 @@ void ApplyVestige(object oBinder, int nVestige)
|
|||||||
|
|
||||||
void ExpelVestige(object oBinder, int nVestige)
|
void ExpelVestige(object oBinder, int nVestige)
|
||||||
{
|
{
|
||||||
SetPersistantLocalInt(oBinder, "ExpelledVestige", TRUE);
|
//:: Remove Astaroth's crafting feat to allow leveling up.
|
||||||
|
effect eOld = GetFirstEffect(oBinder);
|
||||||
|
while (GetIsEffectValid(eOld))
|
||||||
|
{
|
||||||
|
if (GetEffectTag(eOld) == "AstarothCraftingFeat")
|
||||||
|
{
|
||||||
|
RemoveEffect(oBinder, eOld);
|
||||||
|
}
|
||||||
|
eOld = GetNextEffect(oBinder);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetPersistantLocalInt(oBinder, "ExpelledVestige", TRUE);
|
||||||
SetPersistantLocalInt(oBinder, "ExpelledVestige"+IntToString(nVestige), TRUE);
|
SetPersistantLocalInt(oBinder, "ExpelledVestige"+IntToString(nVestige), TRUE);
|
||||||
// Here, making a good pack means we can unbind it
|
// Here, making a good pack means we can unbind it
|
||||||
if (GetLocalInt(oBinder, "PactQuality"+IntToString(nVestige)))
|
if (GetLocalInt(oBinder, "PactQuality"+IntToString(nVestige)))
|
||||||
@@ -965,4 +987,6 @@ int GetPatronVestige(object oBinder)
|
|||||||
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ABYSM , oBinder)) nPatron = VESTIGE_ABYSM;
|
else if (GetHasFeat(FEAT_PATRON_VESTIGE_ABYSM , oBinder)) nPatron = VESTIGE_ABYSM;
|
||||||
|
|
||||||
return nPatron;
|
return nPatron;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//:: void main(){}
|
||||||
|
|||||||
@@ -465,7 +465,7 @@ int GetInvokerLevel(object oInvoker = OBJECT_SELF, int nSpecificClass = CLASS_TY
|
|||||||
if(nLevel)
|
if(nLevel)
|
||||||
{
|
{
|
||||||
if(DEBUG) SendMessageToPC(oInvoker, "Forced-level Invoking at level " + IntToString(GetCasterLevel(oInvoker)));
|
if(DEBUG) SendMessageToPC(oInvoker, "Forced-level Invoking at level " + IntToString(GetCasterLevel(oInvoker)));
|
||||||
//DelayCommand(1.0, DeleteLocalInt(oInvoker, PRC_CASTERLEVEL_OVERRIDE));
|
DelayCommand(1.0, DeleteLocalInt(oInvoker, PRC_CASTERLEVEL_OVERRIDE));
|
||||||
return nLevel + nAdjust;
|
return nLevel + nAdjust;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2671,7 +2671,7 @@ void DoPiercingCold(object oCaster, object oTarget, int nDamageAmount, int nCurr
|
|||||||
if (nDamageAmount > nTest)
|
if (nDamageAmount > nTest)
|
||||||
{
|
{
|
||||||
// Apply the difference to ignore resist
|
// Apply the difference to ignore resist
|
||||||
effect eDam = EffectDamage(nDamageAmount - nTest, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_ENERGY);
|
effect eDam = EffectDamage(nDamageAmount - nTest, DAMAGE_TYPE_UNTYPED, DAMAGE_POWER_ENERGY);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_FROST_L);
|
effect eVis = EffectVisualEffect(VFX_IMP_FROST_L);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
@@ -2786,13 +2786,13 @@ effect PRCEffectDamage(object oTarget, int nDamageAmount, int nDamageType=DAMAGE
|
|||||||
{
|
{
|
||||||
int nDice = (iDiabolistLevel + 5) / 5;
|
int nDice = (iDiabolistLevel + 5) / 5;
|
||||||
int nDamage = d6(nDice);
|
int nDamage = d6(nDice);
|
||||||
int nDamageType = DAMAGE_TYPE_DIVINE;
|
int nDamageType = DAMAGE_TYPE_UNHOLY;
|
||||||
|
|
||||||
if(GetLocalInt(oCaster, "VileDiabolism"))
|
if(GetLocalInt(oCaster, "VileDiabolism"))
|
||||||
{
|
{
|
||||||
//FloatingTextStringOnCreature("Vile Diabolism is active", oCaster, FALSE);
|
//FloatingTextStringOnCreature("Vile Diabolism is active", oCaster, FALSE);
|
||||||
nDamage /= 2;
|
nDamage /= 2;
|
||||||
nDamageType = DAMAGE_TYPE_POSITIVE;
|
nDamageType = DAMAGE_TYPE_VILE;
|
||||||
DeleteLocalInt(oCaster, "VileDiabolism");
|
DeleteLocalInt(oCaster, "VileDiabolism");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -900,14 +900,16 @@ const int IP_CONST_ONHIT_SAVEDC_70 = 70;
|
|||||||
// Creature Epic Criticals
|
// Creature Epic Criticals
|
||||||
const int IP_CONST_FEAT_DEVCRITICAL_CREATURE = 271;
|
const int IP_CONST_FEAT_DEVCRITICAL_CREATURE = 271;
|
||||||
const int IP_CONST_FEAT_OVERCRITICAL_CREATURE = 272;
|
const int IP_CONST_FEAT_OVERCRITICAL_CREATURE = 272;
|
||||||
//const int IP_CONST_FEAT_WEAPON_PROF_CREATURE = 38; // provided by Bioware in 1.66
|
|
||||||
|
|
||||||
// Epic DR
|
// Epic DR
|
||||||
const int IP_CONST_FEAT_EPIC_DR_3 = 273;
|
const int IP_CONST_FEAT_EPIC_DR_3 = 273;
|
||||||
const int IP_CONST_FEAT_EPIC_DR_6 = 274;
|
const int IP_CONST_FEAT_EPIC_DR_6 = 274;
|
||||||
const int IP_CONST_FEAT_EPIC_DR_9 = 275;
|
const int IP_CONST_FEAT_EPIC_DR_9 = 275;
|
||||||
|
|
||||||
//IP_CONST_DAMAGETYPE
|
//:://////////////////////////////////////////////
|
||||||
|
//:: New damage types (iprp_damagetype.2da)
|
||||||
|
//:://////////////////////////////////////////////
|
||||||
|
|
||||||
//const int IP_CONST_DAMAGETYPE_BLOOD = 15; //:: Not a 3e PnP damage type
|
//const int IP_CONST_DAMAGETYPE_BLOOD = 15; //:: Not a 3e PnP damage type
|
||||||
const int IP_CONST_DAMAGETYPE_POISON = 16;
|
const int IP_CONST_DAMAGETYPE_POISON = 16;
|
||||||
//const int IP_CONST_DAMAGETYPE_SHADOW = 17; //:: Not a 3e PnP damage type
|
//const int IP_CONST_DAMAGETYPE_SHADOW = 17; //:: Not a 3e PnP damage type
|
||||||
@@ -917,6 +919,12 @@ const int IP_CONST_DAMAGETYPE_RADIANT = 20;
|
|||||||
const int IP_CONST_DAMAGETYPE_FORCE = 21;
|
const int IP_CONST_DAMAGETYPE_FORCE = 21;
|
||||||
const int IP_CONST_DAMAGETYPE_UNTYPED = 22;
|
const int IP_CONST_DAMAGETYPE_UNTYPED = 22;
|
||||||
const int IP_CONST_DAMAGETYPE_VILE = 23;
|
const int IP_CONST_DAMAGETYPE_VILE = 23;
|
||||||
|
const int IP_CONST_DAMAGETYPE_SANCTIFIED = 24;
|
||||||
|
const int IP_CONST_DAMAGETYPE_HOLY = 25;
|
||||||
|
const int IP_CONST_DAMAGETYPE_UNHOLY = 26;
|
||||||
|
const int IP_CONST_DAMAGETYPE_FALLING = 27;
|
||||||
|
const int IP_CONST_DAMAGETYPE_BALLISTIC = 28;
|
||||||
|
const int IP_CONST_DAMAGETYPE_DESSICATION = 29;
|
||||||
|
|
||||||
//IP_CONST_DAMAGESOAK
|
//IP_CONST_DAMAGESOAK
|
||||||
const int IP_CONST_DAMAGESOAK_1_HP = 11;
|
const int IP_CONST_DAMAGESOAK_1_HP = 11;
|
||||||
|
|||||||
@@ -13,12 +13,18 @@ const int EFFECT_ICON_ULTRAVISION = 131;
|
|||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
//:: New damage types (damagetypes.2da)
|
//:: New damage types (damagetypes.2da)
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
const int DAMAGE_TYPE_POISON = 16384; // CUSTOM2
|
const int DAMAGE_TYPE_POISON = 16384; // CUSTOM2
|
||||||
const int DAMAGE_TYPE_PSYCHIC = 32768; // CUSTOM4
|
const int DAMAGE_TYPE_PSYCHIC = 32768; // CUSTOM4
|
||||||
const int DAMAGE_TYPE_RADIANT = 65536; // CUSTOM6
|
const int DAMAGE_TYPE_RADIANT = 65536; // CUSTOM6
|
||||||
const int DAMAGE_TYPE_FORCE = 524288; // CUSTOM7
|
const int DAMAGE_TYPE_FORCE = 524288; // CUSTOM7
|
||||||
const int DAMAGE_TYPE_UNTYPED = 1048576; // CUSTOM8
|
const int DAMAGE_TYPE_UNTYPED = 1048576; // CUSTOM8
|
||||||
const int DAMAGE_TYPE_VILE = 2097152; // CUSTOM9
|
const int DAMAGE_TYPE_VILE = 2097152; // CUSTOM9
|
||||||
|
const int DAMAGE_TYPE_SANCTIFIED = 4194304; // CUSTOM10
|
||||||
|
const int DAMAGE_TYPE_HOLY = 8388608; // CUSTOM11
|
||||||
|
const int DAMAGE_TYPE_UNHOLY = 16777216; // CUSTOM12
|
||||||
|
const int DAMAGE_TYPE_FALLING = 33554432; // CUSTOM13
|
||||||
|
const int DAMAGE_TYPE_BALLISTIC = 67108864; // CUSTOM14
|
||||||
|
const int DAMAGE_TYPE_DESSICATION = 134217728; // CUSTOM15
|
||||||
|
|
||||||
|
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ float GetVFXLength(location lCaster, float fLength, float fAngle)
|
|||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
//:: Modified March 14 2003: Removed the option to hurt chests/doors
|
//:: Modified March 14 2003: Removed the option to hurt chests/doors
|
||||||
//:: was potentially causing bugs when no creature targets available.
|
//:: was potentially causing bugs when no creature targets available.
|
||||||
void PRCDoMissileStorm(int nD6Dice, int nCap, int nSpell, int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE, int nDAMAGETYPE = DAMAGE_TYPE_MAGICAL, int nONEHIT = FALSE, int nReflexSave = FALSE)
|
void PRCDoMissileStorm(int nD6Dice, int nCap, int nSpell, int nMIRV = VFX_IMP_MIRV, int nVIS = VFX_IMP_MAGBLUE, int nDAMAGETYPE = DAMAGE_TYPE_FORCE, int nONEHIT = FALSE, int nReflexSave = FALSE)
|
||||||
{
|
{
|
||||||
object oTarget = OBJECT_INVALID;
|
object oTarget = OBJECT_INVALID;
|
||||||
int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF);
|
int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF);
|
||||||
@@ -312,7 +312,7 @@ void PRCDoMissileStorm(int nD6Dice, int nCap, int nSpell, int nMIRV = VFX_IMP_MI
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
// GZ: Moved SR check out of loop to have 1 check per target
|
// GZ: Moved SR check out of loop to have 1 check per target
|
||||||
// not one check per missile, which would rip spell mantels
|
// not one check per missile, which would rip spell mantles
|
||||||
// apart
|
// apart
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterLvl, fDelay))
|
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterLvl, fDelay))
|
||||||
|
|||||||
@@ -49,6 +49,9 @@ const int MANEUVER_TYPE_MANEUVER = 5;
|
|||||||
/* Function prototypes */
|
/* Function prototypes */
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int GetHasActiveStanceOfDiscipline(object oInitiator, int nDiscipline);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines from what class's maneuver list the currently being initiated
|
* Determines from what class's maneuver list the currently being initiated
|
||||||
* maneuver is initiated from.
|
* maneuver is initiated from.
|
||||||
@@ -481,6 +484,34 @@ int _AllowedDiscipline(object oInitiator, int nClass, int nDiscipline)
|
|||||||
/* Function definitions */
|
/* Function definitions */
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int GetHasActiveStanceOfDiscipline(object oInitiator, int nDiscipline)
|
||||||
|
{
|
||||||
|
int bHasDualStance = (GetLevelByClass(CLASS_TYPE_WARBLADE, oInitiator) >= 20) ||
|
||||||
|
(GetLevelByClass(CLASS_TYPE_MASTER_OF_NINE, oInitiator) >= 3 && GetLocalInt(oInitiator, "MoNDualStance"));
|
||||||
|
|
||||||
|
if (bHasDualStance)
|
||||||
|
{
|
||||||
|
// Check both stances for dual-stance characters
|
||||||
|
int nStance1 = GetLocalInt(oInitiator, "TOBStanceOne");
|
||||||
|
int nStance2 = GetLocalInt(oInitiator, "TOBStanceTwo");
|
||||||
|
|
||||||
|
if (nStance1 > 0 && GetDisciplineByManeuver(nStance1) == nDiscipline)
|
||||||
|
return TRUE;
|
||||||
|
if (nStance2 > 0 && GetDisciplineByManeuver(nStance2) == nDiscipline)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Single stance check for normal characters
|
||||||
|
int nStance = GetHasActiveStance(oInitiator);
|
||||||
|
if (nStance != -1 && GetDisciplineByManeuver(nStance) == nDiscipline)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int GetInitiatingClass(object oInitiator = OBJECT_SELF)
|
int GetInitiatingClass(object oInitiator = OBJECT_SELF)
|
||||||
{
|
{
|
||||||
return GetLocalInt(oInitiator, PRC_INITIATING_CLASS) - 1;
|
return GetLocalInt(oInitiator, PRC_INITIATING_CLASS) - 1;
|
||||||
|
|||||||
@@ -443,7 +443,24 @@ void main()
|
|||||||
ClearCurrentStage(oBinder);
|
ClearCurrentStage(oBinder);
|
||||||
MarkStageNotSetUp(STAGE_EXPLOIT_VESTIGE, oBinder);
|
MarkStageNotSetUp(STAGE_EXPLOIT_VESTIGE, oBinder);
|
||||||
}
|
}
|
||||||
else if(nStage == STAGE_ASTAROTH)
|
else if(nStage == STAGE_ASTAROTH)
|
||||||
|
{
|
||||||
|
// Grant the selected crafting feat as a tagged effect
|
||||||
|
effect eFeat = EffectBonusFeat(nChoice);
|
||||||
|
eFeat = TagEffect(eFeat, "AstarothCraftingFeat");
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eFeat), oBinder, HoursToSeconds(24));
|
||||||
|
|
||||||
|
int nContactTime = VESTIGE_CONTACT_TIME;
|
||||||
|
if(GetPRCSwitch(PRC_CONTACT_VESTIGE_TIMER) >= 6) nContactTime = GetPRCSwitch(PRC_CONTACT_VESTIGE_TIMER);
|
||||||
|
ContactVestige(oBinder, nContactTime, GetLocalInt(oBinder, "nVestige"));
|
||||||
|
DeleteLocalInt(oBinder, "nVestige");
|
||||||
|
AllowExit(DYNCONV_EXIT_FORCE_EXIT);
|
||||||
|
|
||||||
|
ClearCurrentStage(oBinder);
|
||||||
|
MarkStageNotSetUp(STAGE_ASTAROTH, oBinder);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* else if(nStage == STAGE_ASTAROTH)
|
||||||
{
|
{
|
||||||
if (nChoice == FEAT_SCRIBE_SCROLL ) IPSafeAddItemProperty(GetPCSkin(oBinder), ItemPropertyBonusFeat(IP_FEAT_FEAT_SCRIBE_SCROLL ), HoursToSeconds(24), X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
if (nChoice == FEAT_SCRIBE_SCROLL ) IPSafeAddItemProperty(GetPCSkin(oBinder), ItemPropertyBonusFeat(IP_FEAT_FEAT_SCRIBE_SCROLL ), HoursToSeconds(24), X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||||
if (nChoice == FEAT_BREW_POTION ) IPSafeAddItemProperty(GetPCSkin(oBinder), ItemPropertyBonusFeat(IP_FEAT_FEAT_BREW_POTION ), HoursToSeconds(24), X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
if (nChoice == FEAT_BREW_POTION ) IPSafeAddItemProperty(GetPCSkin(oBinder), ItemPropertyBonusFeat(IP_FEAT_FEAT_BREW_POTION ), HoursToSeconds(24), X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||||
@@ -462,7 +479,7 @@ void main()
|
|||||||
|
|
||||||
ClearCurrentStage(oBinder);
|
ClearCurrentStage(oBinder);
|
||||||
MarkStageNotSetUp(STAGE_ASTAROTH, oBinder);
|
MarkStageNotSetUp(STAGE_ASTAROTH, oBinder);
|
||||||
}
|
} */
|
||||||
|
|
||||||
if(DEBUG) DoDebug("bnd_bindingcnv: New stage: " + IntToString(nStage));
|
if(DEBUG) DoDebug("bnd_bindingcnv: New stage: " + IntToString(nStage));
|
||||||
|
|
||||||
|
|||||||
@@ -54,18 +54,18 @@ void main()
|
|||||||
|
|
||||||
nDC += InvokerAbilityFocus(oPC, nEssence, nEssence2);
|
nDC += InvokerAbilityFocus(oPC, nEssence, nEssence2);
|
||||||
|
|
||||||
int nDamageType = nEssence ? (nEssenceData >>> 4) & 0xFFF : DAMAGE_TYPE_MAGICAL;
|
int nDamageType = nEssence ? (nEssenceData >>> 4) & 0xFFF : DAMAGE_TYPE_UNTYPED;
|
||||||
int nDamageType2 = nEssence2 ? (nEssenceData2 >>> 4) & 0xFFF : DAMAGE_TYPE_MAGICAL;
|
int nDamageType2 = nEssence2 ? (nEssenceData2 >>> 4) & 0xFFF : DAMAGE_TYPE_UNTYPED;
|
||||||
|
|
||||||
//Set correct blast damage type
|
//Set correct blast damage type
|
||||||
if(nDamageType != nDamageType2)
|
if(nDamageType != nDamageType2)
|
||||||
{
|
{
|
||||||
if(nDamageType != DAMAGE_TYPE_MAGICAL)
|
if(nDamageType != DAMAGE_TYPE_UNTYPED)
|
||||||
{
|
{
|
||||||
if(nDamageType2 == DAMAGE_TYPE_MAGICAL)
|
if(nDamageType2 == DAMAGE_TYPE_UNTYPED)
|
||||||
nDamageType2 = nDamageType;
|
nDamageType2 = nDamageType;
|
||||||
}
|
}
|
||||||
else if(nDamageType2 != DAMAGE_TYPE_MAGICAL)
|
else if(nDamageType2 != DAMAGE_TYPE_UNTYPED)
|
||||||
{
|
{
|
||||||
nDamageType = nDamageType2;
|
nDamageType = nDamageType2;
|
||||||
}
|
}
|
||||||
@@ -116,17 +116,6 @@ void main()
|
|||||||
|
|
||||||
LosePsionicFocus();
|
LosePsionicFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if(GetIsPsionicallyFocused() && GetHasFeat(FEAT_GREATER_PSIONIC_SHOT))
|
|
||||||
{
|
|
||||||
nDam += d6(4);
|
|
||||||
LosePsionicFocus();
|
|
||||||
}
|
|
||||||
if(GetIsPsionicallyFocused() && GetHasFeat(FEAT_PSIONIC_SHOT))
|
|
||||||
{
|
|
||||||
nDam += d6(2);
|
|
||||||
LosePsionicFocus();
|
|
||||||
} */
|
|
||||||
|
|
||||||
int nAtkBns = GetAttackBonus(oTarget, oPC, OBJECT_INVALID, FALSE, TOUCH_ATTACK_RANGED_SPELL);
|
int nAtkBns = GetAttackBonus(oTarget, oPC, OBJECT_INVALID, FALSE, TOUCH_ATTACK_RANGED_SPELL);
|
||||||
if(GetHasFeat(FEAT_ELDRITCH_SCULPTOR))
|
if(GetHasFeat(FEAT_ELDRITCH_SCULPTOR))
|
||||||
|
|||||||
@@ -108,6 +108,12 @@ void main()
|
|||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(9999), oCaster);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(9999), oCaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Teleport starts a forced dynamic conversation, which clears queued ActionCastSpell cleanup.
|
||||||
|
DeleteLocalInt(oCaster, PRC_CASTERCLASS_OVERRIDE);
|
||||||
|
DeleteLocalInt(oCaster, "UsingActionCastSpell");
|
||||||
|
DeleteLocalInt(oCaster, PRC_INVOKING_CLASS);
|
||||||
|
DeleteLocalInt(oCaster, PRC_INVOCATION_LEVEL);
|
||||||
|
|
||||||
Teleport(oCaster, nCasterLvl, nSpellID == INVOKE_PATH_OF_SHADOW_PARTY, FALSE, "");
|
Teleport(oCaster, nCasterLvl, nSpellID == INVOKE_PATH_OF_SHADOW_PARTY, FALSE, "");
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,23 @@
|
|||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
// Called on Heartbeat
|
// Called on Heartbeat
|
||||||
void ShadowBlade(object oInitiator)
|
void ShadowBlade(object oInitiator)
|
||||||
|
{
|
||||||
|
int nDex = GetAbilityModifier(ABILITY_DEXTERITY, oInitiator);
|
||||||
|
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||||
|
int nWeap = GetIsDisciplineWeapon(oWeapon, DISCIPLINE_SHADOW_HAND);
|
||||||
|
|
||||||
|
// Must be a shadow hand weapon while a Shadow Hand stance is active
|
||||||
|
if (GetHasActiveStanceOfDiscipline(oInitiator, DISCIPLINE_SHADOW_HAND) && nWeap)
|
||||||
|
{
|
||||||
|
int nDamageType = GetWeaponDamageType(oWeapon);
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectDamageIncrease(IPGetDamageBonusConstantFromNumber(nDex), nDamageType)), oInitiator, 6.0);
|
||||||
|
SetLocalInt(oInitiator, "ShadowBladeDam", nDex);
|
||||||
|
DelayCommand(6.0, DeleteLocalInt(oInitiator, "ShadowBladeDam"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* void ShadowBlade(object oInitiator)
|
||||||
{
|
{
|
||||||
// Needs an active Shadow Hands stance
|
// Needs an active Shadow Hands stance
|
||||||
int nStance = GetHasActiveStance(oInitiator);
|
int nStance = GetHasActiveStance(oInitiator);
|
||||||
@@ -39,7 +55,7 @@ void ShadowBlade(object oInitiator)
|
|||||||
SetLocalInt(oInitiator, "ShadowBladeDam", nDex);
|
SetLocalInt(oInitiator, "ShadowBladeDam", nDex);
|
||||||
DelayCommand(6.0, DeleteLocalInt(oInitiator, "ShadowBladeDam"));
|
DelayCommand(6.0, DeleteLocalInt(oInitiator, "ShadowBladeDam"));
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
|
|
||||||
// Called on Heartbeat
|
// Called on Heartbeat
|
||||||
void RapidAssault(object oInitiator)
|
void RapidAssault(object oInitiator)
|
||||||
@@ -118,7 +134,26 @@ void BladeMeditation(object oInitiator)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Called on Heartbeat
|
// Called on Heartbeat
|
||||||
void IronheartAura(object oInitiator)
|
void IronheartAura(object oInitiator)
|
||||||
|
{
|
||||||
|
if (GetHasActiveStanceOfDiscipline(oInitiator, DISCIPLINE_IRON_HEART))
|
||||||
|
{
|
||||||
|
location lTarget = GetLocation(oInitiator);
|
||||||
|
object oAreaTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||||
|
while(GetIsObjectValid(oAreaTarget))
|
||||||
|
{
|
||||||
|
if(oAreaTarget != oInitiator &&
|
||||||
|
GetIsInMeleeRange(oInitiator, oAreaTarget) &&
|
||||||
|
GetIsFriend(oAreaTarget, oInitiator))
|
||||||
|
{
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectSavingThrowIncrease(SAVING_THROW_ALL, 2, SAVING_THROW_TYPE_ALL)), oAreaTarget, 6.0);
|
||||||
|
}
|
||||||
|
oAreaTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* void IronheartAura(object oInitiator)
|
||||||
{
|
{
|
||||||
int nDisc = GetDisciplineByManeuver(GetHasActiveStance(oInitiator));
|
int nDisc = GetDisciplineByManeuver(GetHasActiveStance(oInitiator));
|
||||||
if (nDisc == DISCIPLINE_IRON_HEART)
|
if (nDisc == DISCIPLINE_IRON_HEART)
|
||||||
@@ -138,10 +173,20 @@ void IronheartAura(object oInitiator)
|
|||||||
oAreaTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
oAreaTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
|
|
||||||
// Called on heartbeat
|
// Called on heartbeat
|
||||||
void ShadowTrickster(object oInitiator)
|
void ShadowTrickster(object oInitiator)
|
||||||
|
{
|
||||||
|
if (GetHasActiveStanceOfDiscipline(oInitiator, DISCIPLINE_SHADOW_HAND))
|
||||||
|
{
|
||||||
|
SetLocalInt(oInitiator, "ShadowTrickster", TRUE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DeleteLocalInt(oInitiator, "ShadowTrickster");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* void ShadowTrickster(object oInitiator)
|
||||||
{
|
{
|
||||||
// Needs an active Shadow Hands stance
|
// Needs an active Shadow Hands stance
|
||||||
int nStance = GetHasActiveStance(oInitiator);
|
int nStance = GetHasActiveStance(oInitiator);
|
||||||
@@ -152,7 +197,7 @@ void ShadowTrickster(object oInitiator)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
DeleteLocalInt(oInitiator, "ShadowTrickster");
|
DeleteLocalInt(oInitiator, "ShadowTrickster");
|
||||||
}
|
} */
|
||||||
|
|
||||||
// Called on Heartbeat
|
// Called on Heartbeat
|
||||||
void WhiteRavenDefense(object oInitiator)
|
void WhiteRavenDefense(object oInitiator)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -131,7 +131,7 @@ void DoPower(struct manifestation manif, object oMainTarget, int nDC, int nPen,
|
|||||||
nDamage = MetaPsionicsDamage(manif, nDieSize, nNumberOfDice, 0, 0, TRUE, FALSE);
|
nDamage = MetaPsionicsDamage(manif, nDieSize, nNumberOfDice, 0, 0, TRUE, FALSE);
|
||||||
// Target-specific stuff
|
// Target-specific stuff
|
||||||
nDamage = GetTargetSpecificChangesToDamage(oAreaTarget, manif.oManifester, nDamage, TRUE, FALSE);
|
nDamage = GetTargetSpecificChangesToDamage(oAreaTarget, manif.oManifester, nDamage, TRUE, FALSE);
|
||||||
eDamage = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
|
eDamage = EffectDamage(nDamage, DAMAGE_TYPE_FORCE);
|
||||||
|
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAreaTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oAreaTarget);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oAreaTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oAreaTarget);
|
||||||
|
|||||||
@@ -22,20 +22,81 @@
|
|||||||
You mentally push a foe, attempting to knock it prone and disarm it. The DC
|
You mentally push a foe, attempting to knock it prone and disarm it. The DC
|
||||||
of the discipline check for the target to resist being knocked down or
|
of the discipline check for the target to resist being knocked down or
|
||||||
disarmed is equal to your manifester level + you ability modified in your
|
disarmed is equal to your manifester level + you ability modified in your
|
||||||
manifesting stat. The Discipline checks to avoid being knocked down and
|
manifesting stat. The opposed combat checks to avoid being knocked down and
|
||||||
disarmed are rolled separately.
|
disarmed are rolled separately.
|
||||||
|
|
||||||
Augment: For every 2 additional power points spent, the DC of the Discipline
|
Augment: For every 2 additional power points spent, the DC of the Discipline
|
||||||
check is increased by 1.
|
check is increased by 1.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "psi_inc_psifunc"
|
#include "psi_inc_psifunc"
|
||||||
|
#include "psi_inc_pwresist"
|
||||||
|
#include "psi_spellhook"
|
||||||
|
#include "prc_inc_spells"
|
||||||
|
#include "prc_inc_combmove" // Add this include
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
if (!PsiPrePowerCastCode())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
object oManifester = OBJECT_SELF;
|
||||||
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
|
struct manifestation manif =
|
||||||
|
EvaluateManifestation(oManifester, oTarget,
|
||||||
|
PowerAugmentationProfile(PRC_NO_GENERIC_AUGMENTS,
|
||||||
|
2, PRC_UNLIMITED_AUGMENTATION
|
||||||
|
),
|
||||||
|
METAPSIONIC_EXTEND | METAPSIONIC_TWIN
|
||||||
|
);
|
||||||
|
|
||||||
|
if(manif.bCanManifest)
|
||||||
|
{
|
||||||
|
int nPen = GetPsiPenetration(oManifester);
|
||||||
|
int nAbi = GetAbilityModifier(GetAbilityOfClass(GetManifestingClass(oManifester)), oManifester)
|
||||||
|
+ manif.nTimesAugOptUsed_1;
|
||||||
|
effect eKnock = EffectKnockdown();
|
||||||
|
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget);
|
||||||
|
float fDuration = 6.0f * (manif.nManifesterLevel / 2);
|
||||||
|
if(manif.bExtend) fDuration *= 2;
|
||||||
|
|
||||||
|
// Set BAB override for combat maneuvers
|
||||||
|
SetLocalInt(oManifester, "BABOverride", manif.nManifesterLevel);
|
||||||
|
DelayCommand(1.0, DeleteLocalInt(oManifester, "BABOverride"));
|
||||||
|
|
||||||
|
// Let the AI know
|
||||||
|
PRCSignalSpellEvent(oTarget, TRUE, manif.nSpellID, oManifester);
|
||||||
|
|
||||||
|
// Handle Twin Power
|
||||||
|
int nRepeats = manif.bTwin ? 2 : 1;
|
||||||
|
for(; nRepeats > 0; nRepeats--)
|
||||||
|
{
|
||||||
|
// Check for Power Resistance
|
||||||
|
if(PRCMyResistPower(oManifester, oTarget, nPen))
|
||||||
|
{
|
||||||
|
// Attempt disarm using combat maneuver system
|
||||||
|
if(GetIsCreatureDisarmable(oTarget) && !GetPRCSwitch(PRC_PNP_DISARM) && GetIsObjectValid(oWeapon))
|
||||||
|
{
|
||||||
|
DoDisarm(oManifester, oTarget, nAbi, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt trip using combat maneuver system
|
||||||
|
DoTrip(oManifester, oTarget, nAbi, FALSE, FALSE, FALSE, nAbi);
|
||||||
|
|
||||||
|
} // end if - SR check
|
||||||
|
} // end for - Twin Power
|
||||||
|
} // end if - Successfull manifestation
|
||||||
|
}
|
||||||
|
|
||||||
|
/* #include "psi_inc_psifunc"
|
||||||
#include "psi_inc_pwresist"
|
#include "psi_inc_pwresist"
|
||||||
#include "psi_spellhook"
|
#include "psi_spellhook"
|
||||||
#include "prc_inc_spells"
|
#include "prc_inc_spells"
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{ */
|
||||||
/*
|
/*
|
||||||
Spellcast Hook Code
|
Spellcast Hook Code
|
||||||
Added 2004-11-02 by Stratovarius
|
Added 2004-11-02 by Stratovarius
|
||||||
@@ -44,7 +105,7 @@ void main()
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!PsiPrePowerCastCode())
|
/* if (!PsiPrePowerCastCode())
|
||||||
{
|
{
|
||||||
// If code within the PrePowerCastHook (i.e. UMD) reports FALSE, do not run this spell
|
// If code within the PrePowerCastHook (i.e. UMD) reports FALSE, do not run this spell
|
||||||
return;
|
return;
|
||||||
@@ -102,4 +163,4 @@ void main()
|
|||||||
}// end if - SR check
|
}// end if - SR check
|
||||||
}// end for - Twin Power
|
}// end for - Twin Power
|
||||||
}// end if - Successfull manifestation
|
}// end if - Successfull manifestation
|
||||||
}
|
} */
|
||||||
|
|||||||
@@ -61,13 +61,13 @@ void Sanctify()
|
|||||||
|
|
||||||
if(!Sanctify_Feat_Wrapper(iType, oPC, oItem)) return;
|
if(!Sanctify_Feat_Wrapper(iType, oPC, oItem)) return;
|
||||||
|
|
||||||
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1);
|
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_HOLY, IP_CONST_DAMAGEBONUS_1);
|
||||||
ip1 = TagItemProperty(ip1,"Sanctify1");
|
ip1 = TagItemProperty(ip1,"Sanctify1");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
||||||
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_HOLY, IP_CONST_DAMAGEBONUS_1d4);
|
||||||
ip2 = TagItemProperty(ip2,"Sanctify2");
|
ip2 = TagItemProperty(ip2,"Sanctify2");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
||||||
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_HOLY, IP_CONST_DAMAGEBONUS_1d4);
|
||||||
ip3 = TagItemProperty(ip3,"Sanctify3");
|
ip3 = TagItemProperty(ip3,"Sanctify3");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
||||||
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
||||||
@@ -108,9 +108,9 @@ void Sanctify()
|
|||||||
|
|
||||||
if(GetLocalInt(oItem,"SanctMar"))
|
if(GetLocalInt(oItem,"SanctMar"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"SanctMar");
|
DeleteLocalInt(oItem,"SanctMar");
|
||||||
}
|
}
|
||||||
@@ -144,17 +144,17 @@ void Sanctify()
|
|||||||
|
|
||||||
if ( GetLocalInt(oItem,"SanctMar"))
|
if ( GetLocalInt(oItem,"SanctMar"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"", IP_CONST_DAMAGETYPE_HOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"", IP_CONST_DAMAGETYPE_HOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"", IP_CONST_DAMAGETYPE_HOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"SanctMar");
|
DeleteLocalInt(oItem,"SanctMar");
|
||||||
}
|
}
|
||||||
if ( GetLocalInt(oItem2,"SanctMar"))
|
if ( GetLocalInt(oItem2,"SanctMar"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem2,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem2,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"",IP_CONST_DAMAGETYPE_HOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem2,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem2,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_HOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem2,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem2,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_HOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem2,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem2,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem2,"SanctMar");
|
DeleteLocalInt(oItem2,"SanctMar");
|
||||||
}
|
}
|
||||||
@@ -183,13 +183,13 @@ void Sanctify()
|
|||||||
|
|
||||||
if(Sanctify_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"SanctMar")))
|
if(Sanctify_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"SanctMar")))
|
||||||
{
|
{
|
||||||
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1);
|
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_HOLY,IP_CONST_DAMAGEBONUS_1);
|
||||||
ip1 = TagItemProperty(ip1,"Sanctify1");
|
ip1 = TagItemProperty(ip1,"Sanctify1");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
||||||
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_HOLY,IP_CONST_DAMAGEBONUS_1d4);
|
||||||
ip2 = TagItemProperty(ip2,"Sanctify2");
|
ip2 = TagItemProperty(ip2,"Sanctify2");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
||||||
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_HOLY,IP_CONST_DAMAGEBONUS_1d4);
|
||||||
ip3 = TagItemProperty(ip3,"Sanctify3");
|
ip3 = TagItemProperty(ip3,"Sanctify3");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
||||||
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
||||||
@@ -202,13 +202,13 @@ void Sanctify()
|
|||||||
iType= GetBaseItemType(oItem);
|
iType= GetBaseItemType(oItem);
|
||||||
if(Sanctify_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"SanctMar")))
|
if(Sanctify_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"SanctMar")))
|
||||||
{
|
{
|
||||||
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1);
|
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_HOLY,IP_CONST_DAMAGEBONUS_1);
|
||||||
ip1 = TagItemProperty(ip1,"Sanctify1");
|
ip1 = TagItemProperty(ip1,"Sanctify1");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
||||||
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_HOLY,IP_CONST_DAMAGEBONUS_1d4);
|
||||||
ip2 = TagItemProperty(ip2,"Sanctify2");
|
ip2 = TagItemProperty(ip2,"Sanctify2");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
||||||
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_HOLY,IP_CONST_DAMAGEBONUS_1d4);
|
||||||
ip3 = TagItemProperty(ip3,"Sanctify3");
|
ip3 = TagItemProperty(ip3,"Sanctify3");
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
||||||
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
||||||
@@ -269,7 +269,7 @@ void Vile()
|
|||||||
if(nAlign > 7)
|
if(nAlign > 7)
|
||||||
AdjustAlignment(oPC, ALIGNMENT_EVIL, 7, FALSE);
|
AdjustAlignment(oPC, ALIGNMENT_EVIL, 7, FALSE);
|
||||||
|
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_VILE,IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_EVIL),oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_EVIL),oItem,9999.0);
|
||||||
SetLocalInt(oItem,"USanctMar",1);
|
SetLocalInt(oItem,"USanctMar",1);
|
||||||
}
|
}
|
||||||
@@ -305,7 +305,7 @@ void Vile()
|
|||||||
|
|
||||||
if ( GetLocalInt(oItem,"USanctMar"))
|
if ( GetLocalInt(oItem,"USanctMar"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS,IP_CONST_DAMAGETYPE_VILE, IP_CONST_DAMAGEBONUS_1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_EVIL,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_EVIL,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"USanctMar");
|
DeleteLocalInt(oItem,"USanctMar");
|
||||||
}
|
}
|
||||||
@@ -339,7 +339,7 @@ void Vile()
|
|||||||
|
|
||||||
if (Vile_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"USanctMar")))
|
if (Vile_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"USanctMar")))
|
||||||
{
|
{
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_VILE, IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_EVIL),oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_EVIL),oItem,9999.0);
|
||||||
SetLocalInt(oItem,"USanctMar",1);
|
SetLocalInt(oItem,"USanctMar",1);
|
||||||
int nAlign = GetGoodEvilValue(OBJECT_SELF);
|
int nAlign = GetGoodEvilValue(OBJECT_SELF);
|
||||||
@@ -352,7 +352,7 @@ void Vile()
|
|||||||
iType= GetBaseItemType(oItem);
|
iType= GetBaseItemType(oItem);
|
||||||
if(Vile_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"USanctMar")))
|
if(Vile_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"USanctMar")))
|
||||||
{
|
{
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_VILE, IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
||||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_EVIL),oItem,9999.0);
|
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_EVIL),oItem,9999.0);
|
||||||
SetLocalInt(oItem,"USanctMar",1);
|
SetLocalInt(oItem,"USanctMar",1);
|
||||||
int nAlign = GetGoodEvilValue(OBJECT_SELF);
|
int nAlign = GetGoodEvilValue(OBJECT_SELF);
|
||||||
@@ -431,16 +431,16 @@ void main()
|
|||||||
|
|
||||||
if ( GetLocalInt(oItem,"SanctMar"))
|
if ( GetLocalInt(oItem,"SanctMar"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP, IP_CONST_ALIGNMENTGROUP_EVIL, IP_CONST_DAMAGEBONUS_1, 1,"", IP_CONST_DAMAGETYPE_HOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"SanctMar");
|
DeleteLocalInt(oItem,"SanctMar");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetLocalInt(oItem,"MartialStrik"))
|
if (GetLocalInt(oItem,"MartialStrik"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_2d6, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_2d6, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"MartialStrik");
|
DeleteLocalInt(oItem,"MartialStrik");
|
||||||
}
|
}
|
||||||
@@ -449,16 +449,16 @@ void main()
|
|||||||
|
|
||||||
if ( GetLocalInt(oItem,"SanctMar"))
|
if ( GetLocalInt(oItem,"SanctMar"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_1, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP,IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGEBONUS_1d4, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"SanctMar");
|
DeleteLocalInt(oItem,"SanctMar");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( GetLocalInt(oItem,"MartialStrik"))
|
if ( GetLocalInt(oItem,"MartialStrik"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_2d6, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGEBONUS_2d6, 1,"",IP_CONST_DAMAGETYPE_HOLY,DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_HOLY,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"MartialStrik");
|
DeleteLocalInt(oItem,"MartialStrik");
|
||||||
}
|
}
|
||||||
@@ -504,7 +504,7 @@ void main()
|
|||||||
*/
|
*/
|
||||||
if (GetLocalInt(oItem,"UnholyStrik"))
|
if (GetLocalInt(oItem,"UnholyStrik"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_GOOD,IP_CONST_DAMAGEBONUS_2d6, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_GOOD,IP_CONST_DAMAGEBONUS_2d6, 1,"", IP_CONST_DAMAGETYPE_UNHOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_EVIL,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_EVIL,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"UnholyStrik");
|
DeleteLocalInt(oItem,"UnholyStrik");
|
||||||
}
|
}
|
||||||
@@ -521,7 +521,7 @@ void main()
|
|||||||
*/
|
*/
|
||||||
if ( GetLocalInt(oItem,"UnholyStrik"))
|
if ( GetLocalInt(oItem,"UnholyStrik"))
|
||||||
{
|
{
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP,IP_CONST_ALIGNMENTGROUP_GOOD,IP_CONST_DAMAGEBONUS_2d6, 1,"",IP_CONST_DAMAGETYPE_DIVINE,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP, IP_CONST_ALIGNMENTGROUP_GOOD, IP_CONST_DAMAGEBONUS_2d6, 1,"", IP_CONST_DAMAGETYPE_UNHOLY, DURATION_TYPE_TEMPORARY);
|
||||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_EVIL,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
RemoveSpecificProperty(oItem,ITEM_PROPERTY_VISUALEFFECT,ITEM_VISUAL_EVIL,-1,1,"",-1,DURATION_TYPE_TEMPORARY);
|
||||||
DeleteLocalInt(oItem,"UnholyStrik");
|
DeleteLocalInt(oItem,"UnholyStrik");
|
||||||
}
|
}
|
||||||
@@ -544,8 +544,8 @@ void main()
|
|||||||
// Sanctify Strike
|
// Sanctify Strike
|
||||||
if (GetHasFeat(FEAT_SANCTIFYKISTRIKE, oPC) || GetLocalInt(oPC, "VoPFeat"+IntToString(FEAT_SANCTIFYKISTRIKE)))
|
if (GetHasFeat(FEAT_SANCTIFYKISTRIKE, oPC) || GetLocalInt(oPC, "VoPFeat"+IntToString(FEAT_SANCTIFYKISTRIKE)))
|
||||||
{
|
{
|
||||||
effect eEffect1 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_1,DAMAGE_TYPE_POSITIVE),ALIGNMENT_ALL,ALIGNMENT_EVIL);
|
effect eEffect1 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_1,DAMAGE_TYPE_HOLY),ALIGNMENT_ALL,ALIGNMENT_EVIL);
|
||||||
effect eEffect2 = VersusRacialTypeEffect(EffectDamageIncrease(DAMAGE_BONUS_1d4,DAMAGE_TYPE_POSITIVE),RACIAL_TYPE_OUTSIDER);
|
effect eEffect2 = VersusRacialTypeEffect(EffectDamageIncrease(DAMAGE_BONUS_1d4,DAMAGE_TYPE_HOLY),RACIAL_TYPE_OUTSIDER);
|
||||||
effect eLink = EffectLinkEffects(eEffect1,eEffect2);
|
effect eLink = EffectLinkEffects(eEffect1,eEffect2);
|
||||||
eLink = TagEffect(eLink,"SanctifyKiStrike");
|
eLink = TagEffect(eLink,"SanctifyKiStrike");
|
||||||
|
|
||||||
@@ -564,7 +564,7 @@ void main()
|
|||||||
// Holy Ki Strike
|
// Holy Ki Strike
|
||||||
if (GetHasFeat(FEAT_HOLYKISTRIKE, oPC) || GetLocalInt(oPC, "VoPFeat"+IntToString(FEAT_HOLYKISTRIKE)))
|
if (GetHasFeat(FEAT_HOLYKISTRIKE, oPC) || GetLocalInt(oPC, "VoPFeat"+IntToString(FEAT_HOLYKISTRIKE)))
|
||||||
{
|
{
|
||||||
effect eEffect1 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_2d6,DAMAGE_TYPE_POSITIVE),ALIGNMENT_ALL,ALIGNMENT_EVIL);
|
effect eEffect1 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_2d6, DAMAGE_TYPE_HOLY), ALIGNMENT_ALL, ALIGNMENT_EVIL);
|
||||||
eEffect1 = TagEffect(eEffect1,"HolyKiStrike");
|
eEffect1 = TagEffect(eEffect1,"HolyKiStrike");
|
||||||
|
|
||||||
//Remove any prior bonus to avoid duplication and remove Sanctify Ki Strike
|
//Remove any prior bonus to avoid duplication and remove Sanctify Ki Strike
|
||||||
|
|||||||
@@ -200,10 +200,33 @@ void main()
|
|||||||
else if(nEvent == EVENT_ONPLAYEREQUIPITEM)
|
else if(nEvent == EVENT_ONPLAYEREQUIPITEM)
|
||||||
{
|
{
|
||||||
oPC = GetItemLastEquippedBy();
|
oPC = GetItemLastEquippedBy();
|
||||||
oItem = GetItemLastEquipped();
|
oItem = GetItemLastEquipped();
|
||||||
if(DEBUG) DoDebug("prc_forsaker - OnEquip\n"
|
|
||||||
|
string sTag = GetTag(oItem);
|
||||||
|
string sResRef = GetResRef(oItem);
|
||||||
|
|
||||||
|
int nRace = GetRacialType(oPC);
|
||||||
|
|
||||||
|
if(DEBUG) DoDebug("prc_forsaker - OnEquip\n"
|
||||||
+ "oPC = " + DebugObject2Str(oPC) + "\n"
|
+ "oPC = " + DebugObject2Str(oPC) + "\n"
|
||||||
+ "oItem = " + DebugObject2Str(oItem) + "\n");
|
+ "oItem = " + DebugObject2Str(oItem) + "\n");
|
||||||
|
|
||||||
|
if(nRace == RACIAL_TYPE_WARFORGED
|
||||||
|
|| nRace == RACIAL_TYPE_WARFORGED_SCOUT
|
||||||
|
|| nRace == RACIAL_TYPE_WARFORGED_CHARGER)
|
||||||
|
{
|
||||||
|
if(sResRef == "prc_wf_admtbody"
|
||||||
|
|| sResRef == "prc_wf_compbody"
|
||||||
|
|| sResRef == "prc_wf_woodbody"
|
||||||
|
|| sResRef == "prc_wf_mithbody"
|
||||||
|
|| sResRef == "prc_wf_helmhead"
|
||||||
|
|| sResRef == "prc_wf_helmadmt"
|
||||||
|
|| sResRef == "prc_wf_helmwood"
|
||||||
|
|| sResRef == "prc_wf_helmmith")
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if(!GetHasFeat(FEAT_VOWOFPOVERTY,oPC))
|
if(!GetHasFeat(FEAT_VOWOFPOVERTY,oPC))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -98,5 +98,7 @@ void main()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SignalEvent(oPC, EventSpellCastAt(oTarget, PRCGetSpellId(), FALSE));
|
||||||
|
|
||||||
ForceNeedleAttack(oPC, oTarget, nBonus);
|
ForceNeedleAttack(oPC, oTarget, nBonus);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,18 @@
|
|||||||
#include "shd_inc_myst"
|
#include "shd_inc_myst"
|
||||||
#include "prc_inc_template"
|
#include "prc_inc_template"
|
||||||
|
|
||||||
|
void ClearAstarothCraftingFeat(object oPC)
|
||||||
|
{
|
||||||
|
effect eOld = GetFirstEffect(oPC);
|
||||||
|
while (GetIsEffectValid(eOld))
|
||||||
|
{
|
||||||
|
if (GetEffectTag(eOld) == "AstarothCraftingFeat")
|
||||||
|
{
|
||||||
|
RemoveEffect(oPC, eOld);
|
||||||
|
}
|
||||||
|
eOld = GetNextEffect(oPC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ResetLionSwiftness(object oPC)
|
void ResetLionSwiftness(object oPC)
|
||||||
{
|
{
|
||||||
@@ -347,6 +358,7 @@ void RestFinished(object oPC)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ResetLionSwiftness(oPC);
|
ResetLionSwiftness(oPC);
|
||||||
|
ClearAstarothCraftingFeat(oPC);
|
||||||
|
|
||||||
// Execute scripts hooked to this event for the player triggering it
|
// Execute scripts hooked to this event for the player triggering it
|
||||||
ExecuteAllScriptsHookedToEvent(oPC, EVENT_ONPLAYERREST_FINISHED);
|
ExecuteAllScriptsHookedToEvent(oPC, EVENT_ONPLAYERREST_FINISHED);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include "prc_alterations"
|
#include "prc_alterations"
|
||||||
#include "prc_inc_unarmed"
|
#include "prc_inc_unarmed"
|
||||||
|
#include "prc_inc_combat"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -98,12 +99,42 @@ void main()
|
|||||||
|
|
||||||
FloatingTextStringOnCreature("*Shou Disciple Abilities Disabled Due To Equipped Shield*", oPC);
|
FloatingTextStringOnCreature("*Shou Disciple Abilities Disabled Due To Equipped Shield*", oPC);
|
||||||
}
|
}
|
||||||
// This checks to make sure he doesnt have a non-light weapon equipped for Martial Flurry Light
|
|
||||||
|
// This checks to make sure he doesnt have a non-light weapon equipped for Martial Flurry Light
|
||||||
|
else if(StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseL)) > 2 || StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseR)) > 2)
|
||||||
|
{
|
||||||
|
PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_LIGHT);
|
||||||
|
FloatingTextStringOnCreature("*Martial Flurry Light Disabled Due to Equipped Weapons*", oPC);
|
||||||
|
}
|
||||||
|
// Check for Monk weapon interaction
|
||||||
|
else if(GetLevelByClass(CLASS_TYPE_MONK, oPC) && GetIsMonkWeaponTypeOrUnarmed(iBaseR))
|
||||||
|
{
|
||||||
|
PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_LIGHT);
|
||||||
|
PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_ALL);
|
||||||
|
FloatingTextStringOnCreature("*Martial Flurry Disabled Due to Monk Weapon Conflict*", oPC);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(GetLevelByClass(CLASS_TYPE_SHOU, oPC) > 1 )
|
||||||
|
{
|
||||||
|
RemoveDodge(oPC, oSkin);
|
||||||
|
DodgeBonus(oPC, oSkin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* // This checks to make sure he doesnt have a non-light weapon equipped for Martial Flurry Light
|
||||||
else if(StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseL)) > 2 || StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseR)) > 2)
|
else if(StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseL)) > 2 || StringToInt(Get2DACache("baseitems", "WeaponSize", iBaseR)) > 2)
|
||||||
{
|
{
|
||||||
PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_LIGHT);
|
PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_LIGHT);
|
||||||
FloatingTextStringOnCreature("*Martial Flurry Light Disabled Due to Equipped Weapons*", oPC);
|
FloatingTextStringOnCreature("*Martial Flurry Light Disabled Due to Equipped Weapons*", oPC);
|
||||||
}
|
}
|
||||||
|
// Check for Monk weapon interaction
|
||||||
|
if(GetLevelByClass(CLASS_TYPE_MONK, oPC) && GetIsMonkWeaponTypeOrUnarmed(iBaseR))
|
||||||
|
{
|
||||||
|
PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_LIGHT);
|
||||||
|
PRCRemoveEffectsFromSpell(oPC, SPELL_MARTIAL_FLURRY_ALL);
|
||||||
|
FloatingTextStringOnCreature("*Martial Flurry Disabled Due to Monk Weapon Conflict*", oPC);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(GetLevelByClass(CLASS_TYPE_SHOU, oPC) > 1 )
|
if(GetLevelByClass(CLASS_TYPE_SHOU, oPC) > 1 )
|
||||||
@@ -111,7 +142,7 @@ void main()
|
|||||||
RemoveDodge(oPC, oSkin);
|
RemoveDodge(oPC, oSkin);
|
||||||
DodgeBonus(oPC, oSkin);
|
DodgeBonus(oPC, oSkin);
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
|
|
||||||
//Evaluate The Unarmed Strike Feats
|
//Evaluate The Unarmed Strike Feats
|
||||||
//UnarmedFeats(oPC);
|
//UnarmedFeats(oPC);
|
||||||
|
|||||||
@@ -225,10 +225,10 @@ void main()
|
|||||||
//:: Setup Holy Touch extra damage vs evil
|
//:: Setup Holy Touch extra damage vs evil
|
||||||
object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
|
object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
|
||||||
|
|
||||||
effect eEffect1 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_1d6, DAMAGE_TYPE_DIVINE), 0, ALIGNMENT_EVIL);
|
effect eEffect1 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_1d6, DAMAGE_TYPE_HOLY), 0, ALIGNMENT_EVIL);
|
||||||
effect eEffect2 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_2, DAMAGE_TYPE_DIVINE), 0, ALIGNMENT_EVIL);
|
effect eEffect2 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_2, DAMAGE_TYPE_HOLY), 0, ALIGNMENT_EVIL);
|
||||||
eEffect2 = VersusRacialTypeEffect(eEffect2, RACIAL_TYPE_OUTSIDER);
|
eEffect2 = VersusRacialTypeEffect(eEffect2, RACIAL_TYPE_OUTSIDER);
|
||||||
effect eEffect3 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_2, DAMAGE_TYPE_DIVINE), 0, ALIGNMENT_EVIL);
|
effect eEffect3 = VersusAlignmentEffect(EffectDamageIncrease(DAMAGE_BONUS_2, DAMAGE_TYPE_HOLY), 0, ALIGNMENT_EVIL);
|
||||||
eEffect3 = VersusRacialTypeEffect(eEffect3, RACIAL_TYPE_UNDEAD);
|
eEffect3 = VersusRacialTypeEffect(eEffect3, RACIAL_TYPE_UNDEAD);
|
||||||
effect eLink = EffectLinkEffects(eEffect1, eEffect2);
|
effect eLink = EffectLinkEffects(eEffect1, eEffect2);
|
||||||
eLink = EffectLinkEffects(eLink, eEffect3);
|
eLink = EffectLinkEffects(eLink, eEffect3);
|
||||||
@@ -316,12 +316,12 @@ void main()
|
|||||||
if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_OUTSIDER ||
|
if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_OUTSIDER ||
|
||||||
MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
|
MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
|
||||||
{
|
{
|
||||||
eDam = EffectDamage(d8(1), DAMAGE_TYPE_DIVINE);
|
eDam = EffectDamage(d8(1), DAMAGE_TYPE_HOLY);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
eDam = EffectDamage(d6(1), DAMAGE_TYPE_DIVINE);
|
eDam = EffectDamage(d6(1), DAMAGE_TYPE_HOLY);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_NECROMANCY);
|
|||||||
}
|
}
|
||||||
//nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE);
|
//nDamage += ApplySpellBetrayalStrikeDamage(oTarget, OBJECT_SELF, FALSE);
|
||||||
//Set the damage effect
|
//Set the damage effect
|
||||||
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_MAGICAL);
|
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DESSICATION);
|
||||||
// Apply effects to the currently selected target.
|
// Apply effects to the currently selected target.
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
PRCBonusDamage(oTarget);
|
PRCBonusDamage(oTarget);
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
|
|||||||
|
|
||||||
//Apply the MIRV and damage effect
|
//Apply the MIRV and damage effect
|
||||||
nDam += SpellDamagePerDice(OBJECT_SELF, 1);
|
nDam += SpellDamagePerDice(OBJECT_SELF, 1);
|
||||||
effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL);
|
effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FORCE);
|
||||||
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
||||||
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0f,FALSE));
|
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget,0.0f,FALSE));
|
||||||
DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
|
DelayCommand(fDelay2, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent)
|
|||||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnock, oTarget, 3.0);
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eKnock, oTarget, 3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL);
|
effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FORCE);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DESTRUCTION), oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DESTRUCTION), oTarget);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,19 @@ void main()
|
|||||||
|
|
||||||
|
|
||||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation());
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation());
|
||||||
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 9.14f, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE );
|
|
||||||
|
int nTargetsAffected = 0;
|
||||||
|
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 9.14f, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE);
|
||||||
|
|
||||||
|
while (GetIsObjectValid(oTarget) && nTargetsAffected < nCasterLevel)
|
||||||
|
{
|
||||||
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_REMOVE_CURSE));
|
||||||
|
DispelLoop(oTarget, nCasterLevel);
|
||||||
|
nTargetsAffected++;
|
||||||
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, 9.14f, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 9.14f, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE );
|
||||||
|
|
||||||
//Set up for loop
|
//Set up for loop
|
||||||
int i = nCasterLevel;
|
int i = nCasterLevel;
|
||||||
@@ -61,7 +73,7 @@ void main()
|
|||||||
DispelLoop(oTarget, nCasterLevel);
|
DispelLoop(oTarget, nCasterLevel);
|
||||||
i--;
|
i--;
|
||||||
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE,lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE);
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE,lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE);
|
||||||
}
|
} */
|
||||||
PRCSetSchool();
|
PRCSetSchool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ Halt - The target stands in place and takes no action for one round.
|
|||||||
|
|
||||||
Author: Stratovarius
|
Author: Stratovarius
|
||||||
Created: 29/4/06
|
Created: 29/4/06
|
||||||
|
|
||||||
|
Fixed by: Jaysyn
|
||||||
|
Date: 2026-05-29 00:57:05
|
||||||
*/
|
*/
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
@@ -61,12 +64,15 @@ void main()
|
|||||||
|
|
||||||
if (!PRCDoResistSpell(OBJECT_SELF, oTarget, nCaster+SPGetPenetr()) && PRCGetIsAliveCreature(oTarget))
|
if (!PRCDoResistSpell(OBJECT_SELF, oTarget, nCaster+SPGetPenetr()) && PRCGetIsAliveCreature(oTarget))
|
||||||
{
|
{
|
||||||
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
|
if(!GetIsImmune(oTarget, IMMUNITY_TYPE_MIND_SPELLS))
|
||||||
{
|
{
|
||||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration), TRUE,-1,nCaster);
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
{
|
||||||
DoCommandSpell(oCaster, oTarget, nSpellId, nDuration, nCaster);
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration), TRUE,-1,nCaster);
|
||||||
}
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
|
DoCommandSpell(oCaster, oTarget, nSpellId, nDuration, nCaster);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PRCSetSchool();
|
PRCSetSchool();
|
||||||
|
|||||||
@@ -133,13 +133,13 @@ void DarkLoop(object oTarget, object oPC, int nMetaMagic)
|
|||||||
if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_GOOD)
|
if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_GOOD)
|
||||||
{
|
{
|
||||||
int nDam = PRCMaximizeOrEmpower(6, 2, nMetaMagic) + SpellDamagePerDice(oPC, 2);
|
int nDam = PRCMaximizeOrEmpower(6, 2, nMetaMagic) + SpellDamagePerDice(oPC, 2);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_DIVINE), oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_UNHOLY), oTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_NEUTRAL)
|
else if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_NEUTRAL)
|
||||||
{
|
{
|
||||||
int nDam = PRCMaximizeOrEmpower(6, 1, nMetaMagic) + SpellDamagePerDice(oPC, 1);
|
int nDam = PRCMaximizeOrEmpower(6, 1, nMetaMagic) + SpellDamagePerDice(oPC, 1);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_DIVINE), oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_UNHOLY), oTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ void main()
|
|||||||
int nDice = nCasterLevel > 10 ? 10 : nCasterLevel;
|
int nDice = nCasterLevel > 10 ? 10 : nCasterLevel;
|
||||||
|
|
||||||
DoBolt (nCasterLevel,4, 0, nDice, VFX_BEAM_MIND, VFX_IMP_MAGBLUE,
|
DoBolt (nCasterLevel,4, 0, nDice, VFX_BEAM_MIND, VFX_IMP_MAGBLUE,
|
||||||
DAMAGE_TYPE_MAGICAL, SAVING_THROW_TYPE_SPELL,
|
DAMAGE_TYPE_FORCE, SAVING_THROW_TYPE_SPELL,
|
||||||
SPELL_SCHOOL_EVOCATION, TRUE, GetSpellId());
|
SPELL_SCHOOL_EVOCATION, TRUE, GetSpellId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ void SendMissileBomb(object oCaster, object oTarget, float fDelay=0.0, float fTi
|
|||||||
if (nMetaMagic == METAMAGIC_EMPOWER)
|
if (nMetaMagic == METAMAGIC_EMPOWER)
|
||||||
nDam += nDam/2;
|
nDam += nDam/2;
|
||||||
|
|
||||||
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oLoop, nDam, DAMAGE_TYPE_MAGICAL), oLoop));
|
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oLoop, nDam, DAMAGE_TYPE_FORCE), oLoop));
|
||||||
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_IMP_MAGBLUE, FALSE, 4.0f), oLoop));
|
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_IMP_MAGBLUE, FALSE, 4.0f), oLoop));
|
||||||
}
|
}
|
||||||
else if (!PRCDoResistSpell(oCaster, oLoop, nPenetr, fDelay))
|
else if (!PRCDoResistSpell(oCaster, oLoop, nPenetr, fDelay))
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ void main()
|
|||||||
PRCSignalSpellEvent(oTarget, TRUE, nSpellId);
|
PRCSignalSpellEvent(oTarget, TRUE, nSpellId);
|
||||||
|
|
||||||
//Roll damage for each target
|
//Roll damage for each target
|
||||||
int nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_MAGICAL, nDice, 6);
|
int nDamage = PRCGetMetaMagicDamage(DAMAGE_TYPE_FORCE, nDice, 6);
|
||||||
nDamage += SpellDamagePerDice(oCaster, nDice);
|
nDamage += SpellDamagePerDice(oCaster, nDice);
|
||||||
// Succeeded on the save
|
// Succeeded on the save
|
||||||
if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oCaster)))
|
if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oCaster)))
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
|
|||||||
fTime += fDelay2;
|
fTime += fDelay2;
|
||||||
|
|
||||||
//Set damage effect
|
//Set damage effect
|
||||||
effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL);
|
effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FORCE);
|
||||||
//Apply the MIRV and damage effect
|
//Apply the MIRV and damage effect
|
||||||
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
DelayCommand(fTime, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
||||||
|
|
||||||
|
|||||||
@@ -85,8 +85,7 @@ void main()
|
|||||||
int nVile = nDam/2;
|
int nVile = nDam/2;
|
||||||
int nNorm = (nDam - nVile);
|
int nNorm = (nDam - nVile);
|
||||||
|
|
||||||
//Vile damage is currently being applied as Positive damage
|
effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_VILE);
|
||||||
effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_POSITIVE);
|
|
||||||
effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL);
|
effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget);
|
||||||
|
|||||||
@@ -96,8 +96,8 @@ void main()
|
|||||||
nDam += SpellDamagePerDice(oPC, nLevel);
|
nDam += SpellDamagePerDice(oPC, nLevel);
|
||||||
int nVile = nDam/2;
|
int nVile = nDam/2;
|
||||||
int nNorm = (nDam - nVile);
|
int nNorm = (nDam - nVile);
|
||||||
//Vile damage is currently being applied as Positive damage
|
|
||||||
effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_POSITIVE);
|
effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_VILE);
|
||||||
effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL);
|
effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget);
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
#include "prc_inc_switch"
|
#include "prc_inc_switch"
|
||||||
#include "inc_utility"
|
#include "inc_utility"
|
||||||
#include "prc_add_spell_dc"
|
#include "prc_add_spell_dc"
|
||||||
|
#include "prc_misc_const"
|
||||||
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
@@ -110,8 +111,8 @@ void main()
|
|||||||
nDam += SpellDamagePerDice(oPC, nLevel);
|
nDam += SpellDamagePerDice(oPC, nLevel);
|
||||||
int nVile = nDam/2;
|
int nVile = nDam/2;
|
||||||
int nNorm = (nDam - nVile);
|
int nNorm = (nDam - nVile);
|
||||||
//Vile damage is currently being applied as Positive damage
|
|
||||||
effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_POSITIVE);
|
effect eVileDam = PRCEffectDamage(oTarget, nVile, DAMAGE_TYPE_VILE);
|
||||||
effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL);
|
effect eNormDam = PRCEffectDamage(oTarget, nNorm, DAMAGE_TYPE_MAGICAL);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVileDam, oTarget);
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eNormDam, oTarget);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ void main()
|
|||||||
if(nTouch)
|
if(nTouch)
|
||||||
{
|
{
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PULSE_BOMB), oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PULSE_BOMB), oTarget);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FORCE), oTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
//:: Shelgarn's Persistent Blade
|
//:: Shelgarn's Persistent Blade
|
||||||
//:: X2_S0_PersBlde
|
//:: x2_s0_persblde
|
||||||
//:: Copyright (c) 2001 Bioware Corp.
|
//:: Copyright (c) 2001 Bioware Corp.
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
/*
|
/*
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
//:: Last Updated By: Georg Zoeller, Aug 2003
|
//:: Last Updated By: Georg Zoeller, Aug 2003
|
||||||
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
|
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
|
||||||
#include "prc_inc_spells"
|
#include "prc_inc_spells"
|
||||||
|
#include "inc_spirit_weapn"
|
||||||
|
|
||||||
//Creates the weapon that the creature will be using.
|
//Creates the weapon that the creature will be using.
|
||||||
void spellsCreateItemForSummoned(object oCaster, float fDuration, int nClass)
|
void spellsCreateItemForSummoned(object oCaster, float fDuration, int nClass)
|
||||||
@@ -29,7 +30,8 @@ void spellsCreateItemForSummoned(object oCaster, float fDuration, int nClass)
|
|||||||
nStat = 1;
|
nStat = 1;
|
||||||
|
|
||||||
object oWeapon;
|
object oWeapon;
|
||||||
string sWeapon = "NW_WSWDG001";
|
//string sWeapon = "NW_WSWDG001";
|
||||||
|
string sWeapon = "PRC_PERBLADE01";
|
||||||
object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oCaster);
|
object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oCaster);
|
||||||
int i = 1;
|
int i = 1;
|
||||||
while(GetIsObjectValid(oSummon))
|
while(GetIsObjectValid(oSummon))
|
||||||
@@ -54,7 +56,118 @@ void spellsCreateItemForSummoned(object oCaster, float fDuration, int nClass)
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
if(!X2PreSpellCastCode()) return;
|
//:: Check the Spellhook
|
||||||
|
if (!X2PreSpellCastCode()) return;
|
||||||
|
|
||||||
|
//:: Set the Spell School
|
||||||
|
PRCSetSchool(GetSpellSchool(PRCGetSpellId()));
|
||||||
|
|
||||||
|
int nRunEvent = GetRunningEvent();
|
||||||
|
|
||||||
|
if (nRunEvent == EVENT_NPC_ONSPELLCASTAT)
|
||||||
|
{
|
||||||
|
// Get the caster of the spell
|
||||||
|
object oCaster = GetLastSpellCaster();
|
||||||
|
int nCasterLevel = PRCGetCasterLevel(oCaster);
|
||||||
|
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: EVENT_NPC_ONSPELLCASTAT triggered.");
|
||||||
|
|
||||||
|
// Get the spell ID
|
||||||
|
int nSpellId = GetLastSpell();
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Dispel spell ID: " + IntToString(nSpellId));
|
||||||
|
|
||||||
|
// Check if the spell ID is a dispel spell
|
||||||
|
if (nSpellId == SPELL_DISPEL_MAGIC || nSpellId == SPELL_LESSER_DISPEL || nSpellId == SPELL_GREATER_DISPELLING || nSpellId == SPELL_MORDENKAINENS_DISJUNCTION
|
||||||
|
|| nSpellId == SPELL_SLASHING_DISPEL || nSpellId == SPELL_DISPELLING_TOUCH || nSpellId == SPELL_PIXIE_DISPEL || nSpellId == SPELL_GREAT_WALL_OF_DISPEL)
|
||||||
|
{
|
||||||
|
// Get the target of the spell
|
||||||
|
object oTarget = OBJECT_SELF;
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Spell targeted at: " + GetName(oTarget));
|
||||||
|
|
||||||
|
// Check if the target is OBJECT_SELF
|
||||||
|
if (oTarget == OBJECT_SELF)
|
||||||
|
{
|
||||||
|
// Retrieve the original caster of the Persistent Blade spell from oSummon
|
||||||
|
object oSummon = OBJECT_SELF;
|
||||||
|
object oOriginalCaster = GetLocalObject(oSummon, "MY_CASTER");
|
||||||
|
|
||||||
|
// Ensure oOriginalCaster is valid
|
||||||
|
if (GetIsObjectValid(oOriginalCaster))
|
||||||
|
{
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Original caster found. Caster level: " + IntToString(GetCasterLevel(oOriginalCaster)));
|
||||||
|
|
||||||
|
// Determine the DC for the dispel check
|
||||||
|
int nDispelDC = 11 + GetCasterLevel(oOriginalCaster);
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Dispel DC: " + IntToString(nDispelDC));
|
||||||
|
|
||||||
|
// Determine the maximum cap for the dispel check
|
||||||
|
int nDispelCap = 0;
|
||||||
|
if (nSpellId == SPELL_LESSER_DISPEL)
|
||||||
|
nDispelCap = 5;
|
||||||
|
else if (nSpellId == SPELL_DISPEL_MAGIC || nSpellId == SPELL_SLASHING_DISPEL || nSpellId == SPELL_DISPELLING_TOUCH || nSpellId == SPELL_PIXIE_DISPEL || nSpellId == INVOKE_VORACIOUS_DISPELLING)
|
||||||
|
nDispelCap = 10;
|
||||||
|
else if (nSpellId == SPELL_GREATER_DISPELLING || nSpellId == SPELL_GREAT_WALL_OF_DISPEL)
|
||||||
|
nDispelCap = 15;
|
||||||
|
else if (nSpellId == SPELL_MORDENKAINENS_DISJUNCTION)
|
||||||
|
nDispelCap = 0; // No cap for Disjunction
|
||||||
|
|
||||||
|
// Roll for the dispel check
|
||||||
|
int nDispelRoll = d20();
|
||||||
|
int nCappedCasterLevel = nCasterLevel;
|
||||||
|
|
||||||
|
if (nDispelCap > 0 && nCasterLevel > nDispelCap)
|
||||||
|
nCappedCasterLevel = nDispelCap;
|
||||||
|
|
||||||
|
nDispelRoll += nCappedCasterLevel;
|
||||||
|
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Dispel roll: " + IntToString(nDispelRoll) + " (Caster Level: " + IntToString(nCappedCasterLevel) + ", Cap: " + IntToString(nDispelCap) + ")");
|
||||||
|
|
||||||
|
// Compare the dispel result to the DC
|
||||||
|
if (nDispelRoll >= nDispelDC)
|
||||||
|
{
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Dispel check succeeded.");
|
||||||
|
|
||||||
|
// Dispel succeeded, destroy oSummon and the item in its right hand
|
||||||
|
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oSummon);
|
||||||
|
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Dispel Magic succeeded. Destroying Persistent Blade and its right hand item.");
|
||||||
|
|
||||||
|
// Set flags and destroy objects with delays
|
||||||
|
SetPlotFlag(oWeapon, FALSE);
|
||||||
|
SetPlotFlag(oSummon, FALSE);
|
||||||
|
SetImmortal(oSummon, FALSE);
|
||||||
|
|
||||||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_DISPEL), oSummon);
|
||||||
|
|
||||||
|
// Destroy the weapon and summon with delays
|
||||||
|
if (GetIsObjectValid(oWeapon))
|
||||||
|
{
|
||||||
|
DelayCommand(0.5f, DestroyObject(oWeapon));
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Persistent Blade destruction scheduled.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: No weapon found in right hand.");
|
||||||
|
}
|
||||||
|
|
||||||
|
DelayCommand(1.0f, DestroyObject(oSummon));
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Persistent Blade Summon destruction scheduled.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RegisterSummonEvents(oSummon);
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Dispel check failed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(DEBUG) DoDebug("x2_s0_persblde: Original caster not found.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
|
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -5393,6 +5393,24 @@ Base Critical Threat: x2
|
|||||||
Base Damage Type: Piercing
|
Base Damage Type: Piercing
|
||||||
Weapon Size: Small
|
Weapon Size: Small
|
||||||
Feats Required: Simple</entry>
|
Feats Required: Simple</entry>
|
||||||
|
<entry id="43120" lang="en" sex="m">Sanctified</entry>
|
||||||
|
<entry id="43121" lang="en" sex="m">Sanctified Damage</entry>
|
||||||
|
<entry id="43122" lang="en" sex="m"><CUSTOM0> Sanctified</entry>
|
||||||
|
<entry id="43123" lang="en" sex="m">Holy</entry>
|
||||||
|
<entry id="43124" lang="en" sex="m">Holy Damage</entry>
|
||||||
|
<entry id="43125" lang="en" sex="m"><CUSTOM0> Holy</entry>
|
||||||
|
<entry id="43126" lang="en" sex="m">Unholy</entry>
|
||||||
|
<entry id="43127" lang="en" sex="m">Unholy Damage</entry>
|
||||||
|
<entry id="43128" lang="en" sex="m"><CUSTOM0> Unholy</entry>
|
||||||
|
<entry id="43129" lang="en" sex="m">Falling</entry>
|
||||||
|
<entry id="43130" lang="en" sex="m">Falling Damage</entry>
|
||||||
|
<entry id="43131" lang="en" sex="m"><CUSTOM0> Falling</entry>
|
||||||
|
<entry id="43132" lang="en" sex="m">Ballistic</entry>
|
||||||
|
<entry id="43133" lang="en" sex="m">Ballistic Damage</entry>
|
||||||
|
<entry id="43134" lang="en" sex="m"><CUSTOM0> Ballistic</entry>
|
||||||
|
<entry id="43135" lang="en" sex="m">Dessication</entry>
|
||||||
|
<entry id="43136" lang="en" sex="m">Dessication Damage</entry>
|
||||||
|
<entry id="43137" lang="en" sex="m"><CUSTOM0> Dessication</entry>
|
||||||
<entry id="43138" lang="en" sex="m">Untyped</entry>
|
<entry id="43138" lang="en" sex="m">Untyped</entry>
|
||||||
<entry id="43139" lang="en" sex="m">Untyped Damage</entry>
|
<entry id="43139" lang="en" sex="m">Untyped Damage</entry>
|
||||||
<entry id="43140" lang="en" sex="m"><CUSTOM0> Untyped</entry>
|
<entry id="43140" lang="en" sex="m"><CUSTOM0> Untyped</entry>
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user