2025/05/27 Early Update

Fixed errant domains showing up as epic bonus feats in several class lists.
Allow Lasher's Improved Trip to allow FEATOR entry Vae School.
Updated filends.
Add ProcessPreparedSpellLevel() by TiredByFirelight.
Endure Exposure should allow multiple castings.
Updated Bloodclaw Master's Scent ability.
Avalanche of Blades should stop after the first miss now.
This commit is contained in:
Jaysyn904 2025-05-27 08:16:58 -04:00
parent 8a034b0da0
commit 7f50d2f498
18 changed files with 248 additions and 72 deletions

View File

@ -82,7 +82,7 @@
78 FEAT_EPIC_TOUGHNESS_8 761 1 11 0 78 FEAT_EPIC_TOUGHNESS_8 761 1 11 0
79 FEAT_EPIC_TOUGHNESS_9 762 1 11 0 79 FEAT_EPIC_TOUGHNESS_9 762 1 11 0
80 FEAT_EPIC_TOUGHNESS_10 763 1 11 0 80 FEAT_EPIC_TOUGHNESS_10 763 1 11 0
81 FEAT_EPIC_REFLEXES 4058 1 11 0 81 FEAT_EPIC_REFLEXES 585 1 11 0
82 FEAT_EPIC_SKILL_FOCUS_RIDE 3038 1 11 0 82 FEAT_EPIC_SKILL_FOCUS_RIDE 3038 1 11 0
83 FEAT_EPIC_SKILL_FOCUS_JUMP 3040 1 11 0 83 FEAT_EPIC_SKILL_FOCUS_JUMP 3040 1 11 0
84 FEAT_EPIC_SKILL_FOCUS_SENSE_MOTIVE 3042 1 11 0 84 FEAT_EPIC_SKILL_FOCUS_SENSE_MOTIVE 3042 1 11 0

View File

@ -173,7 +173,7 @@
169 FocusedSpellPenetrAbj 3135 1 2 0 169 FocusedSpellPenetrAbj 3135 1 2 0
170 FEAT_EPIC_LEADERSHIP 4366 1 2 0 170 FEAT_EPIC_LEADERSHIP 4366 1 2 0
171 FEAT_LEGENDARY_COMMANDER 4367 1 2 0 171 FEAT_LEGENDARY_COMMANDER 4367 1 2 0
172 FEAT_EPIC_PROWESS 4056 1 2 0 172 FEAT_EPIC_PROWESS 584 1 2 0
173 FEAT_EPIC_REPUTATION 586 1 2 0 173 FEAT_EPIC_REPUTATION 586 1 2 0
174 FAST_HEALING_1 4145 1 2 0 174 FAST_HEALING_1 4145 1 2 0
175 FAST_HEALING_2 4146 1 2 0 175 FAST_HEALING_2 4146 1 2 0

View File

@ -45,7 +45,7 @@
41 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0 41 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0
42 FEAT_EPIC_PERFECT_HEALTH 747 1 -1 0 42 FEAT_EPIC_PERFECT_HEALTH 747 1 -1 0
43 FEAT_Improved_ManyShot 3350 1 -1 0 43 FEAT_Improved_ManyShot 3350 1 -1 0
44 FEAT_EPIC_PROWESS 4056 1 -1 0 44 FEAT_EPIC_PROWESS 584 1 -1 0
45 FAST_HEALING_1 4145 1 -1 0 45 FAST_HEALING_1 4145 1 -1 0
46 FAST_HEALING_2 4146 1 -1 0 46 FAST_HEALING_2 4146 1 -1 0
47 FAST_HEALING_3 4147 1 -1 0 47 FAST_HEALING_3 4147 1 -1 0

View File

@ -126,7 +126,7 @@
122 FEAT_EPIC_MONK 971 3 21 0 122 FEAT_EPIC_MONK 971 3 21 0
123 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1 123 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1
124 LegendaryWrestler 5173 1 -1 0 124 LegendaryWrestler 5173 1 -1 0
125 FEAT_EPIC_PROWESS 4056 1 -1 0 125 FEAT_EPIC_PROWESS 584 1 -1 0
126 FAST_HEALING_1 4145 1 -1 0 126 FAST_HEALING_1 4145 1 -1 0
127 FAST_HEALING_2 4146 1 -1 0 127 FAST_HEALING_2 4146 1 -1 0
128 FAST_HEALING_3 4147 1 -1 0 128 FAST_HEALING_3 4147 1 -1 0

View File

@ -74,8 +74,8 @@
70 FEAT_MANYSHOT 3306 1 -1 1 70 FEAT_MANYSHOT 3306 1 -1 1
71 FEAT_IMP_MANYSHOT 3350 1 -1 1 71 FEAT_IMP_MANYSHOT 3350 1 -1 1
72 FEAT_LINGERING_DAMAGE 3099 1 -1 0 72 FEAT_LINGERING_DAMAGE 3099 1 -1 0
73 FEAT_EPIC_PROWESS 4056 1 -1 0 73 FEAT_EPIC_PROWESS 584 1 -1 0
74 FEAT_EPIC_REFLEXES 4058 1 -1 0 74 FEAT_EPIC_REFLEXES 585 1 -1 0
75 FEAT_EPIC_GREAT_DEXTERITY_1 784 1 -1 0 75 FEAT_EPIC_GREAT_DEXTERITY_1 784 1 -1 0
76 FEAT_EPIC_GREAT_DEXTERITY_2 785 1 -1 0 76 FEAT_EPIC_GREAT_DEXTERITY_2 785 1 -1 0
77 FEAT_EPIC_GREAT_DEXTERITY_3 786 1 -1 0 77 FEAT_EPIC_GREAT_DEXTERITY_3 786 1 -1 0

View File

@ -250,8 +250,8 @@
246 Epic_RebindSoulmeld_Heart 9011 1 -1 1 246 Epic_RebindSoulmeld_Heart 9011 1 -1 1
247 Epic_RebindSoulmeld_Soul 9012 1 -1 1 247 Epic_RebindSoulmeld_Soul 9012 1 -1 1
248 Epic_RebindSoulmeld_Totem 9013 1 -1 1 248 Epic_RebindSoulmeld_Totem 9013 1 -1 1
249 FEAT_EPIC_PROWESS 4056 1 -1 0 249 FEAT_EPIC_PROWESS 584 1 -1 0
250 FEAT_EPIC_REFLEXES 4058 1 -1 0 250 FEAT_EPIC_REFLEXES 585 1 -1 0
251 FEAT_EPIC_ENERGY_RESISTANCE_COLD_1 533 1 -1 0 251 FEAT_EPIC_ENERGY_RESISTANCE_COLD_1 533 1 -1 0
252 FEAT_EPIC_ENERGY_RESISTANCE_COLD_2 534 1 -1 0 252 FEAT_EPIC_ENERGY_RESISTANCE_COLD_2 534 1 -1 0
253 FEAT_EPIC_ENERGY_RESISTANCE_COLD_3 535 1 -1 0 253 FEAT_EPIC_ENERGY_RESISTANCE_COLD_3 535 1 -1 0

View File

@ -110,7 +110,7 @@
106 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1 106 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1
107 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0 107 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0
108 FEAT_EPIC_DODGE 856 1 -1 0 108 FEAT_EPIC_DODGE 856 1 -1 0
109 FEAT_EPIC_PROWESS 4056 1 -1 0 109 FEAT_EPIC_PROWESS 584 1 -1 0
110 FAST_HEALING_1 4145 1 -1 0 110 FAST_HEALING_1 4145 1 -1 0
111 FAST_HEALING_2 4146 1 -1 0 111 FAST_HEALING_2 4146 1 -1 0
112 FAST_HEALING_3 4147 1 -1 0 112 FAST_HEALING_3 4147 1 -1 0

View File

@ -91,8 +91,8 @@
87 FEAT_EPIC_SKILL_FOCUS_BLUFF 917 1 -1 0 87 FEAT_EPIC_SKILL_FOCUS_BLUFF 917 1 -1 0
88 FEAT_EPIC_SKILL_FOCUS_INTIMIDATE 918 1 -1 0 88 FEAT_EPIC_SKILL_FOCUS_INTIMIDATE 918 1 -1 0
89 FEAT_LINGERING_DAMAGE 3099 1 -1 0 89 FEAT_LINGERING_DAMAGE 3099 1 -1 0
90 FEAT_EPIC_PROWESS 4056 1 -1 0 90 FEAT_EPIC_PROWESS 584 1 -1 0
91 FEAT_EPIC_REFLEXES 4058 1 -1 0 91 FEAT_EPIC_REFLEXES 585 1 -1 0
92 FEAT_EPIC_SKILL_FOCUS_RIDE 3038 1 -1 0 92 FEAT_EPIC_SKILL_FOCUS_RIDE 3038 1 -1 0
93 FEAT_EPIC_SKILL_FOCUS_JUMP 3040 1 -1 0 93 FEAT_EPIC_SKILL_FOCUS_JUMP 3040 1 -1 0
94 FEAT_EPIC_SKILL_FOCUS_SENSE_MOTIVE 3042 1 -1 0 94 FEAT_EPIC_SKILL_FOCUS_SENSE_MOTIVE 3042 1 -1 0

View File

@ -1,49 +1,65 @@
2DA V2.0 2DA V2.0
LABEL ReqType ReqParam1 ReqParam2 LABEL ReqType ReqParam1 ReqParam2
0 AttackBonus BAB 23 **** 0 AttackBonus BAB 23 ****
1 Intimidate SKILL 24 15 1 Intimidate SKILL 24 15
2 ImprovedBullrush FEAT 2806 **** 2 ImprovedBullrush FEAT 2806 ****
3 GreatCleave FEAT 391 **** 3 GreatCleave FEAT 391 ****
4 LightngRef FEAT 24 **** 4 LightngRef FEAT 24 ****
5 ImpCritDagger FEATOR 52 **** 5 ImpCritDagger FEATOR 52 ****
6 ImpCritDart FEATOR 53 **** 6 ImpCritDart FEATOR 53 ****
7 ImpCritHXBow FEATOR 54 **** 7 ImpCritHXBow FEATOR 54 ****
8 ImpCritLgXBow FEATOR 55 **** 8 ImpCritLgXBow FEATOR 55 ****
9 ImpCritLgMace FEATOR 56 **** 9 ImpCritLgMace FEATOR 56 ****
10 ImpCritMorn FEATOR 57 **** 10 ImpCritMorn FEATOR 57 ****
11 ImpCritStaff FEATOR 58 **** 11 ImpCritStaff FEATOR 58 ****
12 ImpCritSpear FEATOR 59 **** 12 ImpCritSpear FEATOR 59 ****
13 ImpCritSickle FEATOR 60 **** 13 ImpCritSickle FEATOR 60 ****
14 ImpCritSling FEATOR 61 **** 14 ImpCritSling FEATOR 61 ****
15 ImpCritUnArm FEATOR 62 **** 15 ImpCritUnArm FEATOR 62 ****
16 ImpCritLongBow FEATOR 63 **** 16 ImpCritLongBow FEATOR 63 ****
17 ImpCritShortBow FEATOR 64 **** 17 ImpCritShortBow FEATOR 64 ****
18 ImpCritShortSword FEATOR 65 **** 18 ImpCritShortSword FEATOR 65 ****
19 ImpCritRapier FEATOR 66 **** 19 ImpCritRapier FEATOR 66 ****
20 ImpCritScim FEATOR 67 **** 20 ImpCritScim FEATOR 67 ****
21 ImpCritLSw FEATOR 68 **** 21 ImpCritLSw FEATOR 68 ****
22 ImpCritGSw FEATOR 69 **** 22 ImpCritGSw FEATOR 69 ****
23 ImpCritHAxe FEATOR 70 **** 23 ImpCritHAxe FEATOR 70 ****
24 ImpCritTAxe FEATOR 71 **** 24 ImpCritTAxe FEATOR 71 ****
25 ImpCritBAxe FEATOR 72 **** 25 ImpCritBAxe FEATOR 72 ****
26 ImpCritGAxe FEATOR 73 **** 26 ImpCritGAxe FEATOR 73 ****
27 ImpCritHalb FEATOR 74 **** 27 ImpCritHalb FEATOR 74 ****
28 ImpCritLgHam FEATOR 75 **** 28 ImpCritLgHam FEATOR 75 ****
29 ImpCritLgFlail FEATOR 76 **** 29 ImpCritLgFlail FEATOR 76 ****
30 ImpCritWHam FEATOR 77 **** 30 ImpCritWHam FEATOR 77 ****
31 ImpCritHFlail FEATOR 78 **** 31 ImpCritHFlail FEATOR 78 ****
32 ImpCritKama FEATOR 79 **** 32 ImpCritKama FEATOR 79 ****
33 ImpCritKukri FEATOR 80 **** 33 ImpCritKukri FEATOR 80 ****
34 ImpCritShur FEATOR 82 **** 34 ImpCritShur FEATOR 82 ****
35 ImpCritScy FEATOR 83 **** 35 ImpCritScy FEATOR 83 ****
36 ImpCritKatana FEATOR 84 **** 36 ImpCritKatana FEATOR 84 ****
37 ImpCritBSw FEATOR 85 **** 37 ImpCritBSw FEATOR 85 ****
38 ImpCritDMace FEATOR 87 **** 38 ImpCritDMace FEATOR 87 ****
39 ImpCritDAxe FEATOR 88 **** 39 ImpCritDAxe FEATOR 88 ****
40 ImpCrit2Sw FEATOR 89 **** 40 ImpCrit2Sw FEATOR 89 ****
41 ImpCrit_DwAxe FEATOR 954 **** 41 ImpCrit_DwAxe FEATOR 954 ****
42 ImpCrit_Whip FEATOR 995 **** 42 ImpCrit_Whip FEATOR 995 ****
43 ImpCrit_Mindblade FEATOR 3614 **** 43 ImpCrit_Mindblade FEATOR 3614 ****
44 ImpCrit_Trident FEATOR 1074 **** 44 ImpCrit_Trident FEATOR 1074 ****
45 ScriptVar VAR PRC_AllowLgDr 0 45 IMP_CRIT_LIGHT_LANCE FEATOR 24649 0
46 IMP_CRIT_HEAVY_PICK FEATOR 24650 0
47 IMP_CRIT_LIGHT_PICK FEATOR 24651 0
48 IMP_CRIT_SAI FEATOR 24652 0
49 IMP_CRIT_NUNCHAKU FEATOR 24653 0
50 IMP_CRIT_FALCHION FEATOR 24654 0
51 IMP_CRIT_SAP FEATOR 24655 0
52 IMP_CRIT_KATAR FEATOR 24656 0
53 IMP_CRIT_HEAVY_MACE FEATOR 24657 0
54 IMP_CRIT_MAUL FEATOR 24658 0
55 IMP_CRIT_DBL_SCIMITAR FEATOR 24659 0
56 IMP_CRIT_GOAD FEATOR 24660 0
57 IMP_CRIT_ELVEN_LIGHTBLADE FEATOR 24701 0
58 IMP_CRIT_ELVEN_COURTBLADE FEATOR 24717 0
59 IMP_CRIT_EAGLE_CLAW FEATOR 24725 0
60 IMP_CRIT_ELVEN_THINBLADE FEATOR 24709 0
61 ScriptVar VAR PRC_AllowLgDr 0

View File

@ -5286,7 +5286,7 @@
5282 ProfaneAgony 16834997 16834998 ife_prfnlflch **** **** **** **** **** **** **** **** 294 **** 0 0 1 **** **** 3792 **** 0.5 -1 **** **** 310 313 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1 5282 ProfaneAgony 16834997 16834998 ife_prfnlflch **** **** **** **** **** **** **** **** 294 **** 0 0 1 **** **** 3792 **** 0.5 -1 **** **** 310 313 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
5283 DivineIntercession 16834995 16834996 ife_telep_manag **** **** **** **** **** **** **** **** 294 **** 0 0 1 **** **** 3791 **** 0.5 -1 **** **** 324 323 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1 5283 DivineIntercession 16834995 16834996 ife_telep_manag **** **** **** **** **** **** **** **** 294 **** 0 0 1 **** **** 3791 **** 0.5 -1 **** **** 324 323 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
5284 InlindlSchool 16834993 16834994 ife_X2DCrtWhip **** **** **** 13 **** **** **** **** 389 42 **** **** 1 **** **** 2723 **** **** -1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_INLINDL_SCHOOL 2 **** **** **** **** **** 0 0 5284 InlindlSchool 16834993 16834994 ife_X2DCrtWhip **** **** **** 13 **** **** **** **** 389 42 **** **** 1 **** **** 2723 **** **** -1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_INLINDL_SCHOOL 2 **** **** **** **** **** 0 0
5285 VaeSchool 16834991 16834992 ife_X2WpCh 7 **** **** **** **** **** **** **** 2807 993 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SNAP_KICK **** **** **** **** **** **** **** 0 5285 VaeSchool 16834991 16834992 ife_X2WpCh 7 **** **** **** **** **** **** **** 993 **** **** **** 1 **** **** **** **** **** **** **** **** 2807 4079 **** **** **** **** **** **** **** FEAT_SNAP_KICK **** **** **** **** **** **** **** 0
5286 ThreeMountains 16834989 16834990 ife_X2DiviWrth **** 13 **** **** **** **** **** **** 2806 6 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SNAP_KICK **** **** **** **** **** **** **** 0 5286 ThreeMountains 16834989 16834990 ife_X2DiviWrth **** 13 **** **** **** **** **** **** 2806 6 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SNAP_KICK **** **** **** **** **** **** **** 0
5287 SpinningHalberd 16834987 16834988 ife_X2CritDHalb **** **** **** **** **** **** **** **** 112 **** 0 0 1 **** **** 2724 **** 0.5 -1 **** **** 41 374 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1 5287 SpinningHalberd 16834987 16834988 ife_X2CritDHalb **** **** **** **** **** **** **** **** 112 **** 0 0 1 **** **** 2724 **** 0.5 -1 **** **** 41 374 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
5288 HighSwordLowAxe 16834985 16834986 ife_wepspec_Dax **** **** **** **** **** **** **** **** 2807 41 0 0 1 **** **** 2793 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1 5288 HighSwordLowAxe 16834985 16834986 ife_wepspec_Dax **** **** **** **** **** **** **** **** 2807 41 0 0 1 **** **** 2793 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1

View File

@ -6,19 +6,19 @@
2 gender 2 2 gender 2
3 portraits 1100 3 portraits 1100
4 skills 50 4 skills 50
5 cls_feat_* 600 5 cls_feat_* 3090
6 cls_skill_* 50 6 cls_skill_* 50
7 cls_psipw_* 180 7 cls_psipw_* 180
8 feat 26001 8 feat 26500
9 cls_pres_* 25 9 cls_pres_* 70
10 hen_familiar 20 10 hen_familiar 20
11 hen_companion 30 11 hen_companion 30
12 domains 70 12 domains 70
13 soundset 450 13 soundset 450
14 spells 19400 14 spells 20000
15 appearance 500 15 appearance 500
16 wingmodel 10 16 wingmodel 10
17 tailmodel 10 17 tailmodel 10
18 race_feat_* 30 18 race_feat_* 70
19 ireq_* 50 19 ireq_* 50
20 item_to_ireq 700 20 item_to_ireq 700

View File

@ -86,6 +86,7 @@ void CheckNewSpellbooks(object oPC);
void NewSpellbookSpell(int nClass, int nSpellbookType, int nMetamagic = METAMAGIC_NONE, int bInstantSpell = FALSE); void NewSpellbookSpell(int nClass, int nSpellbookType, int nMetamagic = METAMAGIC_NONE, int bInstantSpell = FALSE);
void CastSpontaneousSpell(int nClass, int bInstantSpell = FALSE); void CastSpontaneousSpell(int nClass, int bInstantSpell = FALSE);
void CastPreparedSpell(int nClass, int nMetamagic = METAMAGIC_NONE, int bInstantSpell = FALSE); void CastPreparedSpell(int nClass, int nMetamagic = METAMAGIC_NONE, int bInstantSpell = FALSE);
void ProcessPreparedSpellLevel(object oPC, int nClass, int nSpellLevel, int nLevel, int nAbility, string sClass, string sFile, string sArrayName, int nSpellbookType, object oSkin);
////////////////////////////////////////////////// //////////////////////////////////////////////////
/* Constants */ /* Constants */
@ -859,8 +860,41 @@ void SetupSpells(object oPC, int nClass)
// For spontaneous spellbooks, set up an array that tells how many spells of each level they can cast // For spontaneous spellbooks, set up an array that tells how many spells of each level they can cast
// And add casting feats for each spell known to the caster's hide // And add casting feats for each spell known to the caster's hide
if(nSpellbookType == SPELLBOOK_TYPE_SPONTANEOUS) //:: Fixed by TiredByFirelight
{
// Spell slots
int nSpellLevel, nSlots;
for(nSpellLevel = 0; nSpellLevel <= 9; nSpellLevel++)
{
nSlots = GetSlotCount(nLevel, nSpellLevel, nAbility, nClass, oPC);
persistant_array_set_int(oPC, sArrayName, nSpellLevel, nSlots);
}
if(nSpellbookType == SPELLBOOK_TYPE_SPONTANEOUS) int i;
for(i = 0; i < persistant_array_get_size(oPC, "Spellbook" + sClass); i++)
{ //adding feats
SpontaneousSpellSetupLoop(oPC, nClass, sFile, oSkin, i);
}
}// end if - Spontaneous spellbook
// For prepared spellbooks, add spell uses and use feats according to spells memorised list
else if(nSpellbookType == SPELLBOOK_TYPE_PREPARED && !GetIsBioSpellCastClass(nClass))
{
int nSpellLevel, nSlot, nSlots, nSpellbookID;
string sArrayName2, sIDX;
// clearing existing spells
persistant_array_delete(oPC, sArrayName);
for(nSpellLevel = 0; nSpellLevel <= 9; nSpellLevel++)
{
//Delay of 0.01, to ensure it runs after persistant_array_delete() which is a lot of 0.0 delay commands, but before other spellbook stuff
DelayCommand(0.01, ProcessPreparedSpellLevel(oPC, nClass, nSpellLevel, nLevel, nAbility, sClass, sFile, sArrayName, nSpellbookType, oSkin));
}
}
}
/* if(nSpellbookType == SPELLBOOK_TYPE_SPONTANEOUS)
{ {
// Spell slots // Spell slots
int nSpellLevel, nSlots; int nSpellLevel, nSlots;
@ -910,8 +944,28 @@ void SetupSpells(object oPC, int nClass)
} }
} }
} }
} */
void ProcessPreparedSpellLevel(object oPC, int nClass, int nSpellLevel, int nLevel, int nAbility, string sClass, string sFile, string sArrayName, int nSpellbookType, object oSkin)
{
string sArrayName2 = "Spellbook" + IntToString(nSpellLevel) + "_" + sClass;
string sIDX = "SpellbookIDX" + IntToString(nSpellLevel) + "_" + sClass;
int nSlots = GetSlotCount(nLevel, nSpellLevel, nAbility, nClass, oPC);
int nSlot;
for(nSlot = 0; nSlot < nSlots; nSlot++)
{
int nSpellbookID = persistant_array_get_int(oPC, sArrayName2, nSlot);
if(nSpellbookID != 0)
{
AddSpellUse(oPC, nSpellbookID, nClass, sFile, sArrayName, nSpellbookType, oSkin,
StringToInt(Get2DACache(sFile, "FeatID", nSpellbookID)),
StringToInt(Get2DACache(sFile, "IPFeatID", nSpellbookID)),
sIDX);
}
}
} }
void CheckAndRemoveFeat(object oHide, itemproperty ipFeat) void CheckAndRemoveFeat(object oHide, itemproperty ipFeat)
{ {
int nSubType = GetItemPropertySubType(ipFeat); int nSubType = GetItemPropertySubType(ipFeat);

View File

@ -26,6 +26,63 @@ void main()
{ {
if (!PreInvocationCastCode()) return; if (!PreInvocationCastCode()) return;
object oCaster = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nCasterLevel = GetInvokerLevel(oCaster, GetInvokingClass());
int bValid = FALSE;
int nBPIndex = 0;
int nBPTIndex = 0;
int bValidTarget = FALSE;
int bValidCaster = FALSE;
effect eVis = EffectVisualEffect(VFX_IMP_ELEMENTAL_PROTECTION);
//Add to array on target of breaths they're protected from
if(!array_exists(oTarget, "BreathProtected"))
array_create(oTarget, "BreathProtected");
while(!bValidTarget)
{
if(array_get_object(oTarget, "BreathProtected", nBPIndex) == OBJECT_INVALID)
{
array_set_object(oTarget, "BreathProtected", nBPIndex, oCaster);
bValidTarget = TRUE;
}
else
nBPIndex++;
}
if(!array_exists(oCaster, "BreathProtectTargets"))
array_create(oCaster, "BreathProtectTargets");
while(!bValidCaster)
{
if(array_get_object(oCaster, "BreathProtectTargets", nBPTIndex) == OBJECT_INVALID)
{
array_set_object(oCaster, "BreathProtectTargets", nBPTIndex, oTarget);
if(DEBUG) DoDebug("Storing target: " + GetName(oTarget));
bValidCaster = TRUE;
}
else
nBPTIndex++;
}
//add to array on caster of targets protected by their spell for resting cleanup
if(!array_exists(oCaster, "BreathProtectTargets"))
array_create(oCaster, "BreathProtectTargets");
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
DispelMonitor(oCaster, oTarget, INVOKE_ENDURE_EXPOSURE);
}
/* void main()
{
if (!PreInvocationCastCode()) return;
object oCaster = OBJECT_SELF; object oCaster = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject(); object oTarget = PRCGetSpellTargetObject();
int nCasterLevel = GetInvokerLevel(oCaster, GetInvokingClass()); int nCasterLevel = GetInvokerLevel(oCaster, GetInvokingClass());
@ -73,6 +130,7 @@ void main()
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
DispelMonitor(oCaster, oTarget, INVOKE_ENDURE_EXPOSURE); DispelMonitor(oCaster, oTarget, INVOKE_ENDURE_EXPOSURE);
} }
*/
void DispelMonitor(object oCaster, object oTarget, int nSpellID) void DispelMonitor(object oCaster, object oTarget, int nSpellID)
{ {

View File

@ -56,6 +56,28 @@ void RendingClaws(object oInitiator, object oTarget)
} }
void Scent(object oInitiator) void Scent(object oInitiator)
{
effect eTest = GetFirstEffect(oInitiator);
while (GetIsEffectValid(eTest))
{
if (GetEffectTag(eTest) == "BCM_SCENT_ACTIVE")
return;
eTest = GetNextEffect(oInitiator);
}
effect eLink;
effect eScent;
eScent = EffectLinkEffects(EffectSkillIncrease(SKILL_SPOT, 4), EffectSkillIncrease(SKILL_LISTEN, 4));
eLink = EffectLinkEffects(eScent, EffectSkillIncrease(SKILL_SEARCH, 4));
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_KEEN_SENSE));
eLink = TagEffect(eLink, "BCM_SCENT_ACTIVE");
eLink = UnyieldingEffect(eLink);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oInitiator);
}
/* void Scent(object oInitiator)
{ {
object oSkin = GetPCSkin(oInitiator); object oSkin = GetPCSkin(oInitiator);
@ -65,7 +87,7 @@ void Scent(object oInitiator)
IPSafeAddItemProperty(oSkin, ItemPropertyBonusFeat(IP_CONST_FEAT_KEEN_SENSES), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); IPSafeAddItemProperty(oSkin, ItemPropertyBonusFeat(IP_CONST_FEAT_KEEN_SENSES), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eScent, oInitiator); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eScent, oInitiator);
} } */
void main() void main()
{ {

View File

@ -57,6 +57,32 @@ void main()
} }
void Owieowieowowow(object oInitiator, object oTarget, int nHit, int nPenalty) void Owieowieowowow(object oInitiator, object oTarget, int nHit, int nPenalty)
{
if (GetLocalInt(oInitiator, "SupernalAttack")) nPenalty += 1;
if (nHit == 1)
{
effect eNone;
PerformAttack(oTarget, oInitiator, eNone, 0.0, nPenalty, 0, 0, "Avalanche of Blades Hit", "Avalanche of Blades Miss");
// Check result of attack
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
{
nPenalty -= 4;
if (GetLocalInt(oInitiator, "SupernalAttack")) nPenalty -= 1;
// Continue the loop only on hit
DelayCommand(0.1, Owieowieowowow(oInitiator, oTarget, 1, nPenalty));
DelayCommand(3.0, DeleteLocalInt(oTarget, "PRCCombat_StruckByAttack"));
}
// No else block: if the attack missed, don't queue another call
}
}
/* void Owieowieowowow(object oInitiator, object oTarget, int nHit, int nPenalty)
{ {
if (GetLocalInt(oInitiator, "SupernalAttack")) nPenalty += 1; if (GetLocalInt(oInitiator, "SupernalAttack")) nPenalty += 1;
if(nHit == 1) if(nHit == 1)
@ -74,4 +100,4 @@ void Owieowieowowow(object oInitiator, object oTarget, int nHit, int nPenalty)
//Again! Again! //Again! Again!
DelayCommand(0.1, Owieowieowowow(oInitiator, oTarget, nHit, nPenalty)); DelayCommand(0.1, Owieowieowowow(oInitiator, oTarget, nHit, nPenalty));
} }
} } */

View File

@ -25418,7 +25418,7 @@ Use: Automatic.</entry>
<entry id="50432" lang="en" sex="m">Aura of Menace</entry> <entry id="50432" lang="en" sex="m">Aura of Menace</entry>
<entry id="50433" lang="en" sex="m">Type of Feat: Racial <entry id="50433" lang="en" sex="m">Type of Feat: Racial
Prerequisite: Race-Specific. Prerequisite: Race-Specific.
Specifics: The creature has a righteous aura around it. Any creature that fails its will save(DC:16+Cha) is shaken. Specifics: The creature has a righteous aura around it. Any creature that fails its will save is shaken. THe DC of the will save is calculated as follows: 10 (Base) + 2 (Racial Bonus) + 3 (1/2 Outsider HD) + Charisma bonus.
Use: Selected.</entry> Use: Selected.</entry>
<entry id="50434" lang="en" sex="m">Hound Archon Aid</entry> <entry id="50434" lang="en" sex="m">Hound Archon Aid</entry>
<entry id="50435" lang="en" sex="m">Hound Archon Detect Evil</entry> <entry id="50435" lang="en" sex="m">Hound Archon Detect Evil</entry>