Finished Shadowcaster marker feats
Finished Shadowcaster marker feats. Fixed Fochulan Lyrist not adding usages of Bard Song. Fixed issue with classes that advance spellcasting, but don't require spellcasting. Fixed Mystic Theurge & Force Missile Mage prereq functions.
This commit is contained in:
		| @@ -49,3 +49,4 @@ | ||||
| 45         FEAT_ASMODEUS_INVOKING_DRAGON_SHAMAN        26709     2    1              0       | ||||
| 46         FEAT_ASMODEUS_MYSTERY_SHADOWCASTER          26734     2    1              0       | ||||
| 47         FEAT_ASMODEUS_MYSTERY_SHADOWSMITH           26746     2    1              0       | ||||
| 48         FEAT_ASMODEUS_SPELLCASTING_NONE             26661     2    1              0       | ||||
|   | ||||
| @@ -59,259 +59,260 @@ | ||||
| 55         FEAT_DSONG_SPELLCASTING_SOL                 26529     2    1              0       | ||||
| 56         FEAT_DSONG_SPELLCASTING_SPSHAMAN            26556     2    1              0       | ||||
| 57         FEAT_DSONG_SPELLCASTING_VASSAL              26619     2    1              0       | ||||
| 58         FEAT_DRAGONSONG_MYSTERY_SHADOWCASTER        26735     2    1              0       | ||||
| 59         FEAT_DRAGONSONG_MYSTERY_SHADOWSMITH         26747     2    1              0       | ||||
| 60         Ambidex                                     1         0    -1             0       | ||||
| 61         TwoWeap                                     41        0    -1             0       | ||||
| 62         ImpTwo                                      20        0    -1             0       | ||||
| 63         PBShot                                      27        0    -1             0       | ||||
| 64         RapidShot                                   30        0    -1             0       | ||||
| 65         PowerAtk                                    28        0    -1             0       | ||||
| 66         ImpPower                                    19        0    -1             0       | ||||
| 67         CShot                                       5         0    -1             0       | ||||
| 68         Disarm                                      9         0    -1             0       | ||||
| 69         ImpDis                                      16        0    -1             0       | ||||
| 70         KnockDown                                   23        0    -1             0       | ||||
| 71         ImpKnock                                    17        0    -1             0       | ||||
| 72         WeapFocClub                                 43        0    -1             0       | ||||
| 73         WeapFocDagger                               90        0    -1             0       | ||||
| 74         WeapFocDart                                 91        0    -1             0       | ||||
| 75         WeapFocHXBow                                92        0    -1             0       | ||||
| 76         WeapFocLgXBow                               93        0    -1             0       | ||||
| 77         WeapFocLgMace                               94        0    -1             0       | ||||
| 78         WeapFocMorn                                 95        0    -1             0       | ||||
| 79         WeapFocStaff                                96        0    -1             0       | ||||
| 80         WeapFocSpear                                97        0    -1             0       | ||||
| 81         WeapFocSickle                               98        0    -1             0       | ||||
| 82         WeapFocSling                                99        0    -1             0       | ||||
| 83         WeapFocUnArm                                100       0    -1             0       | ||||
| 84         WeapFocLongBow                              101       0    -1             0       | ||||
| 85         WeapFocShortBow                             102       0    -1             0       | ||||
| 86         WeapFocShortSword                           103       0    -1             0       | ||||
| 87         WeapFocRapier                               104       0    -1             0       | ||||
| 88         WeapFocScim                                 105       0    -1             0       | ||||
| 89         WeapFocLSw                                  106       0    -1             0       | ||||
| 90         WeapFocGSw                                  107       0    -1             0       | ||||
| 91         WeapFocHAxe                                 108       0    -1             0       | ||||
| 92         WeapFocTAxe                                 109       0    -1             0       | ||||
| 93         WeapFocBAxe                                 110       0    -1             0       | ||||
| 94         WeapFocGAxe                                 111       0    -1             0       | ||||
| 95         WeapFocHalb                                 112       0    -1             0       | ||||
| 96         WeapFocLgHam                                113       0    -1             0       | ||||
| 97         WeapFocLgFlail                              114       0    -1             0       | ||||
| 98         WeapFocWHam                                 115       0    -1             0       | ||||
| 99         WeapFocHFlail                               116       0    -1             0       | ||||
| 100        WeapFocKama                                 117       0    -1             0       | ||||
| 101        WeapFocKukri                                118       0    -1             0       | ||||
| 102        WeapFocShur                                 120       0    -1             0       | ||||
| 103        WeapFocScy                                  121       0    -1             0       | ||||
| 104        WeapFocKatana                               122       0    -1             0       | ||||
| 105        WeapFocBSw                                  123       0    -1             0       | ||||
| 106        WeapFocDMace                                125       0    -1             0       | ||||
| 107        WeapFocDAxe                                 126       0    -1             0       | ||||
| 108        WeapFoc2Sw                                  127       0    -1             0       | ||||
| 109        WeaponFocusdwaxe                            952       0    -1             0       | ||||
| 110        WeaponFocuswhip                             993       0    -1             0       | ||||
| 111        WF_LIGHT_LANCE                              24613     1    -1             0       | ||||
| 112        WF_HEAVY_PICK                               24614     1    -1             0       | ||||
| 113        WF_LIGHT_PICK                               24615     1    -1             0       | ||||
| 114        WF_SAI                                      24616     1    -1             0       | ||||
| 115        WF_NUNCHUKU                                 24617     1    -1             0       | ||||
| 116        WF_FALCHION                                 16834154  1    -1             0       | ||||
| 117        WF_SAP                                      24619     1    -1             0       | ||||
| 118        WF_KATAR                                    24620     1    -1             0       | ||||
| 119        WF_HEAVY_MACE                               24621     1    -1             0       | ||||
| 120        WF_MAUL                                     24622     1    -1             0       | ||||
| 121        WF_DOUBLE_SCIMITAR                          24623     1    -1             0       | ||||
| 122        WF_GOAD                                     24624     1    -1             0       | ||||
| 123        WF_ELVEN_LIGHTBLADE                         24697     1    -1             0       | ||||
| 124        WF_ELVEN_THINBLADE                          24705     1    -1             0       | ||||
| 125        WF_ELVEN_COURTBLADE                         24713     1    -1             0       | ||||
| 126        IMP_CRIT_LIGHT_LANCE                        24649     1    -1             0       | ||||
| 127        IMP_CRIT_HEAVY_PICK                         16834122  1    -1             0       | ||||
| 128        IMP_CRIT_LIGHT_PICK                         24651     1    -1             0       | ||||
| 129        IMP_CRIT_SAI                                24652     1    -1             0       | ||||
| 130        IMP_CRIT_NUNCHAKU                           24653     1    -1             0       | ||||
| 131        IMP_CRIT_FALCHION                           24654     1    -1             0       | ||||
| 132        IMP_CRIT_SAP                                24655     1    -1             0       | ||||
| 133        IMP_CRIT_KATAR                              24656     1    -1             0       | ||||
| 134        IMP_CRIT_HEAVY_MACE                         24657     1    -1             0       | ||||
| 135        IMP_CRIT_MAUL                               24658     1    -1             0       | ||||
| 136        IMP_CRIT_DBL_SCIMITAR                       24659     1    -1             0       | ||||
| 137        IMP_CRIT_GOAD                               24660     1    -1             0       | ||||
| 138        IMP_CRIT_ELVEN_LIGHTBLADE                   24701     1    -1             0       | ||||
| 139        IMP_CRIT_ELVEN_THINBLADE                    24709     1    -1             0       | ||||
| 140        IMP_CRIT_ELVEN_COURTBLADE                   24717     1    -1             0       | ||||
| 141        ImpCritClub                                 15        0    -1             0       | ||||
| 142        ImpCritDagger                               52        0    -1             0       | ||||
| 143        ImpCritDart                                 53        0    -1             0       | ||||
| 144        ImpCritHXBow                                54        0    -1             0       | ||||
| 145        ImpCritLgXBow                               55        0    -1             0       | ||||
| 146        ImpCritLgMace                               56        0    -1             0       | ||||
| 147        ImpCritMorn                                 57        0    -1             0       | ||||
| 148        ImpCritStaff                                58        0    -1             0       | ||||
| 149        ImpCritSpear                                59        0    -1             0       | ||||
| 150        ImpCritSickle                               60        0    -1             0       | ||||
| 151        ImpCritSling                                61        0    -1             0       | ||||
| 152        ImpCritUnArm                                62        0    -1             0       | ||||
| 153        ImpCritLongBow                              63        0    -1             0       | ||||
| 154        ImpCritShortBow                             64        0    -1             0       | ||||
| 155        ImpCritShortSword                           65        0    -1             0       | ||||
| 156        ImpCritRapier                               66        0    -1             0       | ||||
| 157        ImpCritScim                                 67        0    -1             0       | ||||
| 158        ImpCritLSw                                  68        0    -1             0       | ||||
| 159        ImpCritGSw                                  69        0    -1             0       | ||||
| 160        ImpCritHAxe                                 70        0    -1             0       | ||||
| 161        ImpCritTAxe                                 71        0    -1             0       | ||||
| 162        ImpCritBAxe                                 72        0    -1             0       | ||||
| 163        ImpCritGAxe                                 73        0    -1             0       | ||||
| 164        ImpCritHalb                                 74        0    -1             0       | ||||
| 165        ImpCritLgHam                                75        0    -1             0       | ||||
| 166        ImpCritLgFlail                              76        0    -1             0       | ||||
| 167        ImpCritWHam                                 77        0    -1             0       | ||||
| 168        ImpCritHFlail                               78        0    -1             0       | ||||
| 169        ImpCritKama                                 79        0    -1             0       | ||||
| 170        ImpCritKukri                                80        0    -1             0       | ||||
| 171        ImpCritShur                                 82        0    -1             0       | ||||
| 172        ImpCritScy                                  83        0    -1             0       | ||||
| 173        ImpCritKatana                               84        0    -1             0       | ||||
| 174        ImpCritBSw                                  85        0    -1             0       | ||||
| 175        ImpCritDMace                                87        0    -1             0       | ||||
| 176        ImpCritDAxe                                 88        0    -1             0       | ||||
| 177        ImpCrit2Sw                                  89        0    -1             0       | ||||
| 178        FEAT_IMPROVED_CRITICAL_WHIP                 995       0    -1             0       | ||||
| 179        FEAT_IMPROVED_CRITICAL_DWARVEN_WARAXE       954       0    -1             0       | ||||
| 180        FEAT_WEAPON_FOCUS_TRIDENT                   1072      1    -1             0       | ||||
| 181        FEAT_IMPROVED_CRITICAL_TRIDENT              1074      1    -1             0       | ||||
| 182        FEAT_MANYSHOT                               3306      0    -1             1       | ||||
| 183        Pinpoint_Accuracy                           3351      0    -1             1       | ||||
| 184        ExtraMusic                                  423       0    -1             0       | ||||
| 185        LingeringSong                               424       0    -1             0       | ||||
| 186        SpellFocusCon                               166       0    -1             0       | ||||
| 187        SpellFocusDiv                               167       0    -1             0       | ||||
| 188        SpellFocusEnc                               168       0    -1             0       | ||||
| 189        SpellFocusEvo                               169       0    -1             0       | ||||
| 190        SpellFocusIll                               170       0    -1             0       | ||||
| 191        SpellFocusNec                               171       0    -1             0       | ||||
| 192        SpellFocusTra                               172       0    -1             0       | ||||
| 193        SpellFocusAbj                               35        0    -1             0       | ||||
| 194        SkillFocusDevi                              193       0    -1             0       | ||||
| 195        DefArrow                                    8         0    -1             0       | ||||
| 196        Quicken                                     29        0    -1             0       | ||||
| 197        GrSpllFcsAbj                                393       0    -1             0       | ||||
| 198        GrSpllFcsCnj                                394       0    -1             0       | ||||
| 199        GrSpllFcsDiv                                395       0    -1             0       | ||||
| 200        GrSpllFcsEnch                               396       0    -1             0       | ||||
| 201        GrSpllFcsEvc                                397       0    -1             0       | ||||
| 202        GrSpllFcsIll                                398       0    -1             0       | ||||
| 203        GrSpllFcsNec                                399       0    -1             0       | ||||
| 204        GrSpllFcsTran                               400       0    -1             0       | ||||
| 205        GreatSpellPen                               401       0    -1             0       | ||||
| 206        ArcaneDefenseAbj                            415       0    -1             0       | ||||
| 207        ArcaneDefenseCon                            416       0    -1             0       | ||||
| 208        ArcaneDefenseDiv                            417       0    -1             0       | ||||
| 209        ArcaneDefenseEnch                           418       0    -1             0       | ||||
| 210        ArcaneDefenseEvo                            419       0    -1             0       | ||||
| 211        ArcaneDefenseIll                            420       0    -1             0       | ||||
| 212        ArcaneDefenseNec                            421       0    -1             0       | ||||
| 213        ArcaneDefenseTra                            422       0    -1             0       | ||||
| 214        FEAT_SCRIBE_SCROLL                          945       0    -1             0       | ||||
| 215        FEAT_BREW_POTION                            944       0    -1             0       | ||||
| 216        FEAT_EPIC_SKILL_FOCUS_LISTEN                595       0    -1             0       | ||||
| 217        FEAT_CRAFT_WAND                             946       0    -1             0       | ||||
| 218        FEAT_DISCIPLE_OF_DARKNESS                   4012      0    -1             1       | ||||
| 219        FEAT_IMP_MANYSHOT                           3350      0    -1             1       | ||||
| 220        FEAT_NIMBUSOFLIGHT                          3165      0    -1             1       | ||||
| 221        FEAT_SERVHEAVEN                             3355      0    -1             1       | ||||
| 222        FEAT_HOLYRADIANCE                           3164      0    -1             1       | ||||
| 223        FEAT_EPIC_WILL                              695       0    -1             0       | ||||
| 224        FEAT_EPIC_IMPROVED_COMBAT_CASTING           696       0    -1             0       | ||||
| 225        FEAT_EPIC_BLINDING_SPEED                    491       0    -1             1       | ||||
| 226        FEAT_EPIC_GREAT_CHARISMA_1                  764       1    -1             0       | ||||
| 227        FEAT_EPIC_GREAT_CHARISMA_2                  765       1    -1             0       | ||||
| 228        FEAT_EPIC_GREAT_CHARISMA_3                  766       1    -1             0       | ||||
| 229        FEAT_EPIC_GREAT_CHARISMA_4                  767       1    -1             0       | ||||
| 230        FEAT_EPIC_GREAT_CHARISMA_5                  768       1    -1             0       | ||||
| 231        FEAT_EPIC_GREAT_CHARISMA_6                  769       1    -1             0       | ||||
| 232        FEAT_EPIC_GREAT_CHARISMA_7                  770       1    -1             0       | ||||
| 233        FEAT_EPIC_GREAT_CHARISMA_8                  771       1    -1             0       | ||||
| 234        FEAT_EPIC_GREAT_CHARISMA_9                  772       1    -1             0       | ||||
| 235        FEAT_EPIC_GREAT_CHARISMA_10                 773       1    -1             0       | ||||
| 236        FEAT_EPIC_GREAT_DEXTERITY_1                 784       1    -1             0       | ||||
| 237        FEAT_EPIC_GREAT_DEXTERITY_2                 785       1    -1             0       | ||||
| 238        FEAT_EPIC_GREAT_DEXTERITY_3                 786       1    -1             0       | ||||
| 239        FEAT_EPIC_GREAT_DEXTERITY_4                 787       1    -1             0       | ||||
| 240        FEAT_EPIC_GREAT_DEXTERITY_5                 788       1    -1             0       | ||||
| 241        FEAT_EPIC_GREAT_DEXTERITY_6                 789       1    -1             0       | ||||
| 242        FEAT_EPIC_GREAT_DEXTERITY_7                 790       1    -1             0       | ||||
| 243        FEAT_EPIC_GREAT_DEXTERITY_8                 791       1    -1             0       | ||||
| 244        FEAT_EPIC_GREAT_DEXTERITY_9                 792       1    -1             0       | ||||
| 245        FEAT_EPIC_GREAT_DEXTERITY_10                793       1    -1             0       | ||||
| 246        FEAT_EPIC_SKILL_FOCUS_APPRAISE              588       0    -1             0       | ||||
| 247        FEAT_EPIC_SKILL_FOCUS_CONCENTRATION         589       0    -1             0       | ||||
| 248        FEAT_EPIC_SKILL_FOCUS_CRAFT_TRAP            590       0    -1             0       | ||||
| 249        FEAT_EPIC_SKILL_FOCUS_DISABLETRAP           591       0    -1             0       | ||||
| 250        FEAT_EPIC_SKILL_FOCUS_DISCIPLINE            592       0    -1             0       | ||||
| 251        FEAT_EPIC_SKILL_FOCUS_HEAL                  593       0    -1             0       | ||||
| 252        FEAT_EPIC_SKILL_FOCUS_HIDE                  594       0    -1             0       | ||||
| 253        FEAT_EPIC_SKILL_FOCUS_LORE                  596       0    -1             0       | ||||
| 254        FEAT_EPIC_SKILL_FOCUS_MOVESILENTLY          597       0    -1             0       | ||||
| 255        FEAT_EPIC_SKILL_FOCUS_OPENLOCK              598       0    -1             0       | ||||
| 256        FEAT_EPIC_SKILL_FOCUS_PARRY                 599       0    -1             0       | ||||
| 257        FEAT_EPIC_SKILL_FOCUS_PERSUADE              601       0    -1             0       | ||||
| 258        FEAT_EPIC_SKILL_FOCUS_PICKPOCKET            602       0    -1             0       | ||||
| 259        FEAT_EPIC_SKILL_FOCUS_SEARCH                603       0    -1             0       | ||||
| 260        FEAT_EPIC_SKILL_FOCUS_SETTRAP               604       0    -1             0       | ||||
| 261        FEAT_EPIC_SKILL_FOCUS_SPELLCRAFT            605       0    -1             0       | ||||
| 262        FEAT_EPIC_SKILL_FOCUS_SPOT                  606       0    -1             0       | ||||
| 263        FEAT_EPIC_SKILL_FOCUS_TAUNT                 607       0    -1             0       | ||||
| 264        FEAT_EPIC_SKILL_FOCUS_TUMBLE                608       0    -1             0       | ||||
| 265        FEAT_EPIC_SKILL_FOCUS_CRAFT_ARMOR           913       0    -1             0       | ||||
| 266        FEAT_EPIC_SKILL_FOCUS_CRAFT_WEAPON          914       0    -1             0       | ||||
| 267        FEAT_EPIC_SKILL_FOCUS_BLUFF                 917       0    -1             0       | ||||
| 268        FEAT_EPIC_SKILL_FOCUS_INTIMIDATE            918       0    -1             0       | ||||
| 269        FEAT_EPIC_SKILL_FOCUS_PERFORM               600       0    -1             0       | ||||
| 270        FEAT_EPIC_SKILL_FOCUS_USEMAGICDEVICE        609       0    -1             0       | ||||
| 271        FEAT_EPIC_LASTING_INSPIRATION               870       0    -1             0       | ||||
| 272        FEAT_EPIC_SPELL_FOCUS_ABJURATION            610       0    -1             0       | ||||
| 273        FEAT_EPIC_SPELL_FOCUS_CONJURATION           611       0    -1             0       | ||||
| 274        FEAT_EPIC_SPELL_FOCUS_DIVINATION            612       0    -1             0       | ||||
| 275        FEAT_EPIC_SPELL_FOCUS_ENCHANTMENT           613       0    -1             0       | ||||
| 276        FEAT_EPIC_SPELL_FOCUS_EVOCATION             614       0    -1             0       | ||||
| 277        FEAT_EPIC_SPELL_FOCUS_ILLUSION              615       0    -1             0       | ||||
| 278        FEAT_EPIC_SPELL_FOCUS_NECROMANCY            616       0    -1             0       | ||||
| 279        FEAT_EPIC_SPELL_FOCUS_TRANSMUTATION         617       0    -1             0       | ||||
| 280        FEAT_EPIC_SPELL_PENETRATION                 618       0    -1             0       | ||||
| 281        FEAT_EPIC_AUTOMATIC_LESSER_QUICKEN          857       0    -1             0       | ||||
| 282        FEAT_EPIC_AUTOMATIC_QUICKEN                 858       0    -1             0       | ||||
| 283        FEAT_EPIC_AUTOMATIC_GREATER_QUICKEN         859       0    -1             0       | ||||
| 284        FEAT_EPIC_AUTOMATIC_LESSER_SILENT           860       0    -1             0       | ||||
| 285        FEAT_EPIC_AUTOMATIC_SILENT                  861       0    -1             0       | ||||
| 286        FEAT_EPIC_AUTOMATIC_GREATER_SILENT          862       0    -1             0       | ||||
| 287        FEAT_EPIC_AUTOMATIC_LESSER_STILL            863       0    -1             0       | ||||
| 288        FEAT_EPIC_AUTOMATIC_STILL                   864       0    -1             0       | ||||
| 289        FEAT_EPIC_AUTOMATIC_GREATER_STILL           865       0    -1             0       | ||||
| 290        Bane_Magic_Aberration                       23556     0    -1             0       | ||||
| 291        Bane_Magic_Animal                           23557     0    -1             0       | ||||
| 292        Bane_Magic_Beast                            23558     0    -1             0       | ||||
| 293        Bane_Magic_Construct                        23559     0    -1             0       | ||||
| 294        Bane_Magic_Dragon                           23560     0    -1             0       | ||||
| 295        Bane_Magic_Dwarf                            23561     0    -1             0       | ||||
| 296        Bane_Magic_Elemental                        23562     0    -1             0       | ||||
| 297        Bane_Magic_Elf                              23563     0    -1             0       | ||||
| 298        Bane_Magic_Fey                              23564     0    -1             0       | ||||
| 299        Bane_Magic_Giant                            23565     0    -1             0       | ||||
| 300        Bane_Magic_Gnome                            23566     0    -1             0       | ||||
| 301        Bane_Magic_HalfElf                          23567     0    -1             0       | ||||
| 302        Bane_Magic_Halfling                         23568     0    -1             0       | ||||
| 303        Bane_Magic_HalfOrc                          23569     0    -1             0       | ||||
| 304        Bane_Magic_Human                            23570     0    -1             0       | ||||
| 305        Bane_Magic_Humanoid_Goblinoid               23571     0    -1             0       | ||||
| 306        Bane_Magic_Humanoid_Monstrous               23572     0    -1             0       | ||||
| 307        Bane_Magic_Humanoid_Orc                     23573     0    -1             0       | ||||
| 308        Bane_Magic_Humanoid_Reptilian               23574     0    -1             0       | ||||
| 309        Bane_Magic_Magical_Beast                    23575     0    -1             0       | ||||
| 310        Bane_Magic_Outsider                         23576     0    -1             0       | ||||
| 311        Bane_Magic_Shapechanger                     23577     0    -1             0       | ||||
| 312        Bane_Magic_Undead                           23578     0    -1             0       | ||||
| 313        Bane_Magic_Vermin                           23579     0    -1             0       | ||||
| 58         FEAT_DSONG_SPELLCASTING_NONE                26662     2    1              0       | ||||
| 59         FEAT_DRAGONSONG_MYSTERY_SHADOWCASTER        26735     2    1              0       | ||||
| 60         FEAT_DRAGONSONG_MYSTERY_SHADOWSMITH         26747     2    1              0       | ||||
| 61         Ambidex                                     1         0    -1             0       | ||||
| 62         TwoWeap                                     41        0    -1             0       | ||||
| 63         ImpTwo                                      20        0    -1             0       | ||||
| 64         PBShot                                      27        0    -1             0       | ||||
| 65         RapidShot                                   30        0    -1             0       | ||||
| 66         PowerAtk                                    28        0    -1             0       | ||||
| 67         ImpPower                                    19        0    -1             0       | ||||
| 68         CShot                                       5         0    -1             0       | ||||
| 69         Disarm                                      9         0    -1             0       | ||||
| 70         ImpDis                                      16        0    -1             0       | ||||
| 71         KnockDown                                   23        0    -1             0       | ||||
| 72         ImpKnock                                    17        0    -1             0       | ||||
| 73         WeapFocClub                                 43        0    -1             0       | ||||
| 74         WeapFocDagger                               90        0    -1             0       | ||||
| 75         WeapFocDart                                 91        0    -1             0       | ||||
| 76         WeapFocHXBow                                92        0    -1             0       | ||||
| 77         WeapFocLgXBow                               93        0    -1             0       | ||||
| 78         WeapFocLgMace                               94        0    -1             0       | ||||
| 79         WeapFocMorn                                 95        0    -1             0       | ||||
| 80         WeapFocStaff                                96        0    -1             0       | ||||
| 81         WeapFocSpear                                97        0    -1             0       | ||||
| 82         WeapFocSickle                               98        0    -1             0       | ||||
| 83         WeapFocSling                                99        0    -1             0       | ||||
| 84         WeapFocUnArm                                100       0    -1             0       | ||||
| 85         WeapFocLongBow                              101       0    -1             0       | ||||
| 86         WeapFocShortBow                             102       0    -1             0       | ||||
| 87         WeapFocShortSword                           103       0    -1             0       | ||||
| 88         WeapFocRapier                               104       0    -1             0       | ||||
| 89         WeapFocScim                                 105       0    -1             0       | ||||
| 90         WeapFocLSw                                  106       0    -1             0       | ||||
| 91         WeapFocGSw                                  107       0    -1             0       | ||||
| 92         WeapFocHAxe                                 108       0    -1             0       | ||||
| 93         WeapFocTAxe                                 109       0    -1             0       | ||||
| 94         WeapFocBAxe                                 110       0    -1             0       | ||||
| 95         WeapFocGAxe                                 111       0    -1             0       | ||||
| 96         WeapFocHalb                                 112       0    -1             0       | ||||
| 97         WeapFocLgHam                                113       0    -1             0       | ||||
| 98         WeapFocLgFlail                              114       0    -1             0       | ||||
| 99         WeapFocWHam                                 115       0    -1             0       | ||||
| 100        WeapFocHFlail                               116       0    -1             0       | ||||
| 101        WeapFocKama                                 117       0    -1             0       | ||||
| 102        WeapFocKukri                                118       0    -1             0       | ||||
| 103        WeapFocShur                                 120       0    -1             0       | ||||
| 104        WeapFocScy                                  121       0    -1             0       | ||||
| 105        WeapFocKatana                               122       0    -1             0       | ||||
| 106        WeapFocBSw                                  123       0    -1             0       | ||||
| 107        WeapFocDMace                                125       0    -1             0       | ||||
| 108        WeapFocDAxe                                 126       0    -1             0       | ||||
| 109        WeapFoc2Sw                                  127       0    -1             0       | ||||
| 110        WeaponFocusdwaxe                            952       0    -1             0       | ||||
| 111        WeaponFocuswhip                             993       0    -1             0       | ||||
| 112        WF_LIGHT_LANCE                              24613     1    -1             0       | ||||
| 113        WF_HEAVY_PICK                               24614     1    -1             0       | ||||
| 114        WF_LIGHT_PICK                               24615     1    -1             0       | ||||
| 115        WF_SAI                                      24616     1    -1             0       | ||||
| 116        WF_NUNCHUKU                                 24617     1    -1             0       | ||||
| 117        WF_FALCHION                                 16834154  1    -1             0       | ||||
| 118        WF_SAP                                      24619     1    -1             0       | ||||
| 119        WF_KATAR                                    24620     1    -1             0       | ||||
| 120        WF_HEAVY_MACE                               24621     1    -1             0       | ||||
| 121        WF_MAUL                                     24622     1    -1             0       | ||||
| 122        WF_DOUBLE_SCIMITAR                          24623     1    -1             0       | ||||
| 123        WF_GOAD                                     24624     1    -1             0       | ||||
| 124        WF_ELVEN_LIGHTBLADE                         24697     1    -1             0       | ||||
| 125        WF_ELVEN_THINBLADE                          24705     1    -1             0       | ||||
| 126        WF_ELVEN_COURTBLADE                         24713     1    -1             0       | ||||
| 127        IMP_CRIT_LIGHT_LANCE                        24649     1    -1             0       | ||||
| 128        IMP_CRIT_HEAVY_PICK                         16834122  1    -1             0       | ||||
| 129        IMP_CRIT_LIGHT_PICK                         24651     1    -1             0       | ||||
| 130        IMP_CRIT_SAI                                24652     1    -1             0       | ||||
| 131        IMP_CRIT_NUNCHAKU                           24653     1    -1             0       | ||||
| 132        IMP_CRIT_FALCHION                           24654     1    -1             0       | ||||
| 133        IMP_CRIT_SAP                                24655     1    -1             0       | ||||
| 134        IMP_CRIT_KATAR                              24656     1    -1             0       | ||||
| 135        IMP_CRIT_HEAVY_MACE                         24657     1    -1             0       | ||||
| 136        IMP_CRIT_MAUL                               24658     1    -1             0       | ||||
| 137        IMP_CRIT_DBL_SCIMITAR                       24659     1    -1             0       | ||||
| 138        IMP_CRIT_GOAD                               24660     1    -1             0       | ||||
| 139        IMP_CRIT_ELVEN_LIGHTBLADE                   24701     1    -1             0       | ||||
| 140        IMP_CRIT_ELVEN_THINBLADE                    24709     1    -1             0       | ||||
| 141        IMP_CRIT_ELVEN_COURTBLADE                   24717     1    -1             0       | ||||
| 142        ImpCritClub                                 15        0    -1             0       | ||||
| 143        ImpCritDagger                               52        0    -1             0       | ||||
| 144        ImpCritDart                                 53        0    -1             0       | ||||
| 145        ImpCritHXBow                                54        0    -1             0       | ||||
| 146        ImpCritLgXBow                               55        0    -1             0       | ||||
| 147        ImpCritLgMace                               56        0    -1             0       | ||||
| 148        ImpCritMorn                                 57        0    -1             0       | ||||
| 149        ImpCritStaff                                58        0    -1             0       | ||||
| 150        ImpCritSpear                                59        0    -1             0       | ||||
| 151        ImpCritSickle                               60        0    -1             0       | ||||
| 152        ImpCritSling                                61        0    -1             0       | ||||
| 153        ImpCritUnArm                                62        0    -1             0       | ||||
| 154        ImpCritLongBow                              63        0    -1             0       | ||||
| 155        ImpCritShortBow                             64        0    -1             0       | ||||
| 156        ImpCritShortSword                           65        0    -1             0       | ||||
| 157        ImpCritRapier                               66        0    -1             0       | ||||
| 158        ImpCritScim                                 67        0    -1             0       | ||||
| 159        ImpCritLSw                                  68        0    -1             0       | ||||
| 160        ImpCritGSw                                  69        0    -1             0       | ||||
| 161        ImpCritHAxe                                 70        0    -1             0       | ||||
| 162        ImpCritTAxe                                 71        0    -1             0       | ||||
| 163        ImpCritBAxe                                 72        0    -1             0       | ||||
| 164        ImpCritGAxe                                 73        0    -1             0       | ||||
| 165        ImpCritHalb                                 74        0    -1             0       | ||||
| 166        ImpCritLgHam                                75        0    -1             0       | ||||
| 167        ImpCritLgFlail                              76        0    -1             0       | ||||
| 168        ImpCritWHam                                 77        0    -1             0       | ||||
| 169        ImpCritHFlail                               78        0    -1             0       | ||||
| 170        ImpCritKama                                 79        0    -1             0       | ||||
| 171        ImpCritKukri                                80        0    -1             0       | ||||
| 172        ImpCritShur                                 82        0    -1             0       | ||||
| 173        ImpCritScy                                  83        0    -1             0       | ||||
| 174        ImpCritKatana                               84        0    -1             0       | ||||
| 175        ImpCritBSw                                  85        0    -1             0       | ||||
| 176        ImpCritDMace                                87        0    -1             0       | ||||
| 177        ImpCritDAxe                                 88        0    -1             0       | ||||
| 178        ImpCrit2Sw                                  89        0    -1             0       | ||||
| 179        FEAT_IMPROVED_CRITICAL_WHIP                 995       0    -1             0       | ||||
| 180        FEAT_IMPROVED_CRITICAL_DWARVEN_WARAXE       954       0    -1             0       | ||||
| 181        FEAT_WEAPON_FOCUS_TRIDENT                   1072      1    -1             0       | ||||
| 182        FEAT_IMPROVED_CRITICAL_TRIDENT              1074      1    -1             0       | ||||
| 183        FEAT_MANYSHOT                               3306      0    -1             1       | ||||
| 184        Pinpoint_Accuracy                           3351      0    -1             1       | ||||
| 185        ExtraMusic                                  423       0    -1             0       | ||||
| 186        LingeringSong                               424       0    -1             0       | ||||
| 187        SpellFocusCon                               166       0    -1             0       | ||||
| 188        SpellFocusDiv                               167       0    -1             0       | ||||
| 189        SpellFocusEnc                               168       0    -1             0       | ||||
| 190        SpellFocusEvo                               169       0    -1             0       | ||||
| 191        SpellFocusIll                               170       0    -1             0       | ||||
| 192        SpellFocusNec                               171       0    -1             0       | ||||
| 193        SpellFocusTra                               172       0    -1             0       | ||||
| 194        SpellFocusAbj                               35        0    -1             0       | ||||
| 195        SkillFocusDevi                              193       0    -1             0       | ||||
| 196        DefArrow                                    8         0    -1             0       | ||||
| 197        Quicken                                     29        0    -1             0       | ||||
| 198        GrSpllFcsAbj                                393       0    -1             0       | ||||
| 199        GrSpllFcsCnj                                394       0    -1             0       | ||||
| 200        GrSpllFcsDiv                                395       0    -1             0       | ||||
| 201        GrSpllFcsEnch                               396       0    -1             0       | ||||
| 202        GrSpllFcsEvc                                397       0    -1             0       | ||||
| 203        GrSpllFcsIll                                398       0    -1             0       | ||||
| 204        GrSpllFcsNec                                399       0    -1             0       | ||||
| 205        GrSpllFcsTran                               400       0    -1             0       | ||||
| 206        GreatSpellPen                               401       0    -1             0       | ||||
| 207        ArcaneDefenseAbj                            415       0    -1             0       | ||||
| 208        ArcaneDefenseCon                            416       0    -1             0       | ||||
| 209        ArcaneDefenseDiv                            417       0    -1             0       | ||||
| 210        ArcaneDefenseEnch                           418       0    -1             0       | ||||
| 211        ArcaneDefenseEvo                            419       0    -1             0       | ||||
| 212        ArcaneDefenseIll                            420       0    -1             0       | ||||
| 213        ArcaneDefenseNec                            421       0    -1             0       | ||||
| 214        ArcaneDefenseTra                            422       0    -1             0       | ||||
| 215        FEAT_SCRIBE_SCROLL                          945       0    -1             0       | ||||
| 216        FEAT_BREW_POTION                            944       0    -1             0       | ||||
| 217        FEAT_EPIC_SKILL_FOCUS_LISTEN                595       0    -1             0       | ||||
| 218        FEAT_CRAFT_WAND                             946       0    -1             0       | ||||
| 219        FEAT_DISCIPLE_OF_DARKNESS                   4012      0    -1             1       | ||||
| 220        FEAT_IMP_MANYSHOT                           3350      0    -1             1       | ||||
| 221        FEAT_NIMBUSOFLIGHT                          3165      0    -1             1       | ||||
| 222        FEAT_SERVHEAVEN                             3355      0    -1             1       | ||||
| 223        FEAT_HOLYRADIANCE                           3164      0    -1             1       | ||||
| 224        FEAT_EPIC_WILL                              695       0    -1             0       | ||||
| 225        FEAT_EPIC_IMPROVED_COMBAT_CASTING           696       0    -1             0       | ||||
| 226        FEAT_EPIC_BLINDING_SPEED                    491       0    -1             1       | ||||
| 227        FEAT_EPIC_GREAT_CHARISMA_1                  764       1    -1             0       | ||||
| 228        FEAT_EPIC_GREAT_CHARISMA_2                  765       1    -1             0       | ||||
| 229        FEAT_EPIC_GREAT_CHARISMA_3                  766       1    -1             0       | ||||
| 230        FEAT_EPIC_GREAT_CHARISMA_4                  767       1    -1             0       | ||||
| 231        FEAT_EPIC_GREAT_CHARISMA_5                  768       1    -1             0       | ||||
| 232        FEAT_EPIC_GREAT_CHARISMA_6                  769       1    -1             0       | ||||
| 233        FEAT_EPIC_GREAT_CHARISMA_7                  770       1    -1             0       | ||||
| 234        FEAT_EPIC_GREAT_CHARISMA_8                  771       1    -1             0       | ||||
| 235        FEAT_EPIC_GREAT_CHARISMA_9                  772       1    -1             0       | ||||
| 236        FEAT_EPIC_GREAT_CHARISMA_10                 773       1    -1             0       | ||||
| 237        FEAT_EPIC_GREAT_DEXTERITY_1                 784       1    -1             0       | ||||
| 238        FEAT_EPIC_GREAT_DEXTERITY_2                 785       1    -1             0       | ||||
| 239        FEAT_EPIC_GREAT_DEXTERITY_3                 786       1    -1             0       | ||||
| 240        FEAT_EPIC_GREAT_DEXTERITY_4                 787       1    -1             0       | ||||
| 241        FEAT_EPIC_GREAT_DEXTERITY_5                 788       1    -1             0       | ||||
| 242        FEAT_EPIC_GREAT_DEXTERITY_6                 789       1    -1             0       | ||||
| 243        FEAT_EPIC_GREAT_DEXTERITY_7                 790       1    -1             0       | ||||
| 244        FEAT_EPIC_GREAT_DEXTERITY_8                 791       1    -1             0       | ||||
| 245        FEAT_EPIC_GREAT_DEXTERITY_9                 792       1    -1             0       | ||||
| 246        FEAT_EPIC_GREAT_DEXTERITY_10                793       1    -1             0       | ||||
| 247        FEAT_EPIC_SKILL_FOCUS_APPRAISE              588       0    -1             0       | ||||
| 248        FEAT_EPIC_SKILL_FOCUS_CONCENTRATION         589       0    -1             0       | ||||
| 249        FEAT_EPIC_SKILL_FOCUS_CRAFT_TRAP            590       0    -1             0       | ||||
| 250        FEAT_EPIC_SKILL_FOCUS_DISABLETRAP           591       0    -1             0       | ||||
| 251        FEAT_EPIC_SKILL_FOCUS_DISCIPLINE            592       0    -1             0       | ||||
| 252        FEAT_EPIC_SKILL_FOCUS_HEAL                  593       0    -1             0       | ||||
| 253        FEAT_EPIC_SKILL_FOCUS_HIDE                  594       0    -1             0       | ||||
| 254        FEAT_EPIC_SKILL_FOCUS_LORE                  596       0    -1             0       | ||||
| 255        FEAT_EPIC_SKILL_FOCUS_MOVESILENTLY          597       0    -1             0       | ||||
| 256        FEAT_EPIC_SKILL_FOCUS_OPENLOCK              598       0    -1             0       | ||||
| 257        FEAT_EPIC_SKILL_FOCUS_PARRY                 599       0    -1             0       | ||||
| 258        FEAT_EPIC_SKILL_FOCUS_PERSUADE              601       0    -1             0       | ||||
| 259        FEAT_EPIC_SKILL_FOCUS_PICKPOCKET            602       0    -1             0       | ||||
| 260        FEAT_EPIC_SKILL_FOCUS_SEARCH                603       0    -1             0       | ||||
| 261        FEAT_EPIC_SKILL_FOCUS_SETTRAP               604       0    -1             0       | ||||
| 262        FEAT_EPIC_SKILL_FOCUS_SPELLCRAFT            605       0    -1             0       | ||||
| 263        FEAT_EPIC_SKILL_FOCUS_SPOT                  606       0    -1             0       | ||||
| 264        FEAT_EPIC_SKILL_FOCUS_TAUNT                 607       0    -1             0       | ||||
| 265        FEAT_EPIC_SKILL_FOCUS_TUMBLE                608       0    -1             0       | ||||
| 266        FEAT_EPIC_SKILL_FOCUS_CRAFT_ARMOR           913       0    -1             0       | ||||
| 267        FEAT_EPIC_SKILL_FOCUS_CRAFT_WEAPON          914       0    -1             0       | ||||
| 268        FEAT_EPIC_SKILL_FOCUS_BLUFF                 917       0    -1             0       | ||||
| 269        FEAT_EPIC_SKILL_FOCUS_INTIMIDATE            918       0    -1             0       | ||||
| 270        FEAT_EPIC_SKILL_FOCUS_PERFORM               600       0    -1             0       | ||||
| 271        FEAT_EPIC_SKILL_FOCUS_USEMAGICDEVICE        609       0    -1             0       | ||||
| 272        FEAT_EPIC_LASTING_INSPIRATION               870       0    -1             0       | ||||
| 273        FEAT_EPIC_SPELL_FOCUS_ABJURATION            610       0    -1             0       | ||||
| 274        FEAT_EPIC_SPELL_FOCUS_CONJURATION           611       0    -1             0       | ||||
| 275        FEAT_EPIC_SPELL_FOCUS_DIVINATION            612       0    -1             0       | ||||
| 276        FEAT_EPIC_SPELL_FOCUS_ENCHANTMENT           613       0    -1             0       | ||||
| 277        FEAT_EPIC_SPELL_FOCUS_EVOCATION             614       0    -1             0       | ||||
| 278        FEAT_EPIC_SPELL_FOCUS_ILLUSION              615       0    -1             0       | ||||
| 279        FEAT_EPIC_SPELL_FOCUS_NECROMANCY            616       0    -1             0       | ||||
| 280        FEAT_EPIC_SPELL_FOCUS_TRANSMUTATION         617       0    -1             0       | ||||
| 281        FEAT_EPIC_SPELL_PENETRATION                 618       0    -1             0       | ||||
| 282        FEAT_EPIC_AUTOMATIC_LESSER_QUICKEN          857       0    -1             0       | ||||
| 283        FEAT_EPIC_AUTOMATIC_QUICKEN                 858       0    -1             0       | ||||
| 284        FEAT_EPIC_AUTOMATIC_GREATER_QUICKEN         859       0    -1             0       | ||||
| 285        FEAT_EPIC_AUTOMATIC_LESSER_SILENT           860       0    -1             0       | ||||
| 286        FEAT_EPIC_AUTOMATIC_SILENT                  861       0    -1             0       | ||||
| 287        FEAT_EPIC_AUTOMATIC_GREATER_SILENT          862       0    -1             0       | ||||
| 288        FEAT_EPIC_AUTOMATIC_LESSER_STILL            863       0    -1             0       | ||||
| 289        FEAT_EPIC_AUTOMATIC_STILL                   864       0    -1             0       | ||||
| 290        FEAT_EPIC_AUTOMATIC_GREATER_STILL           865       0    -1             0       | ||||
| 291        Bane_Magic_Aberration                       23556     0    -1             0       | ||||
| 292        Bane_Magic_Animal                           23557     0    -1             0       | ||||
| 293        Bane_Magic_Beast                            23558     0    -1             0       | ||||
| 294        Bane_Magic_Construct                        23559     0    -1             0       | ||||
| 295        Bane_Magic_Dragon                           23560     0    -1             0       | ||||
| 296        Bane_Magic_Dwarf                            23561     0    -1             0       | ||||
| 297        Bane_Magic_Elemental                        23562     0    -1             0       | ||||
| 298        Bane_Magic_Elf                              23563     0    -1             0       | ||||
| 299        Bane_Magic_Fey                              23564     0    -1             0       | ||||
| 300        Bane_Magic_Giant                            23565     0    -1             0       | ||||
| 301        Bane_Magic_Gnome                            23566     0    -1             0       | ||||
| 302        Bane_Magic_HalfElf                          23567     0    -1             0       | ||||
| 303        Bane_Magic_Halfling                         23568     0    -1             0       | ||||
| 304        Bane_Magic_HalfOrc                          23569     0    -1             0       | ||||
| 305        Bane_Magic_Human                            23570     0    -1             0       | ||||
| 306        Bane_Magic_Humanoid_Goblinoid               23571     0    -1             0       | ||||
| 307        Bane_Magic_Humanoid_Monstrous               23572     0    -1             0       | ||||
| 308        Bane_Magic_Humanoid_Orc                     23573     0    -1             0       | ||||
| 309        Bane_Magic_Humanoid_Reptilian               23574     0    -1             0       | ||||
| 310        Bane_Magic_Magical_Beast                    23575     0    -1             0       | ||||
| 311        Bane_Magic_Outsider                         23576     0    -1             0       | ||||
| 312        Bane_Magic_Shapechanger                     23577     0    -1             0       | ||||
| 313        Bane_Magic_Undead                           23578     0    -1             0       | ||||
| 314        Bane_Magic_Vermin                           23579     0    -1             0       | ||||
|   | ||||
| @@ -35,5 +35,6 @@ | ||||
| 31         FEAT_OLLAM_SPELLCASTING_SOHEI               26510     2    1              0       | ||||
| 32         FEAT_OLLAM_SPELLCASTING_SPSHAMAN            26572     2    1              0       | ||||
| 33         FEAT_OLLAM_SPELLCASTING_VASSAL              26626     2    1              0       | ||||
| 34         FEAT_OLLAM_MYSTERY_SHADOWCASTER             26740     2    1              0       | ||||
| 35         FEAT_OLLAM_MYSTERY_SHADOWSMITH              26752     2    1              0       | ||||
| 34         FEAT_OLLAM_SPELLCASTING_NONE                26664     2    1              0       | ||||
| 35         FEAT_OLLAM_MYSTERY_SHADOWCASTER             26740     2    1              0       | ||||
| 36         FEAT_OLLAM_MYSTERY_SHADOWSMITH              26752     2    1              0       | ||||
|   | ||||
| @@ -87,3 +87,4 @@ | ||||
| 83         FEAT_TIAMAT_INVOKING_DRAGON_SHAMAN        26711     2    1              0       | ||||
| 84         FEAT_TIAMAT_MYSTERY_SHADOWCASTER          26741     2    1              0       | ||||
| 85         FEAT_TIAMAT_MYSTERY_SHADOWSMITH           26753     2    1              0       | ||||
| 86         FEAT_TIAMAT_SPELLCASTING_NONE             26754     2    1              0       | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| 2DA V2.0 | ||||
|  | ||||
|   LABEL     ReqType ReqParam1      ReqParam2  | ||||
| 0 Alertness FEAT    0              ****       | ||||
| 1 Lore      SKILL   7              8          | ||||
| 2 ScriptVar VAR     PRC_ArcSpell3  0          | ||||
| 3 ScriptVar VAR     PRC_AllowAlien 0          | ||||
|   LABEL     ReqType ReqParam1          ReqParam2  | ||||
| 0 Alertness FEAT    0                  ****       | ||||
| 1 Lore      SKILL   7                  8          | ||||
| 2 ScriptVar VAR     PRC_PrereqAlienist 0          | ||||
| 3 ScriptVar VAR     PRC_AllowAlien     0          | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| 2DA V2.0 | ||||
|  | ||||
|   LABEL         ReqType ReqParam1              ReqParam2  | ||||
| 0 Lore          SKILL   7                      6          | ||||
| 1 Concentration SKILL   1                      6          | ||||
| 2 Spellcraft    SKILL   16                     6          | ||||
| 3 ScriptVar     VAR     PRC_DivSpell2          0          | ||||
| 4 ScriptVar     VAR     PRC_ArcSpell2          0          | ||||
| 5 ScriptVar     VAR     PRC_AllowMysticTheurge 0          | ||||
|   LABEL         ReqType ReqParam1               ReqParam2  | ||||
| 0 Lore          SKILL   7                       6          | ||||
| 1 Concentration SKILL   1                       6          | ||||
| 2 Spellcraft    SKILL   16                      6          | ||||
| 3 ScriptVar     VAR     PRC_AllowMysticTheurge  0          | ||||
| 4 ScriptVar     VAR     PRC_PrereqMysticTheurge 0          | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| 2DA V2.0 | ||||
|  | ||||
|   LABEL                ReqType ReqParam1      ReqParam2  | ||||
| 0 Base_Attack          BAB     4              ****       | ||||
| 1 ScriptVar            VAR     PRC_AllowOrcus 0          | ||||
| 2 Lore                 SKILL   7              4          | ||||
| 3 FEAT_LICHLOVED       FEAT    3395           ****       | ||||
| 4 ScriptVar            VAR     PRC_DivSpell1  0          | ||||
| 5 FEAT_THRALL_TO_DEMON FEAT    2616           ****       | ||||
|   LABEL                ReqType ReqParam1       ReqParam2  | ||||
| 0 Base_Attack          BAB     4               ****       | ||||
| 1 ScriptVar            VAR     PRC_AllowOrcus  0          | ||||
| 2 Lore                 SKILL   7               4          | ||||
| 3 FEAT_LICHLOVED       FEAT    3395            ****       | ||||
| 4 ScriptVar            VAR     PRC_PrereqOrcus 0          | ||||
| 5 FEAT_THRALL_TO_DEMON FEAT    2616            ****       | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| 2DA V2.0 | ||||
|  | ||||
|   LABEL     ReqType ReqParam1      ReqParam2  | ||||
| 0 ScriptVar VAR     PRC_ArcSpell3  0          | ||||
| 1 ScriptVar VAR     PRC_AllowElSav 0          | ||||
| 2 Lore      SKILL   7              8          | ||||
|   LABEL     ReqType ReqParam1       ReqParam2  | ||||
| 0 ScriptVar VAR     PRC_PrereqElSav 0          | ||||
| 1 ScriptVar VAR     PRC_AllowElSav  0          | ||||
| 2 Lore      SKILL   7               8          | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -120,6 +120,7 @@ const string ALLOW_CLASS_FISTRAZIEL             = "PRC_AllowFistRaz"; | ||||
| const string ALLOW_CLASS_FIST_OF_DAL_QUOR       = "PRC_AllowDalQuor"; | ||||
| const string ALLOW_CLASS_FIST_OF_ZUOKEN         = "PRC_AllowFoZ"; | ||||
| const string ALLOW_CLASS_FMM                    = "PRC_AllowFMM"; | ||||
| const string ALLOW_CLASS_FOCHULAN_LYRIST		= "PRC_AllowFocLyr"; | ||||
| const string ALLOW_CLASS_FOE_HUNTER             = "PRC_AllowFH"; | ||||
| const string ALLOW_CLASS_FORESTMASTER			= "PRC_AllowForMast"; | ||||
| const string ALLOW_CLASS_FORSAKER               = "PRC_AllowForsaker"; | ||||
|   | ||||
| @@ -1768,6 +1768,10 @@ const int FEAT_TNECRO_SPELLCASTING_SUBLIME_CHORD=26657; | ||||
| const int FEAT_MHARPER_SPELLCASTING_SUEL_ARCHANAMACH=26658; | ||||
| const int FEAT_ORCUS_SPELLCASTING_SUEL_ARCHANAMACH=26659; | ||||
| const int FEAT_ORCUS_SPELLCASTING_WARMAGE=26660; | ||||
| const int FEAT_DSONG_SPELLCASTING_NONE = 26661; | ||||
| const int FEAT_ASMODEUS_SPELLCASTING_NONE = 26662; | ||||
| const int FEAT_TIAMAT_SPELLCASTING_NONE = 26663; | ||||
| const int FEAT_OLLAM_SPELLCASTING_NONE = 26664; | ||||
|  | ||||
| //:: Warlock invoking marker feats | ||||
| const int FEAT_ABCHAMP_INVOKING_WARLOCK  =  26681; | ||||
| @@ -1811,11 +1815,11 @@ const int FEAT_WILDMAGE_INVOKING_DRAGON_SHAMAN  =  26714; | ||||
|  | ||||
| //:: Shadowcaster marker feats | ||||
| const int FEAT_AOTS_MYSTERY_SHADOWCASTER  =  26731; | ||||
| const int FEAT_ALIEN_MYSTERY_SHADOWCASTER  =  26732; | ||||
| const int FEAT_ALIENIST_MYSTERY_SHADOWCASTER  =  26732; | ||||
| const int FEAT_CHILDNIGHT_MYSTERY_SHADOWCASTER  =  26733; | ||||
| const int FEAT_ASMODEUS_MYSTERY_SHADOWCASTER  =  26734; | ||||
| const int FEAT_DRAGONSONG_MYSTERY_SHADOWCASTER  =  26735; | ||||
| const int FEAT_ESAVANT_MYSTERY_SHADOWCASTER  =  26736; | ||||
| const int FEAT_DSONG_MYSTERY_SHADOWCASTER  =  26735; | ||||
| const int FEAT_ELESAVANT_MYSTERY_SHADOWCASTER  =  26736; | ||||
| const int FEAT_MASTERSHADOW_MYSTERY_SHADOWCASTER  =  26737; | ||||
| const int FEAT_MYSTICTHEURGE_MYSTERY_SHADOWCASTER  =  26738; | ||||
| const int FEAT_NOCTUMANCER_MYSTERY_SHADOWCASTER  =  26739; | ||||
| @@ -1825,11 +1829,11 @@ const int FEAT_ORCUS_MYSTERY_SHADOWCASTER  =  26742; | ||||
|  | ||||
| //:: Shadowsmith marker feats     | ||||
| const int FEAT_AOTS_MYSTERY_SHADOWSMITH  =  26743; | ||||
| const int FEAT_ALIEN_MYSTERY_SHADOWSMITH  =  26744; | ||||
| const int FEAT_ALIENIST_MYSTERY_SHADOWSMITH  =  26744; | ||||
| const int FEAT_CHILDNIGHT_MYSTERY_SHADOWSMITH  =  26745; | ||||
| const int FEAT_ASMODEUS_MYSTERY_SHADOWSMITH  =  26746; | ||||
| const int FEAT_DRAGONSONG_MYSTERY_SHADOWSMITH  =  26747; | ||||
| const int FEAT_ESAVANT_MYSTERY_SHADOWSMITH  =  26748; | ||||
| const int FEAT_DSONG_MYSTERY_SHADOWSMITH  =  26747; | ||||
| const int FEAT_ELESAVANT_MYSTERY_SHADOWSMITH  =  26748; | ||||
| const int FEAT_MASTERSHADOW_MYSTERY_SHADOWSMITH  =  26749; | ||||
| const int FEAT_MYSTICTHEURGE_MYSTERY_SHADOWSMITH  =  26750; | ||||
| const int FEAT_NOCTUMANCER_MYSTERY_SHADOWSMITH  =  26751; | ||||
|   | ||||
| @@ -1389,10 +1389,11 @@ void BardSong(object oPC) | ||||
|     // or other classes can grant it on their own | ||||
|     if(!GetHasFeat(FEAT_BARD_SONGS, oPC)) return; | ||||
|  | ||||
|     int nTotal = GetLevelByClass(CLASS_TYPE_BARD, oPC); | ||||
|     nTotal += GetLevelByClass(CLASS_TYPE_DIRGESINGER, oPC); | ||||
|     nTotal += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oPC); | ||||
|     nTotal += GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC) / 2; | ||||
|     int nTotal 	= GetLevelByClass(CLASS_TYPE_BARD, oPC); | ||||
| 		nTotal += GetLevelByClass(CLASS_TYPE_DIRGESINGER, oPC); | ||||
| 		nTotal += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oPC); | ||||
| 		nTotal += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oPC); | ||||
| 		nTotal += GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC) / 2; | ||||
|  | ||||
|     if(GetHasFeat(FEAT_EXTRA_MUSIC, oPC)) nTotal += 4; | ||||
|  | ||||
|   | ||||
| @@ -16,7 +16,7 @@ | ||||
| //::////////////////////////////////////////////// | ||||
| //::////////////////////////////////////////////// | ||||
|  | ||||
| //:: Updated for .35 by Jaysyn 2023/03/10 | ||||
| //:: Updated for .35 by Jaysyn 2023/10/19 | ||||
|  | ||||
| //:: Test Void | ||||
| // void main (){} | ||||
| @@ -376,22 +376,88 @@ int GetPathByMystery(int nMystId) | ||||
|     return nReturn; | ||||
| } | ||||
|  | ||||
| /* | ||||
| 	The following PrCs will need to be added to Shadowcasting:  | ||||
| 	Disciple of Asmodeus, Thrall of Orcus, Ollam, Acolyte of the Skin,  | ||||
| 	Alienist, Elemental Savant, Dragonsong Lyrist, Talon of Tiamat &  | ||||
| 	Mystic Theurge | ||||
| */ | ||||
|  | ||||
| int GetShadowMagicPRCLevels(object oShadow) | ||||
| { | ||||
|     int nLevel = GetLevelByClass(CLASS_TYPE_NOCTUMANCER, oShadow); | ||||
|      | ||||
|     // These two don't add at 1st level | ||||
|     if (GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT, oShadow)) | ||||
|         nLevel += GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT, oShadow) - 1; | ||||
|     if (GetLevelByClass(CLASS_TYPE_MASTER_OF_SHADOW, oShadow)) | ||||
|         nLevel += GetLevelByClass(CLASS_TYPE_MASTER_OF_SHADOW, oShadow) - 1;         | ||||
| 	int nLevel; | ||||
| 	int nShadowClass	= GetPrimaryShadowMagicClass(oShadow); | ||||
| 	 | ||||
| 	if (nShadowClass == CLASS_TYPE_SHADOWCASTER) | ||||
|     { | ||||
| 		if(GetHasFeat(FEAT_AOTS_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oShadow) + 1) / 2; | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_ALIENIST_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_ALIENIST, oShadow); | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_CHILDNIGHT_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT, oShadow) -1;	//:: No increase @ 1st level | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_ASMODEUS_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oShadow) + 1) / 2; | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_DSONG_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST, oShadow) + 1) / 2;		 | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_ELESAVANT_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_ELEMENTAL_SAVANT, oShadow);		 | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_MASTERSHADOW_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_MASTER_OF_SHADOW, oShadow) -1;	//:: No increase @ 1st level | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_MYSTICTHEURGE_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_MYSTIC_THEURGE, oShadow); | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_NOCTUMANCER_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_NOCTUMANCER, oShadow); | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_OLLAM_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_OLLAM, oShadow) + 1 / 2); | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_TIAMAT_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oShadow) + 1 / 2); | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_ORCUS_MYSTERY_SHADOWCASTER, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_ORCUS, oShadow) + 1 / 2);		 | ||||
| 	} | ||||
| 	 | ||||
| 	if (nShadowClass == CLASS_TYPE_SHADOWSMITH) | ||||
| 	{ | ||||
| 		if(GetHasFeat(FEAT_AOTS_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oShadow) + 1) / 2; | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_ALIENIST_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_ALIENIST, oShadow); | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_CHILDNIGHT_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT, oShadow) -1;	//:: No increase @ 1st level | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_ASMODEUS_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oShadow) + 1) / 2; | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_DSONG_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST, oShadow) + 1) / 2;		 | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_ELESAVANT_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_ELEMENTAL_SAVANT, oShadow);		 | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_MASTERSHADOW_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_MASTER_OF_SHADOW, oShadow) -1;	//:: No increase @ 1st level | ||||
| 		 | ||||
| 		if(GetHasFeat(FEAT_MYSTICTHEURGE_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_MYSTIC_THEURGE, oShadow); | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_NOCTUMANCER_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += GetLevelByClass(CLASS_TYPE_NOCTUMANCER, oShadow); | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_OLLAM_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_OLLAM, oShadow) + 1 / 2); | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_TIAMAT_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oShadow) + 1 / 2); | ||||
|  | ||||
| 		if(GetHasFeat(FEAT_ORCUS_MYSTERY_SHADOWSMITH, oShadow)) | ||||
| 			nLevel += (GetLevelByClass(CLASS_TYPE_ORCUS, oShadow) + 1 / 2);		 | ||||
| 	}     | ||||
|  | ||||
|     return nLevel; | ||||
| } | ||||
|   | ||||
| @@ -58,6 +58,9 @@ int BladesingerMarkerFeats(); | ||||
| //:; Enforces Cerebrmancer marker feats | ||||
| int CerebremancerMarkerFeats(); | ||||
|  | ||||
| //:: Enforce Child of Night marker feats | ||||
| int CoNMarkerFeats(); | ||||
|  | ||||
| //:; Enforces Combat Medic marker feats | ||||
| int CombatMedicMarkerFeats(); | ||||
|  | ||||
| @@ -139,6 +142,9 @@ int MaesterMarkerFeats(); | ||||
| //:; Enforces Magekiller marker feats | ||||
| int MagekillerMarkerFeats(); | ||||
|  | ||||
| //:: Enforces Master of Shadows marker feats | ||||
| int MasterShadowMarkerFeats(); | ||||
|  | ||||
| //:; Enforces Master of Shrouds marker feats | ||||
| int MoSMarkerFeats(); | ||||
|  | ||||
| @@ -330,18 +336,20 @@ int AoTSMarkerFeats() | ||||
| 						+ GetHasFeat(FEAT_ACOLYTE_SPELLCASTING_UR_PRIEST) | ||||
| 						+ GetHasFeat(FEAT_ACOLYTE_SPELLCASTING_CULTIST_PEAK) | ||||
| 						+ GetHasFeat(FEAT_AOTS_INVOKING_WARLOCK) | ||||
| 						+ GetHasFeat(FEAT_AOTS_INVOKING_DFA); | ||||
| 						+ GetHasFeat(FEAT_AOTS_INVOKING_DFA) | ||||
| 						+ GetHasFeat(FEAT_AOTS_MYSTERY_SHADOWCASTER) | ||||
| 						+ GetHasFeat(FEAT_AOTS_MYSTERY_SHADOWSMITH); | ||||
|  | ||||
|         if(nAcolyte > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("An Acolyte of the Skin may only advance a single arcane, divine or invoker class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("An Acolyte of the Skin may only advance a single arcane, divine, shadowcasting or invoker class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nAcolyte < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("An Acolyte of the Skin must pick one arcane, divine or invoker class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("An Acolyte of the Skin must pick one arcane, divine, shadowcasting or invoker class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| @@ -439,18 +447,20 @@ int AlienistMarkerFeats() | ||||
| 						+ GetHasFeat(FEAT_ALIENIST_SPELLCASTING_OCULAR) | ||||
| 						+ GetHasFeat(FEAT_ALIENIST_SPELLCASTING_RANGER) | ||||
| 						+ GetHasFeat(FEAT_ALIENIST_SPELLCASTING_OASHAMAN) | ||||
| 						+ GetHasFeat(FEAT_ALIENIST_SPELLCASTING_UR_PRIEST); | ||||
| 						+ GetHasFeat(FEAT_ALIENIST_SPELLCASTING_UR_PRIEST) | ||||
| 						+ GetHasFeat(FEAT_ALIENIST_MYSTERY_SHADOWCASTER) | ||||
| 						+ GetHasFeat(FEAT_ALIENIST_MYSTERY_SHADOWSMITH); | ||||
|  | ||||
|         if(nAlienist > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("An Alienist may only advance a single arcane or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("An Alienist may only advance a single arcane, shadowcasting or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nAlienist < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("An Alienist must pick one arcane or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("An Alienist must pick one arcane, shadowcasting or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| @@ -618,20 +628,23 @@ int DoAMarkerFeats() | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_SOHEI) | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_SPSHAMAN) | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_UR_PRIEST) | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_NONE) | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_INVOKING_WARLOCK) | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_INVOKING_DFA) | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_INVOKING_DRAGON_SHAMAN); | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_INVOKING_DRAGON_SHAMAN) | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_MYSTERY_SHADOWCASTER) | ||||
| 						+ GetHasFeat(FEAT_ASMODEUS_MYSTERY_SHADOWSMITH); | ||||
|  | ||||
|         if(nDoA > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Disciple of Asmodeus may only advance a single arcane, divine or invoker class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Disciple of Asmodeus may only advance a single arcane, divine, shadowcasting or invoker class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nDoA < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Disciple of Asmodeus must pick one arcane, divine or invoker class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Disciple of Asmodeus must pick one arcane, divine, shadowcasting or invoker class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| @@ -918,6 +931,33 @@ int CerebremancerMarkerFeats() | ||||
|     return FALSE; | ||||
| }	 | ||||
|  | ||||
| //:: Enforce Child of Night marker feats | ||||
| int CoNMarkerFeats() | ||||
| { | ||||
| 	if(GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT)) | ||||
| 	{ | ||||
| 		int nChild	= GetHasFeat(FEAT_CHILDNIGHT_MYSTERY_SHADOWCASTER) | ||||
| 				+ GetHasFeat(FEAT_CHILDNIGHT_MYSTERY_SHADOWSMITH); | ||||
| 				 | ||||
|         if(nChild > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Child of Night may only advance a single shadowcasting class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nChild < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Child of Night must pick one shadowcasting class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         }	 | ||||
| 			 | ||||
| 	} | ||||
| 	 | ||||
| 	return FALSE; | ||||
| }	 | ||||
|  | ||||
| //:; Enforces Combat Medic marker feats | ||||
| int CombatMedicMarkerFeats() | ||||
| { | ||||
| @@ -1142,18 +1182,21 @@ int DragonsongLyristMarkerFeats() | ||||
| 						+ GetHasFeat(FEAT_DSONG_SPELLCASTING_SOHEI) | ||||
| 						+ GetHasFeat(FEAT_DSONG_SPELLCASTING_SOL) | ||||
| 						+ GetHasFeat(FEAT_DSONG_SPELLCASTING_SPSHAMAN) | ||||
| 						+ GetHasFeat(FEAT_DSONG_SPELLCASTING_VASSAL); | ||||
| 						+ GetHasFeat(FEAT_DSONG_SPELLCASTING_VASSAL) | ||||
| 						+ GetHasFeat(FEAT_DSONG_SPELLCASTING_NONE)						 | ||||
| 						+ GetHasFeat(FEAT_DSONG_MYSTERY_SHADOWCASTER) | ||||
| 						+ GetHasFeat(FEAT_DSONG_MYSTERY_SHADOWSMITH); | ||||
| 						 | ||||
|         if(nDragonsong > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Dragonsong Lyrist may only advance a single arcane or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Dragonsong Lyrist may only advance a single arcane, shadowcasting or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nDragonsong < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Dragonsong Lyrist must pick one arcane or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Dragonsong Lyrist must pick one arcane, shadowcasting or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| @@ -1332,18 +1375,20 @@ int ElementalSavantMarkerFeats() | ||||
| 						+ GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_OCULAR) | ||||
| 						+ GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_OASHAMAN) | ||||
| 						+ GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_SPSHAMAN) | ||||
| 						+ GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_UR_PRIEST); | ||||
| 						+ GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_UR_PRIEST) | ||||
| 						+ GetHasFeat(FEAT_ELESAVANT_MYSTERY_SHADOWCASTER) | ||||
| 						+ GetHasFeat(FEAT_ELESAVANT_MYSTERY_SHADOWSMITH); | ||||
| 						 | ||||
|         if(nElmSavant > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("An Elemental Savant may only advance a single arcane or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("An Elemental Savant may only advance a single arcane, shadowcasting or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nElmSavant < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("An Elemental Savant must pick one arcane or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("An Elemental Savant must pick one arcane, shadowcasting or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| @@ -1510,7 +1555,8 @@ int FochlucanLyristMarkerFeats() | ||||
| 								+ GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_OASHAMAN) | ||||
| 								+ GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_SOHEI) | ||||
| 								+ GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_SOL) | ||||
| 								+ GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_SPSHAMAN); | ||||
| 								+ GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_SPSHAMAN) | ||||
| 								+ GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_UR_PRIEST); | ||||
| 							 | ||||
|  | ||||
|         if(nFochlucanArcane > 1) | ||||
| @@ -2185,6 +2231,31 @@ int MagekillerMarkerFeats() | ||||
|     return FALSE; | ||||
| }	 | ||||
|  | ||||
| //:: Enforces Master of Shadows marker feats | ||||
| int MasterShadowMarkerFeats() | ||||
| { | ||||
| 	if(GetLevelByClass(CLASS_TYPE_MAGEKILLER)) | ||||
| 	{ | ||||
| 		int nShadow	= GetHasFeat(FEAT_MASTERSHADOW_MYSTERY_SHADOWCASTER) | ||||
| 					+ GetHasFeat(FEAT_MASTERSHADOW_MYSTERY_SHADOWSMITH); | ||||
| 				 | ||||
|         if(nShadow > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Master of Shadows may only advance a single shadowcasting class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nShadow < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Master of Shadows must pick one shadowcasting class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 	} | ||||
|     return FALSE;				 | ||||
| } | ||||
|  | ||||
| //:; Enforces Master of Shrouds marker feats | ||||
| int MoSMarkerFeats() | ||||
| { | ||||
| @@ -2322,6 +2393,81 @@ int MorninglordMarkerFeats() | ||||
|  | ||||
| //:; Enforces Mystic Theurge marker feats | ||||
| int MysticTheurgeMarkerFeats() | ||||
| { | ||||
|     if (GetLevelByClass(CLASS_TYPE_MYSTIC_THEURGE)) | ||||
|     { | ||||
|         int nMysticDivine = 0; | ||||
|         int nMysticArcane = 0; | ||||
|         int nMysticShadow = 0; | ||||
|  | ||||
|         // Check for divine, arcane, and shadow marker feats | ||||
|         nMysticDivine = GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_ARCHIVIST) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_BLACKGUARD) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_BLIGHTER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_CLERIC) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_DOMIEL) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_DRUID) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_FAVOURED_SOUL) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_HEALER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_JUSTICEWW) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_KNIGHT_CHALICE) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_KNIGHT_MIDDLECIRCLE) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_NENTYAR_HUNTER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_OCULAR) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_PALADIN) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_RANGER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_OASHAMAN) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SOHEI) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SOL) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SPSHAMAN) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_UR_PRIEST) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_VASSAL); | ||||
|  | ||||
|         nMysticArcane = GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_FEY) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_ABERRATION) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_MONSTROUS) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_OUTSIDER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SHAPECHANGER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_ASSASSIN) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_BARD) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_BEGUILER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_CELEBRANT_SHARESS) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_CULTIST_PEAK) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_DNECRO) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_DUSKBLADE) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_HARPER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_HEXBLADE) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_KNIGHT_WEAVE) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SHADOWLORD) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SORCERER) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SUBLIME_CHORD) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SUEL_ARCHANAMACH) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_WARMAGE) | ||||
|             + GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_WIZARD); | ||||
|  | ||||
|         nMysticShadow = GetHasFeat(FEAT_MYSTICTHEURGE_MYSTERY_SHADOWCASTER) | ||||
|             + GetHasFeat(FEAT_MYSTICTHEURGE_MYSTERY_SHADOWSMITH); | ||||
|  | ||||
|         int totalMarkerFeats = nMysticDivine + nMysticArcane + nMysticShadow; | ||||
|  | ||||
|         // Check if the character has chosen a valid combination of marker feats | ||||
|         if (totalMarkerFeats > 2 || (nMysticDivine > 1 && nMysticArcane > 1)) { | ||||
|             FloatingTextStringOnCreature("A Mystic Theurge may only advance two different types of spellcasting.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
|  | ||||
|         if (nMysticDivine < 1 || nMysticArcane < 1 || nMysticShadow < 1) { | ||||
|             FloatingTextStringOnCreature("A Mystic Theurge must pick two spellcasting classes to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return FALSE; | ||||
| } | ||||
|  | ||||
| /* int MysticTheurgeMarkerFeats() | ||||
| { | ||||
|     if(GetLevelByClass(CLASS_TYPE_MYSTIC_THEURGE)) | ||||
|     { | ||||
| @@ -2399,42 +2545,58 @@ int MysticTheurgeMarkerFeats() | ||||
|     } | ||||
| 	 | ||||
|     return FALSE; | ||||
| }	 | ||||
| }	 */ | ||||
|  | ||||
| //:; Enforces Noctumancer marker feats | ||||
| int NoctumancerMarkerFeats() | ||||
| { | ||||
|     if(GetLevelByClass(CLASS_TYPE_NOCTUMANCER)) | ||||
|     { | ||||
| 		int nNoctumancer	= GetHasFeat(FEAT_MAESTER_SPELLCASTING_FEY) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_ABERRATION) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_MONSTROUS) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_OUTSIDER) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_SHAPECHANGER) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_BARD) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_BEGUILER) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_DNECRO) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_DUSKBLADE) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_KNIGHT_WEAVE) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_SORCERER) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_SUBLIME_CHORD) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_SUEL_ARCHANAMACH) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_WARMAGE) | ||||
| 							+ GetHasFeat(FEAT_MAESTER_SPELLCASTING_WIZARD); | ||||
| 		int nNoctArcane		= GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_FEY) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_ABERRATION) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_MONSTROUS) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_OUTSIDER) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_SHAPECHANGER) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_BARD) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_BEGUILER) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_DNECRO) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_DUSKBLADE) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_KNIGHT_WEAVE) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_SORCERER) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_SUBLIME_CHORD) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_SUEL_ARCHANAMACH) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_WARMAGE) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_WIZARD); | ||||
|  | ||||
| 		int nNoctShadow		= GetHasFeat(FEAT_NOCTUMANCER_MYSTERY_SHADOWCASTER) | ||||
| 							+ GetHasFeat(FEAT_NOCTUMANCER_MYSTERY_SHADOWSMITH); | ||||
| 						 | ||||
|         if(nNoctumancer > 1) | ||||
|         if(nNoctArcane > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Noctumancer may only advance a single arcane or invoker class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Noctumancer may only advance a single arcane class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nNoctumancer < 1) | ||||
| 		if(nNoctArcane < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Noctumancer must pick one arcane or invoker class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Noctumancer must pick one arcane class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
|         if(nNoctShadow > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Noctumancer may only advance a single shadowcasting class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nNoctShadow < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Noctumancer must pick one shadowcasting class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         }		 | ||||
|     } | ||||
| 	 | ||||
|     return FALSE; | ||||
| @@ -2475,18 +2637,21 @@ int OllamMarkerFeats() | ||||
| 					+ GetHasFeat(FEAT_OLLAM_SPELLCASTING_OASHAMAN) | ||||
| 					+ GetHasFeat(FEAT_OLLAM_SPELLCASTING_SOHEI) | ||||
| 					+ GetHasFeat(FEAT_OLLAM_SPELLCASTING_SPSHAMAN) | ||||
| 					+ GetHasFeat(FEAT_OLLAM_SPELLCASTING_VASSAL); | ||||
| 					+ GetHasFeat(FEAT_OLLAM_SPELLCASTING_VASSAL) | ||||
| 					+ GetHasFeat(FEAT_OLLAM_SPELLCASTING_NONE) | ||||
| 					+ GetHasFeat(FEAT_OLLAM_MYSTERY_SHADOWCASTER) | ||||
| 					+ GetHasFeat(FEAT_OLLAM_MYSTERY_SHADOWSMITH); | ||||
| 						 | ||||
|         if(nOllam > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Ollam may only advance a single divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Ollam may only advance a single arcane, shadowcasting or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nOllam < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Ollam must pick one divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Ollam must pick one arcane, shadowcasting or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| @@ -2589,18 +2754,20 @@ int OrcusMarkerFeats() | ||||
| 					+ GetHasFeat(FEAT_ORCUS_SPELLCASTING_SORCERER) | ||||
| 					+ GetHasFeat(FEAT_ORCUS_SPELLCASTING_SUBLIME_CHORD) | ||||
| 					+ GetHasFeat(FEAT_ORCUS_SPELLCASTING_SUEL_ARCHANAMACH) | ||||
| 					+ GetHasFeat(FEAT_ORCUS_SPELLCASTING_WARMAGE); | ||||
| 					+ GetHasFeat(FEAT_ORCUS_SPELLCASTING_WARMAGE) | ||||
| 					+ GetHasFeat(FEAT_OLLAM_MYSTERY_SHADOWCASTER) | ||||
| 					+ GetHasFeat(FEAT_OLLAM_MYSTERY_SHADOWSMITH); | ||||
| 						 | ||||
|         if(nOrcus > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Thrall of Orcus may only advance a single arcane or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Thrall of Orcus may only advance a single arcane, shadowcasting or divine class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nOrcus < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Thrall of Orcus must pick one arcane or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Thrall of Orcus must pick one arcane, shadowcasting or divine class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| @@ -3462,20 +3629,23 @@ int TiamatMarkerFeats() | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_SPELLCASTING_OASHAMAN) | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_SPELLCASTING_SOHEI) | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_SPELLCASTING_SPSHAMAN) | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_SPELLCASTING_NONE)					 | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_INVOKING_WARLOCK) | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_INVOKING_DFA) | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_INVOKING_DRAGON_SHAMAN); | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_INVOKING_DRAGON_SHAMAN) | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_MYSTERY_SHADOWCASTER) | ||||
| 					+ GetHasFeat(FEAT_TIAMAT_MYSTERY_SHADOWSMITH);					; | ||||
| 						 | ||||
|         if(nTiamat > 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Talon of Tiamat may only advance a single arcane, divine or invoker class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Talon of Tiamat may only advance a single arcane, shadowcasting, divine or invoker class.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| 		 | ||||
| 		if(nTiamat < 1) | ||||
|         { | ||||
|             FloatingTextStringOnCreature("A Talon of Tiamat must pick one arcane, divine or invoker class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("A Talon of Tiamat must pick one arcane, shadowcasting, divine or invoker class to advance at first level.", OBJECT_SELF, FALSE); | ||||
|             FloatingTextStringOnCreature("Please reselect your feats.", OBJECT_SELF, FALSE); | ||||
|             return TRUE; | ||||
|         } | ||||
| @@ -3847,6 +4017,7 @@ void main() | ||||
| 	|| BrimstoneSpeakerMarkerFeats() | ||||
| 	|| BladesingerMarkerFeats() | ||||
| 	|| CerebremancerMarkerFeats() | ||||
| 	|| CoNMarkerFeats() | ||||
| 	|| CombatMedicMarkerFeats() | ||||
| 	|| ContemplativeMarkerFeats() | ||||
| 	|| DragonheartMarkerFeats() | ||||
| @@ -3874,6 +4045,7 @@ void main() | ||||
| 	|| MCoKMarkerFeats() | ||||
| 	|| MaesterMarkerFeats() | ||||
| 	|| MagekillerMarkerFeats() | ||||
| 	|| MasterShadowMarkerFeats() | ||||
| 	|| MoSMarkerFeats() | ||||
| 	|| MasterHarperMarkerFeats() | ||||
| 	|| MorninglordMarkerFeats() | ||||
|   | ||||
| @@ -10,6 +10,7 @@ | ||||
|  | ||||
| //:: Updated for NWN .35 by Jaysyn 2023/03/11 | ||||
|  | ||||
|  | ||||
| #include "inc_epicspells" | ||||
| #include "prc_inc_sneak" | ||||
| #include "psi_inc_psifunc" | ||||
| @@ -130,7 +131,7 @@ void reqGender() | ||||
|         DeleteLocalInt(OBJECT_SELF, "PRC_Male"); | ||||
| } | ||||
|  | ||||
| void Kord(object oPC) | ||||
| void Kord(object oPC) //:: This could be in the prereq 2da | ||||
| { | ||||
|     SetLocalInt(oPC, "PRC_PrereqKord", 1); | ||||
|  | ||||
| @@ -140,7 +141,7 @@ void Kord(object oPC) | ||||
|     } | ||||
| } | ||||
|  | ||||
| void Purifier(object oPC) | ||||
| void Purifier(object oPC) //:: This could be in the prereq 2da | ||||
| { | ||||
|     SetLocalInt(oPC, "PRC_PrereqPurifier", 1); | ||||
|  | ||||
| @@ -172,7 +173,7 @@ void Cultist(object oPC) | ||||
|     int i; | ||||
|     for (i = 1; i <= 8; i++) | ||||
|     { | ||||
|         if (GetIsArcaneClass(GetClassByPosition(i, oPC))) | ||||
|         if (!GetIsArcaneClass(GetClassByPosition(i, oPC))) | ||||
|         { | ||||
|             SetLocalInt(oPC, "PRC_PrereqCultist", 0); | ||||
|             break; | ||||
| @@ -1042,13 +1043,226 @@ void TomeOfBattle(object oPC = OBJECT_SELF) | ||||
|         SetLocalInt(oPC, "PRC_PrereqSSN", 0); | ||||
| } | ||||
|  | ||||
| void AOTS(object oPC) | ||||
|  | ||||
| void FMMPreReqs(object oPC) | ||||
| { | ||||
|     //:: Force Missile Mage can only be taken if the player is able to cast Magic Missile. | ||||
|  | ||||
|     SetLocalInt(oPC, "PRC_PresFMM", 1); | ||||
|  | ||||
|     //:: Check PRC NewSpellBook classes: Archivist, Aberration, Monstrous, Outsider,  | ||||
| 	//:: Shapechanger, Knight of the Weave, Sorcerer, Warmage | ||||
| 	 | ||||
|     if(PRCGetIsRealSpellKnown(SPELL_MAGIC_MISSILE, oPC)) | ||||
|     { | ||||
|         SetLocalInt(oPC, "PRC_PresFMM", 0); | ||||
|         return; | ||||
|     } | ||||
|  | ||||
| 	//:: Check Cleric & Shaman | ||||
| 	int iWis = GetLocalInt(GetPCSkin(oPC), "PRC_trueWis"); | ||||
| 	if(iWis > 10 && GetHasFeat(PRC_DOMAIN_FORCE, oPC)) | ||||
| 	{ | ||||
| 		SetLocalInt(oPC, "PRC_PresFMM", 0); | ||||
| 	}		 | ||||
|  | ||||
| 	//:: Check Bioware Sorcerer | ||||
| 	int iCha = GetLocalInt(GetPCSkin(oPC), "PRC_trueCHA"); | ||||
| 	if(iCha > 10) | ||||
| 	{	 | ||||
| 		if(GetIsInKnownSpellList(oPC, CLASS_TYPE_SORCERER, SPELL_MAGIC_MISSILE)) | ||||
| 			{ | ||||
| 				SetLocalInt(oPC, "PRC_PresFMM", 0); | ||||
| 			}	 | ||||
| 	} | ||||
|  | ||||
| 	//:: Check Wizard | ||||
| 	int iInt = GetLocalInt(GetPCSkin(oPC), "PRC_trueINT"); | ||||
|     if(iInt > 10) | ||||
|     { | ||||
|         if(GetLevelByClass(CLASS_TYPE_WIZARD)) | ||||
|             SetLocalInt(oPC, "PRC_PresFMM", 0); | ||||
|     } | ||||
| 	 | ||||
| 	//:: Check Nentyar Hunter | ||||
|     if(iWis > 10) | ||||
|     { | ||||
|         if(GetLevelByClass(CLASS_TYPE_NENTYAR_HUNTER)) | ||||
|             SetLocalInt(oPC, "PRC_PresFMM", 0); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void ThrallOfOrcusPreReqs(object oPC) | ||||
| { | ||||
| 	int iArcane = 0; | ||||
| 	int iDivine = 0; | ||||
| 	int iShadow = 0; | ||||
| 	 | ||||
| 	if(GetLocalInt(oPC, "PRC_ArcSpell1") == 0) | ||||
| 	{  | ||||
| 		iArcane = 1; | ||||
| 	} | ||||
|  | ||||
| 	if(GetLocalInt(oPC, "PRC_DivSpell1") == 0) | ||||
| 	{  | ||||
| 		iDivine = 1; | ||||
| 	} | ||||
|  | ||||
| 	if(GetLocalInt(oPC, "PRC_MystLevel1") == 0) | ||||
| 	{  | ||||
| 		iShadow = 1; | ||||
| 	} | ||||
| 	 | ||||
|     // Initialize the prerequisite variable to 1 | ||||
|     SetLocalInt(oPC, "PRC_PrereqOrcus", 1); | ||||
|  | ||||
|     // Count how many conditions are true | ||||
|     int conditionsMet = 0; | ||||
|  | ||||
|     if (iArcane > 0) conditionsMet++; | ||||
| 	if (iDivine > 0) conditionsMet++; | ||||
|     if (iShadow > 0) conditionsMet++; | ||||
|  | ||||
|     // Check if at least one of the conditions are met and set "PRC_PrereqOrcus" to 0 if true | ||||
|     if (conditionsMet >= 1) | ||||
|     { | ||||
|         SetLocalInt(oPC, "PRC_PrereqOrcus", 0); | ||||
|     } | ||||
| }	 | ||||
|       	 | ||||
| void ElementalSavantPreReqs(object oPC) | ||||
| { | ||||
| 	int iArcane = 0; | ||||
| 	int iDivine = 0; | ||||
| 	int iShadow = 0; | ||||
| 	 | ||||
| 	if(GetLocalInt(oPC, "PRC_ArcSpell3") == 0) | ||||
| 	{  | ||||
| 		iArcane = 1; | ||||
| 	} | ||||
|  | ||||
| 	if(GetLocalInt(oPC, "PRC_DivSpell3") == 0) | ||||
| 	{  | ||||
| 		iDivine = 1; | ||||
| 	} | ||||
|  | ||||
| 	if(GetLocalInt(oPC, "PRC_MystLevel3") == 0) | ||||
| 	{  | ||||
| 		iShadow = 1; | ||||
| 	} | ||||
| 	 | ||||
|     // Initialize the prerequisite variable to 1 | ||||
|     SetLocalInt(oPC, "PRC_PrereqElSav", 1); | ||||
|  | ||||
|     // Count how many conditions are true | ||||
|     int conditionsMet = 0; | ||||
|  | ||||
|     if (iArcane > 0) conditionsMet++; | ||||
| 	if (iDivine > 0) conditionsMet++; | ||||
|     if (iShadow > 0) conditionsMet++; | ||||
|  | ||||
|     // Check if at least one of the conditions are met and set "PRC_PrereqElSav" to 0 if true | ||||
|     if (conditionsMet >= 1) | ||||
|     { | ||||
|         SetLocalInt(oPC, "PRC_PrereqElSav", 0); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void MysticTheurgePreReqs(object oPC) | ||||
| { | ||||
| 	int iArcane = 0; | ||||
| 	int iDivine = 0; | ||||
| 	int iShadow = 0; | ||||
| 	 | ||||
| 	if(GetLocalInt(oPC, "PRC_ArcSpell2") == 0) | ||||
| 	{  | ||||
| 		iArcane = 1; | ||||
| 	} | ||||
|  | ||||
| 	if(GetLocalInt(oPC, "PRC_DivSpell2") == 0) | ||||
| 	{  | ||||
| 		iDivine = 1; | ||||
| 	} | ||||
|  | ||||
| 	if(GetLocalInt(oPC, "PRC_MystLevel2") == 0) | ||||
| 	{  | ||||
| 		iShadow = 1; | ||||
| 	} | ||||
| 	 | ||||
|     // Initialize the prerequisite variable to 1 | ||||
|     SetLocalInt(oPC, "PRC_PrereqMysticTheurge", 1); | ||||
|  | ||||
|     // Count how many conditions are true | ||||
|     int conditionsMet = iArcane + iDivine + iShadow; | ||||
|  | ||||
| /*     if (iArcane > 0) conditionsMet++; | ||||
| 	if (iDivine > 0) conditionsMet++; | ||||
|     if (iShadow > 0) conditionsMet++; */ | ||||
|  | ||||
|     // Check if at least two of the conditions are met and set "PRC_PrereqMysticTheurge" to 0 if true | ||||
|     if (conditionsMet > 1) | ||||
|     { | ||||
|         SetLocalInt(oPC, "PRC_PrereqMysticTheurge", 0); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void AlienistPreReqs(object oPC) | ||||
| { | ||||
| 	int iArcane = 0; | ||||
| 	int iShadow = 0; | ||||
| 	 | ||||
| 	if(GetLocalInt(oPC, "PRC_ArcSpell3") == 0) | ||||
| 	{  | ||||
| 		iArcane = 1; | ||||
| 	} | ||||
|  | ||||
| 	if(GetLocalInt(oPC, "PRC_MystLevel3") == 0) | ||||
| 	{  | ||||
| 		iShadow = 1; | ||||
| 	} | ||||
| 	 | ||||
|     // Initialize the prerequisite variable to 1 | ||||
|     SetLocalInt(oPC, "PRC_PrereqAlienist", 1); | ||||
|  | ||||
|     // Check if any of the conditions are met and set "PRC_PrereqAlienist" to 0 if true | ||||
|     if (iArcane > 0 || iShadow > 0) | ||||
|     { | ||||
|         SetLocalInt(oPC, "PRC_PrereqAlienist", 0); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void AOTSPreReqs(object oPC) | ||||
| { | ||||
| 	int iArcane = 0; | ||||
| 	int iShadow = 0; | ||||
| 	 | ||||
| 	if(GetLocalInt(oPC, "PRC_ArcSpell2") == 0) | ||||
| 	{  | ||||
| 		iArcane = 1; | ||||
| 	} | ||||
| 	 | ||||
| 	if(GetLocalInt(oPC, "PRC_MystLevel2") == 0) | ||||
| 	{  | ||||
| 		iShadow = 1; | ||||
| 	} | ||||
| 	 | ||||
|     // Initialize the prerequisite variable to 1 | ||||
|     SetLocalInt(oPC, "PRC_PrereqAOTS", 1); | ||||
|  | ||||
|     // Check if any of the conditions are met and set "PRC_PrereqAOTS" to 0 if true | ||||
|     if (iArcane > 0 || GetInvokerLevel(oPC) > 2 || iShadow > 0) | ||||
|     { | ||||
|         SetLocalInt(oPC, "PRC_PrereqAOTS", 0); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /* void AOTS(object oPC) | ||||
| { | ||||
|     SetLocalInt(oPC, "PRC_PrereqAOTS", 1); | ||||
|     int iArcane = GetLocalInt(oPC, "PRC_ArcSpell3"); | ||||
|     if(iArcane == 0 || GetInvokerLevel(oPC) >= 3) | ||||
|     if(iArcane == 0 || GetInvokerLevel(oPC)<= 2 || GetHighestShadowcasterLevel(oPC) <= 2) | ||||
|         SetLocalInt(oPC, "PRC_PrereqAOTS", 0); | ||||
| } | ||||
| } */ | ||||
|  | ||||
| void EnlF(object oPC) | ||||
| { | ||||
| @@ -1074,7 +1288,7 @@ void DragDisciple(object oPC) | ||||
|     //Any nondragon (cannot already be a half-dragon) | ||||
|     int nRace = GetRacialType(oPC); | ||||
|     if(!GetHasTemplate(TEMPLATE_HALF_DRAGON, oPC) | ||||
|     && nRace != RACIAL_TYPE_BAAZ | ||||
|     && nRace != RACIAL_TYPE_SPIRETOPDRAGON | ||||
|     && nRace != RACIAL_TYPE_BOZAK | ||||
|     && nRace != RACIAL_TYPE_KAPAK) | ||||
|         bRace = TRUE; | ||||
| @@ -1519,56 +1733,61 @@ void main() | ||||
|         reqDomains(); | ||||
|  | ||||
|     // Special requirements for several classes. | ||||
|     Tempest(); | ||||
|     KOTC(oPC); | ||||
|     RedWizard(oPC); | ||||
|     Shadowlord(oPC, nArcHighest); | ||||
|     Shifter(oPC, nArcHighest, nDivHighest); | ||||
|     DemiLich(oPC); | ||||
|     WWolf(oPC); | ||||
|     Kord(oPC); | ||||
|     Maester(oPC); | ||||
|     reqCombatMedic(oPC); | ||||
|     Thrallherd(oPC); | ||||
|     Shadowmind(oPC); | ||||
|     SoulEater(oPC); | ||||
|     RacialHD(oPC); | ||||
|     Virtuoso(oPC); | ||||
|     LichPrereq(oPC); | ||||
| 	AlienistPreReqs(oPC); | ||||
| 	DragonDevotee(oPC); | ||||
| 	ElementalSavantPreReqs(oPC); | ||||
| 	MysticTheurgePreReqs(oPC); | ||||
| 	SancWarmind(oPC); | ||||
|     DalQuor(oPC); | ||||
|     Pyro(oPC); | ||||
|     Suel(); | ||||
|     TomeOfBattle(oPC); | ||||
|     AOTS(oPC); | ||||
|     EnlF(oPC); | ||||
|     DragDisciple(oPC); | ||||
|     WarlockPrCs(oPC); | ||||
|     Purifier(oPC); | ||||
|     Shadowbane(oPC); | ||||
|     WildMageReq(oPC); | ||||
|     KnightWeave(oPC); | ||||
|     Dragonheart(oPC); | ||||
|     Cultist(oPC); | ||||
|     Incarnate(oPC); | ||||
|     Spinemeld(oPC); | ||||
|     SapphireHierarch(oPC); | ||||
|     SoulcasterReq(oPC); | ||||
|     Ironsoul(oPC); | ||||
| 	ThrallOfOrcusPreReqs(oPC); | ||||
|     AbChamp(oPC); | ||||
|     Necrocarnum(oPC); | ||||
|     Witchborn(oPC); | ||||
|     AnimaMageReq(oPC); | ||||
|     TenebrousReq(oPC); | ||||
|     ScionReq(oPC); | ||||
|     DragonDevotee(oPC); | ||||
|     UrPriest(oPC); | ||||
|     AOTSPreReqs(oPC); | ||||
|     Cultist(oPC); | ||||
|     DalQuor(oPC); | ||||
|     DemiLich(oPC); | ||||
|     DragDisciple(oPC); | ||||
|     Dragonheart(oPC); | ||||
|     EnlF(oPC); | ||||
| 	FMMPreReqs(oPC); | ||||
|     Incarnate(oPC); | ||||
|     Ironsoul(oPC); | ||||
|     KnightWeave(oPC); | ||||
|     Kord(oPC); | ||||
|     KOTC(oPC); | ||||
|     LichPrereq(oPC); | ||||
|     Maester(oPC); | ||||
|     Necrocarnum(oPC); | ||||
|     Ocular(oPC); | ||||
|     UMagus(oPC); | ||||
|     Purifier(oPC); | ||||
|     Pyro(oPC); | ||||
|     RacialHD(oPC); | ||||
|     RedWizard(oPC); | ||||
|     reqCombatMedic(oPC); | ||||
|     SapphireHierarch(oPC); | ||||
|     ScionReq(oPC); | ||||
|     Shadowbane(oPC); | ||||
|     Shadowlord(oPC, nArcHighest); | ||||
|     Shadowmind(oPC); | ||||
|     Shifter(oPC, nArcHighest, nDivHighest); | ||||
|     SoulcasterReq(oPC); | ||||
|     SoulEater(oPC); | ||||
|     Spinemeld(oPC); | ||||
|     Suel(); | ||||
|     Tempest(); | ||||
|     TenebrousReq(oPC); | ||||
|     Thrallherd(oPC); | ||||
|     TomeOfBattle(oPC); | ||||
|     TotemRager(oPC); | ||||
|     UMagus(oPC); | ||||
|     UrPriest(oPC); | ||||
|     Virtuoso(oPC); | ||||
|     WarlockPrCs(oPC); | ||||
|     WildMageReq(oPC); | ||||
|     Witchborn(oPC); | ||||
|     WWolf(oPC); | ||||
|     // Truly massive debug message flood if activated. | ||||
|     | ||||
|     /*if (DEBUG) | ||||
| /*     if (DEBUG) | ||||
|     { | ||||
|         string sPRC_AllSpell; | ||||
|         string sPRC_ArcSpell; | ||||
| @@ -1594,5 +1813,5 @@ void main() | ||||
|            SendMessageToPC(oPC, sVariable + " is " + IntToString(GetLocalInt(oPC, sVariable)) + "."); | ||||
|         } | ||||
|          | ||||
|     }*/ | ||||
|     } */ | ||||
| } | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -72960,4 +72960,12 @@ Use: Activated</entry> | ||||
|   <entry id="77150" lang="en" sex="m">Mysteries: At every other Talon of TIamat level, you gain new mysteries and an increase in caster level (and mysteries known) as if you had also attained a level in a shadowcasting class to which you belonged before adding the prestige class level.  You do not, however, gain any other benefit a character of that class would have gained.</entry> | ||||
|   <entry id="77151" lang="en" sex="m">Mysteries: When a thrall of Orcus attains 1st, 4th, 7th, and 10th level, you gain new mysteries and an increase in caster level (and mysteries known) as if you had also attained a level in a shadowcasting class to which you belonged before adding the prestige class level.  You do not, however, gain any other benefit a character of that class would have gained.</entry>   | ||||
|   <entry id="77152" lang="en" sex="m">Fochulan Lyrist Spellcasting (Ur-Priest)</entry> | ||||
|   <entry id="77153" lang="en" sex="m">Disciple of Asmodeus Spellcasting (None)</entry> | ||||
|   <entry id="77154" lang="en" sex="m">Spellcasting: While Disciple of Asmodeus can optionally advance spellcasting, shadowcasting and invoking you do not posess any classes that use these magic systems and must pick this bonus feat to continue.</entry> | ||||
|   <entry id="77155" lang="en" sex="m">Talon of Tiamat Spellcasting (None)</entry> | ||||
|   <entry id="77156" lang="en" sex="m">Spellcasting: While Talon of Tiamat can optionally advance spellcasting, shadowcasting and invoking you do not have posess classes that use these magic systems and must pick this bonus feat to continue.</entry> | ||||
|   <entry id="77157" lang="en" sex="m">Dragonsong Lyrist Spellcasting (None)</entry> | ||||
|   <entry id="77158" lang="en" sex="m">Spellcasting: While Dragonsong Lyrist can optionally advance spellcasting and shadowcasting you do not posess any classes that use these magic systems and must pick this bonus feat to continue.</entry>   | ||||
|   <entry id="77159" lang="en" sex="m">Ollam Spellcasting (None)</entry> | ||||
|   <entry id="77160" lang="en" sex="m">Spellcasting: While an Ollam can optionally advance spellcasting and shadowcasting you do not posess any classes that use these magic systems and must pick this bonus feat to continue.</entry>    | ||||
| </tlk> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user