8 class slot support for arcane & divine casters
8 class slot support for arcane & divine casters. Added Marker feat enforcement script. Expanded LA buyoff to 60 HD. Marker feat constant bug fixes.
This commit is contained in:
parent
a701b00420
commit
d3de7f3987
Binary file not shown.
Binary file not shown.
@ -1,63 +1,63 @@
|
||||
2DA V2.0
|
||||
|
||||
Bonus
|
||||
0 1
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
4 0
|
||||
5 0
|
||||
6 0
|
||||
7 0
|
||||
8 0
|
||||
9 0
|
||||
10 0
|
||||
11 0
|
||||
12 0
|
||||
13 0
|
||||
14 0
|
||||
15 0
|
||||
16 0
|
||||
17 0
|
||||
18 0
|
||||
19 0
|
||||
20 0
|
||||
21 0
|
||||
22 0
|
||||
23 0
|
||||
24 0
|
||||
25 0
|
||||
26 0
|
||||
27 0
|
||||
28 0
|
||||
29 0
|
||||
30 0
|
||||
31 0
|
||||
32 0
|
||||
33 0
|
||||
34 0
|
||||
35 0
|
||||
36 0
|
||||
37 0
|
||||
38 0
|
||||
39 0
|
||||
40 0
|
||||
41 0
|
||||
42 0
|
||||
43 0
|
||||
44 0
|
||||
45 0
|
||||
46 0
|
||||
47 0
|
||||
48 0
|
||||
49 0
|
||||
50 0
|
||||
51 0
|
||||
52 0
|
||||
53 0
|
||||
54 0
|
||||
55 0
|
||||
56 0
|
||||
57 0
|
||||
58 0
|
||||
59 0
|
||||
Bonus
|
||||
0 2
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
4 0
|
||||
5 0
|
||||
6 0
|
||||
7 0
|
||||
8 0
|
||||
9 0
|
||||
10 0
|
||||
11 0
|
||||
12 0
|
||||
13 0
|
||||
14 0
|
||||
15 0
|
||||
16 0
|
||||
17 0
|
||||
18 0
|
||||
19 0
|
||||
20 0
|
||||
21 0
|
||||
22 0
|
||||
23 0
|
||||
24 0
|
||||
25 0
|
||||
26 0
|
||||
27 0
|
||||
28 0
|
||||
29 0
|
||||
30 0
|
||||
31 0
|
||||
32 0
|
||||
33 0
|
||||
34 0
|
||||
35 0
|
||||
36 0
|
||||
37 0
|
||||
38 0
|
||||
39 0
|
||||
40 0
|
||||
41 0
|
||||
42 0
|
||||
43 0
|
||||
44 0
|
||||
45 0
|
||||
46 0
|
||||
47 0
|
||||
48 0
|
||||
49 0
|
||||
50 0
|
||||
51 0
|
||||
52 0
|
||||
53 0
|
||||
54 0
|
||||
55 0
|
||||
56 0
|
||||
57 0
|
||||
58 0
|
||||
59 0
|
||||
|
@ -141,58 +141,59 @@
|
||||
137 FEAT_MASTER_OF_THE_ELEMENTS 4484 1 -1 1
|
||||
138 FEAT_MORPHEME_SAVANT 4471 1 -1 1
|
||||
139 FEAT_PARAGON_VISIONARY 4472 1 -1 0
|
||||
140 FEAT_WARLOCK_SHADOWMASTER 4473 1 -1 1
|
||||
141 FEAT_WARLOCK_SHADOWMASTER_SHADES 4485 0 99 1
|
||||
142 FEAT_EPIC_EXTRA_INVOCATION_I 7700 1 -1 0
|
||||
143 FEAT_EPIC_EXTRA_INVOCATION_II 7701 1 -1 0
|
||||
144 FEAT_EPIC_EXTRA_INVOCATION_III 7702 1 -1 0
|
||||
145 FEAT_EPIC_EXTRA_INVOCATION_IV 7703 1 -1 0
|
||||
146 FEAT_EPIC_EXTRA_INVOCATION_V 7704 1 -1 0
|
||||
147 FEAT_EPIC_EXTRA_INVOCATION_VI 7705 1 -1 0
|
||||
148 FEAT_EPIC_EXTRA_INVOCATION_VII 7706 1 -1 0
|
||||
149 FEAT_EPIC_EXTRA_INVOCATION_VIII 7707 1 -1 0
|
||||
150 FEAT_EPIC_EXTRA_INVOCATION_IX 7708 1 -1 0
|
||||
151 FEAT_EPIC_EXTRA_INVOCATION_X 7709 1 -1 0
|
||||
152 FEAT_EPIC_ELDRITCH_BLAST_I 7710 1 -1 0
|
||||
153 FEAT_EPIC_ELDRITCH_BLAST_II 7711 1 -1 0
|
||||
154 FEAT_EPIC_ELDRITCH_BLAST_III 7712 1 -1 0
|
||||
155 FEAT_EPIC_ELDRITCH_BLAST_IV 7713 1 -1 0
|
||||
156 FEAT_EPIC_ELDRITCH_BLAST_V 7714 1 -1 0
|
||||
157 FEAT_EPIC_ELDRITCH_BLAST_VI 7715 1 -1 0
|
||||
158 FEAT_EPIC_ELDRITCH_BLAST_VII 7716 1 -1 0
|
||||
159 FEAT_EPIC_ELDRITCH_BLAST_VIII 7717 1 -1 0
|
||||
160 FEAT_EPIC_ELDRITCH_BLAST_IX 7718 1 -1 0
|
||||
161 FEAT_EPIC_ELDRITCH_BLAST_X 7719 1 -1 0
|
||||
162 FEAT_EPIC_FIENDISH_RESILIENCE_I 7720 1 -1 0
|
||||
163 FEAT_EPIC_FIENDISH_RESILIENCE_II 7721 1 -1 0
|
||||
164 FEAT_EPIC_FIENDISH_RESILIENCE_III 7722 1 -1 0
|
||||
165 FEAT_EPIC_FIENDISH_RESILIENCE_IV 7723 1 -1 0
|
||||
166 FEAT_EPIC_FIENDISH_RESILIENCE_V 7724 1 -1 0
|
||||
167 FEAT_EPIC_FIENDISH_RESILIENCE_VI 7725 1 -1 0
|
||||
168 FEAT_EPIC_FIENDISH_RESILIENCE_VII 7726 1 -1 0
|
||||
169 FEAT_EPIC_FIENDISH_RESILIENCE_VIII 7727 1 -1 0
|
||||
170 FEAT_EPIC_FIENDISH_RESILIENCE_IX 7728 1 -1 0
|
||||
171 FEAT_EPIC_FIENDISH_RESILIENCE_X 7729 1 -1 0
|
||||
172 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0
|
||||
173 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1
|
||||
174 FEAT_ETHEURGE_SPELLCASTING_FEY 25024 2 1 0
|
||||
175 FEAT_ETHEURGE_SPELLCASTING_ABERRATION 25072 2 1 0
|
||||
176 FEAT_ETHEURGE_SPELLCASTING_MONSTROUS 25122 2 1 0
|
||||
177 FEAT_ETHEURGE_SPELLCASTING_OUTSIDER 25172 2 1 0
|
||||
178 FEAT_ETHEURGE_SPELLCASTING_SHAPECHANGER 25222 2 1 0
|
||||
179 FEAT_ETHEURGE_SPELLCASTING_ASSASSIN 25267 2 1 0
|
||||
180 FEAT_ETHEURGE_SPELLCASTING_BARD 25303 2 1 0
|
||||
181 FEAT_ETHEURGE_SPELLCASTING_BEGUILER 25350 2 1 0
|
||||
182 FEAT_ETHEURGE_SPELLCASTING_CULTIST_PEAK 25415 2 1 0
|
||||
183 FEAT_ETHEURGE_SPELLCASTING_DNECRO 25455 2 1 0
|
||||
184 FEAT_ETHEURGE_SPELLCASTING_DUSKBLADE 25497 2 1 0
|
||||
185 FEAT_ETHEURGE_SPELLCASTING_HARPER 25537 2 1 0
|
||||
186 FEAT_ETHEURGE_SPELLCASTING_HEXBLADE 25574 2 1 0
|
||||
187 FEAT_ETHEURGE_SPELLCASTING_KNIGHT_WEAVE 25612 2 1 0
|
||||
188 FEAT_ETHEURGE_SPELLCASTING_SHADOWLORD 25652 2 1 0
|
||||
189 FEAT_ETHEURGE_SPELLCASTING_SORCERER 25695 2 1 0
|
||||
190 FEAT_ETHEURGE_SPELLCASTING_SUBLIME_CHORD 25744 2 1 0
|
||||
191 FEAT_ETHEURGE_SPELLCASTING_SUEL_ARCHANAMACH 25788 2 1 0
|
||||
192 FEAT_ETHEURGE_SPELLCASTING_WARMAGE 25831 2 1 0
|
||||
193 FEAT_ETHEURGE_SPELLCASTING_WIZARD 25878 2 1 0
|
||||
194 FEAT_ETHEURGE_SPELLCASTING_CELEBRANT_SHARESS 26641 2 1 0
|
||||
140 FEAT_VERMINLORD 5323 1 -1 1
|
||||
141 FEAT_WARLOCK_SHADOWMASTER 4473 1 -1 1
|
||||
142 FEAT_WARLOCK_SHADOWMASTER_SHADES 4485 0 99 1
|
||||
143 FEAT_EPIC_EXTRA_INVOCATION_I 7700 1 -1 0
|
||||
144 FEAT_EPIC_EXTRA_INVOCATION_II 7701 1 -1 0
|
||||
145 FEAT_EPIC_EXTRA_INVOCATION_III 7702 1 -1 0
|
||||
146 FEAT_EPIC_EXTRA_INVOCATION_IV 7703 1 -1 0
|
||||
147 FEAT_EPIC_EXTRA_INVOCATION_V 7704 1 -1 0
|
||||
148 FEAT_EPIC_EXTRA_INVOCATION_VI 7705 1 -1 0
|
||||
149 FEAT_EPIC_EXTRA_INVOCATION_VII 7706 1 -1 0
|
||||
150 FEAT_EPIC_EXTRA_INVOCATION_VIII 7707 1 -1 0
|
||||
151 FEAT_EPIC_EXTRA_INVOCATION_IX 7708 1 -1 0
|
||||
152 FEAT_EPIC_EXTRA_INVOCATION_X 7709 1 -1 0
|
||||
153 FEAT_EPIC_ELDRITCH_BLAST_I 7710 1 -1 0
|
||||
154 FEAT_EPIC_ELDRITCH_BLAST_II 7711 1 -1 0
|
||||
155 FEAT_EPIC_ELDRITCH_BLAST_III 7712 1 -1 0
|
||||
156 FEAT_EPIC_ELDRITCH_BLAST_IV 7713 1 -1 0
|
||||
157 FEAT_EPIC_ELDRITCH_BLAST_V 7714 1 -1 0
|
||||
158 FEAT_EPIC_ELDRITCH_BLAST_VI 7715 1 -1 0
|
||||
159 FEAT_EPIC_ELDRITCH_BLAST_VII 7716 1 -1 0
|
||||
160 FEAT_EPIC_ELDRITCH_BLAST_VIII 7717 1 -1 0
|
||||
161 FEAT_EPIC_ELDRITCH_BLAST_IX 7718 1 -1 0
|
||||
162 FEAT_EPIC_ELDRITCH_BLAST_X 7719 1 -1 0
|
||||
163 FEAT_EPIC_FIENDISH_RESILIENCE_I 7720 1 -1 0
|
||||
164 FEAT_EPIC_FIENDISH_RESILIENCE_II 7721 1 -1 0
|
||||
165 FEAT_EPIC_FIENDISH_RESILIENCE_III 7722 1 -1 0
|
||||
166 FEAT_EPIC_FIENDISH_RESILIENCE_IV 7723 1 -1 0
|
||||
167 FEAT_EPIC_FIENDISH_RESILIENCE_V 7724 1 -1 0
|
||||
168 FEAT_EPIC_FIENDISH_RESILIENCE_VI 7725 1 -1 0
|
||||
169 FEAT_EPIC_FIENDISH_RESILIENCE_VII 7726 1 -1 0
|
||||
170 FEAT_EPIC_FIENDISH_RESILIENCE_VIII 7727 1 -1 0
|
||||
171 FEAT_EPIC_FIENDISH_RESILIENCE_IX 7728 1 -1 0
|
||||
172 FEAT_EPIC_FIENDISH_RESILIENCE_X 7729 1 -1 0
|
||||
173 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0
|
||||
174 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1
|
||||
175 FEAT_ETHEURGE_SPELLCASTING_FEY 25024 2 1 0
|
||||
176 FEAT_ETHEURGE_SPELLCASTING_ABERRATION 25072 2 1 0
|
||||
177 FEAT_ETHEURGE_SPELLCASTING_MONSTROUS 25122 2 1 0
|
||||
178 FEAT_ETHEURGE_SPELLCASTING_OUTSIDER 25172 2 1 0
|
||||
179 FEAT_ETHEURGE_SPELLCASTING_SHAPECHANGER 25222 2 1 0
|
||||
180 FEAT_ETHEURGE_SPELLCASTING_ASSASSIN 25267 2 1 0
|
||||
181 FEAT_ETHEURGE_SPELLCASTING_BARD 25303 2 1 0
|
||||
182 FEAT_ETHEURGE_SPELLCASTING_BEGUILER 25350 2 1 0
|
||||
183 FEAT_ETHEURGE_SPELLCASTING_CULTIST_PEAK 25415 2 1 0
|
||||
184 FEAT_ETHEURGE_SPELLCASTING_DNECRO 25455 2 1 0
|
||||
185 FEAT_ETHEURGE_SPELLCASTING_DUSKBLADE 25497 2 1 0
|
||||
186 FEAT_ETHEURGE_SPELLCASTING_HARPER 25537 2 1 0
|
||||
187 FEAT_ETHEURGE_SPELLCASTING_HEXBLADE 25574 2 1 0
|
||||
188 FEAT_ETHEURGE_SPELLCASTING_KNIGHT_WEAVE 25612 2 1 0
|
||||
189 FEAT_ETHEURGE_SPELLCASTING_SHADOWLORD 25652 2 1 0
|
||||
190 FEAT_ETHEURGE_SPELLCASTING_SORCERER 25695 2 1 0
|
||||
191 FEAT_ETHEURGE_SPELLCASTING_SUBLIME_CHORD 25744 2 1 0
|
||||
192 FEAT_ETHEURGE_SPELLCASTING_SUEL_ARCHANAMACH 25788 2 1 0
|
||||
193 FEAT_ETHEURGE_SPELLCASTING_WARMAGE 25831 2 1 0
|
||||
194 FEAT_ETHEURGE_SPELLCASTING_WIZARD 25878 2 1 0
|
||||
195 FEAT_ETHEURGE_SPELLCASTING_CELEBRANT_SHARESS 26641 2 1 0
|
||||
|
@ -118,16 +118,13 @@
|
||||
114 FEAT_TNECRO_SPELLCASTING_OUTSIDER 25197 2 1 0
|
||||
115 FEAT_TNECRO_SPELLCASTING_SHAPECHANGER 25247 2 1 0
|
||||
116 FEAT_TNECRO_SPELLCASTING_DNECRO 25477 2 1 0
|
||||
117 FEAT_TNECRO_SPELLCASTING_DUSKBLADE 25521 2 1 0
|
||||
118 FEAT_TNECRO_SPELLCASTING_HEXBLADE 25594 2 1 0
|
||||
119 FEAT_TNECRO_SPELLCASTING_SHADOWLORD 25672 2 1 0
|
||||
120 FEAT_TNECRO_SPELLCASTING_SORCERER 25720 2 1 0
|
||||
121 FEAT_TNECRO_SPELLCASTING_WIZARD 25904 2 1 0
|
||||
122 FEAT_TNECRO_SPELLCASTING_ARCHIVIST 25957 2 1 0
|
||||
123 FEAT_TNECRO_SPELLCASTING_BLIGHTER 26020 2 1 0
|
||||
124 FEAT_TNECRO_SPELLCASTING_CLERIC 26069 2 1 0
|
||||
125 FEAT_TNECRO_SPELLCASTING_FAVOURED_SOUL 26178 2 1 0
|
||||
126 FEAT_TNECRO_SPELLCASTING_OCULAR 26371 2 1 0
|
||||
127 FEAT_TNECRO_SPELLCASTING_OASHAMAN 26486 2 1 0
|
||||
128 FEAT_TNECRO_SPELLCASTING_UR_PRIEST 26614 2 1 0
|
||||
129 FEAT_TNECRO_SPELLCASTING_SUBLIME_CHORD 26656 2 1 0
|
||||
117 FEAT_TNECRO_SPELLCASTING_SORCERER 25720 2 1 0
|
||||
118 FEAT_TNECRO_SPELLCASTING_WIZARD 25904 2 1 0
|
||||
119 FEAT_TNECRO_SPELLCASTING_ARCHIVIST 25957 2 1 0
|
||||
120 FEAT_TNECRO_SPELLCASTING_BLIGHTER 26020 2 1 0
|
||||
121 FEAT_TNECRO_SPELLCASTING_CLERIC 26069 2 1 0
|
||||
122 FEAT_TNECRO_SPELLCASTING_FAVOURED_SOUL 26178 2 1 0
|
||||
123 FEAT_TNECRO_SPELLCASTING_OCULAR 26371 2 1 0
|
||||
124 FEAT_TNECRO_SPELLCASTING_OASHAMAN 26486 2 1 0
|
||||
125 FEAT_TNECRO_SPELLCASTING_UR_PRIEST 26614 2 1 0
|
||||
126 FEAT_TNECRO_SPELLCASTING_SUBLIME_CHORD 26656 2 1 0
|
||||
|
@ -1,17 +1,24 @@
|
||||
2DA V2.0
|
||||
|
||||
StartingLA 1st 2nd 3rd 4th
|
||||
0 0 **** **** **** ****
|
||||
1 1 3 **** **** ****
|
||||
2 2 6 9 **** ****
|
||||
3 3 9 15 18 ****
|
||||
4 4 12 21 27 30
|
||||
5 5 15 27 36 ****
|
||||
6 6 18 33 **** ****
|
||||
7 7 21 39 **** ****
|
||||
8 8 24 **** **** ****
|
||||
9 9 27 **** **** ****
|
||||
10 10 30 **** **** ****
|
||||
11 11 33 **** **** ****
|
||||
12 12 36 **** **** ****
|
||||
13 13 39 **** **** ****
|
||||
StartingLA 1st 2nd 3rd 4th 5th
|
||||
0 0 **** **** **** **** ****
|
||||
1 1 3 **** **** **** ****
|
||||
2 2 6 9 **** **** ****
|
||||
3 3 9 15 18 **** ****
|
||||
4 4 12 21 27 30 ****
|
||||
5 5 15 27 36 42 45
|
||||
6 6 18 33 45 54 ****
|
||||
7 7 21 39 54 **** ****
|
||||
8 8 24 45 **** **** ****
|
||||
9 9 27 51 **** **** ****
|
||||
10 10 30 57 **** **** ****
|
||||
11 11 33 **** **** **** ****
|
||||
12 12 36 **** **** **** ****
|
||||
13 13 39 **** **** **** ****
|
||||
14 14 42 **** **** **** ****
|
||||
15 15 45 **** **** **** ****
|
||||
16 16 48 **** **** **** ****
|
||||
17 17 51 **** **** **** ****
|
||||
18 18 54 **** **** **** ****
|
||||
19 19 57 **** **** **** ****
|
||||
20 20 **** **** **** **** ****
|
||||
|
135
trunk/CompiledResources/PRC.hif
Normal file
135
trunk/CompiledResources/PRC.hif
Normal file
@ -0,0 +1,135 @@
|
||||
# HIF files may consist of any of the following tags. All tags are optional.
|
||||
# Tags that support multiple data items may have the data comma separated and/or
|
||||
# may have multiple entries. If a multiple entries are given for a tag that only
|
||||
# supports 1 value then the fist value in the file is used. Blank lines are ignored
|
||||
# as are lines starting with a '#'.
|
||||
#
|
||||
# Tag format is
|
||||
#
|
||||
# <tag> : <value1>, <value2>, ..., <valuen>
|
||||
#
|
||||
# All white space is optional, and tags may also be given on multiple lines
|
||||
# as follows:
|
||||
#
|
||||
# <tag> : <value1>
|
||||
# <tag> : <value2>
|
||||
# ...
|
||||
# <tag> : <valuen>
|
||||
#
|
||||
# The following tags are supported:
|
||||
#
|
||||
# Title : Allows you to specify the title for the HIF, if the installer is run in
|
||||
# single HIF mode then the installer's title bar will have the HIF's title,
|
||||
# or file name if the HIF has no title. The format of the title is
|
||||
# <HIF TITLE> Module Updater <HIF VERSION>
|
||||
# Version : Allows you to specify the version number for your content. Modules
|
||||
# that the HIF is added to are tagged with the version number.
|
||||
# MinNWNVersion : Allows you to specify the minimum version of NWN that is required,
|
||||
# and whether your content requies XP1 or XP2. For the NWN version use the
|
||||
# standard format, i.e. 1.62, 1.31, etc. For the Expansions use XP1 or
|
||||
# Undrentide for SoU and XP2 or Underdark for HotU. If you list multiple
|
||||
# requirements separate them by commas. For example:
|
||||
# MinNWNVersion : 1.62, XP1, XP2
|
||||
# will make your content require NWN 1.62 or later and both expansions.
|
||||
# erf : Imports the listed erf files into the module
|
||||
# module.Hak : haks to add to the module
|
||||
# module.CustomTlk : Custom tlk file for the module, only 1 value.
|
||||
# module.Cache : Adds the given scripts the module's script cache.
|
||||
# module.Areas: Adds the given ResRefs to the module's area list.
|
||||
# module.OnAcquireItem : Assigns script(s) to handle this module event
|
||||
# module.OnActivateItem : Assigns script(s) to handle this module event
|
||||
# module.OnClientEnter : Assigns script(s) to handle this module event
|
||||
# module.OnClientLeave : Assigns script(s) to handle this module event
|
||||
# module.OnCutsceneAbort : Assigns script(s) to handle this module event
|
||||
# module.OnHeartbeat : Assigns script(s) to handle this module event
|
||||
# module.OnModuleLoad : Assigns script(s) to handle this module event
|
||||
# module.OnModuleStart : Assigns script(s) to handle this module event
|
||||
# module.OnPlayerDeath : Assigns script(s) to handle this module event
|
||||
# module.OnPlayerDying : Assigns script(s) to handle this module event
|
||||
# module.OnPlayerEquipItem : Assigns script(s) to handle this module event
|
||||
# module.OnPlayerLevelUp : Assigns script(s) to handle this module event
|
||||
# module.OnPlayerRest : Assigns script(s) to handle this module event
|
||||
# module.OnPlayerUnEquipItem : Assigns script(s) to handle this module event
|
||||
# module.OnPlayerRespawn : Assigns script(s) to handle this module event
|
||||
# module.OnUnaquireItem : Assigns script(s) to handle this module event
|
||||
# module.OnUserDefined : Assigns script(s) to handle this module event
|
||||
|
||||
# Title for the HIF.
|
||||
Title : PRC
|
||||
|
||||
# Add the PRC pack version and specify at least 1.62 to install.
|
||||
Version : 4.1.6
|
||||
MinNWNVersion: 1.67
|
||||
|
||||
# ERF with the required areas.
|
||||
erf : prc_consortium.erf
|
||||
|
||||
# Haks used by the prc pack.
|
||||
#commented out since its not actually needed in a module and causing CEP conflicts.
|
||||
# module.Hak : prc_include.hak
|
||||
module.Hak : prc_2das.hak
|
||||
module.Hak : prc_scripts.hak
|
||||
module.Hak : prc_newspellbook.hak
|
||||
module.Hak : prc_spells.hak
|
||||
module.Hak : prc_epicspells.hak
|
||||
module.Hak : prc_psionics.hak
|
||||
module.Hak : prc_race.hak
|
||||
module.Hak : prc_textures.hak
|
||||
module.Hak : prc_misc.hak
|
||||
module.Hak : prc_craft2das.hak
|
||||
|
||||
# Custom tlk used by the prc pack.
|
||||
module.CustomTlk : prc_consortium.tlk
|
||||
|
||||
# Events that need to be wired up.
|
||||
module.OnAcquireItem : prc_onaquire
|
||||
module.OnActivateItem : prc_onactivate
|
||||
module.OnClientEnter : prc_onenter
|
||||
module.OnClientLeave : prc_onleave
|
||||
module.OnCutsceneAbort : prc_oncutabort
|
||||
module.OnHeartbeat : prc_onheartbeat
|
||||
module.OnModuleLoad : prc_onmodload
|
||||
module.OnPlayerChat : prc_onplayerchat
|
||||
module.OnPlayerDeath : prc_ondeath
|
||||
module.OnPlayerDying : prc_ondying
|
||||
module.OnPlayerEquipItem : prc_equip
|
||||
module.OnPlayerLevelUp : prc_levelup
|
||||
module.OnPlayerRest : prc_rest
|
||||
module.OnPlayerRespawn : prc_onrespawn
|
||||
module.OnUnaquireItem : prc_onunaquire
|
||||
module.OnPlayerUnequipItem : prc_unequip
|
||||
module.OnUserDefined : prc_onuserdef
|
||||
|
||||
# Cache PRC scripts for better performance.
|
||||
module.Cache : prc_onaquire
|
||||
module.Cache : prc_onactivate
|
||||
module.Cache : prc_onenter
|
||||
module.Cache : prc_onleave
|
||||
module.Cache : prc_oncutabort
|
||||
module.Cache : prc_onheartbeat
|
||||
module.Cache : prc_onmodload
|
||||
module.Cache : prc_ondeath
|
||||
module.Cache : prc_ondying
|
||||
module.Cache : prc_equip
|
||||
module.Cache : prc_levelup
|
||||
module.Cache : prc_rest
|
||||
module.Cache : prc_onplayerchat
|
||||
module.Cache : prc_onrespawn
|
||||
module.Cache : prc_onunaquire
|
||||
module.Cache : prc_unequip
|
||||
module.Cache : prc_onuserdef
|
||||
module.Cache : prc_onhitcast
|
||||
# Cache bioware summon AI scripts
|
||||
module.Cache : nw_ch_ac5
|
||||
module.Cache : nw_ch_ace
|
||||
module.Cache : nw_ch_ac3
|
||||
module.Cache : nw_ch_ac4
|
||||
module.Cache : nw_ch_ac6
|
||||
module.Cache : nw_ch_ac7
|
||||
module.Cache : nw_ch_ac8
|
||||
module.Cache : nw_ch_ac1
|
||||
module.Cache : nw_ch_ac2
|
||||
module.Cache : nw_ch_aca
|
||||
module.Cache : nw_ch_summon_9
|
||||
module.Cache : nw_ch_acb
|
||||
module.Cache : nw_ch_acd
|
@ -355,6 +355,16 @@ int GetCanBuyoffLA(object oPC)
|
||||
if (nChar >= StringToInt(Get2DACache("la_buyoff", "4th", nLA)))
|
||||
nReturn = TRUE;
|
||||
}
|
||||
if (nBuyoff == 4) // Purchased fourth already
|
||||
{
|
||||
if (nChar >= StringToInt(Get2DACache("la_buyoff", "5th", nLA)))
|
||||
nReturn = TRUE;
|
||||
}
|
||||
if (nBuyoff == 5) // Purchased fifth already
|
||||
{
|
||||
if (nChar >= StringToInt(Get2DACache("la_buyoff", "6th", nLA)))
|
||||
nReturn = TRUE;
|
||||
}
|
||||
if (DEBUG) DoDebug("nReturn "+IntToString(nReturn)+" nBuyoff "+IntToString(nBuyoff)+" nChar "+IntToString(nChar)+" nLA "+IntToString(nLA));
|
||||
|
||||
return nReturn;
|
||||
|
@ -40,7 +40,7 @@ const int FEAT_BSINGER_SPELLCASTING_FEY=25014;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_FEY=25015;
|
||||
const int FEAT_CMANCER_SPELLCASTING_FEY=25016;
|
||||
const int FEAT_COMBAT_MEDIC_SPELLCASTING_FEY=25017;
|
||||
const int FEAT_DIABO_SPELLCASTING_FEY=25018;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_FEY=25018;
|
||||
const int FEAT_DHEART_SPELLCASTING_FEY=25019;
|
||||
const int FEAT_DSONG_SPELLCASTING_FEY=25020;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_FEY=25021;
|
||||
@ -90,7 +90,7 @@ const int FEAT_BSINGER_SPELLCASTING_ABERRATION=25062;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_ABERRATION=25063;
|
||||
const int FEAT_BONDED_SPELLCASTING_ABERRATION=25064;
|
||||
const int FEAT_CMANCER_SPELLCASTING_ABERRATION=25065;
|
||||
const int FEAT_DIABO_SPELLCASTING_ABERRATION=25066;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_ABERRATION=25066;
|
||||
const int FEAT_DHEART_SPELLCASTING_ABERRATION=25067;
|
||||
const int FEAT_DSONG_SPELLCASTING_ABERRATION=25068;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_ABERRATION=25069;
|
||||
@ -143,7 +143,7 @@ const int FEAT_BLDMAGUS_SPELLCASTING_MONSTROUS=25113;
|
||||
const int FEAT_BONDED_SPELLCASTING_MONSTROUS=25114;
|
||||
const int FEAT_CMANCER_SPELLCASTING_MONSTROUS=25115;
|
||||
const int FEAT_DHEART_SPELLCASTING_MONSTROUS=25116;
|
||||
const int FEAT_DIABO_SPELLCASTING_MONSTROUS=25117;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_MONSTROUS=25117;
|
||||
const int FEAT_DSONG_SPELLCASTING_MONSTROUS=25118;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_MONSTROUS=25119;
|
||||
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_MONSTROUS=25120;
|
||||
@ -195,7 +195,7 @@ const int FEAT_BLDMAGUS_SPELLCASTING_OUTSIDER=25163;
|
||||
const int FEAT_BONDED_SPELLCASTING_OUTSIDER=25164;
|
||||
const int FEAT_CMANCER_SPELLCASTING_OUTSIDER=25165;
|
||||
const int FEAT_DHEART_SPELLCASTING_OUTSIDER=25166;
|
||||
const int FEAT_DIABO_SPELLCASTING_OUTSIDER=25167;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_OUTSIDER=25167;
|
||||
const int FEAT_DSONG_SPELLCASTING_OUTSIDER=25168;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_OUTSIDER=25169;
|
||||
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_OUTSIDER=25170;
|
||||
@ -247,7 +247,7 @@ const int FEAT_BLDMAGUS_SPELLCASTING_SHAPECHANGER=25213;
|
||||
const int FEAT_BONDED_SPELLCASTING_SHAPECHANGER=25214;
|
||||
const int FEAT_CMANCER_SPELLCASTING_SHAPECHANGER=25215;
|
||||
const int FEAT_DHEART_SPELLCASTING_SHAPECHANGER=25216;
|
||||
const int FEAT_DIABO_SPELLCASTING_SHAPECHANGER=25217;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_SHAPECHANGER=25217;
|
||||
const int FEAT_DSONG_SPELLCASTING_SHAPECHANGER=25218;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_SHAPECHANGER=25219;
|
||||
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_SHAPECHANGER=25220;
|
||||
@ -294,7 +294,7 @@ const int FEAT_ARCTRICK_SPELLCASTING_ASSASSIN=25258;
|
||||
const int FEAT_ASMODEUS_SPELLCASTING_ASSASSIN=25259;
|
||||
const int FEAT_BSINGER_SPELLCASTING_ASSASSIN=25260;
|
||||
const int FEAT_CMANCER_SPELLCASTING_ASSASSIN=25261;
|
||||
const int FEAT_DIABO_SPELLCASTING_ASSASSIN=25262;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_ASSASSIN=25262;
|
||||
const int FEAT_DHEART_SPELLCASTING_ASSASSIN=25263;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_ASSASSIN=25264;
|
||||
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_ASSASSIN=25265;
|
||||
@ -331,7 +331,7 @@ const int FEAT_BSINGER_SPELLCASTING_BARD=25293;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_BARD=25294;
|
||||
const int FEAT_CMANCER_SPELLCASTING_BARD=25295;
|
||||
const int FEAT_COMBAT_MEDIC_SPELLCASTING_BARD=25296;
|
||||
const int FEAT_DIABO_SPELLCASTING_BARD=25297;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_BARD=25297;
|
||||
const int FEAT_DHEART_SPELLCASTING_BARD=25298;
|
||||
const int FEAT_DSONG_SPELLCASTING_BARD=25299;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_BARD=25300;
|
||||
@ -380,7 +380,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_BEGUILER=25340;
|
||||
const int FEAT_BSINGER_SPELLCASTING_BEGUILER=25341;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_BEGUILER=25342;
|
||||
const int FEAT_CMANCER_SPELLCASTING_BEGUILER=25343;
|
||||
const int FEAT_DIABO_SPELLCASTING_BEGUILER=25344;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_BEGUILER=25344;
|
||||
const int FEAT_DHEART_SPELLCASTING_BEGUILER=25345;
|
||||
const int FEAT_DSONG_SPELLCASTING_BEGUILER=25346;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_BEGUILER=25347;
|
||||
@ -450,7 +450,7 @@ const int FEAT_ARCTRICK_SPELLCASTING_CULTIST_PEAK=25406;
|
||||
const int FEAT_ASMODEUS_SPELLCASTING_CULTIST_PEAK=25407;
|
||||
const int FEAT_BSINGER_SPELLCASTING_CULTIST_PEAK=25408;
|
||||
const int FEAT_CMANCER_SPELLCASTING_CULTIST_PEAK=25409;
|
||||
const int FEAT_DIABO_SPELLCASTING_CULTIST_PEAK=25410;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_CULTIST_PEAK=25410;
|
||||
const int FEAT_DSONG_SPELLCASTING_CULTIST_PEAK=25411;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_CULTIST_PEAK=25412;
|
||||
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_CULTIST_PEAK=25413;
|
||||
@ -491,7 +491,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_DNECRO=25445;
|
||||
const int FEAT_BSINGER_SPELLCASTING_DNECRO=25446;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_DNECRO=25447;
|
||||
const int FEAT_CMANCER_SPELLCASTING_DNECRO=25448;
|
||||
const int FEAT_DIABO_SPELLCASTING_DNECRO=25449;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_DNECRO=25449;
|
||||
const int FEAT_DHEART_SPELLCASTING_DNECRO=25450;
|
||||
const int FEAT_DSONG_SPELLCASTING_DNECRO=25451;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_DNECRO=25452;
|
||||
@ -536,7 +536,7 @@ const int FEAT_BSINGER_SPELLCASTING_DUSKBLADE=25488;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_DUSKBLADE=25489;
|
||||
const int FEAT_CMANCER_SPELLCASTING_DUSKBLADE=25490;
|
||||
const int FEAT_DHEART_SPELLCASTING_DUSKBLADE=25491;
|
||||
const int FEAT_DIABO_SPELLCASTING_DUSKBLADE=25492;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_DUSKBLADE=25492;
|
||||
const int FEAT_DSONG_SPELLCASTING_DUSKBLADE=25493;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_DUSKBLADE=25494;
|
||||
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_DUSKBLADE=25495;
|
||||
@ -616,7 +616,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_HEXBLADE=25564;
|
||||
const int FEAT_BONDED_SPELLCASTING_HEXBLADE=25565;
|
||||
const int FEAT_BSINGER_SPELLCASTING_HEXBLADE=25566;
|
||||
const int FEAT_CMANCER_SPELLCASTING_HEXBLADE=25567;
|
||||
const int FEAT_DIABO_SPELLCASTING_HEXBLADE=25568;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_HEXBLADE=25568;
|
||||
const int FEAT_DHEART_SPELLCASTING_HEXBLADE=25569;
|
||||
const int FEAT_DSONG_SPELLCASTING_HEXBLADE=25570;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_HEXBLADE=25571;
|
||||
@ -698,7 +698,7 @@ const int FEAT_ARCTRICK_SPELLCASTING_SHADOWLORD=25642;
|
||||
const int FEAT_ASMODEUS_SPELLCASTING_SHADOWLORD=25643;
|
||||
const int FEAT_BSINGER_SPELLCASTING_SHADOWLORD=25644;
|
||||
const int FEAT_CMANCER_SPELLCASTING_SHADOWLORD=25645;
|
||||
const int FEAT_DIABO_SPELLCASTING_SHADOWLORD=25646;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_SHADOWLORD=25646;
|
||||
const int FEAT_DHEART_SPELLCASTING_SHADOWLORD=25647;
|
||||
const int FEAT_DSONG_SPELLCASTING_SHADOWLORD=25648;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_SHADOWLORD=25649;
|
||||
@ -743,7 +743,7 @@ const int FEAT_BSINGER_SPELLCASTING_SORCERER=25685;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_SORCERER=25686;
|
||||
const int FEAT_BONDED_SPELLCASTING_SORCERER=25687;
|
||||
const int FEAT_CMANCER_SPELLCASTING_SORCERER=25688;
|
||||
const int FEAT_DIABO_SPELLCASTING_SORCERER=25689;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_SORCERER=25689;
|
||||
const int FEAT_DHEART_SPELLCASTING_SORCERER=25690;
|
||||
const int FEAT_DSONG_SPELLCASTING_SORCERER=25691;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_SORCERER=25692;
|
||||
@ -794,7 +794,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_SUBLIME_CHORD=25734;
|
||||
const int FEAT_BSINGER_SPELLCASTING_SUBLIME_CHORD=25735;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_SUBLIME_CHORD=25736;
|
||||
const int FEAT_CMANCER_SPELLCASTING_SUBLIME_CHORD=25737;
|
||||
const int FEAT_DIABO_SPELLCASTING_SUBLIME_CHORD=25738;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_SUBLIME_CHORD=25738;
|
||||
const int FEAT_DHEART_SPELLCASTING_SUBLIME_CHORD=25739;
|
||||
const int FEAT_DSONG_SPELLCASTING_SUBLIME_CHORD=25740;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_SUBLIME_CHORD=25741;
|
||||
@ -840,7 +840,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_SUEL_ARCHANAMACH=25778;
|
||||
const int FEAT_BSINGER_SPELLCASTING_SUEL_ARCHANAMACH=25779;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_ARCHANAMACH=25780;
|
||||
const int FEAT_CMANCER_SPELLCASTING_SUEL_ARCHANAMACH=25781;
|
||||
const int FEAT_DIABO_SPELLCASTING_SUEL_ARCHANAMACH=25782;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_SUEL_ARCHANAMACH=25782;
|
||||
const int FEAT_DHEART_SPELLCASTING_SUEL_ARCHANAMACH=25783;
|
||||
const int FEAT_DSONG_SPELLCASTING_SUEL_ARCHANAMACH=25784;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_SUEL_ARCHANAMACH=25785;
|
||||
@ -885,7 +885,7 @@ const int FEAT_BSINGER_SPELLCASTING_WARMAGE=25821;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_WARMAGE=25822;
|
||||
const int FEAT_BONDED_SPELLCASTING_WARMAGE=25823;
|
||||
const int FEAT_CMANCER_SPELLCASTING_WARMAGE=25824;
|
||||
const int FEAT_DIABO_SPELLCASTING_WARMAGE=25825;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_WARMAGE=25825;
|
||||
const int FEAT_DHEART_SPELLCASTING_WARMAGE=25826;
|
||||
const int FEAT_DSONG_SPELLCASTING_WARMAGE=25827;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_WARMAGE=25828;
|
||||
@ -935,7 +935,7 @@ const int FEAT_BSINGER_SPELLCASTING_WIZARD=25869;
|
||||
const int FEAT_BLDMAGUS_SPELLCASTING_WIZARD=25870;
|
||||
const int FEAT_BONDED_SPELLCASTING_WIZARD=25871;
|
||||
const int FEAT_CMANCER_SPELLCASTING_WIZARD=25872;
|
||||
const int FEAT_DIABO_SPELLCASTING_WIZARD=25873;
|
||||
const int FEAT_DIABOLIST_SPELLCASTING_WIZARD=25873;
|
||||
const int FEAT_DSONG_SPELLCASTING_WIZARD=25874;
|
||||
const int FEAT_EKNIGHT_SPELLCASTING_WIZARD=25875;
|
||||
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_WIZARD=25876;
|
||||
@ -1622,7 +1622,7 @@ const int FEAT_TIAMAT_SPELLCASTING_SOHEI=26522;
|
||||
const int FEAT_TENEBROUS_APOSTATE_SPELLCASTING_SOHEI=26523;
|
||||
const int FEAT_WARPRIEST_SPELLCASTING_SOHEI=26524;
|
||||
|
||||
|
||||
//:: Soldier of Light marker feats
|
||||
const int FEAT_ALCHEM_SPELLCASTING_SOL=26525;
|
||||
const int FEAT_BRIMSTONE_SPEAKER_SPELLCASTING_SOL=26526;
|
||||
const int FEAT_COMBAT_MEDIC_SPELLCASTING_SOL=26527;
|
||||
@ -1744,7 +1744,7 @@ const int FEAT_SPELLDANCER_SPELLCASTING_VASSAL=26636;
|
||||
const int FEAT_SWIFT_WING_SPELLCASTING_VASSAL=26637;
|
||||
const int FEAT_WARPRIEST_SPELLCASTING_VASSAL=26638;
|
||||
|
||||
//Missed Marker feats :(
|
||||
//Missed Marker feats : (
|
||||
const int FEAT_ORCUS_SPELLCASTING_ABERRATION=26639;
|
||||
const int FEAT_ORCUS_SPELLCASTING_ASSASSIN=26640;
|
||||
const int FEAT_ORCUS_SPELLCASTING_BEGUILER=26641;
|
||||
@ -1769,6 +1769,7 @@ const int FEAT_ORCUS_SPELLCASTING_SUEL_ARCHANAMACH=26659;
|
||||
const int FEAT_ORCUS_SPELLCASTING_WARMAGE=26660;
|
||||
|
||||
|
||||
|
||||
// skill based feats
|
||||
const int FEAT_JUMP = 2884;
|
||||
|
||||
|
@ -101,7 +101,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID);
|
||||
*
|
||||
* @return Number of divine caster levels contributed by PrCs.
|
||||
*/
|
||||
int GetDivinePRCLevels(object oCaster);
|
||||
int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID);
|
||||
|
||||
/**
|
||||
* Gets the position of the first arcane base class.
|
||||
@ -652,7 +652,7 @@ int PRCGetCasterLevel(object oCaster = OBJECT_SELF)
|
||||
{
|
||||
iReturnLevel = GetLevelByClass(iCastingClass, oCaster) / GetCasterLevelModifier(iCastingClass);
|
||||
if(GetPrimaryDivineClass(oCaster) == iCastingClass)
|
||||
iReturnLevel += GetDivinePRCLevels(oCaster);
|
||||
iReturnLevel += GetDivinePRCLevels(oCaster, iCastingClass);
|
||||
|
||||
iReturnLevel += PracticedSpellcasting(oCaster, iCastingClass, iReturnLevel);
|
||||
|
||||
@ -789,7 +789,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
int nClass;
|
||||
int nRace = GetRacialType(oCaster);
|
||||
|
||||
if (nCastingClass == CLASS_TYPE_BARD && GetLevelByClass(CLASS_TYPE_BARD))
|
||||
if (nCastingClass == CLASS_TYPE_BARD || GetLevelByClass(CLASS_TYPE_BARD, oCaster))
|
||||
{
|
||||
//:: Includes RHD as bard. If they started with bard levels, then it
|
||||
//:: counts as a prestige class, otherwise RHD is used instead of bard levels.
|
||||
@ -820,7 +820,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_COMBAT_MEDIC_SPELLCASTING_BARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_COMBAT_MEDIC, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_BARD, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_BARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_BARD, oCaster))
|
||||
@ -957,7 +957,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
}
|
||||
//:: End Bard Arcane PrC casting calculations
|
||||
|
||||
if(nCastingClass == CLASS_TYPE_BARD && nRace == RACIAL_TYPE_GLOURA && !GetLevelByClass(CLASS_TYPE_BARD))
|
||||
if(nCastingClass == CLASS_TYPE_BARD && nRace == RACIAL_TYPE_GLOURA && !GetLevelByClass(CLASS_TYPE_BARD, oCaster))
|
||||
{
|
||||
if(GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_FEY, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oCaster);
|
||||
@ -983,7 +983,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_COMBAT_MEDIC_SPELLCASTING_FEY, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_COMBAT_MEDIC, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_FEY, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_FEY, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_FEY, oCaster))
|
||||
@ -1117,7 +1117,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
}
|
||||
//:: End Fey Arcane PrC casting calculations
|
||||
|
||||
if (nCastingClass == CLASS_TYPE_ASSASSIN)
|
||||
if (nCastingClass == CLASS_TYPE_ASSASSIN || GetLevelByClass(CLASS_TYPE_ASSASSIN, oCaster))
|
||||
{
|
||||
if(GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_ASSASSIN, oCaster)) //:: Requires Assassin 4
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oCaster);
|
||||
@ -1140,7 +1140,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_ASSASSIN, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_ASSASSIN, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_ASSASSIN, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_ASSASSIN, oCaster))
|
||||
@ -1298,7 +1298,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_BEGUILER, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_BEGUILER, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_BEGUILER, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_BEGUILER, oCaster))
|
||||
@ -1460,7 +1460,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_CELEBRANT_SHARESS, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
/* if(GetHasFeat(FEAT_DIABO_SPELLCASTING_CELEBRANT_SHARESS, oCaster))
|
||||
/* if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_CELEBRANT_SHARESS, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster); */
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_CELEBRANT_SHARESS, oCaster))
|
||||
@ -1608,7 +1608,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_CULTIST_PEAK, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_CULTIST_PEAK, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_CULTIST_PEAK, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
/* if(GetHasFeat(FEAT_DHEART_SPELLCASTING_CULTIST_PEAK, oCaster))
|
||||
@ -1771,7 +1771,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_DNECRO, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_DNECRO, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_DNECRO, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_DNECRO, oCaster))
|
||||
@ -1930,7 +1930,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_DUSKBLADE, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_DUSKBLADE, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_DUSKBLADE, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_DUSKBLADE, oCaster))
|
||||
@ -2096,7 +2096,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_HARPER, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
/* if(GetHasFeat(FEAT_DIABO_SPELLCASTING_HARPER, oCaster))
|
||||
/* if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_HARPER, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster); */
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_HARPER, oCaster))
|
||||
@ -2247,7 +2247,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_HEXBLADE, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_HEXBLADE, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_HEXBLADE, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_HEXBLADE, oCaster))
|
||||
@ -2413,7 +2413,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_COMBAT_MEDIC_SPELLCASTING_KNIGHT_WEAVE, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_COMBAT_MEDIC, oCaster);
|
||||
|
||||
/* if(GetHasFeat(FEAT_DIABO_SPELLCASTING_KNIGHT_WEAVE, oCaster))
|
||||
/* if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_KNIGHT_WEAVE, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster); */
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_KNIGHT_WEAVE, oCaster))
|
||||
@ -2583,7 +2583,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_SORCERER, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_SORCERER, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SORCERER, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_SORCERER, oCaster))
|
||||
@ -2779,10 +2779,10 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
|| GetHasFeat(FEAT_CMANCER_SPELLCASTING_SHAPECHANGER, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_MONSTROUS, oCaster)
|
||||
|| GetHasFeat(FEAT_DIABO_SPELLCASTING_ABERRATION, oCaster)
|
||||
|| GetHasFeat(FEAT_DIABO_SPELLCASTING_OUTSIDER, oCaster)
|
||||
|| GetHasFeat(FEAT_DIABO_SPELLCASTING_SHAPECHANGER, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_MONSTROUS, oCaster)
|
||||
|| GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_ABERRATION, oCaster)
|
||||
|| GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_OUTSIDER, oCaster)
|
||||
|| GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SHAPECHANGER, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_MONSTROUS, oCaster)
|
||||
@ -3064,7 +3064,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_SUBLIME_CHORD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_SUBLIME_CHORD, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SUBLIME_CHORD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_SUBLIME_CHORD, oCaster))
|
||||
@ -3228,7 +3228,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_SUEL_ARCHANAMACH, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_SUEL_ARCHANAMACH, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SUEL_ARCHANAMACH, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_SUEL_ARCHANAMACH, oCaster))
|
||||
@ -3392,7 +3392,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_SHADOWLORD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_SHADOWLORD, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SHADOWLORD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_SHADOWLORD, oCaster))
|
||||
@ -3555,7 +3555,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_WARMAGE, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_WARMAGE, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_WARMAGE, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_WARMAGE, oCaster))
|
||||
@ -3719,7 +3719,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_WIZARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_WIZARD, oCaster))
|
||||
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_WIZARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
|
||||
|
||||
/* if(GetHasFeat(FEAT_DHEART_SPELLCASTING_WIZARD, oCaster))
|
||||
@ -3860,13 +3860,9 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
return nArcane;
|
||||
}
|
||||
|
||||
int GetDivinePRCLevels(object oCaster)
|
||||
int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
{
|
||||
object oCaster = GetLastSpellCaster();
|
||||
|
||||
int nCastingClass = PRCGetLastSpellCastClass();
|
||||
|
||||
int nDivine = 0;
|
||||
int nDivine = 0;
|
||||
|
||||
if (nCastingClass == CLASS_TYPE_ARCHIVIST)
|
||||
{
|
||||
@ -7114,14 +7110,14 @@ int UrPriestCL(object oCaster, int nCastingClass)
|
||||
if (iClass7 == CLASS_TYPE_HEXBLADE) iClass7Lev = (iClass7Lev >= 4) ? (iClass7Lev / 2) : 0;
|
||||
if (iClass8 == CLASS_TYPE_HEXBLADE) iClass8Lev = (iClass8Lev >= 4) ? (iClass8Lev / 2) : 0;
|
||||
|
||||
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster, iClass1);
|
||||
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster, iClass2);
|
||||
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster, iClass3);
|
||||
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster, iClass4);
|
||||
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster, iClass5);
|
||||
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster, iClass6);
|
||||
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster, iClass7);
|
||||
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster, iClass8);
|
||||
|
||||
iClass1Lev += PracticedSpellcasting(oCaster, iClass1, iClass1Lev);
|
||||
iClass2Lev += PracticedSpellcasting(oCaster, iClass2, iClass2Lev);
|
||||
@ -7236,14 +7232,14 @@ int GetLevelByTypeArcane(object oCaster = OBJECT_SELF)
|
||||
if (iClass7 == CLASS_TYPE_HEXBLADE) iClass7Lev = (iClass7Lev >= 4) ? (iClass7Lev / 2) : 0;
|
||||
if (iClass8 == CLASS_TYPE_HEXBLADE) iClass8Lev = (iClass8Lev >= 4) ? (iClass8Lev / 2) : 0;
|
||||
|
||||
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster, iClass1);
|
||||
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster, iClass2);
|
||||
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster, iClass3);
|
||||
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster, iClass4);
|
||||
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster, iClass5);
|
||||
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster, iClass6);
|
||||
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster, iClass7);
|
||||
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster, iClass8);
|
||||
|
||||
iClass1Lev += PracticedSpellcasting(oCaster, iClass1, iClass1Lev);
|
||||
iClass2Lev += PracticedSpellcasting(oCaster, iClass2, iClass2Lev);
|
||||
@ -7306,14 +7302,14 @@ int GetLevelByTypeDivine(object oCaster = OBJECT_SELF)
|
||||
if (iClass7 == CLASS_TYPE_PALADIN || iClass7 == CLASS_TYPE_RANGER) iClass1Lev = (iClass1Lev >= 4) ? (iClass1Lev / 2) : 0;
|
||||
if (iClass8 == CLASS_TYPE_PALADIN || iClass8 == CLASS_TYPE_RANGER) iClass2Lev = (iClass2Lev >= 4) ? (iClass2Lev / 2) : 0;
|
||||
|
||||
if (iClass1 == iFirstDivine) iClass1Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass2 == iFirstDivine) iClass2Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass3 == iFirstDivine) iClass3Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass4 == iFirstDivine) iClass4Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass5 == iFirstDivine) iClass5Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass6 == iFirstDivine) iClass6Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass7 == iFirstDivine) iClass7Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass8 == iFirstDivine) iClass8Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass1 == iFirstDivine) iClass1Lev += GetDivinePRCLevels(oCaster, iClass1);
|
||||
if (iClass2 == iFirstDivine) iClass2Lev += GetDivinePRCLevels(oCaster, iClass2);
|
||||
if (iClass3 == iFirstDivine) iClass3Lev += GetDivinePRCLevels(oCaster, iClass3);
|
||||
if (iClass4 == iFirstDivine) iClass4Lev += GetDivinePRCLevels(oCaster, iClass4);
|
||||
if (iClass5 == iFirstDivine) iClass5Lev += GetDivinePRCLevels(oCaster, iClass5);
|
||||
if (iClass6 == iFirstDivine) iClass6Lev += GetDivinePRCLevels(oCaster, iClass6);
|
||||
if (iClass7 == iFirstDivine) iClass7Lev += GetDivinePRCLevels(oCaster, iClass7);
|
||||
if (iClass8 == iFirstDivine) iClass8Lev += GetDivinePRCLevels(oCaster, iClass8);
|
||||
|
||||
iClass1Lev += PracticedSpellcasting(oCaster, iClass1, iClass1Lev);
|
||||
iClass2Lev += PracticedSpellcasting(oCaster, iClass2, iClass2Lev);
|
||||
|
@ -495,15 +495,14 @@ int GetLevelByTypeArcaneFeats(object oCaster = OBJECT_SELF, int iSpellID = -1)
|
||||
if (iClass7 == CLASS_TYPE_HEXBLADE) iClass7Lev = (iClass7Lev >= 4) ? (iClass7Lev / 2) : 0;
|
||||
if (iClass8 == CLASS_TYPE_HEXBLADE) iClass8Lev = (iClass8Lev >= 4) ? (iClass8Lev / 2) : 0;
|
||||
|
||||
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
|
||||
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster, iClass1);
|
||||
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster, iClass2);
|
||||
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster, iClass3);
|
||||
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster, iClass4);
|
||||
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster, iClass5);
|
||||
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster, iClass6);
|
||||
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster, iClass7);
|
||||
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster, iClass8);
|
||||
|
||||
iClass1Lev += iBoost;
|
||||
iClass2Lev += iBoost;
|
||||
@ -607,14 +606,14 @@ int GetLevelByTypeDivineFeats(object oCaster = OBJECT_SELF, int iSpellID = -1)
|
||||
|| iClass8 == CLASS_TYPE_ANTI_PALADIN)
|
||||
iClass8Lev = iClass7Lev / 2;
|
||||
|
||||
if (iClass1 == iFirstDivine) iClass1Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass2 == iFirstDivine) iClass2Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass3 == iFirstDivine) iClass3Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass4 == iFirstDivine) iClass4Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass5 == iFirstDivine) iClass5Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass6 == iFirstDivine) iClass6Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass7 == iFirstDivine) iClass7Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass8 == iFirstDivine) iClass8Lev += GetDivinePRCLevels(oCaster);
|
||||
if (iClass1 == iFirstDivine) iClass1Lev += GetDivinePRCLevels(oCaster, iClass1);
|
||||
if (iClass2 == iFirstDivine) iClass2Lev += GetDivinePRCLevels(oCaster, iClass2);
|
||||
if (iClass3 == iFirstDivine) iClass3Lev += GetDivinePRCLevels(oCaster, iClass3);
|
||||
if (iClass4 == iFirstDivine) iClass4Lev += GetDivinePRCLevels(oCaster, iClass4);
|
||||
if (iClass5 == iFirstDivine) iClass5Lev += GetDivinePRCLevels(oCaster, iClass5);
|
||||
if (iClass6 == iFirstDivine) iClass6Lev += GetDivinePRCLevels(oCaster, iClass6);
|
||||
if (iClass7 == iFirstDivine) iClass7Lev += GetDivinePRCLevels(oCaster, iClass7);
|
||||
if (iClass8 == iFirstDivine) iClass8Lev += GetDivinePRCLevels(oCaster, iClass8);
|
||||
|
||||
iClass1Lev += iBoost;
|
||||
iClass2Lev += iBoost;
|
||||
|
@ -3150,4 +3150,4 @@ int X2PreSpellCastCode2()
|
||||
|
||||
|
||||
// Test main
|
||||
// void main(){}
|
||||
//void main(){}
|
||||
|
@ -1934,8 +1934,8 @@ int ReserveFeats()
|
||||
int nClass = GetPrimarySpellcastingClass(oPC);
|
||||
int nLevel = GetLevelByClass(nClass, oPC);
|
||||
|
||||
if (GetIsDivineClass(nClass, oPC)) nLevel += GetDivinePRCLevels(oPC);
|
||||
else if (GetIsArcaneClass(nClass, oPC)) nLevel += GetArcanePRCLevels(oPC);
|
||||
if (GetIsDivineClass(nClass, oPC)) nLevel += GetDivinePRCLevels(oPC, nClass);
|
||||
else if (GetIsArcaneClass(nClass, oPC)) nLevel += GetArcanePRCLevels(oPC, nClass);
|
||||
|
||||
int nSpellLevelKnown = GetMaxSpellLevelForCasterLevel(nClass, nLevel);
|
||||
|
||||
|
3894
trunk/scripts/prc_enforce_mark.nss
Normal file
3894
trunk/scripts/prc_enforce_mark.nss
Normal file
File diff suppressed because it is too large
Load Diff
@ -46,6 +46,9 @@ void main()
|
||||
// Check to see which special prc requirements (i.e. those that can't be done)
|
||||
// through the .2da's, the newly leveled up player meets.
|
||||
DelayCommand(0.5, ExecuteScript("prc_prereq", oPC)); // Delayed so that deleveling gets to happen before it.
|
||||
|
||||
//:: Run PrC marker feat check
|
||||
ExecuteScript("prc_enforce_mark", oPC);
|
||||
ExecuteScript("prc_enforce_feat", oPC);
|
||||
ExecuteScript("prc_enforce_psi", oPC);
|
||||
//Restore Power Points for Psionics
|
||||
|
@ -165,13 +165,29 @@ void Dragonheart(object oPC)
|
||||
}
|
||||
|
||||
void Cultist(object oPC)
|
||||
{
|
||||
SetLocalInt(oPC, "PRC_PrereqCultist", 1);
|
||||
|
||||
// Can't be arcane
|
||||
int i;
|
||||
for (i = 1; i <= 8; i++)
|
||||
{
|
||||
if (GetIsArcaneClass(GetClassByPosition(i, oPC)))
|
||||
{
|
||||
SetLocalInt(oPC, "PRC_PrereqCultist", 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* void Cultist(object oPC)
|
||||
{
|
||||
SetLocalInt(oPC, "PRC_PrereqCultist", 1);
|
||||
|
||||
// Can't be arcane
|
||||
if(!GetIsArcaneClass(GetClassByPosition(1, oPC)) && (!GetIsArcaneClass(GetClassByPosition(2, oPC)) || GetClassByPosition(2, oPC) == CLASS_TYPE_CULTIST_SHATTERED_PEAK))
|
||||
SetLocalInt(oPC, "PRC_PrereqCultist", 0);
|
||||
}
|
||||
} */
|
||||
|
||||
void Shifter(object oPC, int iArcSpell, int iDivSpell)
|
||||
{
|
||||
@ -1316,7 +1332,7 @@ void main()
|
||||
if (!bFirstDivClassFound &&
|
||||
GetPrimaryDivineClass(oPC) == nClass)
|
||||
{
|
||||
nLevel += GetDivinePRCLevels(oPC);
|
||||
nLevel += GetDivinePRCLevels(oPC, nClass);
|
||||
bFirstDivClassFound = TRUE;
|
||||
}
|
||||
int nAbility = GetAbilityScoreForClass(nClass, oPC);
|
||||
@ -1357,7 +1373,7 @@ void main()
|
||||
if (!bFirstArcClassFound &&
|
||||
(GetPrimaryArcaneClass(oPC) == nClass || nMonsterCaster))
|
||||
{
|
||||
nLevel += GetArcanePRCLevels(oPC);
|
||||
nLevel += GetArcanePRCLevels(oPC, nClass);
|
||||
bFirstArcClassFound = TRUE;
|
||||
}
|
||||
int nAbility = GetAbilityScoreForClass(nClass, oPC);
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -72143,16 +72143,16 @@ Use: Activated</entry>
|
||||
<entry id="76164" lang="en" sex="m">Diabolist Spellcasting (Wizard)</entry>
|
||||
<entry id="76165" lang="en" sex="m">Dragonsong Lyrist Spellcasting (Wizard)</entry>
|
||||
<entry id="76166" lang="en" sex="m">Eldritch Knight Spellcasting (Wizard)</entry>
|
||||
<entry id="76167" lang="en" sex="m">Enlightened Fist Spellcasting (Wizard)</entry>
|
||||
<entry id="76168" lang="en" sex="m">Eldritch Theurge Spellcasting (Wizard)</entry>
|
||||
<entry id="76169" lang="en" sex="m">Elemental Savant Spellcasting (Wizard)</entry>
|
||||
<entry id="76167" lang="en" sex="m">Enlightened Fist Spellcasting (Wizard)</entry>
|
||||
<entry id="76168" lang="en" sex="m">Elemental Savant Spellcasting (Wizard)</entry>
|
||||
<entry id="76169" lang="en" sex="m">Eldritch Theurge Spellcasting (Wizard)</entry>
|
||||
<entry id="76170" lang="en" sex="m">Force Missile Mage Spellcasting (Wizard)</entry>
|
||||
<entry id="76171" lang="en" sex="m">Fochlucan Lyrist Spellcasting (Wizard)</entry>
|
||||
<entry id="76172" lang="en" sex="m">Frost Mage Spellcasting (Wizard)</entry>
|
||||
<entry id="76173" lang="en" sex="m">Thrall of Graz'zt Spellcasting (Wizard)</entry>
|
||||
<entry id="76174" lang="en" sex="m">Harper Mage Spellcasting (Wizard)</entry>
|
||||
<entry id="76175" lang="en" sex="m">Hathran Spellcasting (Wizard)</entry>
|
||||
<entry id="76176" lang="en" sex="m">Havoc Spellcasting (Wizard)</entry>
|
||||
<entry id="76176" lang="en" sex="m">Havoc Mage Spellcasting (Wizard)</entry>
|
||||
<entry id="76177" lang="en" sex="m">Heartwarder Spellcasting (Wizard)</entry>
|
||||
<entry id="76178" lang="en" sex="m">Jade Phoenix Mage Spellcasting (Wizard)</entry>
|
||||
<entry id="76179" lang="en" sex="m">Drow Judicator Spellcasting (Wizard)</entry>
|
||||
@ -72962,7 +72962,7 @@ Use: Activated</entry>
|
||||
<entry id="76983" lang="en" sex="m">Mysteries/Spellcasting: At each level, you gain new mysteries or spells per day and an increase in caster level (and mysteries or spells known, if applicable) as if you had also gained a level in both your mystery-using class and your arcane spellcasting class. You do not, however, gain any other benefits a character of these classes would have gained. If you had more than one mystery-using or arcane spellcasting class before becoming a noctumancer, you must decide to which class to add each level for the purpose of determining spells per day, caster level, and spells known.</entry>
|
||||
<entry id="76984" lang="en" sex="m">Spells per Day/Spells Known: At 2nd, 3rd, and 4th level, an ollam gains new spells per day (and spells known, if applicable) as if she had also gained a level in a spellcasting class to which she belonged before adding the prestige class level. She does not, however, gain any other benefit a character of that class would have gained, if she had more than one spellcasting class before becoming an ollam, she must decide to which class to add each level for the purpose of determining spells per day and spells known.</entry>
|
||||
<entry id="76985" lang="en" sex="m">Spells per Day/Spells Known: At 2nd level and every other oozemaster level thereafter, the character gains new spells per day (and spells known, if applicable) as if he had also gained a level in a spellcasting class to which he belonged before adding the prestige class. He does nor, however, gain any other benefit a character of that class would have gained (additional wild shape options, metamagic or item creation feats, or the like). If the character had more than one spellcasting class before becoming an oozemaster, the player must decide to which class to add each oozemaster level for determining spells per day and spells known.</entry>
|
||||
<entry id="76986" lang="en" sex="m">Spells per Day/Spells Known: When a thrall of Orcus attains 1st, 4th, 7th, and 10th level, the character gains new spells per day as if she had also gained a level in whatever spellcasting class she belonged to before she added the prestige class. She does not gain any other benefit a character of that class would have gained (improved chance of controlling or rebuking undead, metamagic or item creation feats, hit points beyond those received from the prestige class, and so on), except for an increased effective level of spellcasting. This essentially means that she adds the new level to the level of whatever other spellcasting class the character has, then determines spells per day, spells known, and caster level accordingly. If a character had more than one spellcasting class before she became a thrall of Orcus, she must decide to which class she adds the level for purposes of determining spells per day.</entry>
|
||||
<entry id="76986" lang="en" sex="m">Spells per Day/Spells Known: When a thrall of Orcus attains 1st, 4th, 7th, and 10th level, the character gains new spells per day as if she had also gained a level in whatever spellcasting class she belonged to before she added the prestige class. She does not gain any other benefit a character of that class would have gained (improved chance of controlling or rebuking undead, metamagic or item creation feats, hit points beyond those received from the prestige class, and so on), except for an increased effective level of spellcasting. This essentially means that she adds the new level to the level of whatever other spellcasting class the character has, then determines spells per day, spells known, and caster level accordingly. If a character had more than one spellcasting class before she became a thrall of Orcus, she must decide to which class she adds the levels to for purposes of determining spells per day.</entry>
|
||||
<entry id="76987" lang="en" sex="m">Spells per Day: At every second level gained in the pale master class, the character gains new spells per day as if he had also gained a level in an arcane spellcasting class he belonged to before adding the prestige class. He does not, however, gain any other benefit a character of that class would have gained (improved chance of controlling or rebuking undead, metamagic or item creation feats, hit points beyond those he receives from the prestige class, and so on), except for an increased effective level of spellcasting. If a character had more than one spellcasting class before becoming a pale master, he must decide to which class he adds the new level for purposes of determining spells per day.</entry>
|
||||
<entry id="76988" lang="en" sex="m">Spells per Day/Powers Known: When a new psychic theurge level is attained, the character gains new spells per day as if he had also attained a level in any one divine spellcasting class he belonged to before he added the prestige class. He gains additional power points per day and access to new powers as if he had also gained a level in any one manifesting class he belonged to previously. He does not, however, gain any other benefit a character of either class would have gained (bonus metamagic, metapsionic, or item creation feats, psicrystal special abilities, and so on). This essentially means that he adds the level of psychic theurge to the level of whatever other divine spellcasting class and manifesting class the character has, then determines spells per day, caster level, power points per day, powers known, and manifester level accordingly.</entry>
|
||||
<entry id="76989" lang="en" sex="m">Spells per Day: At every even-numbered level gained in the rage mage class, the character gains new spells per day as if she had also gained a level in an arcane spellcasting class she belonged to before adding the prestige class. In no case, however, does she gain any other benefit a character of that class would have gained, except for an increased effective level of spellcasting (but see spell rage, below). if a character had more than one arcane spellcasting class before becoming a rage mage, she must decide to which class she adds the new level for purposes of determining spells per day.</entry>
|
||||
|
Loading…
x
Reference in New Issue
Block a user