Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1248f389f | ||
|
|
81e7e1efdf | ||
|
|
c619766db3 | ||
|
|
06931be120 | ||
|
|
2961d49e7d | ||
|
|
11a75d23c9 | ||
|
|
a192bca40e |
@@ -235,7 +235,7 @@
|
||||
231 BrimstoneSpeaker 16790715 16827554 16827555 16827556 16827557 IR_BRIMSTONE 8 CLS_ATK_2 CLS_FEAT_BRIMST CLS_SAVTHR_CLER CLS_SKILL_BRIMST CLS_BFEAT_BRIMST 2 **** **** 1 0 12 16 14 8 14 12 WIS 0X11 0X2 0 CLASS_TYPE_BRIMSTONE_SPEAKER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_BRIMST 40 0 0 2 10 2 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
232 Shugenja **** 16825142 16825143 16825144 16825145 IR_HNSHN 6 CLS_ATK_3 CLS_FEAT_SHUGEN CLS_SAVTHR_WIZ CLS_SKILL_SHUGEN CLS_BFEAT_SHUGEN 4 **** **** 0 0 10 14 14 10 12 16 CHA 0X00 0X0 0 CLASS_TYPE_SHUGENJA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SHUGEN 0 1 0 0 -1 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
233 Sohei 16790716 16827429 16827430 16827431 16827432 IR_FIGHTER 10 CLS_ATK_2 CLS_FEAT_SOHEI CLS_SAVTHR_CLER CLS_SKILL_SOHEI CLS_BFEAT_SOHEI 2 CLS_SPGN_SOHEI **** 1 1 16 10 13 14 13 10 STR 0X05 0X1 0 CLASS_TYPE_SOHEI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SOHEI 0 1 0 0 -1 6 0 **** 1 0 0 0 0 0 0 WIS Sohei 1 4 255 0 0
|
||||
234 Crusader 16790717 16829702 16829703 16829704 16829705 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_CRUSDR CLS_SAVTHR_FIGHT CLS_SKILL_CRUSDR CLS_BFEAT_CRUSDR 4 **** **** 1 0 16 14 14 10 12 10 STR 0X1E 0X3 1 CLASS_TYPE_CRUSADER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CRUSDR 0 1 0 0 -1 6 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
234 Crusader 16790717 16829702 16829703 16829704 16829705 IR_CRUSADER 10 CLS_ATK_1 CLS_FEAT_CRUSDR CLS_SAVTHR_FIGHT CLS_SKILL_CRUSDR CLS_BFEAT_CRUSDR 4 **** **** 1 0 16 14 14 10 12 10 STR 0X1E 0X3 1 CLASS_TYPE_CRUSADER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_CRUSDR 0 1 0 0 -1 715 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
235 Swordsage 16790718 16829706 16829707 16829708 16829709 IR_MONK 8 CLS_ATK_2 CLS_FEAT_SWDSGE CLS_SAVTHR_BARD CLS_SKILL_SWDSGE CLS_BFEAT_SWDSGE 6 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_SWORDSAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_SWDSGE 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
236 Warblade 16790719 16829710 16829711 16829712 16829713 IR_FIGHTER 12 CLS_ATK_1 CLS_FEAT_WARBLD CLS_SAVTHR_FIGHT CLS_SKILL_WARBLD CLS_BFEAT_WARBLD 4 **** **** 1 0 16 14 14 10 12 10 STR 0X00 0X0 0 CLASS_TYPE_WARBLADE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WARBLD 0 1 0 0 -1 5 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
237 Warmage 16790720 16827604 16827605 16827606 16827607 IR_HAVOCMAGE 6 CLS_ATK_3 CLS_FEAT_WRMAGE CLS_SAVTHR_WIZ CLS_SKILL_WRMAGE CLS_BFEAT_WRMAGE 2 CLS_SPGN_WRMAGE CLS_SPKN_WRMAGE 1 1 10 14 12 10 14 16 INT 0X00 0X0 0 CLASS_TYPE_WARMAGE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLS_PRES_WRMAGE 0 1 0 0 -1 10 130 **** **** **** **** **** **** **** **** **** Warmage **** **** **** **** ****
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
98 WP_Falchion 7943 3 1 0
|
||||
99 WP_Maul 7947 3 1 0
|
||||
100 ArmProfLgt 3 3 1 0
|
||||
101 Shield 32 3 1 0
|
||||
101 Shield 32 0 0 0
|
||||
102 DefArrow 8 0 -1 0
|
||||
103 TwoWeap 41 0 -1 0
|
||||
104 Ambidex 1 0 -1 0
|
||||
|
||||
@@ -1,37 +1,37 @@
|
||||
2DA V2.0
|
||||
|
||||
SkillLabel SkillIndex ClassSkill
|
||||
0 Concentration 1 0
|
||||
1 DisableTrap 2 0
|
||||
2 Discipline 3 1
|
||||
3 Heal 4 1
|
||||
4 Hide 5 0
|
||||
5 Listen 6 1
|
||||
6 Lore 7 0
|
||||
7 MoveSilently 8 0
|
||||
8 OpenLock 9 0
|
||||
9 Perform 11 0
|
||||
10 Persuade 12 0
|
||||
11 PickPocket 13 0
|
||||
12 Search 14 0
|
||||
13 SetTrap 15 0
|
||||
14 Spellcraft 16 0
|
||||
15 Spot 17 0
|
||||
16 Appraise 20 0
|
||||
17 Tumble 21 1
|
||||
18 CraftTrap 22 1
|
||||
19 Bluff 23 0
|
||||
20 Intimidate 24 1
|
||||
21 CraftArmor 25 1
|
||||
22 CraftWeapon 26 1
|
||||
23 Ride 27 1
|
||||
24 Jump 28 1
|
||||
25 TrueSpeak 29 1
|
||||
26 Sense_Motive 30 1
|
||||
27 Balance 32 0
|
||||
28 IaijutsuFocus 33 0
|
||||
29 CraftAlchemy 34 0
|
||||
30 CraftPoison 35 0
|
||||
31 Psicraft 36 0
|
||||
32 Climb 37 1
|
||||
33 CraftGeneral 38 1
|
||||
SkillLabel SkillIndex ClassSkill
|
||||
0 Concentration 1 0
|
||||
1 DisableTrap 2 0
|
||||
2 Discipline 3 1
|
||||
3 Heal 4 1
|
||||
4 Hide 5 0
|
||||
5 Listen 6 1
|
||||
6 Lore 7 0
|
||||
7 MoveSilently 8 0
|
||||
8 OpenLock 9 0
|
||||
9 Perform 11 0
|
||||
10 Persuade 12 0
|
||||
11 PickPocket 13 0
|
||||
12 Search 14 0
|
||||
13 SetTrap 15 0
|
||||
14 Spellcraft 16 0
|
||||
15 Spot 17 0
|
||||
16 Appraise 20 0
|
||||
17 Tumble 21 1
|
||||
18 CraftTrap 22 1
|
||||
19 Bluff 23 0
|
||||
20 Intimidate 24 1
|
||||
21 CraftArmor 25 1
|
||||
22 CraftWeapon 26 1
|
||||
23 Ride 27 1
|
||||
24 Jump 28 1
|
||||
25 TrueSpeak 29 1
|
||||
26 Sense_Motive 30 1
|
||||
27 Balance 32 0
|
||||
28 IaijutsuFocus 33 0
|
||||
29 CraftAlchemy 34 1
|
||||
30 CraftPoison 35 1
|
||||
31 Psicraft 36 0
|
||||
32 Climb 37 1
|
||||
33 CraftGeneral 38 1
|
||||
|
||||
@@ -2341,7 +2341,7 @@
|
||||
2337 Skarn_Spines **** 1 1 1 9 0
|
||||
2338 ScorpionsGrasp **** 1 1 1 9 0
|
||||
2339 CultistShatteredPeak_SmiteMage **** 1 1 1 **** 0
|
||||
2340 AwesomeBlow **** 1 1 1 **** 0
|
||||
2340 AwesomeBlow **** 1 1 1 3 0
|
||||
2341 BloodedOne_War_Cry **** 1 1 1 4 0
|
||||
2342 Desecrate **** 1 1 1 2 0
|
||||
2343 BlastOfForce **** 1 1 1 2 0
|
||||
@@ -14077,7 +14077,7 @@
|
||||
14073 EnergyStun_Elec **** 1 1 1 2 0
|
||||
14074 EnergyStun_Fire **** 1 1 1 2 0
|
||||
14075 EnergyStun_Sonic **** 1 1 1 2 0
|
||||
14076 Identify **** 1 1 1 2 0
|
||||
14076 Identify **** 1 1 1 2 1
|
||||
14077 IdInsinuation **** 1 1 1 2 0
|
||||
14078 InflictPain **** 1 1 1 2 0
|
||||
14079 Knock **** 1 1 1 2 0
|
||||
|
||||
@@ -5371,7 +5371,7 @@
|
||||
5367 VremyonniTraining 16789650 16789651 ife_sk_mast **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 **** **** **** **** **** 0 1
|
||||
5368 CultistShatteredPeak_SmiteMage 16789658 16789659 ife_X1ADAbj **** **** **** **** **** **** **** **** **** **** 0 0 **** **** **** 2339 **** 0.5 1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
|
||||
5369 Forsaker_FastHealing 16824830 16847615 ife_divineheal **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3913 **** 1 1 **** 1 **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 0
|
||||
5370 AwesomeBlow 16833142 16833143 ife_wepspec_Bax **** 25 **** **** **** **** **** **** 2806 28 0 0 1 22 1 2340 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
|
||||
5370 AwesomeBlow 16833142 16833143 ife_wepspec_Bax **** 25 **** **** **** **** **** **** 2806 28 0 0 1 **** 6 2340 **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_AWESOME_BLOW 6 1 **** **** **** **** 0 1
|
||||
5371 OversizedTWF 16790149 16790150 ife_twoweap **** 13 **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 0.5 **** **** **** 41 374 **** **** **** **** **** **** **** FEAT_OTWF 6 1 **** **** **** **** 0 1
|
||||
5372 FrostFolk_IceBlast 16790167 16790168 is_ConeCold **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3802 **** 1 -1 **** **** **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 1
|
||||
5373 Uldra_RayFrost 894 6238 is_RayFrost **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3804 **** 1 3 **** **** **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 1
|
||||
@@ -13248,7 +13248,7 @@
|
||||
13244 DreadNecromancer_Necrotic_Termination 16841609 16829213 is_Nec_Term **** **** **** **** **** **** **** **** **** **** **** **** **** 3 **** 7973 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** 0
|
||||
13245 DreadNecromancer_PlagueOfUndead 16841610 16847585 is_AnimDead **** **** **** **** **** **** **** **** **** **** **** **** **** 15 **** 7974 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 0
|
||||
13246 DreadNecromancer_Wail_of_the_Banshee 16841611 6521 is_WailBansh **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** 7975 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** 0
|
||||
13247 DreadNecromancer_Spirit_Worm 16841612 is_GhoulTch is_GhoulTch **** **** **** **** **** **** **** **** **** **** **** **** **** 2 **** 7976 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** 0
|
||||
13247 DreadNecromancer_Spirit_Worm 16841612 16990523 is_GhoulTch **** **** **** **** **** **** **** **** **** **** **** **** **** 2 **** 7976 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** 0
|
||||
13248 ****_Inflict_Minor_Wounds 16841613 1570 is_X1InfMin **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 7977 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** 0
|
||||
13249 ****_Light 16841614 6197 is_Light **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 7978 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 0
|
||||
13250 ****_Read_Magic 16841615 16789529 is_ReadMagic **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 7979 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 0 **** **** **** **** **** 0
|
||||
|
||||
@@ -716,9 +716,9 @@
|
||||
712 Binder_SecondRank 16988641 16988642 43 STR 25 **** **** **** **** **** packftbind3 packskbind3 packeqbind3 0 1
|
||||
713 Binder4 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
714 Binder5 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
715 Crusader1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
716 Crusader2 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
717 Crusader3 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
715 Crusader_Default 16988647 16988648 234 CHA 15 **** **** **** **** **** packftcrsdr1 packskcrsdr1 packeqcrsdr1 0 1
|
||||
716 Crusader_Defender 16988649 16988650 234 CON 15 **** **** **** **** **** packftcrsdr2 packskcrsdr2 packeqcrsdr2 0 1
|
||||
717 Crusader_Striker 16988651 16988652 234 STR 25 **** **** **** **** **** packftcrsdr3 packskcrsdr3 packeqcrsdr3 0 1
|
||||
718 Crusader4 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
719 Crusader5 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
720 DragonFireAdept1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
|
||||
@@ -2341,7 +2341,7 @@
|
||||
2337 Skarn_Spines 16833164 ife_mastelem T P 0 **** 0x01 race_skarn_spine **** **** **** **** **** **** 9 0 head **** vco_smhanevil01 **** sco_mehannatr01 vs_chant_ench_lm vs_chant_ench_lf self 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 10 **** 3 **** 0 0 **** 0 3000 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
2338 ScorpionsGrasp 16836466 ife_mastelem T P 0 **** 0x01 prc_ft_scorpgrsp **** **** **** **** **** **** 9 0 head **** vco_smhanevil01 **** sco_mehannatr01 vs_chant_ench_lm vs_chant_ench_lf self 0 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 10 **** 3 **** 0 0 **** 0 3000 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
2339 CultistShatteredPeak_SmiteMage 16789658 ife_wepspec_Bax V T 0 **** 0x02 prc_peak_smitemg **** **** **** **** **** **** **** 0 **** **** **** **** **** **** **** **** 0 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** 3 **** 3 **** 0 0 **** 1 3991 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
2340 AwesomeBlow 16833142 ife_wepspec_Bax V T 0 **** 0x02 prc_ft_aweblow **** **** **** **** **** **** **** 0 **** **** **** **** **** **** **** **** 0 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** 3 **** 3 **** 0 0 **** 1 3991 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
2340 AwesomeBlow 16833142 ife_wepspec_Bax V T 0 **** 0x02 prc_ft_aweblow **** **** **** **** **** **** 3 0 **** **** **** **** **** **** **** **** 0 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** 3 **** 3 **** 0 0 **** 1 5370 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
2341 BloodedOne_War_Cry 6339 is_WarCry E P 0 **** 0x09 tmp_blooded_cry **** **** **** **** **** **** 4 1500 hand **** vco_mehansonc02 **** sco_mehansonc02 vs_chant_ench_lm vs_chant_ench_lf out 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 1 **** 1 6539 1 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
2342 Desecrate 16838054 is_PrEvil E S v 0x3a 0x3f sp_desecrate **** 2 **** **** **** **** 2 1500 hand **** **** **** **** **** **** out 500 **** vco_gazemind **** c_archlant_bat1 0 **** **** **** **** **** **** 0 **** **** **** **** **** 2 **** 1 16838055 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** 3 **** **** ****
|
||||
2343 BlastOfForce 16838078 is_MagMiss V M vs 0x3d 0x3A sp_blastfrc **** **** **** **** **** 2 2 1500 hand **** vco_mehansonc01 **** sco_mehansonc01 vs_chant_evoc_lm vs_chant_evoc_lf area 1000 **** **** **** **** 0 **** **** **** **** **** **** 1 **** **** **** **** **** 11 **** 1 16838079 1 0 **** 1 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
|
||||
13
nwn/nwnprc/trunk/Craft2das/packeqcrsdr1.2da
Normal file
13
nwn/nwnprc/trunk/Craft2das/packeqcrsdr1.2da
Normal file
@@ -0,0 +1,13 @@
|
||||
2DA V2.0
|
||||
|
||||
Label Name
|
||||
0 NW_WSWLS001 Longsword
|
||||
1 NW_AARCL003 Scale_Mail_4AC
|
||||
2 NW_ASHLW001 Large_Shield_2AC
|
||||
3 NW_WBWSH001 Shortbow
|
||||
4 NW_WAMAR001 Arrows
|
||||
5 NW_WAMAR001 Arrows
|
||||
6 NW_IT_TORCH001 Torch
|
||||
7 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
8 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
9 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
13
nwn/nwnprc/trunk/Craft2das/packeqcrsdr2.2da
Normal file
13
nwn/nwnprc/trunk/Craft2das/packeqcrsdr2.2da
Normal file
@@ -0,0 +1,13 @@
|
||||
2DA V2.0
|
||||
|
||||
Label Name
|
||||
0 PRC_WXBLMH001 HeavyMace_1d8
|
||||
1 NW_AARCL003 Scale_Mail_4AC
|
||||
2 NW_ASHLW001 Large_Shield_2AC
|
||||
3 NW_WBWSL001 Sling
|
||||
4 NW_WAMBU001 Bullets
|
||||
5 NW_WAMBU001 Bullets
|
||||
6 NW_IT_TORCH001 Torch
|
||||
7 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
8 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
9 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
10
nwn/nwnprc/trunk/Craft2das/packeqcrsdr3.2da
Normal file
10
nwn/nwnprc/trunk/Craft2das/packeqcrsdr3.2da
Normal file
@@ -0,0 +1,10 @@
|
||||
2DA V2.0
|
||||
|
||||
Label Name
|
||||
0 NW_WSWGS001 Greatsword
|
||||
1 NW_AARCL003 Scale_Mail_4AC
|
||||
2 NW_WTHAX001 "Throwing Axes"
|
||||
3 NW_IT_TORCH001 Torch
|
||||
4 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
5 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
6 NW_IT_MEDKIT001 Healer's_Kit_+1
|
||||
387
nwn/nwnprc/trunk/Craft2das/packftcrsdr1.2da
Normal file
387
nwn/nwnprc/trunk/Craft2das/packftcrsdr1.2da
Normal file
@@ -0,0 +1,387 @@
|
||||
2DA V2.0
|
||||
|
||||
FeatIndex Label
|
||||
0 636 FEAT_EPIC_WEAPON_FOCUS_LONGSWORD
|
||||
1 674 FEAT_EPIC_WEAPON_SPECIALIZATION_LONGSWORD
|
||||
2 584 FEAT_EPIC_PROWESS
|
||||
3 490 FEAT_EPIC_ARMOR_SKIN
|
||||
4 24613 FEAT_EPIC_WEAPON_FOCUS_LANCE
|
||||
5 657 FEAT_EPIC_WEAPON_SPECIALIZATION_CLUB
|
||||
6 658 FEAT_EPIC_WEAPON_SPECIALIZATION_DAGGER
|
||||
7 659 FEAT_EPIC_WEAPON_SPECIALIZATION_DART
|
||||
8 660 FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYCROSSBOW
|
||||
9 661 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTCROSSBOW
|
||||
10 662 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTMACE
|
||||
11 663 FEAT_EPIC_WEAPON_SPECIALIZATION_MORNINGSTAR
|
||||
12 664 FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF
|
||||
13 665 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSPEAR
|
||||
14 666 FEAT_EPIC_WEAPON_SPECIALIZATION_SICKLE
|
||||
15 667 FEAT_EPIC_WEAPON_SPECIALIZATION_SLING
|
||||
16 668 FEAT_EPIC_WEAPON_SPECIALIZATION_UNARMED
|
||||
17 669 FEAT_EPIC_WEAPON_SPECIALIZATION_LONGBOW
|
||||
18 670 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTBOW
|
||||
19 671 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSWORD
|
||||
20 672 FEAT_EPIC_WEAPON_SPECIALIZATION_RAPIER
|
||||
21 673 FEAT_EPIC_WEAPON_SPECIALIZATION_SCIMITAR
|
||||
22 675 FEAT_EPIC_WEAPON_SPECIALIZATION_GREATSWORD
|
||||
23 676 FEAT_EPIC_WEAPON_SPECIALIZATION_HANDAXE
|
||||
24 677 FEAT_EPIC_WEAPON_SPECIALIZATION_THROWINGAXE
|
||||
25 678 FEAT_EPIC_WEAPON_SPECIALIZATION_BATTLEAXE
|
||||
26 679 FEAT_EPIC_WEAPON_SPECIALIZATION_GREATAXE
|
||||
27 680 FEAT_EPIC_WEAPON_SPECIALIZATION_HALBERD
|
||||
28 681 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTHAMMER
|
||||
29 682 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTFLAIL
|
||||
30 683 FEAT_EPIC_WEAPON_SPECIALIZATION_WARHAMMER
|
||||
31 684 FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYFLAIL
|
||||
32 685 FEAT_EPIC_WEAPON_SPECIALIZATION_KAMA
|
||||
33 686 FEAT_EPIC_WEAPON_SPECIALIZATION_KUKRI
|
||||
34 687 FEAT_EPIC_WEAPON_SPECIALIZATION_SHURIKEN
|
||||
35 688 FEAT_EPIC_WEAPON_SPECIALIZATION_SCYTHE
|
||||
36 689 FEAT_EPIC_WEAPON_SPECIALIZATION_KATANA
|
||||
37 690 FEAT_EPIC_WEAPON_SPECIALIZATION_BASTARDSWORD
|
||||
38 691 FEAT_EPIC_WEAPON_SPECIALIZATION_DIREMACE
|
||||
39 692 FEAT_EPIC_WEAPON_SPECIALIZATION_DOUBLEAXE
|
||||
40 693 FEAT_EPIC_WEAPON_SPECIALIZATION_TWOBLADEDSWORD
|
||||
41 1077 FEAT_EPIC_WEAPON_SPECIALIZATION_TRIDENT
|
||||
42 619 FEAT_EPIC_WEAPON_FOCUS_CLUB
|
||||
43 620 FEAT_EPIC_WEAPON_FOCUS_DAGGER
|
||||
44 621 FEAT_EPIC_WEAPON_FOCUS_DART
|
||||
45 622 FEAT_EPIC_WEAPON_FOCUS_HEAVYCROSSBOW
|
||||
46 623 FEAT_EPIC_WEAPON_FOCUS_LIGHTCROSSBOW
|
||||
47 624 FEAT_EPIC_WEAPON_FOCUS_LIGHTMACE
|
||||
48 625 FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR
|
||||
49 626 FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF
|
||||
50 627 FEAT_EPIC_WEAPON_FOCUS_SHORTSPEAR
|
||||
51 628 FEAT_EPIC_WEAPON_FOCUS_SICKLE
|
||||
52 629 FEAT_EPIC_WEAPON_FOCUS_SLING
|
||||
53 630 FEAT_EPIC_WEAPON_FOCUS_UNARMED
|
||||
54 631 FEAT_EPIC_WEAPON_FOCUS_LONGBOW
|
||||
55 632 FEAT_EPIC_WEAPON_FOCUS_SHORTBOW
|
||||
56 633 FEAT_EPIC_WEAPON_FOCUS_SHORTSWORD
|
||||
57 634 FEAT_EPIC_WEAPON_FOCUS_RAPIER
|
||||
58 635 FEAT_EPIC_WEAPON_FOCUS_SCIMITAR
|
||||
59 637 FEAT_EPIC_WEAPON_FOCUS_GREATSWORD
|
||||
60 638 FEAT_EPIC_WEAPON_FOCUS_HANDAXE
|
||||
61 639 FEAT_EPIC_WEAPON_FOCUS_THROWINGAXE
|
||||
62 640 FEAT_EPIC_WEAPON_FOCUS_BATTLEAXE
|
||||
63 641 FEAT_EPIC_WEAPON_FOCUS_GREATAXE
|
||||
64 642 FEAT_EPIC_WEAPON_FOCUS_HALBERD
|
||||
65 643 FEAT_EPIC_WEAPON_FOCUS_LIGHTHAMMER
|
||||
66 644 FEAT_EPIC_WEAPON_FOCUS_LIGHTFLAIL
|
||||
67 645 FEAT_EPIC_WEAPON_FOCUS_WARHAMMER
|
||||
68 646 FEAT_EPIC_WEAPON_FOCUS_HEAVYFLAIL
|
||||
69 647 FEAT_EPIC_WEAPON_FOCUS_KAMA
|
||||
70 648 FEAT_EPIC_WEAPON_FOCUS_KUKRI
|
||||
71 649 FEAT_EPIC_WEAPON_FOCUS_SHURIKEN
|
||||
72 650 FEAT_EPIC_WEAPON_FOCUS_SCYTHE
|
||||
73 651 FEAT_EPIC_WEAPON_FOCUS_KATANA
|
||||
74 652 FEAT_EPIC_WEAPON_FOCUS_BASTARDSWORD
|
||||
75 653 FEAT_EPIC_WEAPON_FOCUS_DIREMACE
|
||||
76 654 FEAT_EPIC_WEAPON_FOCUS_DOUBLEAXE
|
||||
77 655 FEAT_EPIC_WEAPON_FOCUS_TWOBLADEDSWORD
|
||||
78 1076 FEAT_EPIC_WEAPON_FOCUS_TRIDENT
|
||||
79 726 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD
|
||||
80 709 FEAT_EPIC_OVERWHELMING_CRITICAL_CLUB
|
||||
81 710 FEAT_EPIC_OVERWHELMING_CRITICAL_DAGGER
|
||||
82 711 FEAT_EPIC_OVERWHELMING_CRITICAL_DART
|
||||
83 712 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYCROSSBOW
|
||||
84 713 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTCROSSBOW
|
||||
85 714 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTMACE
|
||||
86 715 FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR
|
||||
87 716 FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF
|
||||
88 717 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSPEAR
|
||||
89 718 FEAT_EPIC_OVERWHELMING_CRITICAL_SICKLE
|
||||
90 719 FEAT_EPIC_OVERWHELMING_CRITICAL_SLING
|
||||
91 720 FEAT_EPIC_OVERWHELMING_CRITICAL_UNARMED
|
||||
92 721 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGBOW
|
||||
93 722 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTBOW
|
||||
94 723 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSWORD
|
||||
95 724 FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER
|
||||
96 725 FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR
|
||||
97 727 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATSWORD
|
||||
98 728 FEAT_EPIC_OVERWHELMING_CRITICAL_HANDAXE
|
||||
99 729 FEAT_EPIC_OVERWHELMING_CRITICAL_THROWINGAXE
|
||||
100 730 FEAT_EPIC_OVERWHELMING_CRITICAL_BATTLEAXE
|
||||
101 731 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATAXE
|
||||
102 732 FEAT_EPIC_OVERWHELMING_CRITICAL_HALBERD
|
||||
103 733 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTHAMMER
|
||||
104 734 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTFLAIL
|
||||
105 735 FEAT_EPIC_OVERWHELMING_CRITICAL_WARHAMMER
|
||||
106 736 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYFLAIL
|
||||
107 737 FEAT_EPIC_OVERWHELMING_CRITICAL_KAMA
|
||||
108 738 FEAT_EPIC_OVERWHELMING_CRITICAL_KUKRI
|
||||
109 739 FEAT_EPIC_OVERWHELMING_CRITICAL_SHURIKEN
|
||||
110 740 FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE
|
||||
111 741 FEAT_EPIC_OVERWHELMING_CRITICAL_KATANA
|
||||
112 742 FEAT_EPIC_OVERWHELMING_CRITICAL_BASTARDSWORD
|
||||
113 743 FEAT_EPIC_OVERWHELMING_CRITICAL_DIREMACE
|
||||
114 744 FEAT_EPIC_OVERWHELMING_CRITICAL_DOUBLEAXE
|
||||
115 745 FEAT_EPIC_OVERWHELMING_CRITICAL_TWOBLADEDSWORD
|
||||
116 1078 FEAT_EPIC_OVERWHELMING_CRITICAL_TRIDENT
|
||||
117 495 FEAT_EPIC_DEVASTATING_CRITICAL_CLUB
|
||||
118 496 FEAT_EPIC_DEVASTATING_CRITICAL_DAGGER
|
||||
119 497 FEAT_EPIC_DEVASTATING_CRITICAL_DART
|
||||
120 498 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYCROSSBOW
|
||||
121 499 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTCROSSBOW
|
||||
122 500 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTMACE
|
||||
123 501 FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR
|
||||
124 502 FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF
|
||||
125 503 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSPEAR
|
||||
126 504 FEAT_EPIC_DEVASTATING_CRITICAL_SICKLE
|
||||
127 505 FEAT_EPIC_DEVASTATING_CRITICAL_SLING
|
||||
128 506 FEAT_EPIC_DEVASTATING_CRITICAL_UNARMED
|
||||
129 507 FEAT_EPIC_DEVASTATING_CRITICAL_LONGBOW
|
||||
130 508 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTBOW
|
||||
131 509 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSWORD
|
||||
132 510 FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER
|
||||
133 511 FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR
|
||||
134 512 FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD
|
||||
135 513 FEAT_EPIC_DEVASTATING_CRITICAL_GREATSWORD
|
||||
136 514 FEAT_EPIC_DEVASTATING_CRITICAL_HANDAXE
|
||||
137 515 FEAT_EPIC_DEVASTATING_CRITICAL_THROWINGAXE
|
||||
138 516 FEAT_EPIC_DEVASTATING_CRITICAL_BATTLEAXE
|
||||
139 517 FEAT_EPIC_DEVASTATING_CRITICAL_GREATAXE
|
||||
140 518 FEAT_EPIC_DEVASTATING_CRITICAL_HALBERD
|
||||
141 519 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTHAMMER
|
||||
142 520 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTFLAIL
|
||||
143 521 FEAT_EPIC_DEVASTATING_CRITICAL_WARHAMMER
|
||||
144 522 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYFLAIL
|
||||
145 523 FEAT_EPIC_DEVASTATING_CRITICAL_KAMA
|
||||
146 524 FEAT_EPIC_DEVASTATING_CRITICAL_KUKRI
|
||||
147 525 FEAT_EPIC_DEVASTATING_CRITICAL_SHURIKEN
|
||||
148 526 FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE
|
||||
149 527 FEAT_EPIC_DEVASTATING_CRITICAL_KATANA
|
||||
150 528 FEAT_EPIC_DEVASTATING_CRITICAL_BASTARDSWORD
|
||||
151 529 FEAT_EPIC_DEVASTATING_CRITICAL_DIREMACE
|
||||
152 530 FEAT_EPIC_DEVASTATING_CRITICAL_DOUBLEAXE
|
||||
153 531 FEAT_EPIC_DEVASTATING_CRITICAL_TWOBLADEDSWORD
|
||||
154 1075 FEAT_EPIC_DEVASTATING_CRITICAL_TRIDENT
|
||||
155 867 FEAT_WHIRLWIND_ATTACK
|
||||
156 868 FEAT_IMPROVED_WHIRLWIND
|
||||
157 814 FEAT_EPIC_GREAT_STRENGTH_1
|
||||
158 815 FEAT_EPIC_GREAT_STRENGTH_2
|
||||
159 816 FEAT_EPIC_GREAT_STRENGTH_3
|
||||
160 491 FEAT_EPIC_BLINDING_SPEED
|
||||
161 753 FEAT_EPIC_SUPERIOR_INITIATIVE
|
||||
162 817 FEAT_EPIC_GREAT_STRENGTH_4
|
||||
163 818 FEAT_EPIC_GREAT_STRENGTH_5
|
||||
164 819 FEAT_EPIC_GREAT_STRENGTH_6
|
||||
165 754 FEAT_EPIC_TOUGHNESS_1
|
||||
166 755 FEAT_EPIC_TOUGHNESS_2
|
||||
167 756 FEAT_EPIC_TOUGHNESS_3
|
||||
168 820 FEAT_EPIC_GREAT_STRENGTH_7
|
||||
169 821 FEAT_EPIC_GREAT_STRENGTH_8
|
||||
170 822 FEAT_EPIC_GREAT_STRENGTH_9
|
||||
171 823 FEAT_EPIC_GREAT_STRENGTH_10
|
||||
172 757 FEAT_EPIC_TOUGHNESS_4
|
||||
173 758 FEAT_EPIC_TOUGHNESS_5
|
||||
174 759 FEAT_EPIC_TOUGHNESS_6
|
||||
175 492 FEAT_EPIC_DAMAGE_REDUCTION_3
|
||||
176 493 FEAT_EPIC_DAMAGE_REDUCTION_6
|
||||
177 494 FEAT_EPIC_DAMAGE_REDUCTION_9
|
||||
178 760 FEAT_EPIC_TOUGHNESS_7
|
||||
179 761 FEAT_EPIC_TOUGHNESS_8
|
||||
180 762 FEAT_EPIC_TOUGHNESS_9
|
||||
181 763 FEAT_EPIC_TOUGHNESS_10
|
||||
182 695 FEAT_EPIC_WILL
|
||||
183 774 FEAT_EPIC_GREAT_CONSTITUTION_1
|
||||
184 775 FEAT_EPIC_GREAT_CONSTITUTION_2
|
||||
185 776 FEAT_EPIC_GREAT_CONSTITUTION_3
|
||||
186 777 FEAT_EPIC_GREAT_CONSTITUTION_4
|
||||
187 778 FEAT_EPIC_GREAT_CONSTITUTION_5
|
||||
188 779 FEAT_EPIC_GREAT_CONSTITUTION_6
|
||||
189 780 FEAT_EPIC_GREAT_CONSTITUTION_7
|
||||
190 781 FEAT_EPIC_GREAT_CONSTITUTION_8
|
||||
191 782 FEAT_EPIC_GREAT_CONSTITUTION_9
|
||||
192 783 FEAT_EPIC_GREAT_CONSTITUTION_10
|
||||
193 784 FEAT_EPIC_GREAT_DEXTERITY_1
|
||||
194 785 FEAT_EPIC_GREAT_DEXTERITY_2
|
||||
195 786 FEAT_EPIC_GREAT_DEXTERITY_3
|
||||
196 787 FEAT_EPIC_GREAT_DEXTERITY_4
|
||||
197 788 FEAT_EPIC_GREAT_DEXTERITY_5
|
||||
198 789 FEAT_EPIC_GREAT_DEXTERITY_6
|
||||
199 790 FEAT_EPIC_GREAT_DEXTERITY_7
|
||||
200 791 FEAT_EPIC_GREAT_DEXTERITY_8
|
||||
201 792 FEAT_EPIC_GREAT_DEXTERITY_9
|
||||
202 793 FEAT_EPIC_GREAT_DEXTERITY_10
|
||||
203 68 ImpCritLSw
|
||||
204 144 WeapSpeLSw
|
||||
205 106 WeapFocLSw
|
||||
206 22 IronWill
|
||||
207 3636 VitalRecovery
|
||||
208 3829 BladeMeditation_DevotedSpirit
|
||||
209 4096 "Extra Granted Maneuver"
|
||||
210 4074 WhiteRavenDefense
|
||||
211 6 Cleave
|
||||
212 391 GreatCleave
|
||||
213 28 PowerAtk
|
||||
214 10 Dodge
|
||||
215 40 Toughness
|
||||
216 26 Mobility
|
||||
217 392 SpringAttack
|
||||
218 14 GreatFort
|
||||
219 24 LightngRef
|
||||
220 389 Expertise
|
||||
221 408 BlindFight
|
||||
222 425 DirtyFighting
|
||||
223 27 PBShot
|
||||
224 30 RapidShot
|
||||
225 107 WeapFocGSw
|
||||
226 69 ImpCritGSw
|
||||
227 145 WeapSpeGSw
|
||||
228 1 Ambidex
|
||||
229 41 TwoWeap
|
||||
230 16 ImpDis
|
||||
231 20 ImpTwo
|
||||
232 390 ImpExpertise
|
||||
233 0 Alertness
|
||||
234 42 WeapFinesse
|
||||
235 32 Shield
|
||||
236 39 StunFist
|
||||
237 8 DefArrow
|
||||
238 427 ResistEnergyCold
|
||||
239 428 ResistEnergyAcid
|
||||
240 429 ResistEnergyFire
|
||||
241 430 ResistEnergyElectrical
|
||||
242 431 ResistEnergySonic
|
||||
243 43 WeapFocClub
|
||||
244 15 ImpCritClub
|
||||
245 57 ImpCritMorn
|
||||
246 58 ImpCritStaff
|
||||
247 59 ImpCritSpear
|
||||
248 60 ImpCritSickle
|
||||
249 61 ImpCritSling
|
||||
250 62 ImpCritUnArm
|
||||
251 63 ImpCritLongBow
|
||||
252 64 ImpCritShortBow
|
||||
253 65 ImpCritShortSwor
|
||||
254 66 ImpCritRapier
|
||||
255 67 ImpCritScim
|
||||
256 70 ImpCritHAxe
|
||||
257 71 ImpCritTAxe
|
||||
258 72 ImpCritBAxe
|
||||
259 73 ImpCritGAxe
|
||||
260 74 ImpCritHalb
|
||||
261 75 ImpCritLgHam
|
||||
262 76 ImpCritLgFlail
|
||||
263 77 ImpCritWHam
|
||||
264 78 ImpCritHFlail
|
||||
265 79 ImpCritKama
|
||||
266 80 ImpCritKukri
|
||||
267 82 ImpCritShur
|
||||
268 83 ImpCritScy
|
||||
269 84 ImpCritKatana
|
||||
270 85 ImpCritBSw
|
||||
271 87 ImpCritDMace
|
||||
272 88 ImpCritDAxe
|
||||
273 89 ImpCrit2Sw
|
||||
274 1074 FEAT_IMPROVED_CRITICAL_TRIDENT
|
||||
275 90 WeapFocDagger
|
||||
276 91 WeapFocDart
|
||||
277 92 WeapFocHXBow
|
||||
278 24601 FEAT_WEAPON_FOCUS_LIGHT_LANCE
|
||||
279 93 WeapFocLgXBow
|
||||
280 94 WeapFocLgMace
|
||||
281 95 WeapFocMorn
|
||||
282 96 WeapFocStaff
|
||||
283 97 WeapFocSpear
|
||||
284 98 WeapFocSickle
|
||||
285 99 WeapFocSling
|
||||
286 100 WeapFocUnArm
|
||||
287 101 WeapFocLongBow
|
||||
288 102 WeapFocShortBow
|
||||
289 103 WeapFocShortSwor
|
||||
290 104 WeapFocRapier
|
||||
291 105 WeapFocScim
|
||||
292 108 WeapFocHAxe
|
||||
293 109 WeapFocTAxe
|
||||
294 110 WeapFocBAxe
|
||||
295 111 WeapFocGAxe
|
||||
296 112 WeapFocHalb
|
||||
297 113 WeapFocLgHam
|
||||
298 114 WeapFocLgFlail
|
||||
299 115 WeapFocWHam
|
||||
300 116 WeapFocHFlail
|
||||
301 117 WeapFocKama
|
||||
302 118 WeapFocKukri
|
||||
303 120 WeapFocShur
|
||||
304 121 WeapFocScy
|
||||
305 122 WeapFocKatana
|
||||
306 123 WeapFocBSw
|
||||
307 125 WeapFocDMace
|
||||
308 126 WeapFocDAxe
|
||||
309 127 WeapFoc2Sw
|
||||
310 24649 FEAT_IMPROVED_CRITICAL_LIGHT_LANCE
|
||||
311 1087 FEAT_MOUNTED_COMBAT
|
||||
312 3037 FEAT_SKILL_FOCUS_RIDE
|
||||
313 1072 FEAT_WEAPON_FOCUS_TRIDENT
|
||||
314 128 WeapSpeDagger
|
||||
315 129 WeapSpeDart
|
||||
316 130 WeapSpeHXBow
|
||||
317 131 WeapSpeLgXBow
|
||||
318 132 WeapSpeLgMace
|
||||
319 133 WeapSpeMorn
|
||||
320 134 WeapSpeStaff
|
||||
321 135 WeapSpeSpear
|
||||
322 136 WeapSpeSickle
|
||||
323 137 WeapSpeSling
|
||||
324 138 WeapSpeUnArm
|
||||
325 139 WeapSpeLongBow
|
||||
326 140 WeapSpeShortBow
|
||||
327 141 WeapSpeShortSwor
|
||||
328 142 WeapSpeRapier
|
||||
329 143 WeapSpeScim
|
||||
330 146 WeapSpeHAxe
|
||||
331 147 WeapSpeTAxe
|
||||
332 148 WeapSpeBAxe
|
||||
333 149 WeapSpeGAxe
|
||||
334 150 WeapSpeHalb
|
||||
335 151 WeapSpeLgHam
|
||||
336 152 WeapSpeLgFlail
|
||||
337 153 WeapSpeWHam
|
||||
338 154 WeapSpeHFlail
|
||||
339 155 WeapSpeKama
|
||||
340 156 WeapSpeKukri
|
||||
341 158 WeapSpeShur
|
||||
342 159 WeapSpeScy
|
||||
343 160 WeapSpeKatana
|
||||
344 161 WeapSpeBSw
|
||||
345 163 WeapSpeDMace
|
||||
346 164 WeapSpeDAxe
|
||||
347 165 WeapSpe2Sw
|
||||
348 1073 FEAT_WEAPON_SPECIALIZATION_TRIDENT
|
||||
349 166 SpellFocusCon
|
||||
350 167 SpellFocusDiv
|
||||
351 168 SpellFocusEnc
|
||||
352 169 SpellFocusEvo
|
||||
353 170 SpellFocusIll
|
||||
354 171 SpellFocusNec
|
||||
355 172 SpellFocusTra
|
||||
356 173 SkillFocusConc
|
||||
357 174 SkillFocusDisa
|
||||
358 175 SkillFocusGrip
|
||||
359 177 SkillFocusHeal
|
||||
360 178 SkillFocusHide
|
||||
361 179 SkillFocusList
|
||||
362 180 SkillFocusLore
|
||||
363 181 SkillFocusMove
|
||||
364 182 SkillFocusOpen
|
||||
365 184 SkillFocusPerf
|
||||
366 185 SkillFocusPers
|
||||
367 186 SkillFocusPick
|
||||
368 187 SkillFocusSearch
|
||||
369 188 SkillFocusSet
|
||||
370 189 SkillFocusSpell
|
||||
371 190 SkillFocusSpot
|
||||
372 193 SkillFocusDevi
|
||||
373 35 SpellFocusAbj
|
||||
374 36 SpellPen
|
||||
375 37 StillSpell
|
||||
376 25 MaxSpell
|
||||
377 7 CmbtCast
|
||||
378 29 Quicken
|
||||
379 34 SkillFocusAnim
|
||||
380 33 Silent
|
||||
381 11 Empower
|
||||
382 12 ExtSpell
|
||||
383 13 ExtTurn
|
||||
395
nwn/nwnprc/trunk/Craft2das/packftcrsdr2.2da
Normal file
395
nwn/nwnprc/trunk/Craft2das/packftcrsdr2.2da
Normal file
@@ -0,0 +1,395 @@
|
||||
2DA V2.0
|
||||
|
||||
FeatIndex Label
|
||||
0 24654 EpicWeaponSpec_HeavyMace
|
||||
1 24621 EpicWeaponFocus_HeavyMace
|
||||
2 584 FEAT_EPIC_PROWESS
|
||||
3 490 FEAT_EPIC_ARMOR_SKIN
|
||||
4 24613 FEAT_EPIC_WEAPON_FOCUS_LANCE
|
||||
5 657 FEAT_EPIC_WEAPON_SPECIALIZATION_CLUB
|
||||
6 658 FEAT_EPIC_WEAPON_SPECIALIZATION_DAGGER
|
||||
7 659 FEAT_EPIC_WEAPON_SPECIALIZATION_DART
|
||||
8 660 FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYCROSSBOW
|
||||
9 661 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTCROSSBOW
|
||||
10 662 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTMACE
|
||||
11 663 FEAT_EPIC_WEAPON_SPECIALIZATION_MORNINGSTAR
|
||||
12 664 FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF
|
||||
13 665 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSPEAR
|
||||
14 666 FEAT_EPIC_WEAPON_SPECIALIZATION_SICKLE
|
||||
15 667 FEAT_EPIC_WEAPON_SPECIALIZATION_SLING
|
||||
16 668 FEAT_EPIC_WEAPON_SPECIALIZATION_UNARMED
|
||||
17 669 FEAT_EPIC_WEAPON_SPECIALIZATION_LONGBOW
|
||||
18 670 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTBOW
|
||||
19 671 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSWORD
|
||||
20 672 FEAT_EPIC_WEAPON_SPECIALIZATION_RAPIER
|
||||
21 673 FEAT_EPIC_WEAPON_SPECIALIZATION_SCIMITAR
|
||||
22 675 FEAT_EPIC_WEAPON_SPECIALIZATION_GREATSWORD
|
||||
23 676 FEAT_EPIC_WEAPON_SPECIALIZATION_HANDAXE
|
||||
24 677 FEAT_EPIC_WEAPON_SPECIALIZATION_THROWINGAXE
|
||||
25 678 FEAT_EPIC_WEAPON_SPECIALIZATION_BATTLEAXE
|
||||
26 679 FEAT_EPIC_WEAPON_SPECIALIZATION_GREATAXE
|
||||
27 680 FEAT_EPIC_WEAPON_SPECIALIZATION_HALBERD
|
||||
28 681 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTHAMMER
|
||||
29 682 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTFLAIL
|
||||
30 683 FEAT_EPIC_WEAPON_SPECIALIZATION_WARHAMMER
|
||||
31 684 FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYFLAIL
|
||||
32 685 FEAT_EPIC_WEAPON_SPECIALIZATION_KAMA
|
||||
33 686 FEAT_EPIC_WEAPON_SPECIALIZATION_KUKRI
|
||||
34 687 FEAT_EPIC_WEAPON_SPECIALIZATION_SHURIKEN
|
||||
35 688 FEAT_EPIC_WEAPON_SPECIALIZATION_SCYTHE
|
||||
36 689 FEAT_EPIC_WEAPON_SPECIALIZATION_KATANA
|
||||
37 690 FEAT_EPIC_WEAPON_SPECIALIZATION_BASTARDSWORD
|
||||
38 691 FEAT_EPIC_WEAPON_SPECIALIZATION_DIREMACE
|
||||
39 692 FEAT_EPIC_WEAPON_SPECIALIZATION_DOUBLEAXE
|
||||
40 693 FEAT_EPIC_WEAPON_SPECIALIZATION_TWOBLADEDSWORD
|
||||
41 1077 FEAT_EPIC_WEAPON_SPECIALIZATION_TRIDENT
|
||||
42 636 FEAT_EPIC_WEAPON_FOCUS_LONGSWORD
|
||||
43 674 FEAT_EPIC_WEAPON_SPECIALIZATION_LONGSWORD
|
||||
44 619 FEAT_EPIC_WEAPON_FOCUS_CLUB
|
||||
45 620 FEAT_EPIC_WEAPON_FOCUS_DAGGER
|
||||
46 621 FEAT_EPIC_WEAPON_FOCUS_DART
|
||||
47 622 FEAT_EPIC_WEAPON_FOCUS_HEAVYCROSSBOW
|
||||
48 623 FEAT_EPIC_WEAPON_FOCUS_LIGHTCROSSBOW
|
||||
49 624 FEAT_EPIC_WEAPON_FOCUS_LIGHTMACE
|
||||
50 625 FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR
|
||||
51 626 FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF
|
||||
52 627 FEAT_EPIC_WEAPON_FOCUS_SHORTSPEAR
|
||||
53 628 FEAT_EPIC_WEAPON_FOCUS_SICKLE
|
||||
54 629 FEAT_EPIC_WEAPON_FOCUS_SLING
|
||||
55 630 FEAT_EPIC_WEAPON_FOCUS_UNARMED
|
||||
56 631 FEAT_EPIC_WEAPON_FOCUS_LONGBOW
|
||||
57 632 FEAT_EPIC_WEAPON_FOCUS_SHORTBOW
|
||||
58 633 FEAT_EPIC_WEAPON_FOCUS_SHORTSWORD
|
||||
59 634 FEAT_EPIC_WEAPON_FOCUS_RAPIER
|
||||
60 635 FEAT_EPIC_WEAPON_FOCUS_SCIMITAR
|
||||
61 637 FEAT_EPIC_WEAPON_FOCUS_GREATSWORD
|
||||
62 638 FEAT_EPIC_WEAPON_FOCUS_HANDAXE
|
||||
63 639 FEAT_EPIC_WEAPON_FOCUS_THROWINGAXE
|
||||
64 640 FEAT_EPIC_WEAPON_FOCUS_BATTLEAXE
|
||||
65 641 FEAT_EPIC_WEAPON_FOCUS_GREATAXE
|
||||
66 642 FEAT_EPIC_WEAPON_FOCUS_HALBERD
|
||||
67 643 FEAT_EPIC_WEAPON_FOCUS_LIGHTHAMMER
|
||||
68 644 FEAT_EPIC_WEAPON_FOCUS_LIGHTFLAIL
|
||||
69 645 FEAT_EPIC_WEAPON_FOCUS_WARHAMMER
|
||||
70 646 FEAT_EPIC_WEAPON_FOCUS_HEAVYFLAIL
|
||||
71 647 FEAT_EPIC_WEAPON_FOCUS_KAMA
|
||||
72 648 FEAT_EPIC_WEAPON_FOCUS_KUKRI
|
||||
73 649 FEAT_EPIC_WEAPON_FOCUS_SHURIKEN
|
||||
74 650 FEAT_EPIC_WEAPON_FOCUS_SCYTHE
|
||||
75 651 FEAT_EPIC_WEAPON_FOCUS_KATANA
|
||||
76 652 FEAT_EPIC_WEAPON_FOCUS_BASTARDSWORD
|
||||
77 653 FEAT_EPIC_WEAPON_FOCUS_DIREMACE
|
||||
78 654 FEAT_EPIC_WEAPON_FOCUS_DOUBLEAXE
|
||||
79 655 FEAT_EPIC_WEAPON_FOCUS_TWOBLADEDSWORD
|
||||
80 1076 FEAT_EPIC_WEAPON_FOCUS_TRIDENT
|
||||
81 726 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD
|
||||
82 709 FEAT_EPIC_OVERWHELMING_CRITICAL_CLUB
|
||||
83 710 FEAT_EPIC_OVERWHELMING_CRITICAL_DAGGER
|
||||
84 711 FEAT_EPIC_OVERWHELMING_CRITICAL_DART
|
||||
85 712 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYCROSSBOW
|
||||
86 713 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTCROSSBOW
|
||||
87 714 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTMACE
|
||||
88 715 FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR
|
||||
89 716 FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF
|
||||
90 717 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSPEAR
|
||||
91 718 FEAT_EPIC_OVERWHELMING_CRITICAL_SICKLE
|
||||
92 719 FEAT_EPIC_OVERWHELMING_CRITICAL_SLING
|
||||
93 720 FEAT_EPIC_OVERWHELMING_CRITICAL_UNARMED
|
||||
94 721 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGBOW
|
||||
95 722 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTBOW
|
||||
96 723 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSWORD
|
||||
97 724 FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER
|
||||
98 725 FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR
|
||||
99 727 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATSWORD
|
||||
100 728 FEAT_EPIC_OVERWHELMING_CRITICAL_HANDAXE
|
||||
101 729 FEAT_EPIC_OVERWHELMING_CRITICAL_THROWINGAXE
|
||||
102 730 FEAT_EPIC_OVERWHELMING_CRITICAL_BATTLEAXE
|
||||
103 731 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATAXE
|
||||
104 732 FEAT_EPIC_OVERWHELMING_CRITICAL_HALBERD
|
||||
105 733 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTHAMMER
|
||||
106 734 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTFLAIL
|
||||
107 735 FEAT_EPIC_OVERWHELMING_CRITICAL_WARHAMMER
|
||||
108 736 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYFLAIL
|
||||
109 737 FEAT_EPIC_OVERWHELMING_CRITICAL_KAMA
|
||||
110 738 FEAT_EPIC_OVERWHELMING_CRITICAL_KUKRI
|
||||
111 739 FEAT_EPIC_OVERWHELMING_CRITICAL_SHURIKEN
|
||||
112 740 FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE
|
||||
113 741 FEAT_EPIC_OVERWHELMING_CRITICAL_KATANA
|
||||
114 742 FEAT_EPIC_OVERWHELMING_CRITICAL_BASTARDSWORD
|
||||
115 743 FEAT_EPIC_OVERWHELMING_CRITICAL_DIREMACE
|
||||
116 744 FEAT_EPIC_OVERWHELMING_CRITICAL_DOUBLEAXE
|
||||
117 745 FEAT_EPIC_OVERWHELMING_CRITICAL_TWOBLADEDSWORD
|
||||
118 1078 FEAT_EPIC_OVERWHELMING_CRITICAL_TRIDENT
|
||||
119 495 FEAT_EPIC_DEVASTATING_CRITICAL_CLUB
|
||||
120 496 FEAT_EPIC_DEVASTATING_CRITICAL_DAGGER
|
||||
121 497 FEAT_EPIC_DEVASTATING_CRITICAL_DART
|
||||
122 498 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYCROSSBOW
|
||||
123 499 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTCROSSBOW
|
||||
124 500 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTMACE
|
||||
125 501 FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR
|
||||
126 502 FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF
|
||||
127 503 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSPEAR
|
||||
128 504 FEAT_EPIC_DEVASTATING_CRITICAL_SICKLE
|
||||
129 505 FEAT_EPIC_DEVASTATING_CRITICAL_SLING
|
||||
130 506 FEAT_EPIC_DEVASTATING_CRITICAL_UNARMED
|
||||
131 507 FEAT_EPIC_DEVASTATING_CRITICAL_LONGBOW
|
||||
132 508 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTBOW
|
||||
133 509 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSWORD
|
||||
134 510 FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER
|
||||
135 511 FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR
|
||||
136 512 FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD
|
||||
137 513 FEAT_EPIC_DEVASTATING_CRITICAL_GREATSWORD
|
||||
138 514 FEAT_EPIC_DEVASTATING_CRITICAL_HANDAXE
|
||||
139 515 FEAT_EPIC_DEVASTATING_CRITICAL_THROWINGAXE
|
||||
140 516 FEAT_EPIC_DEVASTATING_CRITICAL_BATTLEAXE
|
||||
141 517 FEAT_EPIC_DEVASTATING_CRITICAL_GREATAXE
|
||||
142 518 FEAT_EPIC_DEVASTATING_CRITICAL_HALBERD
|
||||
143 519 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTHAMMER
|
||||
144 520 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTFLAIL
|
||||
145 521 FEAT_EPIC_DEVASTATING_CRITICAL_WARHAMMER
|
||||
146 522 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYFLAIL
|
||||
147 523 FEAT_EPIC_DEVASTATING_CRITICAL_KAMA
|
||||
148 524 FEAT_EPIC_DEVASTATING_CRITICAL_KUKRI
|
||||
149 525 FEAT_EPIC_DEVASTATING_CRITICAL_SHURIKEN
|
||||
150 526 FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE
|
||||
151 527 FEAT_EPIC_DEVASTATING_CRITICAL_KATANA
|
||||
152 528 FEAT_EPIC_DEVASTATING_CRITICAL_BASTARDSWORD
|
||||
153 529 FEAT_EPIC_DEVASTATING_CRITICAL_DIREMACE
|
||||
154 530 FEAT_EPIC_DEVASTATING_CRITICAL_DOUBLEAXE
|
||||
155 531 FEAT_EPIC_DEVASTATING_CRITICAL_TWOBLADEDSWORD
|
||||
156 1075 FEAT_EPIC_DEVASTATING_CRITICAL_TRIDENT
|
||||
157 867 FEAT_WHIRLWIND_ATTACK
|
||||
158 868 FEAT_IMPROVED_WHIRLWIND
|
||||
159 814 FEAT_EPIC_GREAT_STRENGTH_1
|
||||
160 815 FEAT_EPIC_GREAT_STRENGTH_2
|
||||
161 816 FEAT_EPIC_GREAT_STRENGTH_3
|
||||
162 491 FEAT_EPIC_BLINDING_SPEED
|
||||
163 753 FEAT_EPIC_SUPERIOR_INITIATIVE
|
||||
164 817 FEAT_EPIC_GREAT_STRENGTH_4
|
||||
165 818 FEAT_EPIC_GREAT_STRENGTH_5
|
||||
166 819 FEAT_EPIC_GREAT_STRENGTH_6
|
||||
167 754 FEAT_EPIC_TOUGHNESS_1
|
||||
168 755 FEAT_EPIC_TOUGHNESS_2
|
||||
169 756 FEAT_EPIC_TOUGHNESS_3
|
||||
170 820 FEAT_EPIC_GREAT_STRENGTH_7
|
||||
171 821 FEAT_EPIC_GREAT_STRENGTH_8
|
||||
172 822 FEAT_EPIC_GREAT_STRENGTH_9
|
||||
173 823 FEAT_EPIC_GREAT_STRENGTH_10
|
||||
174 757 FEAT_EPIC_TOUGHNESS_4
|
||||
175 758 FEAT_EPIC_TOUGHNESS_5
|
||||
176 759 FEAT_EPIC_TOUGHNESS_6
|
||||
177 492 FEAT_EPIC_DAMAGE_REDUCTION_3
|
||||
178 493 FEAT_EPIC_DAMAGE_REDUCTION_6
|
||||
179 494 FEAT_EPIC_DAMAGE_REDUCTION_9
|
||||
180 760 FEAT_EPIC_TOUGHNESS_7
|
||||
181 761 FEAT_EPIC_TOUGHNESS_8
|
||||
182 762 FEAT_EPIC_TOUGHNESS_9
|
||||
183 763 FEAT_EPIC_TOUGHNESS_10
|
||||
184 695 FEAT_EPIC_WILL
|
||||
185 774 FEAT_EPIC_GREAT_CONSTITUTION_1
|
||||
186 775 FEAT_EPIC_GREAT_CONSTITUTION_2
|
||||
187 776 FEAT_EPIC_GREAT_CONSTITUTION_3
|
||||
188 777 FEAT_EPIC_GREAT_CONSTITUTION_4
|
||||
189 778 FEAT_EPIC_GREAT_CONSTITUTION_5
|
||||
190 779 FEAT_EPIC_GREAT_CONSTITUTION_6
|
||||
191 780 FEAT_EPIC_GREAT_CONSTITUTION_7
|
||||
192 781 FEAT_EPIC_GREAT_CONSTITUTION_8
|
||||
193 782 FEAT_EPIC_GREAT_CONSTITUTION_9
|
||||
194 783 FEAT_EPIC_GREAT_CONSTITUTION_10
|
||||
195 784 FEAT_EPIC_GREAT_DEXTERITY_1
|
||||
196 785 FEAT_EPIC_GREAT_DEXTERITY_2
|
||||
197 786 FEAT_EPIC_GREAT_DEXTERITY_3
|
||||
198 787 FEAT_EPIC_GREAT_DEXTERITY_4
|
||||
199 788 FEAT_EPIC_GREAT_DEXTERITY_5
|
||||
200 789 FEAT_EPIC_GREAT_DEXTERITY_6
|
||||
201 790 FEAT_EPIC_GREAT_DEXTERITY_7
|
||||
202 791 FEAT_EPIC_GREAT_DEXTERITY_8
|
||||
203 792 FEAT_EPIC_GREAT_DEXTERITY_9
|
||||
204 793 FEAT_EPIC_GREAT_DEXTERITY_10
|
||||
205 3252 ShieldSpecializationHeavy
|
||||
206 40 Toughness
|
||||
207 22 IronWill
|
||||
208 3636 VitalRecovery
|
||||
209 5294 StonePower
|
||||
210 389 Expertise
|
||||
211 3253 ShieldWard
|
||||
212 4096 "Extra Granted Maneuver"
|
||||
213 24609 WeaponFocusHeavyMace
|
||||
214 28 PowerAtk
|
||||
215 3829 BladeMeditation_DevotedSpirit
|
||||
216 6 Cleave
|
||||
217 4074 WhiteRavenDefense
|
||||
218 391 GreatCleave
|
||||
219 10 Dodge
|
||||
220 40 Toughness
|
||||
221 26 Mobility
|
||||
222 392 SpringAttack
|
||||
223 14 GreatFort
|
||||
224 24 LightngRef
|
||||
225 389 Expertise
|
||||
226 408 BlindFight
|
||||
227 425 DirtyFighting
|
||||
228 27 PBShot
|
||||
229 30 RapidShot
|
||||
230 107 WeapFocGSw
|
||||
231 69 ImpCritGSw
|
||||
232 145 WeapSpeGSw
|
||||
233 1 Ambidex
|
||||
234 41 TwoWeap
|
||||
235 16 ImpDis
|
||||
236 20 ImpTwo
|
||||
237 390 ImpExpertise
|
||||
238 0 Alertness
|
||||
239 42 WeapFinesse
|
||||
240 32 Shield
|
||||
241 39 StunFist
|
||||
242 8 DefArrow
|
||||
243 427 ResistEnergyCold
|
||||
244 428 ResistEnergyAcid
|
||||
245 429 ResistEnergyFire
|
||||
246 430 ResistEnergyElectrical
|
||||
247 431 ResistEnergySonic
|
||||
248 43 WeapFocClub
|
||||
249 15 ImpCritClub
|
||||
250 57 ImpCritMorn
|
||||
251 58 ImpCritStaff
|
||||
252 59 ImpCritSpear
|
||||
253 60 ImpCritSickle
|
||||
254 61 ImpCritSling
|
||||
255 62 ImpCritUnArm
|
||||
256 63 ImpCritLongBow
|
||||
257 64 ImpCritShortBow
|
||||
258 65 ImpCritShortSwor
|
||||
259 66 ImpCritRapier
|
||||
260 67 ImpCritScim
|
||||
261 70 ImpCritHAxe
|
||||
262 71 ImpCritTAxe
|
||||
263 72 ImpCritBAxe
|
||||
264 73 ImpCritGAxe
|
||||
265 74 ImpCritHalb
|
||||
266 75 ImpCritLgHam
|
||||
267 76 ImpCritLgFlail
|
||||
268 77 ImpCritWHam
|
||||
269 78 ImpCritHFlail
|
||||
270 79 ImpCritKama
|
||||
271 80 ImpCritKukri
|
||||
272 82 ImpCritShur
|
||||
273 83 ImpCritScy
|
||||
274 84 ImpCritKatana
|
||||
275 85 ImpCritBSw
|
||||
276 87 ImpCritDMace
|
||||
277 88 ImpCritDAxe
|
||||
278 89 ImpCrit2Sw
|
||||
279 1074 FEAT_IMPROVED_CRITICAL_TRIDENT
|
||||
280 90 WeapFocDagger
|
||||
281 91 WeapFocDart
|
||||
282 92 WeapFocHXBow
|
||||
283 68 ImpCritLSw
|
||||
284 144 WeapSpeLSw
|
||||
285 106 WeapFocLSw
|
||||
286 24601 FEAT_WEAPON_FOCUS_LIGHT_LANCE
|
||||
287 93 WeapFocLgXBow
|
||||
288 94 WeapFocLgMace
|
||||
289 95 WeapFocMorn
|
||||
290 96 WeapFocStaff
|
||||
291 97 WeapFocSpear
|
||||
292 98 WeapFocSickle
|
||||
293 99 WeapFocSling
|
||||
294 100 WeapFocUnArm
|
||||
295 101 WeapFocLongBow
|
||||
296 102 WeapFocShortBow
|
||||
297 103 WeapFocShortSwor
|
||||
298 104 WeapFocRapier
|
||||
299 105 WeapFocScim
|
||||
300 108 WeapFocHAxe
|
||||
301 109 WeapFocTAxe
|
||||
302 110 WeapFocBAxe
|
||||
303 111 WeapFocGAxe
|
||||
304 112 WeapFocHalb
|
||||
305 113 WeapFocLgHam
|
||||
306 114 WeapFocLgFlail
|
||||
307 115 WeapFocWHam
|
||||
308 116 WeapFocHFlail
|
||||
309 117 WeapFocKama
|
||||
310 118 WeapFocKukri
|
||||
311 120 WeapFocShur
|
||||
312 121 WeapFocScy
|
||||
313 122 WeapFocKatana
|
||||
314 123 WeapFocBSw
|
||||
315 125 WeapFocDMace
|
||||
316 126 WeapFocDAxe
|
||||
317 127 WeapFoc2Sw
|
||||
318 24649 FEAT_IMPROVED_CRITICAL_LIGHT_LANCE
|
||||
319 1087 FEAT_MOUNTED_COMBAT
|
||||
320 3037 FEAT_SKILL_FOCUS_RIDE
|
||||
321 1072 FEAT_WEAPON_FOCUS_TRIDENT
|
||||
322 128 WeapSpeDagger
|
||||
323 129 WeapSpeDart
|
||||
324 130 WeapSpeHXBow
|
||||
325 131 WeapSpeLgXBow
|
||||
326 132 WeapSpeLgMace
|
||||
327 133 WeapSpeMorn
|
||||
328 134 WeapSpeStaff
|
||||
329 135 WeapSpeSpear
|
||||
330 136 WeapSpeSickle
|
||||
331 137 WeapSpeSling
|
||||
332 138 WeapSpeUnArm
|
||||
333 139 WeapSpeLongBow
|
||||
334 140 WeapSpeShortBow
|
||||
335 141 WeapSpeShortSwor
|
||||
336 142 WeapSpeRapier
|
||||
337 143 WeapSpeScim
|
||||
338 146 WeapSpeHAxe
|
||||
339 147 WeapSpeTAxe
|
||||
340 148 WeapSpeBAxe
|
||||
341 149 WeapSpeGAxe
|
||||
342 150 WeapSpeHalb
|
||||
343 151 WeapSpeLgHam
|
||||
344 152 WeapSpeLgFlail
|
||||
345 153 WeapSpeWHam
|
||||
346 154 WeapSpeHFlail
|
||||
347 155 WeapSpeKama
|
||||
348 156 WeapSpeKukri
|
||||
349 158 WeapSpeShur
|
||||
350 159 WeapSpeScy
|
||||
351 160 WeapSpeKatana
|
||||
352 161 WeapSpeBSw
|
||||
353 163 WeapSpeDMace
|
||||
354 164 WeapSpeDAxe
|
||||
355 165 WeapSpe2Sw
|
||||
356 1073 FEAT_WEAPON_SPECIALIZATION_TRIDENT
|
||||
357 166 SpellFocusCon
|
||||
358 167 SpellFocusDiv
|
||||
359 168 SpellFocusEnc
|
||||
360 169 SpellFocusEvo
|
||||
361 170 SpellFocusIll
|
||||
362 171 SpellFocusNec
|
||||
363 172 SpellFocusTra
|
||||
364 173 SkillFocusConc
|
||||
365 174 SkillFocusDisa
|
||||
366 175 SkillFocusGrip
|
||||
367 177 SkillFocusHeal
|
||||
368 178 SkillFocusHide
|
||||
369 179 SkillFocusList
|
||||
370 180 SkillFocusLore
|
||||
371 181 SkillFocusMove
|
||||
372 182 SkillFocusOpen
|
||||
373 184 SkillFocusPerf
|
||||
374 185 SkillFocusPers
|
||||
375 186 SkillFocusPick
|
||||
376 187 SkillFocusSearch
|
||||
377 188 SkillFocusSet
|
||||
378 189 SkillFocusSpell
|
||||
379 190 SkillFocusSpot
|
||||
380 193 SkillFocusDevi
|
||||
381 35 SpellFocusAbj
|
||||
382 36 SpellPen
|
||||
383 37 StillSpell
|
||||
384 25 MaxSpell
|
||||
385 7 CmbtCast
|
||||
386 29 Quicken
|
||||
387 34 SkillFocusAnim
|
||||
388 33 Silent
|
||||
389 11 Empower
|
||||
390 12 ExtSpell
|
||||
391 13 ExtTurn
|
||||
395
nwn/nwnprc/trunk/Craft2das/packftcrsdr3.2da
Normal file
395
nwn/nwnprc/trunk/Craft2das/packftcrsdr3.2da
Normal file
@@ -0,0 +1,395 @@
|
||||
2DA V2.0
|
||||
|
||||
FeatIndex Label
|
||||
0 675 FEAT_EPIC_WEAPON_SPECIALIZATION_GREATSWORD
|
||||
1 637 FEAT_EPIC_WEAPON_FOCUS_GREATSWORD
|
||||
2 584 FEAT_EPIC_PROWESS
|
||||
3 490 FEAT_EPIC_ARMOR_SKIN
|
||||
4 24613 FEAT_EPIC_WEAPON_FOCUS_LANCE
|
||||
5 657 FEAT_EPIC_WEAPON_SPECIALIZATION_CLUB
|
||||
6 658 FEAT_EPIC_WEAPON_SPECIALIZATION_DAGGER
|
||||
7 659 FEAT_EPIC_WEAPON_SPECIALIZATION_DART
|
||||
8 660 FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYCROSSBOW
|
||||
9 661 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTCROSSBOW
|
||||
10 662 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTMACE
|
||||
11 663 FEAT_EPIC_WEAPON_SPECIALIZATION_MORNINGSTAR
|
||||
12 664 FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF
|
||||
13 665 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSPEAR
|
||||
14 666 FEAT_EPIC_WEAPON_SPECIALIZATION_SICKLE
|
||||
15 667 FEAT_EPIC_WEAPON_SPECIALIZATION_SLING
|
||||
16 668 FEAT_EPIC_WEAPON_SPECIALIZATION_UNARMED
|
||||
17 669 FEAT_EPIC_WEAPON_SPECIALIZATION_LONGBOW
|
||||
18 670 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTBOW
|
||||
19 671 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSWORD
|
||||
20 672 FEAT_EPIC_WEAPON_SPECIALIZATION_RAPIER
|
||||
21 673 FEAT_EPIC_WEAPON_SPECIALIZATION_SCIMITAR
|
||||
22 676 FEAT_EPIC_WEAPON_SPECIALIZATION_HANDAXE
|
||||
23 677 FEAT_EPIC_WEAPON_SPECIALIZATION_THROWINGAXE
|
||||
24 678 FEAT_EPIC_WEAPON_SPECIALIZATION_BATTLEAXE
|
||||
25 679 FEAT_EPIC_WEAPON_SPECIALIZATION_GREATAXE
|
||||
26 680 FEAT_EPIC_WEAPON_SPECIALIZATION_HALBERD
|
||||
27 681 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTHAMMER
|
||||
28 682 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTFLAIL
|
||||
29 683 FEAT_EPIC_WEAPON_SPECIALIZATION_WARHAMMER
|
||||
30 684 FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYFLAIL
|
||||
31 685 FEAT_EPIC_WEAPON_SPECIALIZATION_KAMA
|
||||
32 686 FEAT_EPIC_WEAPON_SPECIALIZATION_KUKRI
|
||||
33 687 FEAT_EPIC_WEAPON_SPECIALIZATION_SHURIKEN
|
||||
34 688 FEAT_EPIC_WEAPON_SPECIALIZATION_SCYTHE
|
||||
35 689 FEAT_EPIC_WEAPON_SPECIALIZATION_KATANA
|
||||
36 690 FEAT_EPIC_WEAPON_SPECIALIZATION_BASTARDSWORD
|
||||
37 691 FEAT_EPIC_WEAPON_SPECIALIZATION_DIREMACE
|
||||
38 692 FEAT_EPIC_WEAPON_SPECIALIZATION_DOUBLEAXE
|
||||
39 693 FEAT_EPIC_WEAPON_SPECIALIZATION_TWOBLADEDSWORD
|
||||
40 1077 FEAT_EPIC_WEAPON_SPECIALIZATION_TRIDENT
|
||||
41 636 FEAT_EPIC_WEAPON_FOCUS_LONGSWORD
|
||||
42 674 FEAT_EPIC_WEAPON_SPECIALIZATION_LONGSWORD
|
||||
43 619 FEAT_EPIC_WEAPON_FOCUS_CLUB
|
||||
44 620 FEAT_EPIC_WEAPON_FOCUS_DAGGER
|
||||
45 621 FEAT_EPIC_WEAPON_FOCUS_DART
|
||||
46 622 FEAT_EPIC_WEAPON_FOCUS_HEAVYCROSSBOW
|
||||
47 623 FEAT_EPIC_WEAPON_FOCUS_LIGHTCROSSBOW
|
||||
48 624 FEAT_EPIC_WEAPON_FOCUS_LIGHTMACE
|
||||
49 625 FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR
|
||||
50 626 FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF
|
||||
51 627 FEAT_EPIC_WEAPON_FOCUS_SHORTSPEAR
|
||||
52 628 FEAT_EPIC_WEAPON_FOCUS_SICKLE
|
||||
53 629 FEAT_EPIC_WEAPON_FOCUS_SLING
|
||||
54 630 FEAT_EPIC_WEAPON_FOCUS_UNARMED
|
||||
55 631 FEAT_EPIC_WEAPON_FOCUS_LONGBOW
|
||||
56 632 FEAT_EPIC_WEAPON_FOCUS_SHORTBOW
|
||||
57 633 FEAT_EPIC_WEAPON_FOCUS_SHORTSWORD
|
||||
58 634 FEAT_EPIC_WEAPON_FOCUS_RAPIER
|
||||
59 635 FEAT_EPIC_WEAPON_FOCUS_SCIMITAR
|
||||
60 638 FEAT_EPIC_WEAPON_FOCUS_HANDAXE
|
||||
61 639 FEAT_EPIC_WEAPON_FOCUS_THROWINGAXE
|
||||
62 640 FEAT_EPIC_WEAPON_FOCUS_BATTLEAXE
|
||||
63 641 FEAT_EPIC_WEAPON_FOCUS_GREATAXE
|
||||
64 642 FEAT_EPIC_WEAPON_FOCUS_HALBERD
|
||||
65 643 FEAT_EPIC_WEAPON_FOCUS_LIGHTHAMMER
|
||||
66 644 FEAT_EPIC_WEAPON_FOCUS_LIGHTFLAIL
|
||||
67 645 FEAT_EPIC_WEAPON_FOCUS_WARHAMMER
|
||||
68 646 FEAT_EPIC_WEAPON_FOCUS_HEAVYFLAIL
|
||||
69 647 FEAT_EPIC_WEAPON_FOCUS_KAMA
|
||||
70 648 FEAT_EPIC_WEAPON_FOCUS_KUKRI
|
||||
71 649 FEAT_EPIC_WEAPON_FOCUS_SHURIKEN
|
||||
72 650 FEAT_EPIC_WEAPON_FOCUS_SCYTHE
|
||||
73 651 FEAT_EPIC_WEAPON_FOCUS_KATANA
|
||||
74 652 FEAT_EPIC_WEAPON_FOCUS_BASTARDSWORD
|
||||
75 653 FEAT_EPIC_WEAPON_FOCUS_DIREMACE
|
||||
76 654 FEAT_EPIC_WEAPON_FOCUS_DOUBLEAXE
|
||||
77 655 FEAT_EPIC_WEAPON_FOCUS_TWOBLADEDSWORD
|
||||
78 1076 FEAT_EPIC_WEAPON_FOCUS_TRIDENT
|
||||
79 24654 EpicWeaponSpec_HeavyMace
|
||||
80 24621 EpicWeaponFocus_HeavyMace
|
||||
81 726 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD
|
||||
82 709 FEAT_EPIC_OVERWHELMING_CRITICAL_CLUB
|
||||
83 710 FEAT_EPIC_OVERWHELMING_CRITICAL_DAGGER
|
||||
84 711 FEAT_EPIC_OVERWHELMING_CRITICAL_DART
|
||||
85 712 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYCROSSBOW
|
||||
86 713 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTCROSSBOW
|
||||
87 714 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTMACE
|
||||
88 715 FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR
|
||||
89 716 FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF
|
||||
90 717 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSPEAR
|
||||
91 718 FEAT_EPIC_OVERWHELMING_CRITICAL_SICKLE
|
||||
92 719 FEAT_EPIC_OVERWHELMING_CRITICAL_SLING
|
||||
93 720 FEAT_EPIC_OVERWHELMING_CRITICAL_UNARMED
|
||||
94 721 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGBOW
|
||||
95 722 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTBOW
|
||||
96 723 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSWORD
|
||||
97 724 FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER
|
||||
98 725 FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR
|
||||
99 727 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATSWORD
|
||||
100 728 FEAT_EPIC_OVERWHELMING_CRITICAL_HANDAXE
|
||||
101 729 FEAT_EPIC_OVERWHELMING_CRITICAL_THROWINGAXE
|
||||
102 730 FEAT_EPIC_OVERWHELMING_CRITICAL_BATTLEAXE
|
||||
103 731 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATAXE
|
||||
104 732 FEAT_EPIC_OVERWHELMING_CRITICAL_HALBERD
|
||||
105 733 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTHAMMER
|
||||
106 734 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTFLAIL
|
||||
107 735 FEAT_EPIC_OVERWHELMING_CRITICAL_WARHAMMER
|
||||
108 736 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYFLAIL
|
||||
109 737 FEAT_EPIC_OVERWHELMING_CRITICAL_KAMA
|
||||
110 738 FEAT_EPIC_OVERWHELMING_CRITICAL_KUKRI
|
||||
111 739 FEAT_EPIC_OVERWHELMING_CRITICAL_SHURIKEN
|
||||
112 740 FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE
|
||||
113 741 FEAT_EPIC_OVERWHELMING_CRITICAL_KATANA
|
||||
114 742 FEAT_EPIC_OVERWHELMING_CRITICAL_BASTARDSWORD
|
||||
115 743 FEAT_EPIC_OVERWHELMING_CRITICAL_DIREMACE
|
||||
116 744 FEAT_EPIC_OVERWHELMING_CRITICAL_DOUBLEAXE
|
||||
117 745 FEAT_EPIC_OVERWHELMING_CRITICAL_TWOBLADEDSWORD
|
||||
118 1078 FEAT_EPIC_OVERWHELMING_CRITICAL_TRIDENT
|
||||
119 495 FEAT_EPIC_DEVASTATING_CRITICAL_CLUB
|
||||
120 496 FEAT_EPIC_DEVASTATING_CRITICAL_DAGGER
|
||||
121 497 FEAT_EPIC_DEVASTATING_CRITICAL_DART
|
||||
122 498 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYCROSSBOW
|
||||
123 499 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTCROSSBOW
|
||||
124 500 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTMACE
|
||||
125 501 FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR
|
||||
126 502 FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF
|
||||
127 503 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSPEAR
|
||||
128 504 FEAT_EPIC_DEVASTATING_CRITICAL_SICKLE
|
||||
129 505 FEAT_EPIC_DEVASTATING_CRITICAL_SLING
|
||||
130 506 FEAT_EPIC_DEVASTATING_CRITICAL_UNARMED
|
||||
131 507 FEAT_EPIC_DEVASTATING_CRITICAL_LONGBOW
|
||||
132 508 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTBOW
|
||||
133 509 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSWORD
|
||||
134 510 FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER
|
||||
135 511 FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR
|
||||
136 512 FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD
|
||||
137 513 FEAT_EPIC_DEVASTATING_CRITICAL_GREATSWORD
|
||||
138 514 FEAT_EPIC_DEVASTATING_CRITICAL_HANDAXE
|
||||
139 515 FEAT_EPIC_DEVASTATING_CRITICAL_THROWINGAXE
|
||||
140 516 FEAT_EPIC_DEVASTATING_CRITICAL_BATTLEAXE
|
||||
141 517 FEAT_EPIC_DEVASTATING_CRITICAL_GREATAXE
|
||||
142 518 FEAT_EPIC_DEVASTATING_CRITICAL_HALBERD
|
||||
143 519 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTHAMMER
|
||||
144 520 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTFLAIL
|
||||
145 521 FEAT_EPIC_DEVASTATING_CRITICAL_WARHAMMER
|
||||
146 522 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYFLAIL
|
||||
147 523 FEAT_EPIC_DEVASTATING_CRITICAL_KAMA
|
||||
148 524 FEAT_EPIC_DEVASTATING_CRITICAL_KUKRI
|
||||
149 525 FEAT_EPIC_DEVASTATING_CRITICAL_SHURIKEN
|
||||
150 526 FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE
|
||||
151 527 FEAT_EPIC_DEVASTATING_CRITICAL_KATANA
|
||||
152 528 FEAT_EPIC_DEVASTATING_CRITICAL_BASTARDSWORD
|
||||
153 529 FEAT_EPIC_DEVASTATING_CRITICAL_DIREMACE
|
||||
154 530 FEAT_EPIC_DEVASTATING_CRITICAL_DOUBLEAXE
|
||||
155 531 FEAT_EPIC_DEVASTATING_CRITICAL_TWOBLADEDSWORD
|
||||
156 1075 FEAT_EPIC_DEVASTATING_CRITICAL_TRIDENT
|
||||
157 867 FEAT_WHIRLWIND_ATTACK
|
||||
158 868 FEAT_IMPROVED_WHIRLWIND
|
||||
159 814 FEAT_EPIC_GREAT_STRENGTH_1
|
||||
160 815 FEAT_EPIC_GREAT_STRENGTH_2
|
||||
161 816 FEAT_EPIC_GREAT_STRENGTH_3
|
||||
162 491 FEAT_EPIC_BLINDING_SPEED
|
||||
163 753 FEAT_EPIC_SUPERIOR_INITIATIVE
|
||||
164 817 FEAT_EPIC_GREAT_STRENGTH_4
|
||||
165 818 FEAT_EPIC_GREAT_STRENGTH_5
|
||||
166 819 FEAT_EPIC_GREAT_STRENGTH_6
|
||||
167 754 FEAT_EPIC_TOUGHNESS_1
|
||||
168 755 FEAT_EPIC_TOUGHNESS_2
|
||||
169 756 FEAT_EPIC_TOUGHNESS_3
|
||||
170 820 FEAT_EPIC_GREAT_STRENGTH_7
|
||||
171 821 FEAT_EPIC_GREAT_STRENGTH_8
|
||||
172 822 FEAT_EPIC_GREAT_STRENGTH_9
|
||||
173 823 FEAT_EPIC_GREAT_STRENGTH_10
|
||||
174 757 FEAT_EPIC_TOUGHNESS_4
|
||||
175 758 FEAT_EPIC_TOUGHNESS_5
|
||||
176 759 FEAT_EPIC_TOUGHNESS_6
|
||||
177 492 FEAT_EPIC_DAMAGE_REDUCTION_3
|
||||
178 493 FEAT_EPIC_DAMAGE_REDUCTION_6
|
||||
179 494 FEAT_EPIC_DAMAGE_REDUCTION_9
|
||||
180 760 FEAT_EPIC_TOUGHNESS_7
|
||||
181 761 FEAT_EPIC_TOUGHNESS_8
|
||||
182 762 FEAT_EPIC_TOUGHNESS_9
|
||||
183 763 FEAT_EPIC_TOUGHNESS_10
|
||||
184 695 FEAT_EPIC_WILL
|
||||
185 774 FEAT_EPIC_GREAT_CONSTITUTION_1
|
||||
186 775 FEAT_EPIC_GREAT_CONSTITUTION_2
|
||||
187 776 FEAT_EPIC_GREAT_CONSTITUTION_3
|
||||
188 777 FEAT_EPIC_GREAT_CONSTITUTION_4
|
||||
189 778 FEAT_EPIC_GREAT_CONSTITUTION_5
|
||||
190 779 FEAT_EPIC_GREAT_CONSTITUTION_6
|
||||
191 780 FEAT_EPIC_GREAT_CONSTITUTION_7
|
||||
192 781 FEAT_EPIC_GREAT_CONSTITUTION_8
|
||||
193 782 FEAT_EPIC_GREAT_CONSTITUTION_9
|
||||
194 783 FEAT_EPIC_GREAT_CONSTITUTION_10
|
||||
195 784 FEAT_EPIC_GREAT_DEXTERITY_1
|
||||
196 785 FEAT_EPIC_GREAT_DEXTERITY_2
|
||||
197 786 FEAT_EPIC_GREAT_DEXTERITY_3
|
||||
198 787 FEAT_EPIC_GREAT_DEXTERITY_4
|
||||
199 788 FEAT_EPIC_GREAT_DEXTERITY_5
|
||||
200 789 FEAT_EPIC_GREAT_DEXTERITY_6
|
||||
201 790 FEAT_EPIC_GREAT_DEXTERITY_7
|
||||
202 791 FEAT_EPIC_GREAT_DEXTERITY_8
|
||||
203 792 FEAT_EPIC_GREAT_DEXTERITY_9
|
||||
204 793 FEAT_EPIC_GREAT_DEXTERITY_10
|
||||
205 69 ImpCritGSw
|
||||
206 28 PowerAtk
|
||||
207 145 WeapSpeGSw
|
||||
208 107 WeapFocGSw
|
||||
209 3636 VitalRecovery
|
||||
210 4096 "Extra Granted Maneuver"
|
||||
211 6 Cleave
|
||||
212 391 GreatCleave
|
||||
213 408 BlindFight
|
||||
214 40 Toughness
|
||||
215 22 IronWill
|
||||
216 5294 StonePower
|
||||
217 389 Expertise
|
||||
218 3253 ShieldWard
|
||||
219 24609 WeaponFocusHeavyMace
|
||||
220 3829 BladeMeditation_DevotedSpirit
|
||||
221 4074 WhiteRavenDefense
|
||||
222 10 Dodge
|
||||
223 40 Toughness
|
||||
224 26 Mobility
|
||||
225 392 SpringAttack
|
||||
226 14 GreatFort
|
||||
227 24 LightngRef
|
||||
228 389 Expertise
|
||||
229 425 DirtyFighting
|
||||
230 27 PBShot
|
||||
231 30 RapidShot
|
||||
232 1 Ambidex
|
||||
233 41 TwoWeap
|
||||
234 16 ImpDis
|
||||
235 20 ImpTwo
|
||||
236 390 ImpExpertise
|
||||
237 0 Alertness
|
||||
238 42 WeapFinesse
|
||||
239 32 Shield
|
||||
240 39 StunFist
|
||||
241 3252 ShieldSpecializationHeavy
|
||||
242 8 DefArrow
|
||||
243 427 ResistEnergyCold
|
||||
244 428 ResistEnergyAcid
|
||||
245 429 ResistEnergyFire
|
||||
246 430 ResistEnergyElectrical
|
||||
247 431 ResistEnergySonic
|
||||
248 43 WeapFocClub
|
||||
249 15 ImpCritClub
|
||||
250 57 ImpCritMorn
|
||||
251 58 ImpCritStaff
|
||||
252 59 ImpCritSpear
|
||||
253 60 ImpCritSickle
|
||||
254 61 ImpCritSling
|
||||
255 62 ImpCritUnArm
|
||||
256 63 ImpCritLongBow
|
||||
257 64 ImpCritShortBow
|
||||
258 65 ImpCritShortSwor
|
||||
259 66 ImpCritRapier
|
||||
260 67 ImpCritScim
|
||||
261 70 ImpCritHAxe
|
||||
262 71 ImpCritTAxe
|
||||
263 72 ImpCritBAxe
|
||||
264 73 ImpCritGAxe
|
||||
265 74 ImpCritHalb
|
||||
266 75 ImpCritLgHam
|
||||
267 76 ImpCritLgFlail
|
||||
268 77 ImpCritWHam
|
||||
269 78 ImpCritHFlail
|
||||
270 79 ImpCritKama
|
||||
271 80 ImpCritKukri
|
||||
272 82 ImpCritShur
|
||||
273 83 ImpCritScy
|
||||
274 84 ImpCritKatana
|
||||
275 85 ImpCritBSw
|
||||
276 87 ImpCritDMace
|
||||
277 88 ImpCritDAxe
|
||||
278 89 ImpCrit2Sw
|
||||
279 1074 FEAT_IMPROVED_CRITICAL_TRIDENT
|
||||
280 90 WeapFocDagger
|
||||
281 91 WeapFocDart
|
||||
282 92 WeapFocHXBow
|
||||
283 68 ImpCritLSw
|
||||
284 144 WeapSpeLSw
|
||||
285 106 WeapFocLSw
|
||||
286 24601 FEAT_WEAPON_FOCUS_LIGHT_LANCE
|
||||
287 93 WeapFocLgXBow
|
||||
288 94 WeapFocLgMace
|
||||
289 95 WeapFocMorn
|
||||
290 96 WeapFocStaff
|
||||
291 97 WeapFocSpear
|
||||
292 98 WeapFocSickle
|
||||
293 99 WeapFocSling
|
||||
294 100 WeapFocUnArm
|
||||
295 101 WeapFocLongBow
|
||||
296 102 WeapFocShortBow
|
||||
297 103 WeapFocShortSwor
|
||||
298 104 WeapFocRapier
|
||||
299 105 WeapFocScim
|
||||
300 108 WeapFocHAxe
|
||||
301 109 WeapFocTAxe
|
||||
302 110 WeapFocBAxe
|
||||
303 111 WeapFocGAxe
|
||||
304 112 WeapFocHalb
|
||||
305 113 WeapFocLgHam
|
||||
306 114 WeapFocLgFlail
|
||||
307 115 WeapFocWHam
|
||||
308 116 WeapFocHFlail
|
||||
309 117 WeapFocKama
|
||||
310 118 WeapFocKukri
|
||||
311 120 WeapFocShur
|
||||
312 121 WeapFocScy
|
||||
313 122 WeapFocKatana
|
||||
314 123 WeapFocBSw
|
||||
315 125 WeapFocDMace
|
||||
316 126 WeapFocDAxe
|
||||
317 127 WeapFoc2Sw
|
||||
318 24649 FEAT_IMPROVED_CRITICAL_LIGHT_LANCE
|
||||
319 1087 FEAT_MOUNTED_COMBAT
|
||||
320 3037 FEAT_SKILL_FOCUS_RIDE
|
||||
321 1072 FEAT_WEAPON_FOCUS_TRIDENT
|
||||
322 128 WeapSpeDagger
|
||||
323 129 WeapSpeDart
|
||||
324 130 WeapSpeHXBow
|
||||
325 131 WeapSpeLgXBow
|
||||
326 132 WeapSpeLgMace
|
||||
327 133 WeapSpeMorn
|
||||
328 134 WeapSpeStaff
|
||||
329 135 WeapSpeSpear
|
||||
330 136 WeapSpeSickle
|
||||
331 137 WeapSpeSling
|
||||
332 138 WeapSpeUnArm
|
||||
333 139 WeapSpeLongBow
|
||||
334 140 WeapSpeShortBow
|
||||
335 141 WeapSpeShortSwor
|
||||
336 142 WeapSpeRapier
|
||||
337 143 WeapSpeScim
|
||||
338 146 WeapSpeHAxe
|
||||
339 147 WeapSpeTAxe
|
||||
340 148 WeapSpeBAxe
|
||||
341 149 WeapSpeGAxe
|
||||
342 150 WeapSpeHalb
|
||||
343 151 WeapSpeLgHam
|
||||
344 152 WeapSpeLgFlail
|
||||
345 153 WeapSpeWHam
|
||||
346 154 WeapSpeHFlail
|
||||
347 155 WeapSpeKama
|
||||
348 156 WeapSpeKukri
|
||||
349 158 WeapSpeShur
|
||||
350 159 WeapSpeScy
|
||||
351 160 WeapSpeKatana
|
||||
352 161 WeapSpeBSw
|
||||
353 163 WeapSpeDMace
|
||||
354 164 WeapSpeDAxe
|
||||
355 165 WeapSpe2Sw
|
||||
356 1073 FEAT_WEAPON_SPECIALIZATION_TRIDENT
|
||||
357 166 SpellFocusCon
|
||||
358 167 SpellFocusDiv
|
||||
359 168 SpellFocusEnc
|
||||
360 169 SpellFocusEvo
|
||||
361 170 SpellFocusIll
|
||||
362 171 SpellFocusNec
|
||||
363 172 SpellFocusTra
|
||||
364 173 SkillFocusConc
|
||||
365 174 SkillFocusDisa
|
||||
366 175 SkillFocusGrip
|
||||
367 177 SkillFocusHeal
|
||||
368 178 SkillFocusHide
|
||||
369 179 SkillFocusList
|
||||
370 180 SkillFocusLore
|
||||
371 181 SkillFocusMove
|
||||
372 182 SkillFocusOpen
|
||||
373 184 SkillFocusPerf
|
||||
374 185 SkillFocusPers
|
||||
375 186 SkillFocusPick
|
||||
376 187 SkillFocusSearch
|
||||
377 188 SkillFocusSet
|
||||
378 189 SkillFocusSpell
|
||||
379 190 SkillFocusSpot
|
||||
380 193 SkillFocusDevi
|
||||
381 35 SpellFocusAbj
|
||||
382 36 SpellPen
|
||||
383 37 StillSpell
|
||||
384 25 MaxSpell
|
||||
385 7 CmbtCast
|
||||
386 29 Quicken
|
||||
387 34 SkillFocusAnim
|
||||
388 33 Silent
|
||||
389 11 Empower
|
||||
390 12 ExtSpell
|
||||
391 13 ExtTurn
|
||||
28
nwn/nwnprc/trunk/Craft2das/packskcrsdr1.2da
Normal file
28
nwn/nwnprc/trunk/Craft2das/packskcrsdr1.2da
Normal file
@@ -0,0 +1,28 @@
|
||||
2DA V2.0
|
||||
|
||||
SkillIndex Label
|
||||
0 17 Spot
|
||||
1 1 Concentration
|
||||
2 32 Balance
|
||||
3 12 Persuade
|
||||
4 4 Heal
|
||||
5 24 Intimidate
|
||||
6 28 Jump
|
||||
7 31 Martial_Lore
|
||||
8 27 Ride
|
||||
9 23 Bluff
|
||||
10 5 Hide
|
||||
11 8 MoveSilently
|
||||
12 14 Search
|
||||
13 19 UseMagicDevice
|
||||
14 7 Lore
|
||||
15 16 Spellcraft
|
||||
16 6 Listen
|
||||
17 34 CraftAlchemy
|
||||
18 35 CraftPoison
|
||||
19 38 GraftGeneral
|
||||
20 26 CraftWeapon
|
||||
21 25 CraftArmor
|
||||
22 37 Climb
|
||||
23 29 Truespeak
|
||||
24 20 Appraise
|
||||
29
nwn/nwnprc/trunk/Craft2das/packskcrsdr2.2da
Normal file
29
nwn/nwnprc/trunk/Craft2das/packskcrsdr2.2da
Normal file
@@ -0,0 +1,29 @@
|
||||
2DA V2.0
|
||||
|
||||
SkillIndex Label
|
||||
0 1 Concentration
|
||||
1 24 Intimidate
|
||||
2 17 Spot
|
||||
3 21 Tumble
|
||||
4 7 Lore
|
||||
5 32 Balance
|
||||
6 12 Persuade
|
||||
7 4 Heal
|
||||
8 28 Jump
|
||||
9 31 Martial_Lore
|
||||
10 27 Ride
|
||||
11 23 Bluff
|
||||
12 5 Hide
|
||||
13 8 MoveSilently
|
||||
14 14 Search
|
||||
15 19 UseMagicDevice
|
||||
16 16 Spellcraft
|
||||
17 6 Listen
|
||||
18 34 CraftAlchemy
|
||||
19 35 CraftPoison
|
||||
20 38 GraftGeneral
|
||||
21 26 CraftWeapon
|
||||
22 25 CraftArmor
|
||||
23 37 Climb
|
||||
24 29 Truespeak
|
||||
25 20 Appraise
|
||||
29
nwn/nwnprc/trunk/Craft2das/packskcrsdr3.2da
Normal file
29
nwn/nwnprc/trunk/Craft2das/packskcrsdr3.2da
Normal file
@@ -0,0 +1,29 @@
|
||||
2DA V2.0
|
||||
|
||||
SkillIndex Label
|
||||
0 1 Concentration
|
||||
1 28 Jump
|
||||
2 24 Intimidate
|
||||
3 7 Lore
|
||||
4 21 Tumble
|
||||
5 17 Spot
|
||||
6 32 Balance
|
||||
7 12 Persuade
|
||||
8 4 Heal
|
||||
9 31 Martial_Lore
|
||||
10 27 Ride
|
||||
11 23 Bluff
|
||||
12 5 Hide
|
||||
13 8 MoveSilently
|
||||
14 14 Search
|
||||
15 19 UseMagicDevice
|
||||
16 16 Spellcraft
|
||||
17 6 Listen
|
||||
18 34 CraftAlchemy
|
||||
19 35 CraftPoison
|
||||
20 38 GraftGeneral
|
||||
21 26 CraftWeapon
|
||||
22 25 CraftArmor
|
||||
23 37 Climb
|
||||
24 29 Truespeak
|
||||
25 20 Appraise
|
||||
@@ -892,6 +892,7 @@ void CreateSwitchNameArray()
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_CREATE_INFUSION_OPTIONAL_HERBS);
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_CRAFT_SCEPTER_CASTER_LEVEL);
|
||||
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_SHOW_SR_CHECK_DETAILS);
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_MATERIAL_COMPONENTS);
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_DISABLE_COMPONENTS_SHOP);
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_PNP_TRUESEEING);
|
||||
|
||||
@@ -39,8 +39,10 @@ int InvocationASFCheck(object oInvoker, int nClass)
|
||||
case 1: nASF -= 5; break;//light
|
||||
case 2: nASF -= 10; break;//light
|
||||
case 3: nASF -= 20; break;//light
|
||||
case 4: nASF -= GetHasFeat(FEAT_BATTLE_CASTER, oInvoker) ? 20 : 0; break;//medium;
|
||||
case 5: nASF -= GetHasFeat(FEAT_BATTLE_CASTER, oInvoker) ? 30 : 0; break;//medium
|
||||
//case 4: nASF -= GetHasFeat(FEAT_BATTLE_CASTER, oInvoker) ? 20 : 0; break; //medium;
|
||||
//case 5: nASF -= GetHasFeat(FEAT_BATTLE_CASTER, oInvoker) ? 30 : 0; break; //medium
|
||||
case 4: nASF = GetHasFeat(FEAT_BATTLE_CASTER, oInvoker) ? 0 : nASF; break; //medium
|
||||
case 5: nASF = GetHasFeat(FEAT_BATTLE_CASTER, oInvoker) ? 0 : nASF; break; //medium;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1808,6 +1808,11 @@ int GetCraftingDC(object oItem)
|
||||
void MakeMasterwork(object oItem)
|
||||
{
|
||||
if(GetPlotFlag(oItem)) return; //sanity check
|
||||
|
||||
itemproperty ip = ItemPropertyQuality(IP_CONST_QUALITY_MASTERWORK);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
int nBase = GetBaseItemType(oItem);
|
||||
if((nBase == BASE_ITEM_ARMOR) ||
|
||||
(nBase == BASE_ITEM_SMALLSHIELD) ||
|
||||
@@ -1817,6 +1822,70 @@ void MakeMasterwork(object oItem)
|
||||
{
|
||||
//no armour check penalty here
|
||||
if(GetItemArmourCheckPenalty(oItem) == 0) return;
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_BALANCE, 1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_CLIMB, 1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_HIDE, 1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_MOVE_SILENTLY, 1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_PICK_POCKET, 1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_SET_TRAP, 1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_TUMBLE, 1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_JUMP, 1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
}
|
||||
else if(GetWeaponType(nBase))
|
||||
{
|
||||
ip = ItemPropertyAttackBonus(1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
else if(StringToInt(Get2DACache("prc_craft_gen_it", "Type", nBase)) == PRC_CRAFT_ITEM_TYPE_AMMO)
|
||||
{
|
||||
ip = ItemPropertyAttackBonus(1);
|
||||
ip = TagItemProperty(ip, "Quality_Masterwork");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
|
||||
/* void MakeMasterwork(object oItem)
|
||||
{
|
||||
if(GetPlotFlag(oItem)) return; //sanity check
|
||||
|
||||
int nBase = GetBaseItemType(oItem);
|
||||
if((nBase == BASE_ITEM_ARMOR) ||
|
||||
(nBase == BASE_ITEM_SMALLSHIELD) ||
|
||||
(nBase == BASE_ITEM_LARGESHIELD) ||
|
||||
(nBase == BASE_ITEM_TOWERSHIELD)
|
||||
)
|
||||
{
|
||||
//no armour check penalty here
|
||||
if(GetItemArmourCheckPenalty(oItem) == 0) return;
|
||||
|
||||
IPSafeAddItemProperty(oItem, ItemPropertySkillBonus(SKILL_HIDE, 1) , 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
IPSafeAddItemProperty(oItem, ItemPropertySkillBonus(SKILL_MOVE_SILENTLY, 1), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
IPSafeAddItemProperty(oItem, ItemPropertySkillBonus(SKILL_PICK_POCKET, 1) , 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
@@ -1830,17 +1899,226 @@ void MakeMasterwork(object oItem)
|
||||
}
|
||||
else if(StringToInt(Get2DACache("prc_craft_gen_it", "Type", nBase)) == PRC_CRAFT_ITEM_TYPE_AMMO)
|
||||
{
|
||||
/*
|
||||
int nDamageType = (nBase == BASE_ITEM_BULLET) ? DAMAGE_TYPE_BLUDGEONING : DAMAGE_TYPE_PIERCING;
|
||||
itemproperty ip1 = ItemPropertyDamageBonus(nDamageType, IP_CONST_DAMAGEBONUS_1);
|
||||
*/
|
||||
|
||||
//int nDamageType = (nBase == BASE_ITEM_BULLET) ? DAMAGE_TYPE_BLUDGEONING : DAMAGE_TYPE_PIERCING;
|
||||
//itemproperty ip1 = ItemPropertyDamageBonus(nDamageType, IP_CONST_DAMAGEBONUS_1);
|
||||
|
||||
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(1), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
void MakeAdamantine(object oItem)
|
||||
void MakeAdamantine(object oItem)
|
||||
{
|
||||
if(GetPlotFlag(oItem)) return; //sanity check
|
||||
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
|
||||
{
|
||||
int nBonus = 0;
|
||||
switch(GetItemBaseAC(oItem))
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 3: nBonus = IP_CONST_DAMAGERESIST_1; break;
|
||||
case 4:
|
||||
case 5: nBonus = IP_CONST_DAMAGERESIST_2; break;
|
||||
case 6:
|
||||
case 7:
|
||||
case 8: nBonus = IP_CONST_DAMAGERESIST_3; break;
|
||||
}
|
||||
if(nBonus)
|
||||
{
|
||||
itemproperty ip = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_BLUDGEONING, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Adamantine");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_PIERCING, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Adamantine");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_SLASHING, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Adamantine");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertyMaterial(IP_MATERIAL_ADAMANTINE);
|
||||
ip = TagItemProperty(ip, "Material_Adamantine");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MakeDarkwood(object oItem)
|
||||
{
|
||||
if(GetPlotFlag(oItem)) return; //sanity check
|
||||
|
||||
itemproperty ip = ItemPropertyWeightReduction(IP_CONST_REDUCEDWEIGHT_50_PERCENT);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
int nBase = GetBaseItemType(oItem);
|
||||
if(((nBase == BASE_ITEM_SMALLSHIELD) ||
|
||||
(nBase == BASE_ITEM_LARGESHIELD) ||
|
||||
(nBase == BASE_ITEM_TOWERSHIELD))
|
||||
)
|
||||
{
|
||||
int nBonus = 2;
|
||||
if(nBase == BASE_ITEM_SMALLSHIELD) nBonus = 1;
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_BALANCE, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_CLIMB, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_HIDE, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_MOVE_SILENTLY, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_PICK_POCKET, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_SET_TRAP, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_TUMBLE, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_JUMP, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertyMaterial(IP_MATERIAL_WOOD_DARKWOOD_ZALANTAR);
|
||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
}
|
||||
|
||||
void MakeDragonhide(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
}
|
||||
|
||||
void MakeMithral(object oItem)
|
||||
{
|
||||
if(GetPlotFlag(oItem)) return; //sanity check
|
||||
|
||||
itemproperty ip = ItemPropertyWeightReduction(IP_CONST_REDUCEDWEIGHT_50_PERCENT);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
int nBase = GetBaseItemType(oItem);
|
||||
|
||||
if(GetWeaponType(nBase))
|
||||
{
|
||||
ip = ItemPropertyMaterial(IP_MATERIAL_MITHRAL);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
else if(((nBase == BASE_ITEM_ARMOR) ||
|
||||
(nBase == BASE_ITEM_SMALLSHIELD) ||
|
||||
(nBase == BASE_ITEM_LARGESHIELD) ||
|
||||
(nBase == BASE_ITEM_TOWERSHIELD))
|
||||
)
|
||||
{
|
||||
int nBonus = 3;
|
||||
int nPenalty = GetItemArmourCheckPenalty(oItem);
|
||||
if(nBonus > nPenalty) nBonus = nPenalty;
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_BALANCE, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_CLIMB, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_HIDE, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_MOVE_SILENTLY, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_PICK_POCKET, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_SET_TRAP, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_TUMBLE, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertySkillBonus(SKILL_JUMP, nBonus);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
ip = ItemPropertyMaterial(IP_MATERIAL_MITHRAL);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
|
||||
if(GetItemBaseAC(oItem) == 1)
|
||||
{
|
||||
ip = ItemPropertyArcaneSpellFailure(IP_CONST_ARCANE_SPELL_FAILURE_MINUS_5_PERCENT);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
else
|
||||
{
|
||||
ip = ItemPropertyArcaneSpellFailure(IP_CONST_ARCANE_SPELL_FAILURE_MINUS_10_PERCENT);
|
||||
ip = TagItemProperty(ip, "Material_Mithral");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void MakeColdIron(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
itemproperty ip = ItemPropertyMaterial(IP_MATERIAL_COLD_IRON);
|
||||
ip = TagItemProperty(ip, "Material_ColdIron");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
|
||||
void MakeSilver(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
itemproperty ip = ItemPropertyMaterial(IP_MATERIAL_SILVER);
|
||||
ip = TagItemProperty(ip, "Material_ColdIron");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
|
||||
void MakeMundaneCrystal(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
itemproperty ip = ItemPropertyMaterial(IP_MATERIAL_GEM_CRYSTAL_MUNDANE);
|
||||
ip = TagItemProperty(ip, "Material_MundaneCrystal");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
|
||||
void MakeDeepCrystal(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
itemproperty ip = ItemPropertyMaterial(IP_MATERIAL_GEM_CRYSTAL_DEEP);
|
||||
ip = TagItemProperty(ip, "Material_DeepCrystal");
|
||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
|
||||
/* void MakeAdamantine(object oItem)
|
||||
{
|
||||
if(GetPlotFlag(oItem)) return; //sanity check
|
||||
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
|
||||
@@ -1867,9 +2145,9 @@ void MakeAdamantine(object oItem)
|
||||
IPSafeAddItemProperty(oItem, ipAdamantine, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
void MakeDarkwood(object oItem)
|
||||
/* void MakeDarkwood(object oItem)
|
||||
{
|
||||
if(GetPlotFlag(oItem)) return; //sanity check
|
||||
IPSafeAddItemProperty(oItem, ItemPropertyWeightReduction(IP_CONST_REDUCEDWEIGHT_50_PERCENT), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
@@ -1892,8 +2170,9 @@ void MakeDarkwood(object oItem)
|
||||
IPSafeAddItemProperty(oItem, ipDarkwood, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void MakeDragonhide(object oItem)
|
||||
/* void MakeDragonhide(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
}
|
||||
@@ -1929,35 +2208,40 @@ void MakeMithral(object oItem)
|
||||
IPSafeAddItemProperty(oItem, ipMithral, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void MakeColdIron(object oItem)
|
||||
/* void MakeColdIron(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
itemproperty ipColdIron = ItemPropertyMaterial(IP_MATERIAL_COLD_IRON);
|
||||
IPSafeAddItemProperty(oItem, ipColdIron, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
*/
|
||||
|
||||
void MakeSilver(object oItem)
|
||||
/* void MakeSilver(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
itemproperty ipSilver = ItemPropertyMaterial(IP_MATERIAL_SILVER);
|
||||
IPSafeAddItemProperty(oItem, ipSilver, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
|
||||
void MakeMundaneCrystal(object oItem)
|
||||
*/
|
||||
|
||||
/* void MakeMundaneCrystal(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
itemproperty ipCrystal = ItemPropertyMaterial(IP_MATERIAL_GEM_CRYSTAL_MUNDANE);
|
||||
IPSafeAddItemProperty(oItem, ipCrystal, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
*/
|
||||
|
||||
void MakeDeepCrystal(object oItem)
|
||||
/* void MakeDeepCrystal(object oItem)
|
||||
{
|
||||
//Does nothing so far
|
||||
itemproperty ipDeepCrystal = ItemPropertyMaterial(IP_MATERIAL_GEM_CRYSTAL_DEEP);
|
||||
IPSafeAddItemProperty(oItem, ipDeepCrystal, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
//Creates an item on oOwner, from the baseitemtype and base AC (for armour)
|
||||
object CreateStandardItem(object oOwner, int nBaseItemType, int nBaseAC = -1)
|
||||
{
|
||||
@@ -2985,4 +3269,4 @@ int ITEM_APPR_WEAPON_COLOR_MIDDLE = 1;
|
||||
int ITEM_APPR_WEAPON_COLOR_TOP = 2;
|
||||
*/
|
||||
|
||||
// void main () {}
|
||||
//:: void main () {}
|
||||
|
||||
@@ -498,6 +498,7 @@ effect EffectFatigue(){
|
||||
effect eReturn = EffectAbilityDecrease(ABILITY_STRENGTH, 2);
|
||||
eReturn = EffectLinkEffects(eReturn, EffectAbilityDecrease(ABILITY_DEXTERITY, 2));
|
||||
eReturn = EffectLinkEffects(eReturn, EffectMovementSpeedDecrease(25));
|
||||
eReturn = EffectLinkEffects(eReturn, EffectIcon(EFFECT_ICON_FATIGUE));
|
||||
eReturn = TagEffect(eReturn, "PRCFatigue");
|
||||
return eReturn;
|
||||
}
|
||||
|
||||
@@ -6336,6 +6336,13 @@ const int FEAT_HIDDEN_TALENT_THICKSKIN = 25944;
|
||||
const int FEAT_HIDDEN_TALENT_VIGOR = 25945;
|
||||
const int FEAT_HIDDEN_TALENT_GRIP_IRON = 25946;
|
||||
|
||||
//:: Player's Handbook II feats
|
||||
const int FEAT_COMBAT_FOCUS = -9999;
|
||||
const int FEAT_COMBAT_STABILITY = -9998;
|
||||
const int FEAT_COMBAT_DEFENSE = -9997;
|
||||
const int FEAT_COMBAT_VIGOR = -9996;
|
||||
const int FEAT_COMBAT_AWARENESS = -9995;
|
||||
const int FEAT_COMBAT_STRIKE = -9994;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -797,6 +797,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
|
||||
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.
|
||||
if(nRace == RACIAL_TYPE_GLOURA)
|
||||
@@ -904,8 +905,12 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_UNSEEN_SPELLCASTING_BARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_UNSEEN_SEER, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_VIRTUOSO_SPELLCASTING_BARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oCaster);
|
||||
// if(GetHasFeat(FEAT_VIRTUOSO_SPELLCASTING_BARD, oCaster))
|
||||
// nArcane += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oCaster);
|
||||
if(GetHasFeat(FEAT_VIRTUOSO_SPELLCASTING_BARD, oCaster)
|
||||
&& !(GetRacialType(oCaster) == RACIAL_TYPE_GLOURA && !GetLevelByClass(CLASS_TYPE_BARD, oCaster)))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oCaster);
|
||||
|
||||
|
||||
if(GetHasFeat(FEAT_WWOC_SPELLCASTING_BARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_WAR_WIZARD_OF_CORMYR, oCaster);
|
||||
@@ -960,7 +965,8 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
}
|
||||
//:: End Bard Arcane PrC casting calculations
|
||||
|
||||
if(nCastingClass == CLASS_TYPE_BARD || nCastingClass == CLASS_TYPE_BARD && nRace == RACIAL_TYPE_GLOURA && !GetLevelByClass(CLASS_TYPE_BARD, oCaster))
|
||||
//if(nCastingClass == CLASS_TYPE_BARD || nCastingClass == CLASS_TYPE_BARD && nRace == RACIAL_TYPE_GLOURA && !GetLevelByClass(CLASS_TYPE_BARD, oCaster))
|
||||
if((nCastingClass == CLASS_TYPE_FEY || nCastingClass == CLASS_TYPE_BARD) && nRace == RACIAL_TYPE_GLOURA && !GetLevelByClass(CLASS_TYPE_BARD, oCaster))
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_inc_castlvl >> Found Fey RHD caster (not bard)");
|
||||
|
||||
|
||||
@@ -1572,7 +1572,7 @@ void BarbarianRage(object oPC)
|
||||
if (nLevel > 0)
|
||||
{
|
||||
// Spell Rage: starts at 1st level, +1 use every 5 Rage Mage levels
|
||||
int nUses = 1 + ((nLevel - 1) / 5);
|
||||
int nUses = 1 + (nLevel / 5);
|
||||
|
||||
FeatUsePerDay(oPC, FEAT_SPELL_RAGE, -1, nUses);
|
||||
}
|
||||
|
||||
@@ -488,7 +488,7 @@ void DoNaturalWeaponHB(object oPC = OBJECT_SELF)
|
||||
if(array_exists(oPC, ARRAY_NAT_SEC_WEAP_RESREF)
|
||||
&& !GetIsPolyMorphedOrShifted(oPC))
|
||||
{
|
||||
DoDebug("prc_inc_nat_hb >> DoNaturalWeaponHB: creature has natural secondary weapons");
|
||||
if(DEBUG) DoDebug("prc_inc_nat_hb >> DoNaturalWeaponHB: creature has natural secondary weapons");
|
||||
UpdateSecondaryWeaponSizes(oPC);
|
||||
int i;
|
||||
while(i < array_get_size(oPC, ARRAY_NAT_SEC_WEAP_RESREF))
|
||||
|
||||
@@ -417,7 +417,10 @@ int GetPrCAdjustedClassLevel(int nClass, object oCaster = OBJECT_SELF)
|
||||
// is it arcane, divine or neither?
|
||||
if(GetIsArcaneClass(nClass, oCaster) && nClass != CLASS_TYPE_SUBLIME_CHORD)
|
||||
{
|
||||
if (GetPrimaryArcaneClass(oCaster) == nClass) // adjust for any PrCs
|
||||
if(nClass == CLASS_TYPE_FEY && GetRacialType(oCaster) == RACIAL_TYPE_GLOURA)
|
||||
iTemp = GetArcanePRCLevels(oCaster, nClass);
|
||||
|
||||
else if (GetPrimaryArcaneClass(oCaster) == nClass) // adjust for any PrCs
|
||||
iTemp = GetArcanePRCLevels(oCaster, nClass);
|
||||
}
|
||||
else if(GetIsDivineClass(nClass, oCaster))
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
/* This variable MUST be updated with every new version of the PRC!!! */
|
||||
|
||||
const string PRC_VERSION = "PRC8 4.79";
|
||||
const string PRC_VERSION = "PRC8 4.80";
|
||||
|
||||
/* This variable MUST be updated every time 'assemble_spellbooks.bat' is run!!! */
|
||||
|
||||
@@ -86,6 +86,13 @@
|
||||
* Spell switches *
|
||||
\******************************************************************************/
|
||||
|
||||
/**
|
||||
* Show detailed spell resistance check information to the caster
|
||||
* When enabled, displays the roll vs SR values when checking spell resistance
|
||||
*/
|
||||
const string PRC_SHOW_SR_CHECK_DETAILS = "PRC_SHOW_SR_CHECK_DETAILS";
|
||||
|
||||
|
||||
/** Material Components
|
||||
* Set switch to 1 to activate this
|
||||
* This allows material components in NWN through the materialcomp.2da
|
||||
|
||||
@@ -120,6 +120,10 @@ const int PRC_GEM_PERLEVEL = 6;
|
||||
// Craft Skull Talisman constants
|
||||
const int PRC_SKULL_BASECOST = 7;
|
||||
|
||||
int GetWeaponType(int nBaseItem);
|
||||
|
||||
void RemoveMasterworkProperties(object oItem);
|
||||
|
||||
// * Returns TRUE if an item is a Craft Base Item
|
||||
// * to be used in spellscript that can be cast on items - i.e light
|
||||
int CIGetIsCraftFeatBaseItem( object oItem );
|
||||
@@ -214,6 +218,78 @@ int CICraftCheckCreateInfusion(object oSpellTarget, object oCaster, int nID = 0)
|
||||
/* Function definitions */
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
void RemoveMasterworkProperties(object oItem)
|
||||
{
|
||||
if(DEBUG) DoDebug("RemoveMasterworkProperties() called on: " + DebugObject2Str(oItem));
|
||||
|
||||
int nBase = GetBaseItemType(oItem);
|
||||
if(DEBUG) DoDebug("prc_x2_craft >> RemoveMasterworkProperties(): Item base type: " + IntToString(nBase));
|
||||
|
||||
int nRemoved = 0;
|
||||
|
||||
// For armor/shields: remove only the Quality property, keep skill bonuses
|
||||
if((nBase == BASE_ITEM_ARMOR) ||
|
||||
(nBase == BASE_ITEM_SMALLSHIELD) ||
|
||||
(nBase == BASE_ITEM_LARGESHIELD) ||
|
||||
(nBase == BASE_ITEM_TOWERSHIELD))
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_x2_craft >> RemoveMasterworkProperties(): Processing armor/shield");
|
||||
|
||||
itemproperty ip = GetFirstItemProperty(oItem);
|
||||
while(GetIsItemPropertyValid(ip))
|
||||
{
|
||||
string sTag = GetItemPropertyTag(ip);
|
||||
int nType = GetItemPropertyType(ip);
|
||||
|
||||
if(DEBUG) DoDebug("prc_x2_craft >> RemoveMasterworkProperties(): Found property - Type: " + IntToString(nType) +
|
||||
", Tag: " + sTag +
|
||||
", String: " + DebugIProp2Str(ip));
|
||||
|
||||
if(sTag == "Quality_Masterwork" && nType == ITEM_PROPERTY_QUALITY)
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_x2_craft >> RemoveMasterworkProperties(): Removing Quality property");
|
||||
RemoveItemProperty(oItem, ip);
|
||||
nRemoved++;
|
||||
ip = GetFirstItemProperty(oItem); // Restart iteration
|
||||
continue;
|
||||
}
|
||||
ip = GetNextItemProperty(oItem);
|
||||
}
|
||||
}
|
||||
|
||||
// For weapons/ammo: remove both Quality and Attack Bonus properties
|
||||
if(GetWeaponType(nBase) ||
|
||||
StringToInt(Get2DACache("prc_craft_gen_it", "Type", nBase)) == 4)
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_x2_craft >> RemoveMasterworkProperties(): Processing weapon/ammo");
|
||||
|
||||
itemproperty ip = GetFirstItemProperty(oItem);
|
||||
while(GetIsItemPropertyValid(ip))
|
||||
{
|
||||
string sTag = GetItemPropertyTag(ip);
|
||||
int nType = GetItemPropertyType(ip);
|
||||
|
||||
if(DEBUG) DoDebug("prc_x2_craft >> RemoveMasterworkProperties(): Found property - Type: " + IntToString(nType) +
|
||||
", Tag: " + sTag +
|
||||
", String: " + DebugIProp2Str(ip));
|
||||
|
||||
// Check for both Quality and Attack Bonus with Quality_Masterwork tag
|
||||
if(sTag == "Quality_Masterwork" &&
|
||||
(nType == ITEM_PROPERTY_QUALITY || nType == ITEM_PROPERTY_ATTACK_BONUS))
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_x2_craft >> RemoveMasterworkProperties(): Removing property type " + IntToString(nType));
|
||||
RemoveItemProperty(oItem, ip);
|
||||
nRemoved++;
|
||||
ip = GetFirstItemProperty(oItem); // Restart iteration
|
||||
continue;
|
||||
}
|
||||
ip = GetNextItemProperty(oItem);
|
||||
}
|
||||
}
|
||||
|
||||
if(DEBUG) DoDebug("prc_x2_craft: RemoveMasterworkProperties() completed. Removed " +
|
||||
IntToString(nRemoved) + " properties.");
|
||||
}
|
||||
|
||||
// * Returns the innate level of a spell. If bDefaultZeroToOne is given
|
||||
// * Level 0 spell will be returned as level 1 spells
|
||||
@@ -2416,8 +2492,8 @@ int CIDoCraftItemFromConversation(int nNumber)
|
||||
|
||||
DeleteLocalObject(oPC,"X2_CI_CRAFT_MAJOR");
|
||||
DeleteLocalObject(oPC,"X2_CI_CRAFT_MINOR");
|
||||
|
||||
if (!GetIsObjectValid(oMajor))
|
||||
|
||||
if (!GetIsObjectValid(oMajor))
|
||||
{
|
||||
FloatingTextStrRefOnCreature(83374,oPC); //"Invalid target"
|
||||
DeleteLocalInt(oPC,"X2_CRAFT_SUCCESS");
|
||||
@@ -2472,7 +2548,7 @@ int CIDoCraftItemFromConversation(int nNumber)
|
||||
{
|
||||
oContainer = GetItemPossessedBy(oPC,"x2_it_craftcont");
|
||||
}
|
||||
|
||||
|
||||
// Do the crafting...
|
||||
object oRet = CIUseCraftItemSkill( oPC, nSkill, stItem.sResRef, stItem.nDC, oContainer) ;
|
||||
|
||||
@@ -2481,7 +2557,9 @@ int CIDoCraftItemFromConversation(int nNumber)
|
||||
|
||||
if (GetIsObjectValid(oRet))
|
||||
{
|
||||
// -----------------------------------------------------------------------
|
||||
RemoveMasterworkProperties(oMajor);
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// Copy all item properties from the major object on the resulting item
|
||||
// Through we problably won't use this, its a neat thing to have for the
|
||||
// community
|
||||
@@ -2499,7 +2577,8 @@ int CIDoCraftItemFromConversation(int nNumber)
|
||||
{
|
||||
//TakeGoldFromCreature(stItem.nCost, oPC,TRUE);
|
||||
SpendGP(oPC, stItem.nCost);
|
||||
IPCopyItemProperties(oMajor,oRet);
|
||||
RemoveMasterworkProperties(oMajor);
|
||||
IPCopyItemProperties(oMajor,oRet);
|
||||
}
|
||||
// set success variable for conversation
|
||||
SetLocalInt(oPC,"X2_CRAFT_SUCCESS",TRUE);
|
||||
|
||||
@@ -304,10 +304,31 @@ int PRCDoResistSpell(object oCaster, object oTarget, int nEffCasterLvl=0, float
|
||||
}
|
||||
}
|
||||
|
||||
//:: A tie favors the caster.
|
||||
int nSRValue = PRCGetSpellResistance(oTarget, oCaster);
|
||||
int nD20Roll = d20(1);
|
||||
int nCasterTotal = nEffCasterLvl + nD20Roll + iWeav;
|
||||
|
||||
if (nCasterTotal < nSRValue)
|
||||
nResist = SPELL_RESIST_PASS;
|
||||
|
||||
//:: Optional Detailed SR check to caster
|
||||
if (GetIsPC(oCaster) && nResist != SPELL_RESIST_MANTLE && nResist != SPELL_RESIST_GLOBE && nSRValue > 0 && GetPRCSwitch(PRC_SHOW_SR_CHECK_DETAILS))
|
||||
{
|
||||
string message = nResist == SPELL_RESIST_FAIL ?
|
||||
"Target affected. Roll: " + IntToString(nCasterTotal) + " vs SR: " + IntToString(nSRValue) :
|
||||
"Target resisted. Roll: " + IntToString(nCasterTotal) + " vs SR: " + IntToString(nSRValue) +
|
||||
" (missed by " + IntToString(nSRValue - nCasterTotal) + ")";
|
||||
SendMessageToPC(oCaster, message);
|
||||
}
|
||||
|
||||
//:: Basic pass/fail messages
|
||||
PRCShowSpellResist(oCaster, oTarget, nResist, fDelay);
|
||||
|
||||
// A tie favors the caster.
|
||||
|
||||
/* // A tie favors the caster.
|
||||
if ((nEffCasterLvl + d20(1)+iWeav) < PRCGetSpellResistance(oTarget, oCaster))
|
||||
nResist = SPELL_RESIST_PASS;
|
||||
nResist = SPELL_RESIST_PASS; */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -398,4 +419,6 @@ int CheckSpellfire(object oCaster, object oTarget, int bFriendly = FALSE)
|
||||
|
||||
//absorbed
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//:; void main(){}
|
||||
@@ -1724,7 +1724,7 @@ int IsHiddenTalent(object oPC = OBJECT_SELF)
|
||||
GetHasFeat(FEAT_HIDDEN_TALENT_ELFSIGHT, oPC) ||
|
||||
GetHasFeat(FEAT_HIDDEN_TALENT_EMPATHY, oPC) ||
|
||||
GetHasFeat(FEAT_HIDDEN_TALENT_EMPTYMIND, oPC) ||
|
||||
//GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC) ||
|
||||
GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC) ||
|
||||
GetHasFeat(FEAT_HIDDEN_TALENT_ENTANGLE, oPC) ||
|
||||
GetHasFeat(FEAT_HIDDEN_TALENT_EXPANSION, oPC) ||
|
||||
GetHasFeat(FEAT_HIDDEN_TALENT_FARHAND, oPC) ||
|
||||
@@ -1836,7 +1836,7 @@ int GetHiddenTalentCount(object oPC = OBJECT_SELF)
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_ELFSIGHT, oPC)) nCount++;
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_EMPATHY, oPC)) nCount++;
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_EMPTYMIND, oPC)) nCount++;
|
||||
//if (GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC)) nCount++;
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC)) nCount++;
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_ENTANGLE, oPC)) nCount++;
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_EXPANSION, oPC)) nCount++;
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_FARHAND, oPC)) nCount++;
|
||||
@@ -1889,7 +1889,10 @@ int GetIsHiddenTalentPower(object oPC, int nPower)
|
||||
if(nPower == POWER_ELFSIGHT && GetHasFeat(FEAT_HIDDEN_TALENT_ELFSIGHT, oPC)) return TRUE;
|
||||
if(nPower == POWER_EMPATHY && GetHasFeat(FEAT_HIDDEN_TALENT_EMPATHY, oPC)) return TRUE;
|
||||
if(nPower == POWER_EMPTYMIND && GetHasFeat(FEAT_HIDDEN_TALENT_EMPTYMIND, oPC)) return TRUE;
|
||||
//if(nPower == POWER_ENERGYRAY && GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC)) return TRUE;
|
||||
if(nPower == POWER_ENERGYRAY_FIRE && GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC)) return TRUE;
|
||||
if(nPower == POWER_ENERGYRAY_COLD && GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC)) return TRUE;
|
||||
if(nPower == POWER_ENERGYRAY_ELEC && GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC)) return TRUE;
|
||||
if(nPower == POWER_ENERGYRAY_SONIC && GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC)) return TRUE;
|
||||
if(nPower == POWER_ENTANGLE && GetHasFeat(FEAT_HIDDEN_TALENT_ENTANGLE, oPC)) return TRUE;
|
||||
if(nPower == POWER_EXPANSION && GetHasFeat(FEAT_HIDDEN_TALENT_EXPANSION, oPC)) return TRUE;
|
||||
if(nPower == POWER_FARHAND && GetHasFeat(FEAT_HIDDEN_TALENT_FARHAND, oPC)) return TRUE;
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_inc_spells"
|
||||
//////////////////////////////////////////////////
|
||||
/* Constants */
|
||||
//////////////////////////////////////////////////
|
||||
@@ -572,32 +572,49 @@ int GetMaxPowerCount(object oCreature, int nList)
|
||||
|
||||
int GetHasPower(int nPower, object oCreature = OBJECT_SELF)
|
||||
{
|
||||
// Check MISC list first (for Hidden Talent and similar feats)
|
||||
if(GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_INVALID), oCreature))
|
||||
return TRUE;
|
||||
// Debug output
|
||||
if (DEBUG) DoDebug("GetHasPower: Checking power " + IntToString(nPower));
|
||||
|
||||
// Check if it's a subradial spell first
|
||||
if (GetIsSubradialSpell(nPower))
|
||||
{
|
||||
if(DEBUG) DoDebug("GetHasPower: " + IntToString(nPower) + " is a subradial");
|
||||
int nMasterSpell = GetMasterSpellFromSubradial(nPower);
|
||||
if (nMasterSpell != -1)
|
||||
{
|
||||
if(DEBUG) DoDebug("GetHasPower: Master spell is " + IntToString(nMasterSpell));
|
||||
nPower = nMasterSpell;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Check MISC list first (for Hidden Talent and similar feats)
|
||||
if(GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_INVALID), oCreature))
|
||||
return TRUE;
|
||||
|
||||
if((GetLevelByClass(CLASS_TYPE_PSION, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_PSION), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_PSYWAR, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_PSYWAR), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_PSYCHIC_ROGUE), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_WILDER, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_WILDER), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_FIST_OF_ZUOKEN, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_FIST_OF_ZUOKEN), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_WARMIND, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_WARMIND), oCreature)
|
||||
)
|
||||
// add new psionic classes here
|
||||
)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
if((GetLevelByClass(CLASS_TYPE_PSION, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_PSION), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_PSYWAR, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_PSYWAR), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_PSYCHIC_ROGUE), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_WILDER, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_WILDER), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_FIST_OF_ZUOKEN, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_FIST_OF_ZUOKEN), oCreature)
|
||||
) ||
|
||||
(GetLevelByClass(CLASS_TYPE_WARMIND, oCreature)
|
||||
&& GetHasFeat(GetClassFeatFromPower(nPower, CLASS_TYPE_WARMIND), oCreature)
|
||||
)
|
||||
// add new psionic classes here
|
||||
)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
string DebugListKnownPowers(object oCreature)
|
||||
|
||||
@@ -557,6 +557,9 @@ void _ManifestationHB(object oManifester, location lManifester, object oMfToken)
|
||||
{
|
||||
if(DEBUG) DoDebug("_ManifestationHB(): Manifester moved or lost concentration, destroying token");
|
||||
_DestroyManifestationToken(oManifester, oMfToken);
|
||||
|
||||
//:: Clean up variables
|
||||
_CleanManifestationVariables(oManifester);
|
||||
|
||||
// Inform manifester
|
||||
FloatingTextStrRefOnCreature(16828435, oManifester, FALSE); // "You have lost concentration on the power you were attempting to manifest!"
|
||||
@@ -810,6 +813,25 @@ struct manifestation EvaluateManifestation(object oManifester, object oTarget, s
|
||||
manif.bCanManifest = FALSE;
|
||||
}
|
||||
|
||||
// Check defensive manifestation BEFORE PP deduction
|
||||
if(GetLocalInt(oManifester, "PRC_DefensiveManifestActive"))
|
||||
{
|
||||
int nPowerLevel = GetPowerLevel(oManifester);
|
||||
int nDC = 15 + nPowerLevel;
|
||||
|
||||
if(!GetPRCIsSkillSuccessful(oManifester, SKILL_CONCENTRATION, nDC))
|
||||
{
|
||||
// Failed - deduct PP and prevent manifestation
|
||||
LosePowerPoints(oManifester, manif.nPPCost, TRUE);
|
||||
PayMetapsionicsFocuses(manif);
|
||||
manif.bCanManifest = FALSE;
|
||||
SendMessageToPC(oManifester, "Defensive manifestation concentration check failed.");
|
||||
return manif;
|
||||
}
|
||||
|
||||
manif.bDefensive = TRUE;
|
||||
}
|
||||
|
||||
// Psi-like abilities ignore PP costs and metapsi
|
||||
if(!bIsPsiLike)
|
||||
{
|
||||
@@ -820,7 +842,7 @@ struct manifestation EvaluateManifestation(object oManifester, object oTarget, s
|
||||
PayMetapsionicsFocuses(manif);
|
||||
}
|
||||
|
||||
if(GetLocalInt(oManifester, "PRC_DefensiveManifestActive"))
|
||||
/* if(GetLocalInt(oManifester, "PRC_DefensiveManifestActive"))
|
||||
{
|
||||
// Concentration check (DC 15 + power level)
|
||||
int nPowerLevel = GetPowerLevel(oManifester);
|
||||
@@ -837,7 +859,7 @@ struct manifestation EvaluateManifestation(object oManifester, object oTarget, s
|
||||
// Set defensive flag for any other systems that need it
|
||||
SendMessageToPC(oManifester, "Defensive manifestion concentration check successful.");
|
||||
manif.bDefensive = TRUE;
|
||||
}
|
||||
} */
|
||||
|
||||
//* APPLY SIDE-EFFECTS THAT RESULT FROM SUCCESSFULL MANIFESTATION HERE *//
|
||||
// Psicraft for all those who can see
|
||||
@@ -1118,4 +1140,4 @@ struct manifestation EvaluateDiaDragChannel(object oManifester, object oTarget,
|
||||
}
|
||||
|
||||
// Test main
|
||||
//void main(){}
|
||||
//:: void main(){}
|
||||
|
||||
@@ -327,8 +327,25 @@ int ArcaneSpellFailure(object oCaster, int nCastingClass, int nSpellLevel, int n
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
// Hexblade can cast in light/medium armour and while using small shield.
|
||||
else if(nCastingClass == CLASS_TYPE_HEXBLADE)
|
||||
|
||||
// Hexblade can cast in light armour only.
|
||||
else if(nCastingClass == CLASS_TYPE_HEXBLADE)
|
||||
{
|
||||
//armors
|
||||
switch(nAC)
|
||||
{
|
||||
case 1: nASF -= 5; break; //light
|
||||
case 2: nASF -= 10; break; //light
|
||||
case 3: nASF -= 20; break; //light
|
||||
case 4: nASF = bBattleCaster ? 0 : nASF; break; //medium with Battlecaster
|
||||
case 5: nASF = bBattleCaster ? 0 : nASF; break; //medium with Battlecaster
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
// WRONG: Hexblade can cast in light/medium armour and while using small shield.
|
||||
//:: RIGHT: Hexblades are proficient with all simple and martial weapons, and with light armor but not with shields.
|
||||
/* else if(nCastingClass == CLASS_TYPE_HEXBLADE)
|
||||
{
|
||||
//shields
|
||||
if(GetBaseItemType(oShield) == BASE_ITEM_SMALLSHIELD) nASF -= 5;
|
||||
@@ -345,7 +362,7 @@ int ArcaneSpellFailure(object oCaster, int nCastingClass, int nSpellLevel, int n
|
||||
case 8: nASF -= bBattleCaster ? 45 : 0; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
} */
|
||||
// Bards cannot cast in light armour and while using small shield in 3e
|
||||
/* else if(nCastingClass == CLASS_TYPE_BARD)
|
||||
{
|
||||
@@ -2161,10 +2178,35 @@ int PRCSpellEffects(object oCaster, object oTarget, int nSpellID, int nSpellLeve
|
||||
{
|
||||
// Pnp Tensers Transformation
|
||||
if(GetPRCSwitch(PRC_PNP_TENSERS_TRANSFORMATION))
|
||||
{
|
||||
{
|
||||
if(GetHasSpellEffect(SPELL_TENSERS_TRANSFORMATION, oCaster))
|
||||
{
|
||||
// Allow potions - they are not spell trigger/completion items
|
||||
object oSpellCastItem = PRCGetSpellCastItem();
|
||||
if(GetIsObjectValid(oSpellCastItem))
|
||||
{
|
||||
int nItemType = GetBaseItemType(oSpellCastItem);
|
||||
if(nItemType == BASE_ITEM_ENCHANTED_POTION
|
||||
|| nItemType == BASE_ITEM_POTIONS)
|
||||
{
|
||||
// Continue with other checks
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE; // Block other magic items
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE; // Block regular spellcasting
|
||||
}
|
||||
}
|
||||
}
|
||||
/* {
|
||||
if(GetHasSpellEffect(SPELL_TENSERS_TRANSFORMATION, oCaster))
|
||||
return FALSE;
|
||||
}
|
||||
} */
|
||||
|
||||
|
||||
// Gaseous Form check
|
||||
if(GetHasSpellEffect(SPELL_GASEOUS_FORM, oCaster))
|
||||
@@ -3757,4 +3799,4 @@ int X2PreSpellCastCode2()
|
||||
|
||||
|
||||
// Test main
|
||||
//::void main(){}
|
||||
//:: void main(){}
|
||||
@@ -166,23 +166,36 @@ void main()
|
||||
string sFeatID;
|
||||
int added = 0;
|
||||
|
||||
for(i = 14001; i < 14260 ; i++)
|
||||
for(i = 14001; i < 14351 ; i++)
|
||||
{
|
||||
// Skip blank IDs between 14266 and 14329
|
||||
if(i >= 14266 && i < 14330)
|
||||
continue;
|
||||
|
||||
nPowerLevel = StringToInt(Get2DACache("spells", "Innate", i));
|
||||
if(nPowerLevel > nMaxLevel)
|
||||
break;
|
||||
continue;
|
||||
|
||||
string sName = GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", i)));
|
||||
|
||||
if(sName != "")
|
||||
{
|
||||
if (GetHasPower(i, oMeldshaper))
|
||||
{
|
||||
if(SORT) AddToTempList(oMeldshaper, sName, i);
|
||||
else AddChoice(sName, i, oMeldshaper);
|
||||
added++;
|
||||
}
|
||||
}
|
||||
|
||||
// Check if it's a regular power or a subradial
|
||||
int bHasPower = GetHasPower(i, oMeldshaper);
|
||||
if (!bHasPower && GetIsSubradialSpell(i))
|
||||
{
|
||||
// For subradials, check if they know the master spell
|
||||
int nMasterSpell = GetMasterSpellFromSubradial(i);
|
||||
if (nMasterSpell != -1)
|
||||
{
|
||||
bHasPower = GetHasPower(nMasterSpell, oMeldshaper);
|
||||
}
|
||||
}
|
||||
|
||||
if (bHasPower)
|
||||
{
|
||||
if(SORT) AddToTempList(oMeldshaper, sName, i);
|
||||
else AddChoice(sName, i, oMeldshaper);
|
||||
added++;
|
||||
}
|
||||
}
|
||||
|
||||
if(SORT)
|
||||
|
||||
161
nwn/nwnprc/trunk/psionics/ft_hidntalent_ft.nss
Normal file
161
nwn/nwnprc/trunk/psionics/ft_hidntalent_ft.nss
Normal file
@@ -0,0 +1,161 @@
|
||||
//:://////////////////////////////////////////////////////////////////
|
||||
//:: Hidden Talent
|
||||
//:: ft_hidntalent_ft
|
||||
//:://////////////////////////////////////////////////////////////////
|
||||
/** @file
|
||||
This allows you to pick a hidden talent @ 1st level
|
||||
|
||||
@original author Fencas
|
||||
@date Created - 2025-01-12
|
||||
|
||||
@revised by Jaysyn (for Hidden Talent)
|
||||
@date Revised - 2025-01-30 07:42:03
|
||||
*/
|
||||
//:://////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "inc_dynconv"
|
||||
#include "prc_inc_function"
|
||||
#include "NW_I0_GENERIC"
|
||||
#include "inc_persist_loca"
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Constant Definitions
|
||||
//////////////////////////////////////////////////
|
||||
const int STAGE_SELECT_ABIL = 0;
|
||||
const int STAGE_CONFIRMATION = 1;
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Main Function
|
||||
//////////////////////////////////////////////////
|
||||
void main()
|
||||
{
|
||||
object oPC = GetPCSpeaker();
|
||||
object oSkin = GetPCSkin(oPC);
|
||||
int nRow;
|
||||
int nValue = GetLocalInt(oPC, DYNCONV_VARIABLE);
|
||||
int nStage = GetStage(oPC);
|
||||
int nLevel = GetPersistantLocalInt(oPC, "HiddenTalentCheck");
|
||||
|
||||
// Abort if DynConv_Var is not set properly
|
||||
if (nValue == 0)
|
||||
{
|
||||
if (DEBUG) DoDebug("ft_hidntalent_ft: Aborting due to error.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Conversation Setup Stage
|
||||
if (nValue == DYNCONV_SETUP_STAGE)
|
||||
{
|
||||
if (!GetIsStageSetUp(nStage, oPC))
|
||||
{
|
||||
if (nStage == STAGE_SELECT_ABIL)
|
||||
{
|
||||
// --- Step 1: Mark Already Selected Hidden Talents ---
|
||||
int nStartFeat = 25901;
|
||||
int nEndFeat = 25946;
|
||||
|
||||
effect eEffect = GetFirstEffect(oPC);
|
||||
while (GetIsEffectValid(eEffect))
|
||||
{
|
||||
string sTag = GetEffectTag(eEffect);
|
||||
// Check if effect tag matches Hidden Talent pattern
|
||||
if(GetStringLeft(sTag, 13) == "HiddenTalent_")
|
||||
{
|
||||
int nFeatID = StringToInt(GetSubString(sTag, 13, GetStringLength(sTag) - 13));
|
||||
SetLocalInt(oPC, "HiddenTalent_" + IntToString(nFeatID), 1);
|
||||
}
|
||||
eEffect = GetNextEffect(oPC);
|
||||
}
|
||||
|
||||
// --- Step 2: Display Available Feats ---
|
||||
SetHeader("Choose a Hidden Talent:");
|
||||
|
||||
for (nRow = nStartFeat; nRow <= nEndFeat; nRow++)
|
||||
{
|
||||
string sTextRef = Get2DAString("feat", "FEAT", nRow);
|
||||
string sName = GetStringByStrRef(StringToInt(sTextRef));
|
||||
if(sName == "") sName = "Power " + IntToString(nRow);
|
||||
|
||||
if (!GetHasFeat(nRow, oPC) && !GetLocalInt(oPC, "HiddenTalent_" + IntToString(nRow)))
|
||||
{
|
||||
AddChoice(sName, nRow, oPC);
|
||||
}
|
||||
}
|
||||
|
||||
SetDefaultTokens();
|
||||
MarkStageSetUp(STAGE_SELECT_ABIL, oPC);
|
||||
}
|
||||
else if (nStage == STAGE_CONFIRMATION)
|
||||
{
|
||||
int nChoice = GetLocalInt(oPC, "HiddenTalentChoice");
|
||||
string sFeatName = GetStringByStrRef(StringToInt(Get2DAString("feat", "FEAT", nChoice)));
|
||||
if(sFeatName == "") sFeatName = "Power " + IntToString(nChoice);
|
||||
|
||||
AddChoice(GetStringByStrRef(4752), TRUE); // "Yes"
|
||||
AddChoice(GetStringByStrRef(4753), FALSE); // "No"
|
||||
|
||||
string sText = "You have selected " + sFeatName + ".\n";
|
||||
sText += "Is this correct?";
|
||||
|
||||
SetHeader(sText);
|
||||
MarkStageSetUp(STAGE_CONFIRMATION, oPC);
|
||||
}
|
||||
}
|
||||
|
||||
// Token Setup
|
||||
SetupTokens();
|
||||
}
|
||||
else if (nValue == DYNCONV_EXITED)
|
||||
{
|
||||
if (DEBUG) DoDebug("ft_hidntalent_ft: Running exit handler");
|
||||
DeleteLocalInt(oPC, "HiddenTalentChoice");
|
||||
}
|
||||
else if (nValue == DYNCONV_ABORTED)
|
||||
{
|
||||
if (DEBUG) DoDebug("ft_hidntalent_ft: ERROR: Conversation abort section run");
|
||||
DeleteLocalInt(oPC, "HiddenTalentChoice");
|
||||
}
|
||||
// --- Stage Selection & Feat Application ---
|
||||
else
|
||||
{
|
||||
int nChoice = GetChoice(oPC);
|
||||
int nLevel = GetHitDice(oPC);
|
||||
|
||||
if (nStage == STAGE_SELECT_ABIL)
|
||||
{
|
||||
// Store the choice and go to confirmation
|
||||
SetLocalInt(oPC, "HiddenTalentChoice", nChoice);
|
||||
nStage = STAGE_CONFIRMATION;
|
||||
MarkStageNotSetUp(STAGE_SELECT_ABIL, oPC);
|
||||
}
|
||||
else if (nStage == STAGE_CONFIRMATION)
|
||||
{
|
||||
if (nChoice == TRUE) // User confirmed "Yes"
|
||||
{
|
||||
int nFeatChoice = GetLocalInt(oPC, "HiddenTalentChoice");
|
||||
if (nFeatChoice > 0)
|
||||
{
|
||||
effect eBonusFeat = EffectBonusFeat(nFeatChoice);
|
||||
eBonusFeat = UnyieldingEffect(eBonusFeat);
|
||||
eBonusFeat = TagEffect(eBonusFeat, "HiddenTalent_" + IntToString(nFeatChoice));
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
|
||||
}
|
||||
SetPersistantLocalInt(oPC, "HiddenTalentChosen", 1);
|
||||
SetPersistantLocalInt(oPC, "HiddenTalent_" + IntToString(nLevel), 1);
|
||||
DeletePersistantLocalInt(oPC, "HiddenTalentCheck");
|
||||
DeleteLocalInt(oPC, "HiddenTalentChoice");
|
||||
AllowExit(DYNCONV_EXIT_FORCE_EXIT);
|
||||
}
|
||||
else // User chose "No"
|
||||
{
|
||||
nStage = STAGE_SELECT_ABIL;
|
||||
MarkStageNotSetUp(STAGE_SELECT_ABIL, oPC);
|
||||
MarkStageNotSetUp(STAGE_CONFIRMATION, oPC);
|
||||
}
|
||||
}
|
||||
|
||||
if (DEBUG) DoDebug("ft_hidntalent_ft: New stage: " + IntToString(nStage));
|
||||
|
||||
SetStage(nStage, oPC);
|
||||
}
|
||||
}
|
||||
@@ -1,174 +0,0 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Hidden Talent Power Conversation
|
||||
//:: hidden_talent_cv
|
||||
//:://////////////////////////////////////////////
|
||||
/** @file
|
||||
This allows you to choose a psionic power for Hidden Talent feat
|
||||
|
||||
@author Modified from prc_favsoulweap.nss
|
||||
@date Created - 2025.12.14
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_inc_fork"
|
||||
#include "inc_item_props"
|
||||
#include "prc_x2_itemprop"
|
||||
#include "inc_dynconv"
|
||||
#include "psi_inc_psifunc"
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/* Constant defintions */
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
const int STAGE_POWER_CHOICE = 0;
|
||||
const int STAGE_CONFIRMATION = 1;
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/* Aid functions */
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/* Main function */
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
void main()
|
||||
{
|
||||
//object oPC = GetPCSpeaker();
|
||||
object oPC = OBJECT_SELF;
|
||||
/* Get the value of the local variable set by the conversation script calling
|
||||
* this script. Values:
|
||||
* DYNCONV_ABORTED Conversation aborted
|
||||
* DYNCONV_EXITED Conversation exited via the exit node
|
||||
* DYNCONV_SETUP_STAGE System's reply turn
|
||||
* 0 Error - something else called the script
|
||||
* Other The user made a choice
|
||||
*/
|
||||
int nValue = GetLocalInt(oPC, DYNCONV_VARIABLE);
|
||||
// The stage is used to determine the active conversation node.
|
||||
// 0 is the entry node.
|
||||
int nStage = GetStage(oPC);
|
||||
|
||||
if(DEBUG) DoDebug("hidden_talent_cv: Entering Hidden Talent conversation");
|
||||
|
||||
// Check which of the conversation scripts called the scripts
|
||||
if(nValue == 0) // All of them set the DynConv_Var to non-zero value, so something is wrong -> abort
|
||||
return;
|
||||
|
||||
if(nValue == DYNCONV_SETUP_STAGE)
|
||||
{
|
||||
// Check if this stage is marked as already set up
|
||||
// This stops list duplication when scrolling
|
||||
if(!GetIsStageSetUp(nStage, oPC))
|
||||
{
|
||||
// variable named nStage determines the current conversation node
|
||||
// Function SetHeader to set the text displayed to the PC
|
||||
// Function AddChoice to add a response option for the PC. The responses are show in order added
|
||||
if(nStage == STAGE_POWER_CHOICE)
|
||||
{
|
||||
string sHeader1 = "Select a 1st-level psionic power for Hidden Talent.\n";
|
||||
sHeader1 += "This will grant you the ability to manifest this power as a psionic-like ability.";
|
||||
SetHeader(sHeader1);
|
||||
|
||||
// Loop through all Hidden Talent feats (25901-25946)
|
||||
int added = 0;
|
||||
int i;
|
||||
string sFeatName;
|
||||
|
||||
for(i = 25901; i <= 25946; i++)
|
||||
{
|
||||
// Get the feat name from the feats.2da
|
||||
sFeatName = Get2DACache("feats", "NAME", i);
|
||||
if(sFeatName != "" && sFeatName != "****")
|
||||
{
|
||||
// Convert the feat constant name to display name
|
||||
// Remove "FEAT_HIDDEN_TALENT_" and replace underscores with spaces
|
||||
string sDisplayName = GetStringByStrRef(StringToInt(sFeatName));
|
||||
if(sDisplayName == "") sDisplayName = "Power " + IntToString(i);
|
||||
|
||||
AddChoice(sDisplayName, i, oPC);
|
||||
added++;
|
||||
}
|
||||
}
|
||||
|
||||
if(added == 0)
|
||||
{
|
||||
AddChoice("No valid powers found.", 0, oPC);
|
||||
}
|
||||
|
||||
MarkStageSetUp(STAGE_POWER_CHOICE, oPC); // This prevents the setup being run for this stage again until MarkStageNotSetUp is called for it
|
||||
SetDefaultTokens(); // Set the next, previous, exit and wait tokens to default values
|
||||
}
|
||||
else if(nStage == STAGE_CONFIRMATION)//confirmation
|
||||
{
|
||||
int nChoice = GetLocalInt(oPC, "HiddenTalentPower");
|
||||
AddChoice(GetStringByStrRef(4752), TRUE); // "Yes"
|
||||
AddChoice(GetStringByStrRef(4753), FALSE); // "No"
|
||||
|
||||
string sText = "You have selected the Hidden Talent power.\n";
|
||||
sText += "Is this correct?";
|
||||
|
||||
SetHeader(sText);
|
||||
MarkStageSetUp(STAGE_CONFIRMATION, oPC);
|
||||
}
|
||||
}
|
||||
|
||||
// Do token setup
|
||||
SetupTokens();
|
||||
}
|
||||
// End of conversation cleanup
|
||||
else if(nValue == DYNCONV_EXITED)
|
||||
{
|
||||
// End of conversation cleanup
|
||||
DeleteLocalInt(oPC, "HiddenTalentPower");
|
||||
}
|
||||
// Abort conversation cleanup.
|
||||
// NOTE: This section is only run when the conversation is aborted
|
||||
// while aborting is allowed. When it isn't, the dynconvo infrastructure
|
||||
// handles restoring the conversation in a transparent manner
|
||||
else if(nValue == DYNCONV_ABORTED)
|
||||
{
|
||||
// End of conversation cleanup
|
||||
DeleteLocalInt(oPC, "HiddenTalentPower");
|
||||
}
|
||||
// Handle PC responses
|
||||
else
|
||||
{
|
||||
// variable named nChoice is the value of the player's choice as stored when building the choice list
|
||||
// variable named nStage determines the current conversation node
|
||||
int nChoice = GetChoice(oPC);
|
||||
if(nStage == STAGE_POWER_CHOICE)
|
||||
{
|
||||
// Go to this stage next
|
||||
nStage = STAGE_CONFIRMATION;
|
||||
SetLocalInt(oPC, "HiddenTalentPower", nChoice);
|
||||
}
|
||||
else if(nStage == STAGE_CONFIRMATION)//confirmation
|
||||
{
|
||||
if(nChoice == TRUE)
|
||||
{
|
||||
int nFeatID = GetLocalInt(oPC, "HiddenTalentPower");
|
||||
|
||||
// Grant the Hidden Talent feat directly
|
||||
AddSkinFeat(nFeatID, nFeatID, GetPCSkin(oPC), oPC);
|
||||
|
||||
// Mark that Hidden Talent has been chosen
|
||||
SetPersistantLocalInt(oPC, "HiddenTalentChosen", TRUE);
|
||||
|
||||
// And we're all done
|
||||
AllowExit(DYNCONV_EXIT_FORCE_EXIT);
|
||||
}
|
||||
else
|
||||
{
|
||||
nStage = STAGE_POWER_CHOICE;
|
||||
MarkStageNotSetUp(STAGE_POWER_CHOICE, oPC);
|
||||
MarkStageNotSetUp(STAGE_CONFIRMATION, oPC);
|
||||
}
|
||||
|
||||
DeleteLocalInt(oPC, "HiddenTalentPower");
|
||||
}
|
||||
|
||||
// Store the stage value. If it has been changed, this clears out the choices
|
||||
SetStage(nStage, oPC);
|
||||
}
|
||||
}
|
||||
@@ -1,529 +0,0 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Hidden Talent
|
||||
//:: psi_hiddentalent.nss
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Your latent power of psionics flares to life, conferring upon you
|
||||
the designation of a psionic character. As a psionic character,
|
||||
you gain a reserve of 2 power points, and you can take psionic
|
||||
feats, metapsionic feats, and psionic item creation feats. If you
|
||||
have or take a class that grants power points, the power points
|
||||
gained from Hidden Talent are added to your total power point
|
||||
reserve.
|
||||
|
||||
When you take this feat, choose one 1st-level power from any
|
||||
psionic class list. You know this power (it becomes one of your
|
||||
powers known). You can manifest this power with the power points
|
||||
provided by this feat if you have a Charisma score of 11 or higher.
|
||||
If you have no psionic class levels, you are considered a
|
||||
1st-level manifester when manifesting this power. If you have
|
||||
psionic class levels, you can manifest the power at the highest
|
||||
manifester level you have attained. (This is not a manifester
|
||||
level, and it does not add to any manifester levels gained by
|
||||
taking psionic classes.) If you have no psionic class levels,
|
||||
use Charisma to determine how powerful a power you can manifest
|
||||
and how hard those powers are to resist.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jaysyn
|
||||
//:: Created On: 2025-01-29 09:52:24
|
||||
//:://////////////////////////////////////////////
|
||||
#include "prc_feat_const"
|
||||
#include "psi_inc_core"
|
||||
#include "psi_inc_powknown"
|
||||
|
||||
int GetPowerRowID(int nPowerList, int nPower)
|
||||
{
|
||||
string sPowerFile = GetAMSDefinitionFileName(nPowerList);
|
||||
int nCheck = -1;
|
||||
int i;
|
||||
for(i = 0; i < GetPRCSwitch(FILE_END_CLASS_POWER); i++)
|
||||
{
|
||||
nCheck = StringToInt(Get2DACache(sPowerFile, "RealSpellID", i));
|
||||
|
||||
// Find the row ID of the power we need and return it
|
||||
if(nCheck == nPower)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
// this should never trigger
|
||||
return -1;
|
||||
}
|
||||
|
||||
void GrantHiddenTalent(object oPC, int nPowerList, int nFeat, int nPower, string sTag)
|
||||
{
|
||||
if (GetHasFeat(nFeat, oPC) && !GetPersistantLocalInt(oPC, sTag))
|
||||
{
|
||||
if(DEBUG) DoDebug("psi_hiddentalent: Adding power ID " + IntToString(nPower));
|
||||
AddPowerKnown(oPC, nPowerList, GetPowerRowID(nPowerList, nPower), TRUE, 1);
|
||||
SetKnownPowersModifier(oPC, nPowerList, GetKnownPowersModifier(oPC, nPowerList) + 1);
|
||||
SetPersistantLocalInt(oPC, sTag, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = OBJECT_SELF;
|
||||
int nPowerTotal = 1; //:: Can't have more than one Hidden Talent.
|
||||
int nClass = CLASS_TYPE_INVALID;
|
||||
int nPowerList = POWER_LIST_MISC;
|
||||
|
||||
// Determine why this script is running
|
||||
if(GetRunningEvent() != EVENT_ONPLAYERLEVELDOWN)
|
||||
{
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_BIOFEEDBACK, POWER_BIOFEEDBACK, "PRC_HT_BiofeedbackGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_BITE_WOLF, POWER_BITE_WOLF, "PRC_HT_BiteOfTheWolfGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_BOLT, POWER_BOLT, "PRC_HT_BoltGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_BURST, POWER_BURST, "PRC_HT_BurstGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_CALLTOMIND, POWER_CALLTOMIND, "PRC_HT_CallToMindGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_CALL_WEAPONRY, POWER_CALL_WEAPONRY, "PRC_HT_CallWeaponryGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_CHAMELEON, POWER_CHAMELEON, "PRC_HT_ChameleonGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_CLAWS_BEAST, POWER_CLAWS_BEAST, "PRC_HT_ClawsOfTheBeastGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_COMPRESSION, POWER_COMPRESSION, "PRC_HT_CompressionGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_CONCEALTHOUGHT, POWER_CONCEALTHOUGHT, "PRC_HT_ConcealThoughtsGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_CREATESOUND, POWER_CREATESOUND, "PRC_HT_CreateSoundGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_CRYSTALSHARD, POWER_CRYSTALSHARD, "PRC_HT_CrystalShardGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_DAZE, POWER_DAZE, "PRC_HT_DazeGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_DECELERATION, POWER_DECELERATION, "PRC_HT_DecelerationGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_DEFPRECOG, POWER_DEFPRECOG, "PRC_HT_DefensivePrecognitionGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_DEMORALIZE, POWER_DEMORALIZE, "PRC_HT_DemoralizeGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_DISABLE, POWER_DISABLE, "PRC_HT_DisableGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH, POWER_DISSIPATINGTOUCH, "PRC_HT_DissipatingTouchGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_DISTRACT, POWER_DISTRACT, "PRC_HT_DistractGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_ELFSIGHT, POWER_ELFSIGHT, "PRC_HT_ElfSightGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_EMPATHY, POWER_EMPATHY, "PRC_HT_EmpathyGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_EMPTYMIND, POWER_EMPTYMIND, "PRC_HT_EmptyMindGained");
|
||||
//GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_ENERGYRAY, POWER_ENERGYRAY, "PRC_HT_EnergyRayGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_ENTANGLE, POWER_ENTANGLE, "PRC_HT_EntangleGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_EXPANSION, POWER_EXPANSION, "PRC_HT_ExpansionGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_FARHAND, POWER_FARHAND, "PRC_HT_FarHandGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_FORCESCREEN, POWER_FORCESCREEN, "PRC_HT_ForceScreenGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_GREASE, POWER_GREASE, "PRC_HT_GreaseGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_GRIP_IRON, POWER_GRIP_IRON, "PRC_HT_GripIronGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_HAMMER, POWER_HAMMER, "PRC_HT_HammerGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_INERTIALARMOUR, POWER_INERTIALARMOUR, "PRC_HT_InertialArmourGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_MATTERAGITATION, POWER_MATTERAGITATION, "PRC_HT_MatterAgitationGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW, POWER_METAPHYSICAL_CLAW, "PRC_HT_MetaClawGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON, POWER_METAPHYSICAL_WEAPON, "PRC_HT_MetaWeaponGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_MINDTHRUST, POWER_MINDTHRUST, "PRC_HT_MindThrustGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_MYLIGHT, POWER_MYLIGHT, "PRC_HT_MyLightGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_OFFPRECOG, POWER_OFFPRECOG, "PRC_HT_OffPrecogGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_OFFPRESC, POWER_OFFPRESC, "PRC_HT_OffPrescGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_PREVENOM, POWER_PREVENOM, "PRC_HT_PrevenomGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_PREVENOM_WEAPON, POWER_PREVENOM_WEAPON, "PRC_HT_PrevenomWeaponGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_SKATE, POWER_SKATE, "PRC_HT_SkateGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_STOMP, POWER_STOMP, "PRC_HT_StompGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_SYNESTHETE, POWER_SYNESTHETE, "PRC_HT_SynestheteGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_TELEMPATHICPRO, POWER_TELEMPATHICPRO, "PRC_HT_TeleProjGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_THICKSKIN, POWER_THICKSKIN, "PRC_HT_ThickSkinGained");
|
||||
GrantHiddenTalent(oPC, POWER_LIST_MISC, FEAT_HIDDEN_TALENT_VIGOR, POWER_VIGOR, "PRC_HT_VigorGained");
|
||||
}
|
||||
|
||||
else if(GetRunningEvent() == EVENT_ONPLAYERLEVELDOWN)
|
||||
{
|
||||
// Has lost Biofeedback, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BIOFEEDBACK, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Bite of the Wolf, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BITE_WOLF, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Bolt, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_BoltGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BOLT, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_BoltGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Burst, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_BurstGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BURST, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_BurstGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Call to Mind, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_CallToMindGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CALLTOMIND, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_CallToMindGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Call Weaponry, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_CallWeaponryGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CALL_WEAPONRY, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_CallWeaponryGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Chameleon, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_ChameleonGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CHAMELEON, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_ChameleonGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Claws of the Beast, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_ClawsOfTheBeastGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CLAWS_BEAST, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_ClawsOfTheBeastGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Compression, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_CompressionGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_COMPRESSION, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_CompressionGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Conceal Thought, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_ConcealThoughtGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CONCEALTHOUGHT, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_ConcealThoughtGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Create Sound, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_CreateSoundGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CREATESOUND, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_CreateSoundGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Crystal Shard, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_CrystalShardGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CRYSTALSHARD, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_CrystalShardGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Daze, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_DazeGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DAZE, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_DazeGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Deceleration, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_DecelerationGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DECELERATION, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_DecelerationGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Deflection Precognition, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_DeflectionPrecognitionGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DEFPRECOG, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_DeflectionPrecognitionGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Demoralize, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_DemoralizeGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DEMORALIZE, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_DemoralizeGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Disable, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_DisableGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DISABLE, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_DisableGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Dissipating Touch, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_DissipatingTouchGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_DissipatingTouchGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Distract, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_DistractGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DISTRACT, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_DistractGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Elf Sight, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_ElfSightGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_ELFSIGHT, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_ElfSightGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Empathy, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_EmpathyGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_EMPATHY, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_EmpathyGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Empty Mind, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_EmptyMindGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_EMPTYMIND, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_EmptyMindGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Energy Ray, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_EnergyRayGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_EnergyRayGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Entangling Ectoplasm, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_EntangleEctoGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_ENTANGLE, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_EntangleEctoGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Expansion, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_ExpansionGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_EXPANSION, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_ExpansionGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Far Hand, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_FarHandGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_FARHAND, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_FarHandGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Force Screen, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_ForceScreenGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_FORCESCREEN, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_ForceScreenGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Grease, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_GreaseGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_GREASE, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_GreaseGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Hammer, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_HammerGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_HAMMER, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_HammerGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Inertial Armour, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_InertialArmourGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_INERTIALARMOUR, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_InertialArmourGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Matter Agitation, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_MatterAgitationGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_MATTERAGITATION, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_MatterAgitationGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Metaphysical Claw, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_MetaClawGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_MetaClawGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Metaphysical Weapon, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_MetaWeaponGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_MetaWeaponGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Mind Thrust, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_MindThrustGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_MINDTHRUST, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_MindThrustGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost My Light, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_MyLightGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_MYLIGHT, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_MyLightGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Precognition, Offensive, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_OffPrecogGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_OFFPRECOG, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_OffPrecogGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Prescience, Offensive, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_OffPrescGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_OFFPRESC, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_OffPrescGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Prevenom, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_PrevenomGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_PREVENOM, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_PrevenomGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Prevenom Weapon, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_PrevenomWeaponGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_PREVENOM_WEAPON, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_PrevenomWeaponGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Skate, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_SkateGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_SKATE, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_SkateGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Stomp, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_StompGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_STOMP, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_StompGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Synesthete, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_SynestheteGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_SYNESTHETE, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_SynestheteGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Telempathic Projection, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_TeleProjGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_TELEMPATHICPRO, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_TeleProjGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Thicken Skin, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_ThickSkinGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_THICKSKIN, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_ThickSkinGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Vigor, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_VigorGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_VIGOR, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_VigorGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Grip of Iron, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_GripIronGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_GRIP_IRON, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_GripIronGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
|
||||
//:: Remove eventhook if the character no longer has any Hidden Talent feats
|
||||
if(!IsHiddenTalent())
|
||||
RemoveEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_hiddentalent", TRUE, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* #include "psi_inc_core"
|
||||
#include "psi_inc_powknown"
|
||||
|
||||
int GetPowerRowID(int nPowerList, int nPower)
|
||||
{
|
||||
string sPowerFile = GetAMSDefinitionFileName(nPowerList);
|
||||
int nCheck = -1;
|
||||
int i;
|
||||
for(i = 0; i < GetPRCSwitch(FILE_END_CLASS_POWER) ; i++)
|
||||
{
|
||||
nCheck = StringToInt(Get2DACache(sPowerFile, "RealSpellID", i));
|
||||
|
||||
// Find the row ID of the power we need and return it
|
||||
if(nCheck == nPower)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
|
||||
}
|
||||
// this should never trigger
|
||||
return -1;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = OBJECT_SELF;
|
||||
int nPowerList = GetPrimaryPsionicClass(oPC);
|
||||
int nPowerTotal = GetKnownPowersModifier(oPC, nPowerList);
|
||||
|
||||
// Determine why this script is running
|
||||
if(GetRunningEvent() == EVENT_ONPLAYERLEVELUP)
|
||||
{
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_BIOFEEDBACK, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained"))
|
||||
{
|
||||
if(DEBUG) DoDebug("psi_hiddentalent: Adding Biofeedback");
|
||||
AddPowerKnown(oPC, nPowerList, GetPowerRowID(nPowerList, POWER_BIOFEEDBACK), TRUE, GetHitDice(oPC));
|
||||
SetKnownPowersModifier(oPC, nPowerList, ++nPowerTotal);
|
||||
SetPersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained", TRUE);
|
||||
}
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_BITE_WOLF, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained"))
|
||||
{
|
||||
if(DEBUG) DoDebug("psi_hiddentalent: Adding Bite of the Wolf");
|
||||
AddPowerKnown(oPC, nPowerList, GetPowerRowID(nPowerList, POWER_BITEWOLF), TRUE, GetHitDice(oPC));
|
||||
SetKnownPowersModifier(oPC, nPowerList, ++nPowerTotal);
|
||||
SetPersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained", TRUE);
|
||||
}
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_BOLT, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_BoltGained"))
|
||||
{
|
||||
if(DEBUG) DoDebug("psi_hiddentalent: Adding Bolt");
|
||||
AddPowerKnown(oPC, nPowerList, GetPowerRowID(nPowerList, POWER_BOLT), TRUE, GetHitDice(oPC));
|
||||
SetKnownPowersModifier(oPC, nPowerList, ++nPowerTotal);
|
||||
SetPersistantLocalInt(oPC, "PRC_HT_BoltGained", TRUE);
|
||||
}
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_BURST, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_BurstGained"))
|
||||
{
|
||||
if(DEBUG) DoDebug("psi_hiddentalent: Adding Burst");
|
||||
AddPowerKnown(oPC, nPowerList, GetPowerRowID(nPowerList, POWER_BURST), TRUE, GetHitDice(oPC));
|
||||
SetKnownPowersModifier(oPC, nPowerList, ++nPowerTotal);
|
||||
SetPersistantLocalInt(oPC, "PRC_HT_BurstGained", TRUE);
|
||||
}
|
||||
if (GetHasFeat(FEAT_HIDDEN_TALENT_CALLTOMIND, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_CallToMindGained"))
|
||||
{
|
||||
if(DEBUG) DoDebug("psi_hiddentalent: Adding Call To Mind");
|
||||
AddPowerKnown(oPC, nPowerList, GetPowerRowID(nPowerList, POWER_CALLTOMIND), TRUE, GetHitDice(oPC));
|
||||
SetKnownPowersModifier(oPC, nPowerList, ++nPowerTotal);
|
||||
SetPersistantLocalInt(oPC, "PRC_HT_CallToMindGained", TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Hook to OnLevelDown to remove the power slots granted here
|
||||
AddEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_hiddentalent", TRUE, FALSE);
|
||||
}
|
||||
else if(GetRunningEvent() == EVENT_ONPLAYERLEVELDOWN)
|
||||
{
|
||||
// Has lost Biofeedback, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BIOFEEDBACK, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Bolt, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BITE_WOLF, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
// Has lost Bolt, but the slot is still present
|
||||
if(GetPersistantLocalInt(oPC, "PRC_HT_BoltGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BOLT, oPC))
|
||||
{
|
||||
DeletePersistantLocalInt(oPC, "PRC_HT_BoltGained");
|
||||
SetKnownPowersModifier(oPC, nPowerList, --nPowerTotal);
|
||||
}
|
||||
|
||||
// Remove eventhook if the character no longer has any Hidden Talent feats
|
||||
if(!IsHiddenTalent)
|
||||
RemoveEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_hiddentalent", TRUE, FALSE);
|
||||
}
|
||||
} */
|
||||
@@ -58,9 +58,11 @@ void main()
|
||||
if(manif.bCanManifest)
|
||||
{
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_MAGICAL_VISION);
|
||||
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oManifester, 4.0f, FALSE);
|
||||
|
||||
SetIdentified(oTarget, TRUE);
|
||||
SetIdentified(oTarget, TRUE);
|
||||
|
||||
AssignCommand(oManifester, ActionExamine(oTarget));
|
||||
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 4.5f, FALSE);
|
||||
}
|
||||
}
|
||||
@@ -1,125 +0,0 @@
|
||||
//:://////////////////////////////////////////////////////////////////
|
||||
//:: Hidden Talen
|
||||
//:: ft_hidntalent_ft
|
||||
//:://////////////////////////////////////////////////////////////////
|
||||
/** @file
|
||||
THis allows you to pick a hidden talent @ 1st level
|
||||
|
||||
@original author Fencas
|
||||
@date Created - 2025-01-12
|
||||
|
||||
@revised by Jaysyn (for Hidden Talent)
|
||||
@date Revised - 2025-01-30 07:42:03
|
||||
*/
|
||||
//:://////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "inc_dynconv"
|
||||
#include "prc_inc_function"
|
||||
#include "NW_I0_GENERIC"
|
||||
#include "inc_persist_loca"
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Constant Definitions
|
||||
//////////////////////////////////////////////////
|
||||
const int STAGE_SELECT_ABIL = 0;
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// Main Function
|
||||
//////////////////////////////////////////////////
|
||||
void main()
|
||||
{
|
||||
object oPC = GetPCSpeaker();
|
||||
object oSkin = GetPCSkin(oPC);
|
||||
int nRow;
|
||||
int nValue = GetLocalInt(oPC, DYNCONV_VARIABLE);
|
||||
int nStage = GetStage(oPC);
|
||||
int nLevel = GetPersistantLocalInt(oPC, "HiddenTalentCheck");
|
||||
|
||||
// Abort if DynConv_Var is not set properly
|
||||
if (nValue == 0)
|
||||
{
|
||||
if (DEBUG) DoDebug("ft_hidntalent_ft: Aborting due to error.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Conversation Setup Stage
|
||||
if (nValue == DYNCONV_SETUP_STAGE)
|
||||
{
|
||||
if (!GetIsStageSetUp(nStage, oPC))
|
||||
{
|
||||
if (nStage == STAGE_SELECT_ABIL)
|
||||
{
|
||||
// --- Step 1: Mark Already Selected Hidden Talents ---
|
||||
int nStartFeat = 25901;
|
||||
int nTotalRows = FEAT_HIDDEN_TALENT_BIOFEEDBACK - FEAT_HIDDEN_TALENT_GRIP_IRON;
|
||||
int nEndFeat = nStartFeat + nTotalRows;
|
||||
|
||||
string sFeat = Get2DAString("feat", "LABEL", nRow);
|
||||
|
||||
effect eEffect = GetFirstEffect(oPC);
|
||||
while (GetIsEffectValid(eEffect))
|
||||
{
|
||||
if (GetEffectTag(eEffect) == "HiddenTalent_" + sFeat)
|
||||
{
|
||||
SetLocalInt(oPC, "HiddenTalent_" + IntToString(nRow), 1);
|
||||
}
|
||||
eEffect = GetNextEffect(oPC);
|
||||
}
|
||||
|
||||
// --- Step 2: Display Available Feats ---
|
||||
SetHeader("Choose a Hidden Talent:");
|
||||
|
||||
for (nRow = nStartFeat; nRow <= nEndFeat; nRow++)
|
||||
{
|
||||
string sName = Get2DAString("feats", "LABEL", nRow);
|
||||
int nFeat = StringToInt(Get2DAString("feats", "FEAT", nRow));
|
||||
|
||||
if (!GetHasFeat(nRow, oPC) && !GetLocalInt(oPC, "HiddenTalent_" + IntToString(nRow)))
|
||||
{
|
||||
AddChoice(sName, nRow, oPC);
|
||||
}
|
||||
}
|
||||
|
||||
SetDefaultTokens();
|
||||
MarkStageSetUp(STAGE_SELECT_ABIL, oPC);
|
||||
}
|
||||
}
|
||||
|
||||
// Token Setup
|
||||
SetupTokens();
|
||||
}
|
||||
else if (nValue == DYNCONV_EXITED)
|
||||
{
|
||||
if (DEBUG) DoDebug("ft_hidntalent_ft: Running exit handler");
|
||||
}
|
||||
else if (nValue == DYNCONV_ABORTED)
|
||||
{
|
||||
if (DEBUG) DoDebug("ft_hidntalent_ft: ERROR: Conversation abort section run");
|
||||
}
|
||||
// --- Stage Selection & Feat Application ---
|
||||
else
|
||||
{
|
||||
int nChoice = GetChoice(oPC);
|
||||
int nLevel = GetHitDice(oPC);
|
||||
|
||||
if (nStage == STAGE_SELECT_ABIL)
|
||||
{
|
||||
SetPersistantLocalInt(oPC, "HiddenTalent_" + IntToString(nLevel), 1);
|
||||
|
||||
if (nChoice > 0)
|
||||
{
|
||||
effect eBonusFeat = EffectBonusFeat(nChoice);
|
||||
eBonusFeat = UnyieldingEffect(eBonusFeat);
|
||||
eBonusFeat = TagEffect(eBonusFeat, "HiddenTalent_" + IntToString(nChoice));
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBonusFeat, oPC);
|
||||
}
|
||||
|
||||
DeletePersistantLocalInt(oPC, "HiddenTalentCheck");
|
||||
AllowExit(DYNCONV_EXIT_FORCE_EXIT);
|
||||
}
|
||||
|
||||
if (DEBUG) DoDebug("ft_hidntalent_ft: New stage: " + IntToString(nStage));
|
||||
|
||||
SetStage(nStage, oPC);
|
||||
}
|
||||
}
|
||||
@@ -806,7 +806,14 @@ void CraftingHB(object oPC, object oItem, itemproperty ip, int nCost, int nXP, s
|
||||
FloatingTextStringOnCreature("Crafting Complete!", oPC);
|
||||
DeleteLocalInt(oPC, PRC_CRAFT_HB);
|
||||
//if(GetIsItemPropertyValid(ip))
|
||||
ApplyProperties(oPC, oItem, ip, nCost, nXP, sFile, nLine);
|
||||
ApplyProperties(oPC, oItem, ip, nCost, nXP, sFile, nLine);
|
||||
|
||||
if(GetLocalInt(oPC, "PRC_CRAFT_REMOVE_MASTERWORK"))
|
||||
{
|
||||
RemoveMasterworkProperties(oItem);
|
||||
DeleteLocalInt(oPC, "PRC_CRAFT_REMOVE_MASTERWORK");
|
||||
}
|
||||
|
||||
if(sFile == "craft_golem")
|
||||
{
|
||||
}
|
||||
@@ -1874,12 +1881,18 @@ void main()
|
||||
int bCheck = FALSE;
|
||||
TakeGoldFromCreature(GetLocalInt(oPC, PRC_CRAFT_COST), oPC, TRUE);
|
||||
if(GetCraftingFeat(oNewItem) != FEAT_CRAFT_ARMS_ARMOR)
|
||||
CopyItem(oNewItem, oPC, TRUE);
|
||||
{
|
||||
SetLocalInt(oPC, "PRC_CRAFT_REMOVE_MASTERWORK", TRUE);
|
||||
CopyItem(oNewItem, oPC, TRUE);
|
||||
}
|
||||
else if(GetIsSkillSuccessful(oPC, nSkill, GetCraftingDC(oNewItem)))
|
||||
{
|
||||
bCheck = (nMaterial & PRC_CRAFT_FLAG_MASTERWORK) ? GetIsSkillSuccessful(oPC, nSkill, 20) : TRUE;
|
||||
if(bCheck)
|
||||
CopyItem(oNewItem, oPC, TRUE);
|
||||
{
|
||||
SetLocalInt(oPC, "PRC_CRAFT_REMOVE_MASTERWORK", TRUE);
|
||||
CopyItem(oNewItem, oPC, TRUE);
|
||||
}
|
||||
}
|
||||
AllowExit(DYNCONV_EXIT_FORCE_EXIT);
|
||||
}
|
||||
@@ -2147,8 +2160,6 @@ void main()
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
case <CONSTANT>:
|
||||
{
|
||||
|
||||
@@ -40,7 +40,7 @@ void ActivateBreath(int nSpellLevel, object oPC = OBJECT_SELF)
|
||||
//if none left, exit
|
||||
if(!bCanUse) return;
|
||||
|
||||
int nDamageType;
|
||||
int nDamageType = DAMAGE_TYPE_FIRE;
|
||||
struct breath DracBreath;
|
||||
|
||||
//Acid
|
||||
|
||||
@@ -287,16 +287,44 @@ void main()
|
||||
}
|
||||
///////////////////////////Draconic Senses//////////////////////////
|
||||
if(GetHasFeat(FEAT_DRACONIC_SENSES, oPC))
|
||||
{
|
||||
{
|
||||
effect eLow = EffectBonusFeat(FEAT_DARKVISION);
|
||||
effect eDark = EffectBonusFeat(FEAT_LOWLIGHTVISION);
|
||||
//effect eUltra = EffectUltravision();
|
||||
effect eUltra = EffectBonusFeat(FEAT_ULTRAVISION);
|
||||
effect eLink;
|
||||
|
||||
if(DEBUG) DoDebug("Entering Draconic Senses Branch. nPower is: "+IntToString(nPower)+".");
|
||||
switch(nPower)
|
||||
{
|
||||
case 1: IPSafeAddItemProperty(oSkin, ItemPropertyBonusFeat(IP_CONST_FEAT_LOWLIGHT_VISION), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); break;
|
||||
case 2: IPSafeAddItemProperty(oSkin, ItemPropertyBonusFeat(IP_CONST_FEAT_LOWLIGHT_VISION), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); break;
|
||||
case 3: IPSafeAddItemProperty(oSkin, ItemPropertyDarkvision(), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); break;
|
||||
//Using Ultravision as the ability is Blindsense, not Blindsight
|
||||
default: IPSafeAddItemProperty(oSkin, ItemPropertyDarkvision(), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(EffectUltravision()), oPC); break;
|
||||
case 1:
|
||||
case 2:
|
||||
{
|
||||
if(DEBUG) DoDebug("Draconic Senses Branch Case 1 & 2: Lowlight vision");
|
||||
//IPSafeAddItemProperty(oSkin, ItemPropertyBonusFeat(IP_CONST_FEAT_LOWLIGHT_VISION), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); break;
|
||||
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, UnyieldingEffect(eLow), oPC);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if(DEBUG) DoDebug("Draconic Senses Branch Case 3: Lowlight vision + Darkvision");
|
||||
//IPSafeAddItemProperty(oSkin, ItemPropertyDarkvision(), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); break;
|
||||
eLink = EffectLinkEffects(eLow, eDark);
|
||||
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, UnyieldingEffect(eLink), oPC);
|
||||
break;
|
||||
}
|
||||
//;: Using Ultravision as the ability is Blindsense, not Blindsight
|
||||
default:
|
||||
{
|
||||
if(DEBUG) DoDebug("Draconic Senses Branch Default: Lowlight vision + Darkvision + Ultravsion");
|
||||
//IPSafeAddItemProperty(oSkin, ItemPropertyDarkvision(), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
eLink = EffectLinkEffects(eLow, eDark);
|
||||
eLink = EffectLinkEffects(eUltra, eLink);
|
||||
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, UnyieldingEffect(eLink), oPC);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(DEBUG) DoDebug("Draconic Senses: Adding skill bonuses.");
|
||||
SetCompositeBonus(oSkin, "DS_Spot", nPower, ITEM_PROPERTY_SKILL_BONUS, SKILL_SPOT);
|
||||
SetCompositeBonus(oSkin, "DS_Search", nPower, ITEM_PROPERTY_SKILL_BONUS, SKILL_SEARCH);
|
||||
SetCompositeBonus(oSkin, "DS_Listen", nPower, ITEM_PROPERTY_SKILL_BONUS, SKILL_LISTEN);
|
||||
|
||||
@@ -78,7 +78,34 @@ void main()
|
||||
// should be handled transparently by the system
|
||||
if(DEBUG) DoDebug("prc_forsake_abil: ERROR: Conversation abort section run");
|
||||
}
|
||||
// Handle PC response
|
||||
// Handle PC response
|
||||
else
|
||||
{
|
||||
int nChoice = GetChoice(oPC);
|
||||
if(DEBUG) DoDebug("prc_forsake_abil: Handling PC response, stage = " + IntToString(nStage) + "; nChoice = " +
|
||||
IntToString(nChoice) + "; choice text = '" + GetChoiceText(oPC) + "'");
|
||||
if(nStage == STAGE_SELECT_ABIL)
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_forsake_abil: nChoice: " + IntToString(nChoice));
|
||||
|
||||
effect eAbility = EffectAbilityIncrease(nChoice, 1);
|
||||
eAbility = UnyieldingEffect(eAbility);
|
||||
eAbility = TagEffect(eAbility, "ForsakerAbilityBoost");
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAbility, oPC); //Give the boost
|
||||
|
||||
SetPersistantLocalInt(oPC, "ForsakerBoost"+IntToString(nClass), nChoice+1); //Register the boost has been given
|
||||
DeletePersistantLocalInt(oPC,"ForsakerBoostCheck");
|
||||
|
||||
// And we're all done
|
||||
AllowExit(DYNCONV_EXIT_FORCE_EXIT);
|
||||
}
|
||||
|
||||
if(DEBUG) DoDebug("prc_forsake_abil: New stage: " + IntToString(nStage));
|
||||
|
||||
// Store the stage value. If it has been changed, this clears out the choices
|
||||
SetStage(nStage, oPC);
|
||||
}
|
||||
/* // Handle PC response
|
||||
else
|
||||
{
|
||||
int nChoice = GetChoice(oPC);
|
||||
@@ -100,5 +127,5 @@ void main()
|
||||
|
||||
// Store the stage value. If it has been changed, this clears out the choices
|
||||
SetStage(nStage, oPC);
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
@@ -121,8 +121,94 @@ void main()
|
||||
// Item is a creature weapon, allow it
|
||||
return;
|
||||
}
|
||||
// Check if the item being equipped is magical
|
||||
// Only check the item being equipped, not entire inventory
|
||||
int bIsMagical = FALSE;
|
||||
int nPropertyCount = 0;
|
||||
itemproperty ipCheck = GetFirstItemProperty(oItem);
|
||||
|
||||
while (GetIsItemPropertyValid(ipCheck))
|
||||
{
|
||||
string sTag = GetItemPropertyTag(ipCheck);
|
||||
int nType = GetItemPropertyType(ipCheck);
|
||||
|
||||
// Check for protected properties
|
||||
if(sTag == "Tag_PRC_OnHitKeeper" ||
|
||||
sTag == "Quality_Masterwork" ||
|
||||
sTag == "Material_Mithral" ||
|
||||
sTag == "Material_Adamantine" ||
|
||||
sTag == "Material_Darkwood" ||
|
||||
sTag == "Material_ColdIron" ||
|
||||
sTag == "Material_MundaneCrystal" ||
|
||||
sTag == "Material_DeepCrystal" ||
|
||||
nType == ITEM_PROPERTY_MATERIAL) // All material properties
|
||||
{
|
||||
// Protected property - skip, don't set bIsMagical
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check for helmet carveout: +1 Concentration only
|
||||
if(GetBaseItemType(oItem) == BASE_ITEM_HELMET &&
|
||||
GetItemPropertyType(ipCheck) == ITEM_PROPERTY_SKILL_BONUS &&
|
||||
GetItemPropertySubType(ipCheck) == SKILL_CONCENTRATION &&
|
||||
GetItemPropertyCostTableValue(ipCheck) == 1)
|
||||
{
|
||||
// This is a +1 Concentration helmet with no other properties, allow it
|
||||
bIsMagical = FALSE;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
bIsMagical = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
ipCheck = GetNextItemProperty(oItem);
|
||||
}
|
||||
|
||||
|
||||
// Check if the item being equipped is magical
|
||||
/* while (GetIsItemPropertyValid(ipCheck))
|
||||
{
|
||||
// Skip protected properties
|
||||
if(GetItemPropertyTag(ipCheck) != "Tag_PRC_OnHitKeeper")
|
||||
{
|
||||
nPropertyCount++;
|
||||
|
||||
// Check for helmet carveout: +1 Concentration only
|
||||
if(GetBaseItemType(oItem) == BASE_ITEM_HELMET &&
|
||||
nPropertyCount == 1 &&
|
||||
GetItemPropertyType(ipCheck) == ITEM_PROPERTY_SKILL_BONUS &&
|
||||
GetItemPropertySubType(ipCheck) == SKILL_CONCENTRATION &&
|
||||
GetItemPropertyCostTableValue(ipCheck) == 1)
|
||||
{
|
||||
// This is a +1 Concentration helmet with no other properties, allow it
|
||||
bIsMagical = FALSE;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
bIsMagical = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
ipCheck = GetNextItemProperty(oItem);
|
||||
} */
|
||||
|
||||
// Apply torch exclusion here (after magical item determination)
|
||||
if(bIsMagical && GetResRef(oItem) == "nw_it_torch001")
|
||||
{
|
||||
bIsMagical = FALSE;
|
||||
}
|
||||
|
||||
// If item is magical, unequip it
|
||||
if(bIsMagical)
|
||||
{
|
||||
AssignCommand(oPC, ClearAllActions(TRUE));
|
||||
AssignCommand(oPC, ActionUnequipItem(oItem));
|
||||
FloatingTextStringOnCreature(GetName(oItem)+" is a magical item!", oPC, FALSE);
|
||||
}
|
||||
|
||||
/* // Check if the item being equipped is magical
|
||||
// Only check the item being equipped, not entire inventory
|
||||
int bIsMagical = FALSE;
|
||||
itemproperty ipCheck = GetFirstItemProperty(oItem);
|
||||
@@ -144,7 +230,7 @@ void main()
|
||||
AssignCommand(oPC, ActionUnequipItem(oItem));
|
||||
FloatingTextStringOnCreature(GetName(oItem)+" is a magical item!", oPC, FALSE);
|
||||
}
|
||||
// If non-magical weapon and Forsaker has DR bypass, add bonuses
|
||||
*/ // If non-magical weapon and Forsaker has DR bypass, add bonuses
|
||||
else if(!bIsMagical && (IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem)) && (nForsakerLvl >= 3))
|
||||
{
|
||||
// Add DR bypass bonuses to non-magical weapons
|
||||
@@ -167,7 +253,8 @@ void main()
|
||||
}
|
||||
}
|
||||
}
|
||||
// We are called from the OnPlayerUnEquipItem eventhook. Clean up Forsaker properties
|
||||
|
||||
// We are called from the OnPlayerUnEquipItem eventhook. Clean up Forsaker properties
|
||||
else if(nEvent == EVENT_ONPLAYERUNEQUIPITEM)
|
||||
{
|
||||
oPC = GetItemLastUnequippedBy();
|
||||
|
||||
@@ -64,8 +64,10 @@ void main()
|
||||
// Handle Hidden Talent
|
||||
if(GetHasFeat(FEAT_HIDDEN_TALENT, oPC) && !GetPersistantLocalInt(oPC, "HiddenTalentChosen"))
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_levelup: Entering Hidden Talent Branch");
|
||||
// Trigger Hidden Talent power selection conversation
|
||||
AssignCommand(oPC, ActionStartConversation(oPC, "hidden_talent_cv", TRUE, FALSE));
|
||||
//DelayCommand(0.5, ExecuteScript("psi_hidntalent", oPC));
|
||||
DelayCommand(1.0f, StartDynamicConversation("ft_hidntalent_ft", oPC, DYNCONV_EXIT_ALLOWED_SHOW_CHOICE, TRUE, FALSE, oPC));
|
||||
}
|
||||
|
||||
// Execute scripts hooked to this event for the player triggering it
|
||||
|
||||
@@ -10,22 +10,32 @@
|
||||
#include "prc_inc_template"
|
||||
#include "prc_inc_factotum"
|
||||
|
||||
void RestoreForsakerAbilities(object oPC)
|
||||
{
|
||||
int nForsakerLevel = GetLevelByClass(CLASS_TYPE_FORSAKER, oPC);
|
||||
int i;
|
||||
|
||||
for(i = 1; i <= nForsakerLevel; i++)
|
||||
{
|
||||
int nAbility = GetPersistantLocalInt(oPC, "ForsakerBoost" + IntToString(i));
|
||||
|
||||
if(nAbility > 0 && nAbility <= 6)
|
||||
{
|
||||
effect eAbility = EffectAbilityIncrease(nAbility - 1, 1);
|
||||
eAbility = SupernaturalEffect(eAbility);
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAbility, oPC);
|
||||
}
|
||||
}
|
||||
void RestoreForsakerAbilities(object oPC)
|
||||
{
|
||||
int nForsakerLevel = GetLevelByClass(CLASS_TYPE_FORSAKER, oPC);
|
||||
int i;
|
||||
|
||||
// Remove existing Forsaker ability effects first
|
||||
effect eLoop = GetFirstEffect(oPC);
|
||||
while(GetIsEffectValid(eLoop))
|
||||
{
|
||||
if(GetEffectTag(eLoop) == "ForsakerAbilityBoost")
|
||||
RemoveEffect(oPC, eLoop);
|
||||
eLoop = GetNextEffect(oPC);
|
||||
}
|
||||
|
||||
for(i = 1; i <= nForsakerLevel; i++)
|
||||
{
|
||||
int nAbility = GetPersistantLocalInt(oPC, "ForsakerBoost" + IntToString(i));
|
||||
|
||||
if(nAbility > 0 && nAbility <= 6)
|
||||
{
|
||||
effect eAbility = EffectAbilityIncrease(nAbility - 1, 1);
|
||||
eAbility = SupernaturalEffect(eAbility);
|
||||
eAbility = TagEffect(eAbility, "ForsakerAbilityBoost"); // Add tag for removal
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAbility, oPC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -400,7 +410,16 @@ void main()
|
||||
|
||||
if(GetHasFeat(FEAT_SPELLFIRE_WIELDER, oPC))
|
||||
SpawnNewThread("PRC_Spellfire", "prc_spellfire_hb", 6.0f, oPC);
|
||||
|
||||
|
||||
// Handle Hidden Talent
|
||||
if(GetHasFeat(FEAT_HIDDEN_TALENT, oPC) && !GetPersistantLocalInt(oPC, "HiddenTalentChosen"))
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_onenter: Entering Hidden Talent Branch");
|
||||
// Trigger Hidden Talent power selection conversation
|
||||
//DelayCommand(0.5, ExecuteScript("psi_hidntalent", oPC));
|
||||
DelayCommand(1.0f, StartDynamicConversation("ft_hidntalent_ft", oPC, DYNCONV_EXIT_ALLOWED_SHOW_CHOICE, TRUE, FALSE, oPC));
|
||||
}
|
||||
|
||||
//if the player logged off while being registered as a cohort
|
||||
if(GetPersistantLocalInt(oPC, "RegisteringAsCohort"))
|
||||
AssignCommand(GetModule(), CheckHB(oPC));
|
||||
|
||||
@@ -69,12 +69,12 @@ void main()
|
||||
effect eImpact = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
|
||||
int nDrain = GetLevelByClass(CLASS_TYPE_SOUL_EATER, oEater) < 7 ? 1 : 2;
|
||||
|
||||
// Sanity check - can't affect self or dead stuff. Also, check PvP limits
|
||||
if(oTarget == oEater ||
|
||||
GetIsDead(oTarget) ||
|
||||
!spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oEater)
|
||||
)
|
||||
return;
|
||||
// Sanity check - can't affect self or dead stuff. Also, check PvP limits
|
||||
if(oTarget == oEater ||
|
||||
GetIsDead(oTarget) ||
|
||||
!spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oEater) ||
|
||||
GetObjectType(oTarget) != OBJECT_TYPE_CREATURE) // NEW: Only affect creatures
|
||||
return;
|
||||
|
||||
// Let the target's AI know about hostile action
|
||||
SignalEvent(oTarget, EventSpellCastAt(oEater, PRCGetSpellId(), TRUE));
|
||||
@@ -243,18 +243,67 @@ void DoDeathDependent(object oEater, object oTarget, string sResRef, string sNam
|
||||
|
||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eSummon, lSpawn);
|
||||
|
||||
object oSlave = CreateObject(OBJECT_TYPE_CREATURE, "soul_wight_test", lSpawn);
|
||||
if(GetIsObjectValid(oSlave))
|
||||
{
|
||||
SetMaxHenchmen(PRCMax(nMaxHenchmen, i)); // Temporarily set the number of max henchmen high enough that we can add another
|
||||
AddHenchman(oEater, oSlave);
|
||||
SetMaxHenchmen(nMaxHenchmen);
|
||||
|
||||
// Level up the wight a bit to make it usefull. Needs to be delayed a bit to let the object creation routines happen first
|
||||
DelayCommand(3.0f, LevelUpWight(GetHitDice(oEater) - 3, oSlave));
|
||||
}
|
||||
else if(DEBUG)
|
||||
DoDebug("prc_sleat_edrain: ERROR: Failed to create wight at location " + DebugLocation2Str(lSpawn));
|
||||
object oSlave = CreateObject(OBJECT_TYPE_CREATURE, "soul_wight_test", lSpawn);
|
||||
if(GetIsObjectValid(oSlave))
|
||||
{
|
||||
// Copy feats using EffectBonusFeat
|
||||
effect eFeatLink;
|
||||
int bHasEffect = FALSE;
|
||||
int nFeat;
|
||||
|
||||
// Iterate through feat range
|
||||
for(nFeat = 1; nFeat < 3000; nFeat++)
|
||||
{
|
||||
if(GetHasFeat(nFeat, oTarget))
|
||||
{
|
||||
// Skip certain combat feats that may not work on NPCs
|
||||
if(nFeat == FEAT_POWER_ATTACK || nFeat == FEAT_IMPROVED_POWER_ATTACK ||
|
||||
nFeat == FEAT_EXPERTISE || nFeat == FEAT_IMPROVED_EXPERTISE)
|
||||
continue;
|
||||
|
||||
// Create bonus feat effect and link it
|
||||
if(!bHasEffect)
|
||||
{
|
||||
eFeatLink = EffectBonusFeat(nFeat);
|
||||
bHasEffect = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
eFeatLink = EffectLinkEffects(eFeatLink, EffectBonusFeat(nFeat));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Apply the linked feat effects if any were found
|
||||
if(bHasEffect)
|
||||
{
|
||||
eFeatLink = TagEffect(eFeatLink, "SOUL_SLAVE_COPIED_FEATS");
|
||||
eFeatLink = UnyieldingEffect(eFeatLink);
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eFeatLink, oSlave);
|
||||
}
|
||||
|
||||
// Copy appearance and portrait (existing code)
|
||||
SetCreatureAppearanceType(oSlave, GetAppearanceType(oTarget));
|
||||
SetPhenoType(GetPhenoType(oTarget), oSlave);
|
||||
|
||||
// Copy portrait (existing code)
|
||||
int nPortraitID = GetPortraitId(oTarget);
|
||||
if(nPortraitID != PORTRAIT_INVALID)
|
||||
{
|
||||
string sPortraitResRef = Get2DACache("portraits", "BaseResRef", nPortraitID);
|
||||
sPortraitResRef = GetStringLeft(sPortraitResRef, GetStringLength(sPortraitResRef)-1);
|
||||
SetPortraitResRef(oSlave, sPortraitResRef);
|
||||
SetPortraitId(oSlave, nPortraitID);
|
||||
}
|
||||
|
||||
// Rest of existing code...
|
||||
SetMaxHenchmen(PRCMax(nMaxHenchmen, i));
|
||||
AddHenchman(oEater, oSlave);
|
||||
SetMaxHenchmen(nMaxHenchmen);
|
||||
DelayCommand(3.0f, LevelUpWight(GetHitDice(oEater) - 3, oSlave));
|
||||
}
|
||||
else if(DEBUG)
|
||||
DoDebug("prc_sleat_edrain: ERROR: Failed to create wight at location " + DebugLocation2Str(lSpawn));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,20 +17,23 @@
|
||||
|
||||
void main()
|
||||
{
|
||||
DoDebug("unarmed_caller: FUNCTION STARTED");
|
||||
DoDebug("unarmed_caller: CALL_UNARMED_FEATS = " + IntToString(GetLocalInt(OBJECT_SELF, CALL_UNARMED_FEATS)));
|
||||
DoDebug("unarmed_caller: CALL_UNARMED_FISTS = " + IntToString(GetLocalInt(OBJECT_SELF, CALL_UNARMED_FISTS)));
|
||||
if (DEBUG)
|
||||
{
|
||||
DoDebug("unarmed_caller: FUNCTION STARTED");
|
||||
DoDebug("unarmed_caller: CALL_UNARMED_FEATS = " + IntToString(GetLocalInt(OBJECT_SELF, CALL_UNARMED_FEATS)));
|
||||
DoDebug("unarmed_caller: CALL_UNARMED_FISTS = " + IntToString(GetLocalInt(OBJECT_SELF, CALL_UNARMED_FISTS)));
|
||||
}
|
||||
|
||||
int bCont = FALSE;
|
||||
if(GetLocalInt(OBJECT_SELF, CALL_UNARMED_FEATS))
|
||||
{
|
||||
DoDebug("unarmed_caller: CALLING UnarmedFeats");
|
||||
if (DEBUG) DoDebug("unarmed_caller: CALLING UnarmedFeats");
|
||||
UnarmedFeats(OBJECT_SELF);
|
||||
bCont = TRUE;
|
||||
}
|
||||
if(GetLocalInt(OBJECT_SELF, CALL_UNARMED_FISTS))
|
||||
{
|
||||
DoDebug("unarmed_caller: CALLING UnarmedFists");
|
||||
if (DEBUG) DoDebug("unarmed_caller: CALLING UnarmedFists");
|
||||
UnarmedFists(OBJECT_SELF);
|
||||
bCont = TRUE;
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -10021,7 +10021,8 @@ Combining the dynamic powers of martial prowess and arcane might, the Hexblade p
|
||||
|
||||
- Alignment Restrictions: non-good only
|
||||
- Hit Die: d10
|
||||
- Proficiencies: A Hexblade gains proficiency with Simple and Martial Weapons, Light and Medium Armour and with Shields.
|
||||
- Proficiencies: Hexblades are proficient with all simple and martial weapons, and with light armor but not with shields.
|
||||
|
||||
- Skill Points: 2+ Int Modifier.
|
||||
|
||||
CLASS FEATURES:
|
||||
@@ -20878,7 +20879,7 @@ Sharess is a paradoxical deity. Originally, she was a war goddess of the Mulhora
|
||||
REQUIREMENTS:
|
||||
|
||||
Alignment: Chaotic good
|
||||
Skills: Diplomacy 7 ranks , Perform 7 ranks
|
||||
Skills: Persuade 7 ranks , Perform 7 ranks
|
||||
Feats: Sacred Vow, Vow of Purity
|
||||
|
||||
CLASS FEATURES:
|
||||
@@ -26873,9 +26874,9 @@ Note: if you take this feat and are not a Kalashtar, you will have to reselect y
|
||||
Use: Selected.</entry>
|
||||
<entry id="50961" lang="en" sex="m">Soulblade Warrior</entry>
|
||||
<entry id="50962" lang="en" sex="m">Type of Feat: Racial
|
||||
Prerequisite: Kalashtar, ability to manifest a mindblade
|
||||
Prerequisite: Kalashtar, Soulknife 6
|
||||
You can manifest a mindblade(using this feat) as a swift action. Your effective level for determining the mind blade enhancement class feature is 2 higher than normal, but you still do not get access to it until level 6 soulknife.
|
||||
Note: if you take this feat and are not a Kalashtar, you will have to reselect your feats. if you take this feat at level 1 and are not Kalashtar, you will be unable to level.
|
||||
Note: if you take this feat and are not a Kalashtar, you will have to reselect your feats.
|
||||
Use: Selected.</entry>
|
||||
<entry id="50963" lang="en" sex="m">Spiritual Force</entry>
|
||||
<entry id="50964" lang="en" sex="m">Type of Feat: Racial
|
||||
@@ -44159,7 +44160,7 @@ Use: Selected.
|
||||
<entry id="55633" lang="en" sex="m">Type of Feat: Draconic
|
||||
Prerequisite: Cha 11, Dragonblood subtype*, Turn Undead
|
||||
|
||||
When you activate this feat, you use up a Turn Undead use for the day and breathe a 15' cone of an element related your draconic ancestry. If your dragon type is not related to one of the 5 main elements, or you are not related to a specific dragon, the damage defaults to fire. The damage is a number of d6 equal to your turning level divided by 2, and the save is a Reflex save vs 10 + your Charisma modifier + your turning level divided by 2.
|
||||
When you activate this feat, you use up a Turn Undead use for the day and channel via your holy symbol a 15' cone of an element related your draconic ancestry. If your dragon type is not related to one of the 5 main elements, or you are not related to a specific dragon, the damage defaults to fire. The damage is a number of d6 equal to your turning level divided by 2, and the save is a Reflex save vs 10 + your Charisma modifier + your turning level divided by 2.
|
||||
Use: Selected.
|
||||
|
||||
*Note: In addition to race, you can gain the dragonblood subtype through the Dragon Devotee or Dragon Disciple classes, or through the Dragontouched or Dragon Heritage feats. If you take this feat and are not dragonblooded, you will be deleveled or unable to level.</entry>
|
||||
@@ -73732,13 +73733,13 @@ Use: Selected</entry>
|
||||
<entry id="200103" lang="en" sex="m">Type of Feat: Exalted
|
||||
You have taken a sacred vow to forswear material possessions.
|
||||
|
||||
You gain bonuses to your Armor Class, ability scores, and saving throws, as well as bonus exalted feats, all depending on your character level.
|
||||
You gain bonuses to your Armor Class, ability scores, and saving throws, as well as bonus exalted feats, all depending on your character's ascetic level.
|
||||
|
||||
To fulfill your vow, you must not own or use any material possessions, with the following exceptions: You may carry and use ordinary (neither magic nor masterwork) simple weapons, usually just a quarterstaff that serves as a walking stick. You may wear simple clothes (usually just a homespun robe, possibly also including a hat and sandals) with no magical properties. You may carry and use a spell component pouch. You may not use any magic item of any sort, though you can benefit from magic items used on your behalf-you can drink a potion of cure serious wounds a friend gives you, receive a spell cast from a wand, scroll, or staff, or ride on your companion's ebony fly. You may not, however, "borrow" a cloak of resistance or any other magic item from a companion for even a single round, nor may you yourself cast a spell from a scroll, wand, or staff.
|
||||
|
||||
FEAT FEATURES:
|
||||
|
||||
Level
|
||||
Ascetic Level
|
||||
1: AC Armor +4
|
||||
2: Exalted Feat
|
||||
3: AC Armor +5
|
||||
@@ -75435,7 +75436,7 @@ Studded Leather Armor
|
||||
Dagger
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(2) Healing Kits
|
||||
(2) Healer's Kits
|
||||
(2) Blank Scrolls</entry>
|
||||
<entry id="211403" lang="en" sex="m">Archivist (Healer)</entry>
|
||||
<entry id="211404" lang="en" sex="m">(STARTING PACKAGE)
|
||||
@@ -75448,7 +75449,7 @@ Scale Mail
|
||||
Quarterstaff
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(2) Healing Kits
|
||||
(2) Healer's Kits
|
||||
(2) Antitoxin</entry>
|
||||
<entry id="211405" lang="en" sex="m">Archivist (Occult Hunter)</entry>
|
||||
<entry id="211406" lang="en" sex="m">(STARTING PACKAGE)
|
||||
@@ -75461,7 +75462,7 @@ Scale Mail
|
||||
Heavy Mace
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(2) Healing Kits
|
||||
(2) Healer's Kits
|
||||
(2) Holy Water</entry>
|
||||
<entry id="211407" lang="en" sex="m">Archvist 4</entry>
|
||||
<entry id="211408" lang="en" sex="m">Archvist 4</entry>
|
||||
@@ -75478,7 +75479,7 @@ Studded Leather
|
||||
Short sword
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(2) Healing Kits
|
||||
(2) Healer's Kits
|
||||
(1) Thieves' Tools</entry>
|
||||
<entry id="211413" lang="en" sex="m">Beguiler (Investigator)</entry>
|
||||
<entry id="211414" lang="en" sex="m">(STARTING PACKAGE)
|
||||
@@ -75491,7 +75492,7 @@ Studded Leather
|
||||
Rapier
|
||||
Shortbow
|
||||
(2) quivers of arrows
|
||||
(2) Healing Kits
|
||||
(2) Healer's Kits
|
||||
(1) Thieves' Tools</entry>
|
||||
<entry id="211415" lang="en" sex="m">Beguiler (Trickster)</entry>
|
||||
<entry id="211416" lang="en" sex="m">(STARTING PACKAGE)
|
||||
@@ -75504,7 +75505,7 @@ Studded Leather
|
||||
Morningstar
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(2) Healing Kits
|
||||
(2) Healer's Kits
|
||||
(1) Thieves' Tools</entry>
|
||||
<entry id="211417" lang="en" sex="m">Beguiler 4</entry>
|
||||
<entry id="211418" lang="en" sex="m">Beguiler 4</entry>
|
||||
@@ -75521,7 +75522,7 @@ Studded Leather Armor
|
||||
Morningstar
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(2) Healing Kits</entry>
|
||||
(2) Healer's Kits</entry>
|
||||
<entry id="211423" lang="en" sex="m">Binder (Trickster)</entry>
|
||||
<entry id="211424" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
@@ -75533,7 +75534,7 @@ Leather Armor
|
||||
Dagger
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(2) Healing Kits
|
||||
(2) Healer's Kits
|
||||
(1) Softfoot
|
||||
(1) Blend Cream</entry>
|
||||
<entry id="211425" lang="en" sex="m">Binder (Second-Rank Warrior)</entry>
|
||||
@@ -75547,17 +75548,48 @@ Scale Mail
|
||||
Spear
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(2) Healing Kits</entry>
|
||||
(2) Healer's Kits</entry>
|
||||
<entry id="211427" lang="en" sex="m">Binder4</entry>
|
||||
<entry id="211428" lang="en" sex="m">Binder4</entry>
|
||||
<entry id="211429" lang="en" sex="m">Binder5</entry>
|
||||
<entry id="211430" lang="en" sex="m">Binder5</entry>
|
||||
<entry id="211431" lang="en" sex="m">Crusader1</entry>
|
||||
<entry id="211432" lang="en" sex="m">Crusader1</entry>
|
||||
<entry id="211433" lang="en" sex="m">Crusader2</entry>
|
||||
<entry id="211434" lang="en" sex="m">Crusader2</entry>
|
||||
<entry id="211435" lang="en" sex="m">Crusader3</entry>
|
||||
<entry id="211436" lang="en" sex="m">Crusader3</entry>
|
||||
<entry id="211431" lang="en" sex="m">Crusader (Default)</entry>
|
||||
<entry id="211432" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
The default Crusader package represents a balanced martial initiate, trained to hold the line while remaining adaptable to changing battlefield conditions.
|
||||
|
||||
Equipment:
|
||||
Torch
|
||||
Scale Mail
|
||||
Large Shield
|
||||
Longsword
|
||||
Shortbow
|
||||
(2) Quivers of arrows
|
||||
(2) Healer's Kits</entry>
|
||||
<entry id="211433" lang="en" sex="m">Crusader (Defender)</entry>
|
||||
<entry id="211434" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
The Defender package is a dedicated line-holder and damage sponge, optimized to remain in the thick of combat and protect allies rather than pursue aggressive kills.
|
||||
|
||||
Equipment:
|
||||
Torch
|
||||
Scale Mail
|
||||
Large Shield
|
||||
Heavy Mace
|
||||
Sling
|
||||
(2) Pouches of bullets
|
||||
(2) Healer's Kits</entry>
|
||||
<entry id="211435" lang="en" sex="m">Crusader (Striker)</entry>
|
||||
<entry id="211436" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
The striker package focuses on aggressive, mobile strikes, relying on charging, pressure, and punishment, not static defense.
|
||||
|
||||
Equipment:
|
||||
Torch
|
||||
Scale Mail
|
||||
Greatsword
|
||||
(1) brace of throwing axes
|
||||
(2) Healer's Kits</entry>
|
||||
<entry id="211437" lang="en" sex="m">Crusader4</entry>
|
||||
<entry id="211438" lang="en" sex="m">Crusader4</entry>
|
||||
<entry id="211439" lang="en" sex="m">Crusader5</entry>
|
||||
@@ -75584,7 +75616,7 @@ Scale Mail
|
||||
Morningstar
|
||||
Sling
|
||||
(2) pouches of bullets
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211453" lang="en" sex="m">Dragon Shaman (Destroyer)</entry>
|
||||
<entry id="211454" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
@@ -75596,7 +75628,7 @@ Scale Mail
|
||||
Large Shield
|
||||
Morningstar
|
||||
50 Throwing Axes
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211455" lang="en" sex="m">Dragon Shaman (Second-Rank Warrior)</entry>
|
||||
<entry id="211456" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
@@ -75608,7 +75640,7 @@ Studded Leather
|
||||
Spear
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211457" lang="en" sex="m">DragonShamanReserve4</entry>
|
||||
<entry id="211458" lang="en" sex="m">DragonShamanReserve4</entry>
|
||||
<entry id="211459" lang="en" sex="m">DragonShamanReserve5</entry>
|
||||
@@ -75633,7 +75665,7 @@ Torch
|
||||
Scale Mail
|
||||
Greataxe
|
||||
50 Throwing Axes
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211473" lang="en" sex="m">Duskblade (Defender)</entry>
|
||||
<entry id="211474" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
@@ -75646,7 +75678,7 @@ Small Shield
|
||||
Dwarven Waraxe
|
||||
Sling
|
||||
(2) Pouches of Bullets
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211475" lang="en" sex="m">Duskblade (Skirmisher)</entry>
|
||||
<entry id="211476" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
@@ -75658,7 +75690,7 @@ Studded Leather Armor
|
||||
Halberd
|
||||
Shortbow
|
||||
(2) Quivers of Arrows
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211477" lang="en" sex="m">Factotum1</entry>
|
||||
<entry id="211478" lang="en" sex="m">Factotum1</entry>
|
||||
<entry id="211479" lang="en" sex="m">Factotum2</entry>
|
||||
@@ -75732,7 +75764,7 @@ Chain Shirt
|
||||
Light Lance
|
||||
Longsword
|
||||
Throwing Axes
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211529" lang="en" sex="m">Knight (Defender)</entry>
|
||||
<entry id="211530" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
@@ -75745,7 +75777,7 @@ Large Shield
|
||||
Dwarven Waraxe
|
||||
Warhammer
|
||||
Throwing Axes
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211531" lang="en" sex="m">Knight (Destroyer)</entry>
|
||||
<entry id="211532" lang="en" sex="m">(STARTING PACKAGE)
|
||||
|
||||
@@ -75962,7 +75994,7 @@ Studded Leather Armor
|
||||
Morningstar
|
||||
Light Crossbow
|
||||
(2) quivers of bolts.
|
||||
(3) Healing Kits</entry>
|
||||
(3) Healer's Kits</entry>
|
||||
<entry id="211729" lang="en" sex="m">Warlock_RESERVE2</entry>
|
||||
<entry id="211730" lang="en" sex="m">Warlock_RESERVE2</entry>
|
||||
<entry id="211731" lang="en" sex="m">Warlock_RESERVE3</entry>
|
||||
|
||||
Binary file not shown.
@@ -1083,9 +1083,10 @@ void CreateSwitchNameArray()
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_CRAFTING_TIME_SCALE);
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_CREATE_INFUSION_CASTER_LEVEL);
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_CREATE_INFUSION_OPTIONAL_HERBS);
|
||||
|
||||
|
||||
//spells
|
||||
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_SHOW_SR_CHECK_DETAILS);
|
||||
|
||||
//shifter
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_WEREWOLF_HYBRID_USE_SHIFTER_SHAPECHANGE);
|
||||
array_set_string(oWP, "Switch_Name", array_get_size(oWP, "Switch_Name"), PRC_WILDSHAPE_ALLOWS_ARMS_SLOT);
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user