2025/06/03 Update

Updated NUI spellcast menu (@Rakiov)
Updated Tornado Throw.
Updated Midnight Augmentation.
Updated Lucky Dice's tlk entries.
Fixed Heartwarder's marker feat.
This commit is contained in:
Jaysyn904 2025-06-03 23:13:56 -04:00
parent 188047149c
commit 619b7c62c9
19 changed files with 375 additions and 137 deletions

View File

@ -222,7 +222,7 @@
218 Warmind 16790702 16825724 16825725 16825726 16825727 IR_ELDKNI 10 CLS_ATK_1 CLS_FEAT_WARMND CLS_SAVTHR_WILD CLS_SKILL_WARMND CLS_BFEAT_WARMND 2 **** **** 1 0 14 12 14 16 10 10 WIS 0X04 0X1 0 CLASS_TYPE_WARMIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARMND 40 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
219 IronMind 16790703 16822552 16822553 16822554 16822555 IC_IRONMIND 10 CLS_ATK_2 CLS_FEAT_IRNMND CLS_SAVTHR_WIZ CLS_SKILL_IRNMND CLS_BFEAT_IRNMND 2 **** **** 1 0 15 9 14 13 10 15 WIS 0X00 0X0 0 CLASS_TYPE_IRONMIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_IRNMND 10 0 0 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
220 SanctifiedMind 16790704 16822568 16822569 16822570 16822571 IR_THRALLHERD 8 CLS_ATK_1 CLS_FEAT_SNCMND CLS_SAVTHR_CLER CLS_SKILL_SNCMND CLS_BFEAT_SNCMND 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X10 0X2 0 CLASS_TYPE_SANCTIFIED_MIND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SNCMND 6 0 0 1 6 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
221 SlayerOfDomiel 16790705 16827566 16827567 16827568 16827569 IR_HEIRONEOUS 6 CLS_ATK_2 CLS_FEAT_SOD CLS_SAVTHR_ROG CLS_SKILL_SOD CLS_BFEAT_SOD 4 CLS_SPGN_SOD **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SLAYER_OF_DOMIEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOD 10 0 0 0 10 2 0 **** 1 0 0 0 0 0 0 WIS Domiel 1 1 255 0 0
221 SlayerOfDomiel 16790705 16827566 16827567 16827568 16827569 IR_HEIRONEOUS 6 CLS_ATK_2 CLS_FEAT_SOD CLS_SAVTHR_ROG CLS_SKILL_SOD CLS_BFEAT_SOD 4 CLS_SPGN_SOD **** 1 1 15 9 14 13 10 15 WIS 0X15 0X3 0 CLASS_TYPE_SLAYER_OF_DOMIEL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOD 40 0 0 0 10 2 0 **** 1 0 0 0 0 0 0 WIS Domiel 1 1 255 0 0
222 DiscipleOfAsmodeus 16790706 16822624 16822625 16822626 16822627 IR_SOULEATER 6 CLS_ATK_2 CLS_FEAT_DOA CLS_SAVTHR_WIZ CLS_SKILL_DOA CLS_BFEAT_DOA 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X09 0X2 0 CLASS_TYPE_DISCIPLE_OF_ASMODEUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DOA 10 0 2 0 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
223 Dirgesinger 16790707 16822584 16822585 16822586 16822587 IR_PALEMA 6 CLS_ATK_2 CLS_FEAT_DIRGE CLS_SAVTHR_WIZ CLS_SKILL_DIRGE CLS_BFEAT_DIRGE 4 **** **** 1 0 15 9 14 13 10 15 WIS 0X08 0X2 0 CLASS_TYPE_DIRGESINGER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_DIRGE 5 0 0 0 5 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
224 Suel_Archanamach 16790708 16822598 16822599 16822600 16822601 IR_HAVOCMAGE 8 CLS_ATK_2 CLS_FEAT_SUEL CLS_SAVTHR_BARD CLS_SKILL_SUEL CLS_BFEAT_SUEL 4 CLS_SPGN_SUEL CLS_SPKN_SUEL 1 1 14 14 14 15 10 10 WIS 0X00 0X0 0 CLASS_TYPE_SUEL_ARCHANAMACH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SUEL 10 0 0 0 10 10 131 **** **** **** **** **** **** **** **** **** Suel **** **** **** **** ****

View File

@ -1,7 +1,7 @@
2DA V2.0
Bonus
0 0
0 1
1 0
2 0
3 0

View File

@ -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 0
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 1
14 0
15 0
16 0
17 1
18 0
19 0
20 0
21 1
22 0
23 0
24 0
25 1
26 0
27 0
28 0
29 1
30 0
31 0
32 0
33 1
34 0
35 0
36 0
37 1
38 0
39 0
40 0
41 1
42 0
43 0
44 0
45 1
46 0
47 0
48 0
49 1
50 0
51 0
52 0
53 1
54 0
55 0
56 0
57 1
58 0
59 0

View File

@ -1,16 +1,158 @@
2DA V2.0
FeatLabel FeatIndex List GrantedOnLevel OnMenu
0 SlayerOfDomielDeathTouch1 2282 3 1 1
1 SlayerOfDomielDeathTouch2 2284 3 3 1
2 SlayerOfDomielDeathTouch3 2286 3 8 1
3 SlayerOfDomielDeathTouch4 2299 3 10 1
4 SlayerOfDomielDivineGrace 2264 3 2 0
5 ImprovedEvasion 212 3 6 0
6 SlayerOfDomielDetectEvil 2461 3 1 1
7 FEAT_DRAGONFIRE_STRIKE 3949 0 -1 1
8 SuddenEmpower 2830 0 -1 1
9 SuddenExtend 2831 0 -1 1
10 SuddenMaximize 2832 0 -1 1
11 SuddenWiden 2833 0 -1 1
12 FEAT_ESCHEW_MATERIALS 2596 0 1 0
FeatLabel FeatIndex List GrantedOnLevel OnMenu
0 SlayerOfDomielDeathTouch 2282 3 1 1
1 SlayerOfDomielDivineGrace 2264 3 2 0
2 ImprovedEvasion 212 3 6 0
3 SlayerOfDomielDetectEvil 2461 3 1 1
4 EPIC_SLAYER_OF_DOMIEL 25101 3 11 0
5 FEAT_EPIC_ARMOR_SKIN 490 1 -1 0
6 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1
7 FEAT_EPIC_PROWESS 584 1 -1 0
8 FEAT_EPIC_WEAPON_FOCUS_CLUB 619 1 -1 0
9 FEAT_EPIC_WEAPON_FOCUS_DAGGER 620 1 -1 0
10 FEAT_EPIC_WEAPON_FOCUS_DART 621 1 -1 0
11 FEAT_EPIC_WEAPON_FOCUS_HEAVYCROSSBOW 622 1 -1 0
12 FEAT_EPIC_WEAPON_FOCUS_LIGHTCROSSBOW 623 1 -1 0
13 FEAT_EPIC_WEAPON_FOCUS_LIGHTMACE 624 1 -1 0
14 FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR 625 1 -1 0
15 FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF 626 1 -1 0
16 FEAT_EPIC_WEAPON_FOCUS_SHORTSPEAR 627 1 -1 0
17 FEAT_EPIC_WEAPON_FOCUS_SICKLE 628 1 -1 0
18 FEAT_EPIC_WEAPON_FOCUS_SLING 629 1 -1 0
19 FEAT_EPIC_WEAPON_FOCUS_UNARMED 630 1 -1 0
20 FEAT_EPIC_WEAPON_FOCUS_LONGBOW 631 1 -1 0
21 FEAT_EPIC_WEAPON_FOCUS_SHORTBOW 632 1 -1 0
22 FEAT_EPIC_WEAPON_FOCUS_SHORTSWORD 633 1 -1 0
23 FEAT_EPIC_WEAPON_FOCUS_RAPIER 634 1 -1 0
24 FEAT_EPIC_WEAPON_FOCUS_SCIMITAR 635 1 -1 0
25 FEAT_EPIC_WEAPON_FOCUS_LONGSWORD 636 1 -1 0
26 FEAT_EPIC_WEAPON_FOCUS_GREATSWORD 637 1 -1 0
27 FEAT_EPIC_WEAPON_FOCUS_HANDAXE 638 1 -1 0
28 FEAT_EPIC_WEAPON_FOCUS_THROWINGAXE 639 1 -1 0
29 FEAT_EPIC_WEAPON_FOCUS_BATTLEAXE 640 1 -1 0
30 FEAT_EPIC_WEAPON_FOCUS_GREATAXE 641 1 -1 0
31 FEAT_EPIC_WEAPON_FOCUS_HALBERD 642 1 -1 0
32 FEAT_EPIC_WEAPON_FOCUS_LIGHTHAMMER 643 1 -1 0
33 FEAT_EPIC_WEAPON_FOCUS_LIGHTFLAIL 644 1 -1 0
34 FEAT_EPIC_WEAPON_FOCUS_WARHAMMER 645 1 -1 0
35 FEAT_EPIC_WEAPON_FOCUS_HEAVYFLAIL 646 1 -1 0
36 FEAT_EPIC_WEAPON_FOCUS_KAMA 647 1 -1 0
37 FEAT_EPIC_WEAPON_FOCUS_KUKRI 648 1 -1 0
38 FEAT_EPIC_WEAPON_FOCUS_SHURIKEN 649 1 -1 0
39 FEAT_EPIC_WEAPON_FOCUS_SCYTHE 650 1 -1 0
40 FEAT_EPIC_WEAPON_FOCUS_KATANA 651 1 -1 0
41 FEAT_EPIC_WEAPON_FOCUS_BASTARDSWORD 652 1 -1 0
42 FEAT_EPIC_WEAPON_FOCUS_DIREMACE 653 1 -1 0
43 FEAT_EPIC_WEAPON_FOCUS_DOUBLEAXE 654 1 -1 0
44 FEAT_EPIC_WEAPON_FOCUS_TWOBLADEDSWORD 655 1 -1 0
45 EPIC_WEAPON_FOCUS_LANCE 24613 1 -1 0
46 EPIC_WEAPON_FOCUS_HEAVY_PICK 24614 1 -1 0
47 EPIC_WEAPON_FOCUS_LIGHT_PICK 24615 1 -1 0
48 EPIC_WEAPON_FOCUS_SAI 24616 1 -1 0
49 EPIC_WEAPON_FOCUS_NUNCHAKU 24617 1 -1 0
50 EPIC_WEAPON_FOCUS_FALCHION 24618 1 -1 0
51 EPIC_WEAPON_FOCUS_SAP 24619 1 -1 0
52 EPIC_WEAPON_FOCUS_KATAR 24620 1 -1 0
53 EPIC_WEAPON_FOCUS_HEAVY_MACE 24621 1 -1 0
54 EPIC_WEAPON_FOCUS_MAUL 24622 1 -1 0
55 EPIC_WEAPON_FOCUS_DBL_SCIMITAR 24623 1 -1 0
56 EPIC_WEAPON_FOCUS_GOAD 24624 1 -1 0
57 EPIC_WEAPON_FOCUS_ELVEN_LIGHTBLADE 24698 1 -1 0
58 EPIC_WEAPON_FOCUS_ELVEN_THINBLADE 24706 1 -1 0
59 EPIC_WEAPON_FOCUS_ELVEN_COURTBLADE 24714 1 -1 0
60 FEAT_EPIC_WEAPON_FOCUS_DWAXE 956 1 -1 0
61 FEAT_EPIC_WEAPON_FOCUS_WHIP 997 1 -1 0
62 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0
63 Epic_WeaponFocus_Mindblade 3618 1 -1 0
64 FEAT_EPIC_LEADERSHIP 4366 1 -1 0
65 FEAT_LEGENDARY_COMMANDER 4367 1 -1 0
66 FEAT_EPIC_SKILL_FOCUS_APPRAISE 588 1 -1 0
67 FEAT_EPIC_SKILL_FOCUS_CONCENTRATION 589 1 -1 0
68 FEAT_EPIC_SKILL_FOCUS_CRAFT_TRAP 590 1 -1 0
69 FEAT_EPIC_SKILL_FOCUS_DISABLETRAP 591 1 -1 0
70 FEAT_EPIC_SKILL_FOCUS_DISCIPLINE 592 1 -1 0
71 FEAT_EPIC_SKILL_FOCUS_HEAL 593 1 -1 0
72 FEAT_EPIC_SKILL_FOCUS_HIDE 594 1 -1 0
73 FEAT_EPIC_SKILL_FOCUS_LISTEN 595 1 -1 0
74 FEAT_EPIC_SKILL_FOCUS_LORE 596 1 -1 0
75 FEAT_EPIC_SKILL_FOCUS_MOVESILENTLY 597 1 -1 0
76 FEAT_EPIC_SKILL_FOCUS_OPENLOCK 598 1 -1 0
77 FEAT_EPIC_SKILL_FOCUS_PARRY 599 1 -1 0
78 FEAT_EPIC_SKILL_FOCUS_PERSUADE 601 1 -1 0
79 FEAT_EPIC_SKILL_FOCUS_PICKPOCKET 602 1 -1 0
80 FEAT_EPIC_SKILL_FOCUS_SEARCH 603 1 -1 0
81 FEAT_EPIC_SKILL_FOCUS_SETTRAP 604 1 -1 0
82 FEAT_EPIC_SKILL_FOCUS_SPELLCRAFT 605 1 -1 0
83 FEAT_EPIC_SKILL_FOCUS_SPOT 606 1 -1 0
84 FEAT_EPIC_SKILL_FOCUS_TAUNT 607 1 -1 0
85 FEAT_EPIC_SKILL_FOCUS_TUMBLE 608 1 -1 0
86 FEAT_EPIC_SKILL_FOCUS_CRAFT_ARMOR 913 1 -1 0
87 FEAT_EPIC_SKILL_FOCUS_CRAFT_WEAPON 914 1 -1 0
88 FEAT_EPIC_SKILL_FOCUS_BLUFF 917 1 -1 0
89 FEAT_EPIC_SKILL_FOCUS_INTIMIDATE 918 1 -1 0
90 FEAT_LINGERING_DAMAGE 3099 1 -1 0
91 FEAT_EPIC_SKILL_FOCUS_RIDE 3038 1 -1 0
92 FEAT_EPIC_SKILL_FOCUS_JUMP 3040 1 -1 0
93 FEAT_EPIC_SKILL_FOCUS_SENSE_MOTIVE 3042 1 -1 0
94 FEAT_EPIC_SKILL_FOCUS_MARTIAL_LORE 3044 1 -1 0
95 FEAT_EPIC_SKILL_FOCUS_BALANCE 3046 1 -1 0
96 FEAT_EPIC_SKILL_FOCUS_CRAFT_POISON 3048 1 -1 0
97 FEAT_EPIC_SKILL_FOCUS_PSICRAFT 3050 1 -1 0
98 FEAT_EPIC_SKILL_FOCUS_CLIMB 3052 1 -1 0
99 FEAT_EPIC_SKILL_FOCUS_CRAFT_GENERAL 3054 1 -1 0
100 FEAT_EPIC_REPUTATION 586 1 -1 0
101 FEAT_EPIC_SELF_CONCEALMENT_10 748 1 -1 0
102 FEAT_EPIC_SELF_CONCEALMENT_20 749 1 -1 0
103 FEAT_EPIC_SELF_CONCEALMENT_30 750 1 -1 0
104 FEAT_EPIC_SELF_CONCEALMENT_40 751 1 -1 0
105 FEAT_EPIC_SELF_CONCEALMENT_50 752 1 -1 0
106 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0
107 FEAT_EPIC_GREAT_DEXTERITY_1 784 1 -1 0
108 FEAT_EPIC_GREAT_DEXTERITY_2 785 1 -1 0
109 FEAT_EPIC_GREAT_DEXTERITY_3 786 1 -1 0
110 FEAT_EPIC_GREAT_DEXTERITY_4 787 1 -1 0
111 FEAT_EPIC_GREAT_DEXTERITY_5 788 1 -1 0
112 FEAT_EPIC_GREAT_DEXTERITY_6 789 1 -1 0
113 FEAT_EPIC_GREAT_DEXTERITY_7 790 1 -1 0
114 FEAT_EPIC_GREAT_DEXTERITY_8 791 1 -1 0
115 FEAT_EPIC_GREAT_DEXTERITY_9 792 1 -1 0
116 FEAT_EPIC_GREAT_DEXTERITY_10 793 1 -1 0
117 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_1 834 1 -1 0
118 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_2 835 1 -1 0
119 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_3 836 1 -1 0
120 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_4 837 1 -1 0
121 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_5 838 1 -1 0
122 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_6 839 1 -1 0
123 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_7 840 1 -1 0
124 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_8 841 1 -1 0
125 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_9 842 1 -1 0
126 FEAT_EPIC_IMPROVED_SNEAK_ATTACK_10 843 1 -1 0
127 FEAT_EPIC_SKILL_FOCUS_USEMAGICDEVICE 609 1 -1 0
128 FEAT_EPIC_DODGE 856 1 -1 0
129 FEAT_EPIC_GREAT_CHARISMA_1 764 1 -1 0
130 FEAT_EPIC_GREAT_CHARISMA_2 765 1 -1 0
131 FEAT_EPIC_GREAT_CHARISMA_3 766 1 -1 0
132 FEAT_EPIC_GREAT_CHARISMA_4 767 1 -1 0
133 FEAT_EPIC_GREAT_CHARISMA_5 768 1 -1 0
134 FEAT_EPIC_GREAT_CHARISMA_6 769 1 -1 0
135 FEAT_EPIC_GREAT_CHARISMA_7 770 1 -1 0
136 FEAT_EPIC_GREAT_CHARISMA_8 771 1 -1 0
137 FEAT_EPIC_GREAT_CHARISMA_9 772 1 -1 0
138 FEAT_EPIC_GREAT_CHARISMA_10 773 1 -1 0
139 FEAT_EPIC_GREAT_WISDOM_1 804 1 -1 0
140 FEAT_EPIC_GREAT_WISDOM_2 805 1 -1 0
141 FEAT_EPIC_GREAT_WISDOM_3 806 1 -1 0
142 FEAT_EPIC_GREAT_WISDOM_4 807 1 -1 0
143 FEAT_EPIC_GREAT_WISDOM_5 808 1 -1 0
144 FEAT_EPIC_GREAT_WISDOM_6 809 1 -1 0
145 FEAT_EPIC_GREAT_WISDOM_7 810 1 -1 0
146 FEAT_EPIC_GREAT_WISDOM_8 811 1 -1 0
147 FEAT_EPIC_GREAT_WISDOM_9 812 1 -1 0
148 FEAT_EPIC_GREAT_WISDOM_10 813 1 -1 0
149 FEAT_DRAGONFIRE_STRIKE 3949 0 -1 1
150 SuddenEmpower 2830 0 -1 1
151 SuddenExtend 2831 0 -1 1
152 SuddenMaximize 2832 0 -1 1
153 SuddenWiden 2833 0 -1 1
154 FEAT_ESCHEW_MATERIALS 2596 0 1 0

View File

@ -2343,10 +2343,10 @@
2339 FEAT_GREATER_IRON_HEWS 16826150 16826151 ife_x2critomsta **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 2765 **** 1 1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_GREATER_IRON_HEWS 4 **** **** **** **** **** 0 1
2340 FEAT_IRON_SKIN 16826152 16826153 ife_x2arskin **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 2766 **** 1 1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_IRON_SKIN 4 **** **** **** **** **** 0 1
2341 FEAT_IRON_BODY 16826154 16826155 ife_x2epdivcha **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 2767 **** 1 1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_IRON_BODY 4 **** **** **** **** **** 0 1
2342 FEAT_PAIN_TOUCH 16826160 16826161 ife_x2wfunar **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 2768 2343 **** 11 **** **** **** **** **** **** **** **** **** **** **** FEAT_PAIN_TOUCH **** **** **** **** **** **** **** 1
2343 FEAT_AURA_OF_FEAR 16826162 16826163 ife_x1spdrkbls **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 2770 2346 **** 11 **** 1 **** **** **** **** **** **** **** **** **** FEAT_AURA_OF_FEAR **** **** **** **** **** **** **** 1
2344 FEAT_CRUELEST_CUT 16826164 16826165 ife_x2kicrit **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 2769 2349 **** 11 **** **** **** **** **** **** **** **** **** **** **** FEAT_CRUELEST_CUT **** **** **** **** **** **** **** 1
2345 FEAT_VISAGE_OF_TERROR 16826166 16826167 ife_x2mightrage **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 2771 2391 **** 9 **** **** **** **** **** **** **** **** **** **** **** FEAT_VISAGE_OF_TERROR **** **** **** **** **** **** **** 1
2342 FEAT_PAIN_TOUCH 16826160 16826161 ife_x2wfunar **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** 2768 **** **** 11 **** **** **** **** **** **** **** **** **** **** **** FEAT_PAIN_TOUCH 3 1 **** **** **** **** 0 1
2343 FEAT_AURA_OF_FEAR 16826162 16826163 ife_x1spdrkbls **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** 2770 **** **** 11 **** 1 **** **** **** **** **** **** **** **** **** FEAT_AURA_OF_FEAR 1 **** **** **** **** **** 0 1
2344 FEAT_CRUELEST_CUT 16826164 16826165 ife_x2kicrit **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** 2769 **** **** 11 **** **** **** **** **** **** **** **** **** **** **** FEAT_CRUELEST_CUT 3 1 **** **** **** **** 0 1
2345 FEAT_VISAGE_OF_TERROR 16826166 16826167 ife_x2mightrage **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** 2771 **** **** 9 **** **** **** **** **** **** **** **** **** **** **** FEAT_VISAGE_OF_TERROR 1 **** **** **** **** **** 0 1
2346 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1
2347 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1
2348 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1

View File

@ -18936,9 +18936,9 @@
18932 LightningGauntletsZap 16836844 is_ChLightn V T 0 **** 0x02 moi_mld_lghtgnzp **** **** **** **** **** **** 6 1500 hand **** vco_mebalelec01 **** sco_mebalelec01 vs_chant_evoc_hm vs_chant_evoc_hf area 1000 **** **** **** **** 0 **** linked hand **** path Electricity 1 **** **** **** **** **** 1 **** 1 6110 0 0 **** 1 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18933 LightningGauntletsHandsBind 16836845 is_ShadShld T P 0 **** 0x01 moi_mld_lghtgnhn **** **** **** **** **** **** 8 1500 hand **** **** vco_lgrinodd01 sco_lgrinodd01 vs_chant_illu_hm vs_chant_illu_hf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 12 **** 1 16836717 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18934 LuckyDice_RadialMaster 16836093 **** T P 0 **** 0x01 moi_mld_lckydcft **** **** **** **** **** **** 2 1500 hand **** vco_smhanelec01 **** sco_mehanelec01 vs_chant_conj_lm vs_chant_conj_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 18935 18936 18937 **** **** 12 **** 1 16825537 0 0 **** 0 8834 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18935 LuckyDice_AttackDamage 16836095 fot_knowalign T P 0 **** 0x01 moi_mld_lckydcft **** **** **** **** **** **** 2 1500 hand **** vco_smhanelec01 **** sco_mehanelec01 vs_chant_conj_lm vs_chant_conj_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 12 18934 1 16825537 0 0 **** 0 556926050 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18936 LuckyDice_SavingThrows 16836096 fot_exped T P 0 **** 0x01 moi_mld_lckydcft **** **** **** **** **** **** 2 1500 hand **** vco_smhanelec01 **** sco_mehanelec01 vs_chant_conj_lm vs_chant_conj_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 12 18934 1 16825537 0 0 **** 0 557384801 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18937 LuckyDice_SkillAbilities 16836097 fot_minorseq T P 0 **** 0x01 moi_mld_lckydcft **** **** **** **** **** **** 2 1500 hand **** vco_smhanelec01 **** sco_mehanelec01 vs_chant_conj_lm vs_chant_conj_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 12 18934 1 16825537 0 0 **** 0 557515872 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18935 LuckyDice_AttackDamage 16836848 fot_knowalign T P 0 **** 0x01 moi_mld_lckydcft **** **** **** **** **** **** 2 1500 hand **** vco_smhanelec01 **** sco_mehanelec01 vs_chant_conj_lm vs_chant_conj_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 12 18934 1 16825537 0 0 **** 0 556926050 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18936 LuckyDice_SavingThrows 16836849 fot_exped T P 0 **** 0x01 moi_mld_lckydcft **** **** **** **** **** **** 2 1500 hand **** vco_smhanelec01 **** sco_mehanelec01 vs_chant_conj_lm vs_chant_conj_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 12 18934 1 16825537 0 0 **** 0 557384801 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18937 LuckyDice_SkillAbilities 16836850 fot_minorseq T P 0 **** 0x01 moi_mld_lckydcft **** **** **** **** **** **** 2 1500 hand **** vco_smhanelec01 **** sco_mehanelec01 vs_chant_conj_lm vs_chant_conj_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 12 18934 1 16825537 0 0 **** 0 557515872 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18938 MagesSpectaclesBrowBind 16836853 is_ReadMagic D T 0 **** 0x28 moi_mld_mgspctft **** **** **** **** **** **** 2 1500 hand **** vco_smhanelec01 **** sco_mehanelec01 vs_chant_illu_lm vs_chant_illu_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** **** 1 16789529 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18939 ManticoreBeltTotemBind 16836856 ife_X1EmbuArr V L 0 **** 0x02 moi_mld_mntcrbft **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** attack 1000 **** **** **** **** 1 wamar_001 homing hand **** path **** 0 **** **** **** **** **** 3 **** 2 **** 0 0 **** 1 **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
18940 MantleOfFlameShouldersBind 16836859 is_Fireball V P 0 **** 0x01 moi_mld_mntlflft **** **** **** **** **** **** 3 1500 hand **** vco_mehanfire03 **** sco_mehanfire03 vs_chant_evoc_lm vs_chant_evoc_lf area 1000 **** **** **** **** 1 vpr_fireball homing hand spr_fireball path Fire 1 **** **** **** **** **** 11 **** 1 6155 0 0 **** 1 **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

View File

@ -760,6 +760,9 @@ const int FEAT_ED_PROTECTIVE_AURA = 23526;
const int FEAT_ED_STRENGTH_OF_WILL = 23527;
const int FEAT_ED_WILD_FRENZY = 23528;
//:: Slayer of Domiel
const int FEAT_SOD_DEATH_TOUCH = 2282;
//Passive Feats
const int FEAT_ETERNAL_FREEDOM = 4298;
const int FEAT_INTUITIVE_ATTACK = 3166;

View File

@ -2166,6 +2166,7 @@ void FeatSpecialUsePerDay(object oPC)
FeatUsePerDay(oPC, FEAT_LIPS_RAPTUR);
FeatUsePerDay(oPC, FEAT_COMMAND_SPIDERS, ABILITY_CHARISMA, 3);
FeatUsePerDay(oPC, FEAT_FM_FOREST_DOMINION, ABILITY_CHARISMA, 3);
FeatUsePerDay(oPC, FEAT_SOD_DEATH_TOUCH, -1, (GetLevelByClass(CLASS_TYPE_SLAYER_OF_DOMIEL, oPC)+4)/4);
FeatDiabolist(oPC);
FeatAlaghar(oPC);
ShadowShieldUses(oPC);

View File

@ -250,9 +250,9 @@ int FindUnarmedDamage(object oCreature)
// Ronove is in place of monk, does not stack
if (iRonove > iMonk) iMonk = iRonove;
// monks damage progesses every four levels, starts at 1d6
if (iMonk > 0)
// monks damage progesses every four levels, starts at 1d6
if (iMonk > 0)
iMonkDamage = iMonk / 4 + 3;
// For medium monks in 3.0e skip 2d8 and go to 1d20
@ -263,6 +263,7 @@ int FindUnarmedDamage(object oCreature)
// without stacking.
if (iShou > 0) iShouDamage = iShou + 2; // Lv. 1: 1d6, Lv. 2: 1d8, Lv. 3: 1d10
if (iShou > 3) iShouDamage--; // Lv. 4: 1d10, Lv. 5: 2d6
iShouDamage = StringToInt(Get2DACache("unarmed_dmg","size" + IntToString(iSize), iShouDamage));
// Frostrager does not stack with other damage types
if (iFrost > 0) iFrostDamage = IP_CONST_MONSTERDAMAGE_1d6; // Lv. 1: 1d6
@ -326,10 +327,15 @@ int FindUnarmedDamage(object oCreature)
iBrawlerDamage += iDieIncrease;
iFrostDamage += iDieIncrease;
iSUSDamage += iDieIncrease;
//FloatingTextStringOnCreature("prc_inc_unarmed: Size is: "+IntToString(iSize)+".", oCreature);
//FloatingTextStringOnCreature("prc_inc_unarmed: Pre 2DA Lookup >> iMonkDamage = "+IntToString(iMonkDamage)+".", oCreature);
// now, read the damage from the table in unarmed_dmg.2da
iMonkDamage = StringToInt(Get2DACache("unarmed_dmg","size" + IntToString(iSize), iMonkDamage));
iShouDamage = StringToInt(Get2DACache("unarmed_dmg","size" + IntToString(iSize), iShouDamage));
//FloatingTextStringOnCreature("prc_inc_unarmed: Post 2DA Lookup >> iMonkDamage = "+IntToString(iMonkDamage)+".", oCreature);
// Medium+ monks have some special values on the table in 3.0:
if (iSize >= 5 && !GetPRCSwitch(PRC_3_5e_FIST_DAMAGE))

View File

@ -533,24 +533,22 @@ int GetCurrentSpellLevel(int nClass, int nLevel)
// ToB doesn't have a concept of spell levels, but still match up to it
if(nClass == CLASS_TYPE_WARBLADE
|| nClass == CLASS_TYPE_SWORDSAGE
|| nClass == CLASS_TYPE_CRUSADER)
|| nClass == CLASS_TYPE_CRUSADER
|| nClass == CLASS_TYPE_SHADOWCASTER)
{
return 9;
}
// Binders don't really have a concept of spell level
if (nClass == CLASS_TYPE_BINDER
|| nClass == CLASS_TYPE_DRAGON_SHAMAN)
|| nClass == CLASS_TYPE_DRAGON_SHAMAN) // they can only reach 1st circle
return 1;
//Shadowsmith has no concept of spell levels
if (nClass == CLASS_TYPE_SHADOWSMITH)
return 2;
//Shadowcaster has no concept of spell levels
if (nClass == CLASS_TYPE_SHADOWCASTER)
return 9;
if (nClass == CLASS_TYPE_WARLOCK
|| nClass == CLASS_TYPE_DRAGONFIRE_ADEPT)
return 4;
@ -570,6 +568,20 @@ int GetCurrentSpellLevel(int nClass, int nLevel)
currentLevel = nLevel - 1; // Level is 1 off of the row in the 2da
if (nClass == CLASS_TYPE_FIST_OF_ZUOKEN
|| nClass == CLASS_TYPE_PSION
|| nClass == CLASS_TYPE_PSYWAR
|| nClass == CLASS_TYPE_WILDER
|| nClass == CLASS_TYPE_PSYCHIC_ROGUE
|| nClass == CLASS_TYPE_WARMIND)
currentLevel = GetManifesterLevel(OBJECT_SELF, nClass, TRUE) - 1;
int totalLevel = Get2DARowCount(spellLevel2da);
// in case we somehow go over bounds just don't :)
if (currentLevel >= totalLevel)
currentLevel = totalLevel - 1;
//Psionics have MaxPowerLevel as their column name
string columnName = "MaxPowerLevel";
@ -584,13 +596,13 @@ int GetCurrentSpellLevel(int nClass, int nLevel)
{
columnName = "EvolvingMind";
spellLevel2da = "cls_true_maxlvl"; //has a different 2da we want to look at
}
}
if (nClass == CLASS_TYPE_BINDER)
{
if (nClass == CLASS_TYPE_BINDER)
{
columnName = "VestigeLvl";
spellLevel2da = "cls_bind_binder";
}
}
// ToB doesn't have a concept of this, but we don't care.
@ -601,21 +613,6 @@ int GetCurrentSpellLevel(int nClass, int nLevel)
int GetMinSpellLevel(int nClass)
{
// ToB doesn't have a concept of spell levels, but still match up to it
if(nClass == CLASS_TYPE_WARBLADE
|| nClass == CLASS_TYPE_SWORDSAGE
|| nClass == CLASS_TYPE_CRUSADER
|| nClass == CLASS_TYPE_SHADOWCASTER //Shadowsmiths doesn't have a progression 2da :)
|| nClass == CLASS_TYPE_SHADOWSMITH //Shadowcasters doesn't have a progression 2da :)
|| nClass == CLASS_TYPE_BINDER // Binders don't really have a concept of spell level
|| nClass == CLASS_TYPE_DRAGON_SHAMAN //Invokers have an issue with tracking accurate spell levels, so this is a work around
|| nClass == CLASS_TYPE_DRAGONFIRE_ADEPT
|| nClass == CLASS_TYPE_WARLOCK)
{
return 1;
}
// again sponts have their own function
if(GetSpellbookTypeForClass(nClass) == SPELLBOOK_TYPE_SPONTANEOUS
|| nClass == CLASS_TYPE_ARCHIVIST)
@ -624,6 +621,23 @@ int GetMinSpellLevel(int nClass)
}
else
{
if (nClass == CLASS_TYPE_FIST_OF_ZUOKEN
|| nClass == CLASS_TYPE_PSION
|| nClass == CLASS_TYPE_PSYWAR
|| nClass == CLASS_TYPE_WILDER
|| nClass == CLASS_TYPE_PSYCHIC_ROGUE
|| nClass == CLASS_TYPE_WARMIND
|| nClass == CLASS_TYPE_WARBLADE
|| nClass == CLASS_TYPE_SWORDSAGE
|| nClass == CLASS_TYPE_CRUSADER
|| nClass == CLASS_TYPE_WARLOCK
|| nClass == CLASS_TYPE_DRAGONFIRE_ADEPT
|| nClass == CLASS_TYPE_DRAGON_SHAMAN
|| nClass == CLASS_TYPE_SHADOWCASTER
|| nClass == CLASS_TYPE_SHADOWSMITH
|| nClass == CLASS_TYPE_BINDER)
return 1;
return GetCurrentSpellLevel(nClass, 1);
}
@ -631,6 +645,16 @@ int GetMinSpellLevel(int nClass)
int GetMaxSpellLevel(int nClass)
{
if (nClass == CLASS_TYPE_WILDER
|| nClass == CLASS_TYPE_PSION)
return 9;
if (nClass == CLASS_TYPE_PSYCHIC_ROGUE
|| nClass == CLASS_TYPE_FIST_OF_ZUOKEN
|| nClass == CLASS_TYPE_WARMIND)
return 5;
if (nClass == CLASS_TYPE_PSYWAR)
return 6;
return GetCurrentSpellLevel(nClass, GetHighestLevelPossibleInClass(nClass));
}

View File

@ -1660,7 +1660,7 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem)
{
if (CheckSecondaryPrC(oCaster) == TRUE)
{
FloatingTextStringOnCreature("x2_inc_spellhook: BardSorcPrCCheck >>> Sorcerer w/RHD found.", oCaster);
if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Sorcerer w/RHD found.", oCaster);
return TRUE;
}
//no need to check further if new spellbooks are disabled
@ -1683,7 +1683,7 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem)
}
if (CheckSecondaryPrC(oCaster) == TRUE)
{
if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Bard w/RHD found.", oCaster);
if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Sorcerer w/RHD found.", oCaster);
FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE);
return FALSE;
}

View File

@ -163,7 +163,7 @@ void main()
int i, nPowerLevel;
int nMaxLevel = GetMaxEssentiaCapacityFeat(oMeldshaper);
string sFeatID;
for(i = 14001; i < 14260 ; i++)
for(i = 14001; i < 14260 ; i++)
{
nPowerLevel = StringToInt(Get2DACache("spells", "Innate", i));
@ -180,7 +180,9 @@ void main()
if(SORT) AddToTempList(oMeldshaper, GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", i))), i);
else AddChoice(GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", i))), i, oMeldshaper);
}
}
}
TransferTempList(oMeldshaper);
}
else if(nStage == STAGE_SELECT_ESSENTIA_POWER)
{
@ -267,4 +269,4 @@ void main()
// Store the stage value. If it has been changed, this clears out the choices
SetStage(nStage, oMeldshaper);
}
}
}

View File

@ -77,7 +77,8 @@ void main()
// No hitting yourself or your friends
if(GetIsEnemy(oAreaTarget, oInitiator))
{
fDist += MetersToFeet(GetDistanceBetween(oInitiator, oAreaTarget));
//fDist += MetersToFeet(GetDistanceBetween(oInitiator, oAreaTarget));
fDist += PRCMax(10, FloatToInt(MetersToFeet(GetDistanceBetween(oInitiator, oAreaTarget))));
AssignCommand(oInitiator, ClearAllActions(TRUE));
AssignCommand(oInitiator, JumpToLocation(GetLocation(oAreaTarget)));
nBonus = (FloatToInt(fDist) / 5) * 2; // Bonus is +2 for every 5 feet moved

View File

@ -179,10 +179,10 @@ void main()
if (masterSpellId)
{
SetLocalInt(oPlayer, NUI_SPELLBOOK_SELECTED_SUBSPELL_SPELLID_VAR, spellId);
spellId = masterSpellId;
featId = StringToInt(Get2DACache("spells", "FeatID", masterSpellId));
}
featId = StringToInt(Get2DACache("spells", "FeatID", spellId));
else
featId = StringToInt(Get2DACache("spells", "FeatID", spellId));
}
}
@ -193,11 +193,13 @@ void main()
if (nButton == NUI_PAYLOAD_BUTTON_RIGHT_CLICK)
{
CreateSpellDescriptionNUI(oPlayer, featId, spellId, realSpellId);
DeleteLocalInt(oPlayer, NUI_SPELLBOOK_SELECTED_SUBSPELL_SPELLID_VAR);
return;
}
// If left click, operate normally
if (nButton == NUI_PAYLOAD_BUTTON_LEFT_CLICK)
{
// We use the spell's FeatID to do actions, and we set the OnTarget action
// to PRC_NUI_SPELLBOOK so the handler knows what the action is being done
SetLocalInt(oPlayer, NUI_SPELLBOOK_SELECTED_FEATID_VAR, featId);

View File

@ -19,20 +19,21 @@ void main()
// Get the selected PRC spell we are going to cast
int featId = GetLocalInt(OBJECT_SELF, NUI_SPELLBOOK_SELECTED_FEATID_VAR);
// if the spell has a master feat this is it. This will return 0 if not set.
int subSpellID = GetLocalInt(OBJECT_SELF, NUI_SPELLBOOK_SELECTED_SUBSPELL_SPELLID_VAR);
int isPersonalFeat = GetLocalInt(OBJECT_SELF, NUI_SPELLBOOK_ON_TARGET_IS_PERSONAL_FEAT);
// if this is a personal feat then this was called directly since we never entered
// targetting and this should be applied immediatly to the executing player.
if (isPersonalFeat)
{
ActionUseFeat(featId);
ActionUseFeat(featId, OBJECT_SELF, subSpellID);
// we want to remove this just in case of weird cases.
DeleteLocalInt(OBJECT_SELF, NUI_SPELLBOOK_ON_TARGET_IS_PERSONAL_FEAT);
}
else
{
// if the spell has a master feat this is it. This will return 0 if not set.
int subSpellID = GetLocalInt(OBJECT_SELF, NUI_SPELLBOOK_SELECTED_SUBSPELL_SPELLID_VAR);
// Get the target and location data we are casting at
object oTarget = GetLocalObject(OBJECT_SELF, "TARGETING_OBJECT");
@ -47,4 +48,7 @@ void main()
ActionUseFeat(featId, oTarget, subSpellID, spellLocation);
}
}
DeleteLocalInt(OBJECT_SELF, NUI_SPELLBOOK_SELECTED_FEATID_VAR);
DeleteLocalInt(OBJECT_SELF, NUI_SPELLBOOK_SELECTED_SUBSPELL_SPELLID_VAR);
}

View File

@ -119,6 +119,21 @@ string GetSpellLevelToolTip(int spellLevel);
//
json GetSpellIcon(int spellId, int nClass=0);
//
// HighlightButton
// Takes NUI Button along with it's width and height and heighlights it with a drawn
// colored rectangle to represent it's been selected.
//
// Arguments:
// jButton:json the NUI Button
// w:float the width of the button
// h:float the height of the button
//
// Returns:
// json the NUI button highlighted
//
json HighlightButton(json jButton, float w, float h);
void main()
{
// look for existing window and destroy
@ -187,6 +202,12 @@ void main()
{
geometry = NuiRect(893.0f,346.0f, 489.0f, 351.0f);
}
else
{
float x = JsonGetFloat(JsonObjectGet(geometry, "x"));
float y = JsonGetFloat(JsonObjectGet(geometry, "y"));
geometry = NuiRect(x, y, 489.0f, 351.0f);
}
// Set the binds to their default values
NuiSetBind(OBJECT_SELF, nToken, "geometry", geometry);
@ -218,11 +239,14 @@ json CreateSpellBookClassButtons()
selectedClassId = classId;
SetLocalInt(OBJECT_SELF, PRC_SPELLBOOK_SELECTED_CLASSID_VAR, selectedClassId);
}
float width = 32.0f;
float height = 32.0f;
// Get the class icon from the classes.2da
json jClassButton = NuiId(NuiButtonImage(JsonString(Get2DACache("classes", "Icon", classId))), PRC_SPELLBOOK_NUI_CLASS_BUTTON_BASEID + IntToString(classId));
jClassButton = NuiWidth(jClassButton, 32.0f);
jClassButton = NuiHeight(jClassButton, 32.0f);
if (classId == selectedClassId)
jClassButton = HighlightButton(jClassButton, width, height);
jClassButton = NuiWidth(jClassButton, width);
jClassButton = NuiHeight(jClassButton, height);
// Get the class name from the classes.2da and set it to the tooltip
jClassButton = NuiTooltip(jClassButton, JsonString(GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", classId)))));
@ -250,6 +274,7 @@ json CreateSpellbookCircleButtons(int nClass)
{
// get what is the highest circle the class can cast at
int currentMaxSpellLevel = GetCurrentSpellLevel(nClass, casterLevel);
// Get what the max circle the class can reach at is
int totalMaxSpellLevel = GetMaxSpellLevel(nClass);
@ -273,21 +298,21 @@ json CreateSpellbookCircleButtons(int nClass)
{
json enabled;
json jButton = NuiId(NuiButtonImage(JsonString(GetSpellLevelIcon(i))), PRC_SPELLBOOK_NUI_CIRCLE_BUTTON_BASEID + IntToString(i));
jButton = NuiWidth(jButton, 42.0f);
jButton = NuiHeight(jButton, 42.0f);
float width = 42.0f;
float height = 42.0f;
jButton = NuiWidth(jButton, width);
jButton = NuiHeight(jButton, height);
jButton = NuiTooltip(jButton, JsonString(GetSpellLevelToolTip(i)));
// if the current circle is selected or if the person can't cast at
// that circle yet then disable the button.
if (currentCircle == i || i > currentMaxSpellLevel)
{
if (i > currentMaxSpellLevel)
enabled = JsonBool(FALSE);
}
else
{
enabled = JsonBool(TRUE);
}
jButton = NuiEnabled(jButton, enabled);
if (i == currentCircle)
jButton = HighlightButton(jButton, width, height);
jRow = JsonArrayInsert(jRow, jButton);
}
@ -480,6 +505,34 @@ json GetSpellIcon(int spellId,int nClass=0)
return JsonString(Get2DACache("feat", "Icon", featId));
}
json HighlightButton(json jButton, float w, float h)
{
json retValue = jButton;
json jBorders = JsonArray();
// set the points of the button shape
json jPoints = JsonArray();
jPoints = JsonArrayInsert(jPoints, JsonFloat(0.0));
jPoints = JsonArrayInsert(jPoints, JsonFloat(0.0));
jPoints = JsonArrayInsert(jPoints, JsonFloat(0.0));
jPoints = JsonArrayInsert(jPoints, JsonFloat(h));
jPoints = JsonArrayInsert(jPoints, JsonFloat(w));
jPoints = JsonArrayInsert(jPoints, JsonFloat(h));
jPoints = JsonArrayInsert(jPoints, JsonFloat(w));
jPoints = JsonArrayInsert(jPoints, JsonFloat(0.0));
jPoints = JsonArrayInsert(jPoints, JsonFloat(0.0));
jPoints = JsonArrayInsert(jPoints, JsonFloat(0.0));
jBorders = JsonArrayInsert(jBorders, NuiDrawListPolyLine(JsonBool(TRUE), NuiColor(71, 140, 32), JsonBool(FALSE), JsonFloat(2.0), jPoints));
return NuiDrawList(jButton, JsonBool(FALSE), jBorders);
}
string GetSpellLevelIcon(int spellLevel)
{
switch (spellLevel)
@ -516,4 +569,4 @@ string GetSpellLevelToolTip(int spellLevel)
}
return "";
}
}

View File

@ -74745,7 +74745,7 @@ Skill Points at Each Additional Level: 4 + Int Modifier
Bonus Feats: The epic Slayer of Domiel gains a bonus feat every four levels.
Special:
Death Touch: The epic Slayer of Domiel continues to gain a use of their Death Touch ability every even class level.
Death Touch: The epic Slayer of Domiel continues to gain a use of their Death Touch ability every four class levels.
Sneak Attack: the epic Slayer of Domiel's sneak attack continues to gain +1d6 damage every odd class level.
Spellcasting: The epic Slayer of Domiel continues to increase in divine caster level (and spells known, if applicable).