2025/12/14 Late Update

Moved Hidden Talent a from a masterfeat to a dynamic conversation.
Updated PRC8 version number.
This commit is contained in:
Jaysyn904
2025-12-14 22:31:30 -05:00
parent 3ebdc0ba62
commit 5f749871cd
12 changed files with 657 additions and 185 deletions

View File

@@ -25901,53 +25901,53 @@
25897 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 25897 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25898 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 25898 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25899 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 25899 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25900 "## START PRC8 HIDDEN TALENT FEATS ##" **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 25900 FEAT_HIDDEN_TALENT 16990417 16990418 ife_psifeats **** **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT 6 0 **** **** 1 **** 0 1
25901 FEAT_HIDDEN_TALENT_BIOFEEDBACK 16990419 16823714 fot_protmagweap 999 **** **** **** **** **** 11 **** **** **** 0 0 1 12 **** 14479 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BIOFEEDBACK 6 0 **** **** 1 **** 0 0 25901 FEAT_HIDDEN_TALENT_BIOFEEDBACK 16990419 16823714 fot_protmagweap 999 **** **** **** **** **** 11 **** **** **** 0 0 0 12 **** 14479 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BIOFEEDBACK 6 0 **** **** **** **** 0 0
25902 FEAT_HIDDEN_TALENT_BITE_WOLF 16990420 16824105 fot_bitewolf 999 **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14421 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BITE_WOLF 6 0 **** **** 1 **** 0 0 25902 FEAT_HIDDEN_TALENT_BITE_WOLF 16990420 16824105 fot_bitewolf 999 **** **** **** **** **** 11 **** **** **** 0 0 0 10 **** 14421 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BITE_WOLF 6 0 **** **** **** **** 0 0
25903 FEAT_HIDDEN_TALENT_BOLT 16990421 16823684 fot_minorseq 999 **** **** **** **** **** 11 **** **** **** 0 0 1 12 **** 14422 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BOLT 6 0 **** **** 1 **** 0 0 25903 FEAT_HIDDEN_TALENT_BOLT 16990421 16823684 fot_minorseq 999 **** **** **** **** **** 11 **** **** **** 0 0 0 12 **** 14422 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BOLT 6 0 **** **** **** **** 0 0
25904 FEAT_HIDDEN_TALENT_BURST 16990422 16823921 fot_exped 999 **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14423 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BURST 6 0 **** **** 1 **** 0 0 25904 FEAT_HIDDEN_TALENT_BURST 16990422 16823921 fot_exped 999 **** **** **** **** **** 11 **** **** **** 0 0 0 10 **** 14423 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BURST 6 0 **** **** **** **** 0 0
25905 FEAT_HIDDEN_TALENT_CALLTOMIND 16990423 16823630 fot_knowalign 999 **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** 14424 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CALLTOMIND 6 0 **** **** 1 **** 0 0 25905 FEAT_HIDDEN_TALENT_CALLTOMIND 16990423 16823630 fot_knowalign 999 **** **** **** **** **** 11 **** **** **** 0 0 0 **** **** 14424 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CALLTOMIND 6 0 **** **** **** **** 0 0
25906 FEAT_HIDDEN_TALENT_CALL_WEAPONRY 16990424 16824111 fot_seeksword 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14425 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CALL_WEAPONRY 6 0 **** **** 1 **** 0 0 25906 FEAT_HIDDEN_TALENT_CALL_WEAPONRY 16990424 16824111 fot_seeksword 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14425 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CALL_WEAPONRY 6 0 **** **** **** **** 0 0
25907 FEAT_HIDDEN_TALENT_CHAMELEON 16990425 16823642 fot_chameleon 999 **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14482 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CHAMELEON 6 0 **** **** 1 **** 0 0 25907 FEAT_HIDDEN_TALENT_CHAMELEON 16990425 16823642 fot_chameleon 999 **** **** **** **** **** 11 **** **** **** 0 0 0 10 **** 14482 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CHAMELEON 6 0 **** **** **** **** 0 0
25908 FEAT_HIDDEN_TALENT_CLAWS_BEAST 16990426 16824107 fot_clawbeast 999 **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14427 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CLAWS_BEAST 6 0 **** **** 1 **** 0 0 25908 FEAT_HIDDEN_TALENT_CLAWS_BEAST 16990426 16824107 fot_clawbeast 999 **** **** **** **** **** 11 **** **** **** 0 0 0 10 **** 14427 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CLAWS_BEAST 6 0 **** **** **** **** 0 0
25909 FEAT_HIDDEN_TALENT_COMPRESSION 16990427 16824120 fot_compress 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14428 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_COMPRESSION 6 0 **** **** 1 **** 0 0 25909 FEAT_HIDDEN_TALENT_COMPRESSION 16990427 16824120 fot_compress 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14428 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_COMPRESSION 6 0 **** **** **** **** 0 0
25910 FEAT_HIDDEN_TALENT_CONCEALTHOUGHT 16990428 16823759 fot_nondetect 999 **** **** **** **** **** 11 **** **** **** 0 0 1 7 **** 14429 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CONCEALTHOUGHT 6 0 **** **** 1 **** 0 0 25910 FEAT_HIDDEN_TALENT_CONCEALTHOUGHT 16990428 16823759 fot_nondetect 999 **** **** **** **** **** 11 **** **** **** 0 0 0 7 **** 14429 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CONCEALTHOUGHT 6 0 **** **** **** **** 0 0
25911 FEAT_HIDDEN_TALENT_CREATESOUND 16990429 16823869 fot_vocal 999 **** **** **** **** **** 11 **** **** **** 0 0 1 11 **** 14431 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CREATESOUND 6 1 **** **** 1 **** 0 0 25911 FEAT_HIDDEN_TALENT_CREATESOUND 16990429 16823869 fot_vocal 999 **** **** **** **** **** 11 **** **** **** 0 0 0 11 **** 14431 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CREATESOUND 6 1 **** **** **** **** 0 0
25912 FEAT_HIDDEN_TALENT_CRYSTALSHARD 16990430 16823632 fot_icestorm 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14432 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CRYSTALSHARD 6 1 **** **** 1 **** 0 0 25912 FEAT_HIDDEN_TALENT_CRYSTALSHARD 16990430 16823632 fot_icestorm 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14432 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CRYSTALSHARD 6 1 **** **** **** **** 0 0
25913 FEAT_HIDDEN_TALENT_DAZE 16990431 16823650 fot_invisstalk 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14433 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DAZE 6 1 **** **** 1 **** 0 0 25913 FEAT_HIDDEN_TALENT_DAZE 16990431 16823650 fot_invisstalk 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14433 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DAZE 6 1 **** **** **** **** 0 0
25914 FEAT_HIDDEN_TALENT_DECELERATION 16990432 16823652 fot_Slow 999 **** **** **** **** **** 11 **** **** **** 0 0 1 1 **** 14434 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DECELERATION 6 1 **** **** 1 **** 0 0 25914 FEAT_HIDDEN_TALENT_DECELERATION 16990432 16823652 fot_Slow 999 **** **** **** **** **** 11 **** **** **** 0 0 0 1 **** 14434 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DECELERATION 6 1 **** **** **** **** 0 0
25915 FEAT_HIDDEN_TALENT_DEFPRECOG 16990433 16823708 fot_shield 999 **** **** **** **** **** 11 **** **** **** 0 0 1 13 **** 14435 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DEFPRECOG 6 0 **** **** 1 **** 0 0 25915 FEAT_HIDDEN_TALENT_DEFPRECOG 16990433 16823708 fot_shield 999 **** **** **** **** **** 11 **** **** **** 0 0 0 13 **** 14435 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DEFPRECOG 6 0 **** **** **** **** 0 0
25916 FEAT_HIDDEN_TALENT_DEMORALIZE 16990434 16823686 fot_lowerres 999 **** **** **** **** **** 11 **** **** **** 0 0 1 8 **** 14436 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DEMORALIZE 6 0 **** **** 1 **** 0 0 25916 FEAT_HIDDEN_TALENT_DEMORALIZE 16990434 16823686 fot_lowerres 999 **** **** **** **** **** 11 **** **** **** 0 0 0 8 **** 14436 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DEMORALIZE 6 0 **** **** **** **** 0 0
25917 FEAT_HIDDEN_TALENT_DISABLE 16990435 16823688 fot_enfeeble 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14438 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISABLE 6 1 **** **** 1 **** 0 0 25917 FEAT_HIDDEN_TALENT_DISABLE 16990435 16823688 fot_enfeeble 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14438 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISABLE 6 1 **** **** **** **** 0 0
25918 FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH 16990436 16823656 fot_chilltouch 999 **** **** **** **** **** 11 **** **** **** 0 0 1 3 **** 14439 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH 6 1 **** **** 1 **** 0 0 25918 FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH 16990436 16823656 fot_chilltouch 999 **** **** **** **** **** 11 **** **** **** 0 0 0 3 **** 14439 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH 6 1 **** **** **** **** 0 0
25919 FEAT_HIDDEN_TALENT_DISTRACT 16990437 16823690 fot_powerblind 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14440 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISTRACT 6 1 **** **** 1 **** 0 0 25919 FEAT_HIDDEN_TALENT_DISTRACT 16990437 16823690 fot_powerblind 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14440 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISTRACT 6 1 **** **** **** **** 0 0
25920 FEAT_HIDDEN_TALENT_ELF_SIGHT 16990438 16823720 fot_infravis 999 **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14370 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ELF_SIGHT 6 0 **** **** 1 **** 0 0 25920 FEAT_HIDDEN_TALENT_ELF_SIGHT 16990438 16823720 fot_infravis 999 **** **** **** **** **** 11 **** **** **** 0 0 0 10 **** 14370 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ELF_SIGHT 6 0 **** **** **** **** 0 0
25921 FEAT_HIDDEN_TALENT_EMPATHY 16990439 16823761 fot_friends 999 **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** 14441 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EMPATHY 6 0 **** **** 1 **** 0 0 25921 FEAT_HIDDEN_TALENT_EMPATHY 16990439 16823761 fot_friends 999 **** **** **** **** **** 11 **** **** **** 0 0 0 **** **** 14441 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EMPATHY 6 0 **** **** **** **** 0 0
25922 FEAT_HIDDEN_TALENT_EMPTYMIND 16990440 16823692 fot_detillusion 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14442 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EMPTYMIND 6 0 **** **** 1 **** 0 0 25922 FEAT_HIDDEN_TALENT_EMPTYMIND 16990440 16823692 fot_detillusion 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14442 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EMPTYMIND 6 0 **** **** **** **** 0 0
25923 FEAT_HIDDEN_TALENT_ENERGYRAY 16990441 16823694 fot_flamearrow 999 **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** 14443 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ENERGYRAY 6 1 **** **** 1 **** 0 0 25923 FEAT_HIDDEN_TALENT_ENERGYRAY 16990441 16823694 fot_flamearrow 999 **** **** **** **** **** 11 **** **** **** 0 0 0 **** **** 14443 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ENERGYRAY 6 1 **** **** **** **** 0 0
25924 FEAT_HIDDEN_TALENT_ENTANGLE 16990442 16823700 fot_entangle 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14448 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ENTANGLE 6 1 **** **** 1 **** 0 0 25924 FEAT_HIDDEN_TALENT_ENTANGLE 16990442 16823700 fot_entangle 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14448 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ENTANGLE 6 1 **** **** **** **** 0 0
25925 FEAT_HIDDEN_TALENT_EXPANSION 16990443 16824128 fot_strength 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14449 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EXPANSION 6 0 **** **** 1 **** 0 0 25925 FEAT_HIDDEN_TALENT_EXPANSION 16990443 16824128 fot_strength 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14449 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EXPANSION 6 0 **** **** **** **** 0 0
25926 FEAT_HIDDEN_TALENT_FARHAND 16990444 16823763 fot_magicshort 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14450 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_FARHAND 6 0 **** **** 1 **** 0 0 25926 FEAT_HIDDEN_TALENT_FARHAND 16990444 16823763 fot_magicshort 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14450 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_FARHAND 6 0 **** **** **** **** 0 0
25927 FEAT_HIDDEN_TALENT_FORCESCREEN 16990445 16823658 fot_polyself 999 **** **** **** **** **** 11 **** **** **** 0 0 1 13 **** 14451 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_FORCESCREEN 6 0 **** **** 1 **** 0 0 25927 FEAT_HIDDEN_TALENT_FORCESCREEN 16990445 16823658 fot_polyself 999 **** **** **** **** **** 11 **** **** **** 0 0 0 13 **** 14451 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_FORCESCREEN 6 0 **** **** **** **** 0 0
25928 FEAT_HIDDEN_TALENT_GREASE 16990446 16823702 fot_Grease 999 **** **** **** **** **** 11 **** **** **** 0 0 1 11 **** 14452 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_GREASE 6 1 **** **** 1 **** 0 0 25928 FEAT_HIDDEN_TALENT_GREASE 16990446 16823702 fot_Grease 999 **** **** **** **** **** 11 **** **** **** 0 0 0 11 **** 14452 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_GREASE 6 1 **** **** **** **** 0 0
25929 FEAT_HIDDEN_TALENT_HAMMER 16990447 16823704 fot_hammer 999 **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14453 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_HAMMER 6 1 **** **** 1 **** 0 0 25929 FEAT_HIDDEN_TALENT_HAMMER 16990447 16823704 fot_hammer 999 **** **** **** **** **** 11 **** **** **** 0 0 0 10 **** 14453 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_HAMMER 6 1 **** **** **** **** 0 0
25930 FEAT_HIDDEN_TALENT_INERTIALARMOUR 16990448 16823660 fot_armor 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14454 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_INERTIALARMOUR 6 0 **** **** 1 **** 0 0 25930 FEAT_HIDDEN_TALENT_INERTIALARMOUR 16990448 16823660 fot_armor 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14454 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_INERTIALARMOUR 6 0 **** **** **** **** 0 0
25931 FEAT_HIDDEN_TALENT_MATTERAGITATION 16990449 16823765 fot_elementfire 999 **** **** **** **** **** 11 **** **** **** 0 0 1 3 **** 14455 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MATTERAGITATION 6 1 **** **** 1 **** 0 0 25931 FEAT_HIDDEN_TALENT_MATTERAGITATION 16990449 16823765 fot_elementfire 999 **** **** **** **** **** 11 **** **** **** 0 0 0 3 **** 14455 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MATTERAGITATION 6 1 **** **** **** **** 0 0
25932 FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW 16990450 16824134 fot_metaclaw 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14456 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW 6 0 **** **** 1 **** 0 0 25932 FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW 16990450 16824134 fot_metaclaw 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14456 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW 6 0 **** **** **** **** 0 0
25933 FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON 16990451 16824136 fot_protnormal 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14457 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON 6 0 **** **** 1 **** 0 0 25933 FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON 16990451 16824136 fot_protnormal 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14457 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON 6 0 **** **** **** **** 0 0
25934 FEAT_HIDDEN_TALENT_MINDTHRUST 16990452 16823615 fot_skulltrap 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14458 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MINDTHRUST 6 1 **** **** 1 **** 0 0 25934 FEAT_HIDDEN_TALENT_MINDTHRUST 16990452 16823615 fot_skulltrap 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14458 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MINDTHRUST 6 1 **** **** **** **** 0 0
25935 FEAT_HIDDEN_TALENT_MYLIGHT 16990453 16823706 fot_dawn 999 **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** 14459 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MYLIGHT 6 0 **** **** 1 **** 0 0 25935 FEAT_HIDDEN_TALENT_MYLIGHT 16990453 16823706 fot_dawn 999 **** **** **** **** **** 11 **** **** **** 0 0 0 **** **** 14459 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MYLIGHT 6 0 **** **** **** **** 0 0
25936 FEAT_HIDDEN_TALENT_OFFPRECOG 16990454 16823710 fot_snare 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14460 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_OFFPRECOG 6 0 **** **** 1 **** 0 0 25936 FEAT_HIDDEN_TALENT_OFFPRECOG 16990454 16823710 fot_snare 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14460 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_OFFPRECOG 6 0 **** **** **** **** 0 0
25937 FEAT_HIDDEN_TALENT_OFFPRESC 16990455 16823712 fot_sols 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14461 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_OFFPRESC 6 0 **** **** 1 **** 0 0 25937 FEAT_HIDDEN_TALENT_OFFPRESC 16990455 16823712 fot_sols 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14461 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_OFFPRESC 6 0 **** **** **** **** 0 0
25938 FEAT_HIDDEN_TALENT_PREVENOM 16990456 16824142 fot_grmalison 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14468 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_PREVENOM 6 0 **** **** 1 **** 0 0 25938 FEAT_HIDDEN_TALENT_PREVENOM 16990456 16824142 fot_grmalison 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14468 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_PREVENOM 6 0 **** **** **** **** 0 0
25939 FEAT_HIDDEN_TALENT_PREVENOM_WEAPON 16990457 16824144 fot_prevnmw 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14469 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_PREVENOM_WEAPON 6 0 **** **** 1 **** 0 0 25939 FEAT_HIDDEN_TALENT_PREVENOM_WEAPON 16990457 16824144 fot_prevnmw 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14469 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_PREVENOM_WEAPON 6 0 **** **** **** **** 0 0
25940 FEAT_HIDDEN_TALENT_SKATE 16990458 16823767 fot_haste 999 **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14470 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_SKATE 6 0 **** **** 1 **** 0 0 25940 FEAT_HIDDEN_TALENT_SKATE 16990458 16823767 fot_haste 999 **** **** **** **** **** 11 **** **** **** 0 0 0 10 **** 14470 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_SKATE 6 0 **** **** **** **** 0 0
25941 FEAT_HIDDEN_TALENT_STOMP 16990459 16823682 fot_stomp 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14471 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_STOMP 6 1 **** **** 1 **** 0 0 25941 FEAT_HIDDEN_TALENT_STOMP 16990459 16823682 fot_stomp 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14471 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_STOMP 6 1 **** **** **** **** 0 0
25942 FEAT_HIDDEN_TALENT_SYNESTHETE 16990460 16823755 fot_physmirror 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14472 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_SYNESTHETE 6 0 **** **** 1 **** 0 0 25942 FEAT_HIDDEN_TALENT_SYNESTHETE 16990460 16823755 fot_physmirror 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14472 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_SYNESTHETE 6 0 **** **** **** **** 0 0
25943 FEAT_HIDDEN_TALENT_TELEMPATHICPRO 16990461 16823769 fot_charmanim 999 **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14473 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_TELEMPATHICPRO 6 0 **** **** 1 **** 0 0 25943 FEAT_HIDDEN_TALENT_TELEMPATHICPRO 16990461 16823769 fot_charmanim 999 **** **** **** **** **** 11 **** **** **** 0 0 0 2 **** 14473 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_TELEMPATHICPRO 6 0 **** **** **** **** 0 0
25944 FEAT_HIDDEN_TALENT_THICKSKIN 16990462 16823670 fot_barkskin 999 **** **** **** **** **** 11 **** **** **** 0 0 1 13 **** 14474 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_THICKSKIN 6 0 **** **** 1 **** 0 0 25944 FEAT_HIDDEN_TALENT_THICKSKIN 16990462 16823670 fot_barkskin 999 **** **** **** **** **** 11 **** **** **** 0 0 0 13 **** 14474 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_THICKSKIN 6 0 **** **** **** **** 0 0
25945 FEAT_HIDDEN_TALENT_VIGOR 16990463 16823672 fot_horror 999 **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14475 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_VIGOR 6 0 **** **** 1 **** 0 0 25945 FEAT_HIDDEN_TALENT_VIGOR 16990463 16823672 fot_horror 999 **** **** **** **** **** 11 **** **** **** 0 0 0 9 **** 14475 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_VIGOR 6 0 **** **** **** **** 0 0
25946 FEAT_HIDDEN_TALENT_GRIP_IRON 16990464 16790301 fot_metaclaw 999 **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 15686 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_GRIP_IRON 6 0 **** **** 1 **** 0 0 25946 FEAT_HIDDEN_TALENT_GRIP_IRON 16990464 16790301 fot_metaclaw 999 **** **** **** **** **** 11 **** **** **** 0 0 0 10 **** 15686 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_GRIP_IRON 6 0 **** **** **** **** 0 0
25947 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 25947 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25948 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 25948 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25949 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 25949 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

View File

@@ -1,129 +1,129 @@
2DA V2.0 2DA V2.0
LABEL STRREF DESCRIPTION ICON LABEL STRREF DESCRIPTION ICON
0 ImprovedCritical 6489 228 ife_impcrit 0 ImprovedCritical 6489 228 ife_impcrit
1 WeaponFocus 6490 436 ife_wepfoc 1 WeaponFocus 6490 436 ife_wepfoc
2 WeaponSpecialization 6491 444 ife_wepspec 2 WeaponSpecialization 6491 444 ife_wepspec
3 SpellFocus 6492 426 ife_magic 3 SpellFocus 6492 426 ife_magic
4 SkillFocus 6493 424 ife_skfoc 4 SkillFocus 6493 424 ife_skfoc
5 FavoredEnemy 6566 6079 ife_racehate 5 FavoredEnemy 6566 6079 ife_racehate
6 GreaterSpellFocus 2838 2791 ife_magic 6 GreaterSpellFocus 2838 2791 ife_magic
7 ArcaneDefense 2839 2823 ife_magic 7 ArcaneDefense 2839 2823 ife_magic
8 ResistEnergy 2840 2835 ife_magic 8 ResistEnergy 2840 2835 ife_magic
9 WeaponOfChoice 83313 8728 ife_X2WpCh 9 WeaponOfChoice 83313 8728 ife_X2WpCh
10 EpicWeaponFocus 83475 8415 ife_X2EWpFo 10 EpicWeaponFocus 83475 8415 ife_X2EWpFo
11 EpicWeaponSpec 83481 8456 ife_X2WpSpec 11 EpicWeaponSpec 83481 8456 ife_X2WpSpec
12 OverwhelmingCritical 83480 8524 ife_X2OvCrit 12 OverwhelmingCritical 83480 8524 ife_X2OvCrit
13 DevastatingCrit 83482 3909 ife_X2DevCrit 13 DevastatingCrit 83482 3909 ife_X2DevCrit
14 EpicSpell 83483 83484 ife_X2ESpell 14 EpicSpell 83483 83484 ife_X2ESpell
15 EpicSkillFocus 83485 4063 ife_X2skfoc 15 EpicSkillFocus 83485 4063 ife_X2skfoc
16 EpicSpellFocus 83486 4084 ife_X2magic 16 EpicSpellFocus 83486 4084 ife_X2magic
17 EpicEnergyResistance 83487 83488 ife_X2EResi 17 EpicEnergyResistance 83487 83488 ife_X2EResi
18 **** **** **** **** 18 **** **** **** ****
19 **** **** **** **** 19 **** **** **** ****
20 **** **** **** **** 20 **** **** **** ****
21 **** **** **** **** 21 **** **** **** ****
22 **** **** **** **** 22 **** **** **** ****
23 **** **** **** **** 23 **** **** **** ****
24 **** **** **** **** 24 **** **** **** ****
25 **** **** **** **** 25 **** **** **** ****
26 **** **** **** **** 26 **** **** **** ****
27 **** **** **** **** 27 **** **** **** ****
28 **** **** **** **** 28 **** **** **** ****
29 **** **** **** **** 29 **** **** **** ****
30 **** **** **** **** 30 **** **** **** ****
31 **** **** **** **** 31 **** **** **** ****
32 **** **** **** **** 32 **** **** **** ****
33 **** **** **** **** 33 **** **** **** ****
34 **** **** **** **** 34 **** **** **** ****
35 **** **** **** **** 35 **** **** **** ****
36 **** **** **** **** 36 **** **** **** ****
37 **** **** **** **** 37 **** **** **** ****
38 **** **** **** **** 38 **** **** **** ****
39 **** **** **** **** 39 **** **** **** ****
40 **** **** **** **** 40 **** **** **** ****
41 **** **** **** **** 41 **** **** **** ****
42 **** **** **** **** 42 **** **** **** ****
43 **** **** **** **** 43 **** **** **** ****
44 **** **** **** **** 44 **** **** **** ****
45 **** **** **** **** 45 **** **** **** ****
46 **** **** **** **** 46 **** **** **** ****
47 **** **** **** **** 47 **** **** **** ****
48 **** **** **** **** 48 **** **** **** ****
49 **** **** **** **** 49 **** **** **** ****
50 SpellLikeAbility 16822760 16822761 ife_X2ESpell 50 SpellLikeAbility 16822760 16822761 ife_X2ESpell
51 **** **** **** **** 51 **** **** **** ****
52 BindingFeats 16835231 16835232 fot_oracle 52 BindingFeats 16835231 16835232 fot_oracle
53 IncarnumFeats 16838110 16838111 ife_psi_focus 53 IncarnumFeats 16838110 16838111 ife_psi_focus
54 ShadowcastingFeats 16836244 16836245 ife_X1SDaze 54 ShadowcastingFeats 16836244 16836245 ife_X1SDaze
55 HatedFoe 16824268 16824269 ife_racehate 55 HatedFoe 16824268 16824269 ife_racehate
56 Gather_Horde 16824322 16824323 ife_unseenwander 56 Gather_Horde 16824322 16824323 ife_unseenwander
57 Gather_Horde 16824324 16824325 ife_unseenwander 57 Gather_Horde 16824324 16824325 ife_unseenwander
58 Summon_Demon 16824528 16824529 ife_alertness 58 Summon_Demon 16824528 16824529 ife_alertness
59 DragonHeritage 16832504 16832505 ife_drag_group 59 DragonHeritage 16832504 16832505 ife_drag_group
60 DraconicFeats 16832502 16832503 ife_drag_group 60 DraconicFeats 16832502 16832503 ife_drag_group
61 Psionic_Breath 16832466 16832467 ife_X2DDBreath 61 Psionic_Breath 16832466 16832467 ife_X2DDBreath
62 Dragonwrought 16832408 16832409 ife_drag_group 62 Dragonwrought 16832408 16832409 ife_drag_group
63 DragonBlood 16832131 16832132 ife_DDHDincrease 63 DragonBlood 16832131 16832132 ife_DDHDincrease
64 Minor_Aura 16828301 16828302 ife_lliiraaura 64 Minor_Aura 16828301 16828302 ife_lliiraaura
65 Major_Aura 16828303 16828304 ife_lliiraaura 65 Major_Aura 16828303 16828304 ife_lliiraaura
66 Dragon_Affinity 16832585 16832586 ife_drag_group 66 Dragon_Affinity 16832585 16832586 ife_drag_group
67 Draconic_Surge_Phys 16832587 16832588 ife_drag_group 67 Draconic_Surge_Phys 16832587 16832588 ife_drag_group
68 Draconic_Surge_Mental 16832589 16832590 ife_drag_group 68 Draconic_Surge_Mental 16832589 16832590 ife_drag_group
69 ToT_Immunities 16832661 16832662 dradis_immune 69 ToT_Immunities 16832661 16832662 dradis_immune
70 TattooFocus 16822436 16822437 rw_scribetatoo 70 TattooFocus 16822436 16822437 rw_scribetatoo
71 Dragon_Shaman_Auras 16832707 16832708 ife_lliiraaura 71 Dragon_Shaman_Auras 16832707 16832708 ife_lliiraaura
72 Totem_Dragons 16832709 16832710 dradis_gen 72 Totem_Dragons 16832709 16832710 dradis_gen
73 Bonus_Draconic_Auras 16832802 16832832 ife_lliiraaura 73 Bonus_Draconic_Auras 16832802 16832832 ife_lliiraaura
74 Major_Aura_Draconic 16832818 16832819 ife_lliiraaura 74 Major_Aura_Draconic 16832818 16832819 ife_lliiraaura
75 MetabreathFeats 16832867 16832868 ife_X2DDBreath 75 MetabreathFeats 16832867 16832868 ife_X2DDBreath
76 BreathChanneling 16832869 16832870 ife_DDHDincrease 76 BreathChanneling 16832869 16832870 ife_DDHDincrease
77 BreathEffects 16832922 16832923 ife_X2DDBreath 77 BreathEffects 16832922 16832923 ife_X2DDBreath
78 BladeMeditation 16827008 16827009 ife_X2EpWM 78 BladeMeditation 16827008 16827009 ife_X2EpWM
79 WarforgedArmor 16828215 16828216 ife_armor_h 79 WarforgedArmor 16828215 16828216 ife_armor_h
80 PsionicFeats 16822911 16822912 ife_psifeats 80 PsionicFeats 16822911 16822912 ife_psifeats
81 MetaPsionicFeats 16822913 16822914 ife_metapsifeat 81 MetaPsionicFeats 16822913 16822914 ife_metapsifeat
82 AntiPsionicFeats 16826474 16826475 ife_antipsifeats 82 AntiPsionicFeats 16826474 16826475 ife_antipsifeats
83 DragonAugment 16832444 16832445 dradis_gen 83 DragonAugment 16832444 16832445 dradis_gen
84 ShifterFeats 16828112 16828113 ife_X2OutShape 84 ShifterFeats 16828112 16828113 ife_X2OutShape
85 PnP_Weapon_Prof_Simp 16834217 16834260 ife_weppro_sim 85 PnP_Weapon_Prof_Simp 16834217 16834260 ife_weppro_sim
86 PnP_Weapon_Prof_Mart 16834218 16834261 ife_weppro_mar 86 PnP_Weapon_Prof_Mart 16834218 16834261 ife_weppro_mar
87 PnP_Weapon_Prof_Exot 16834219 16834262 ife_weppro_ex 87 PnP_Weapon_Prof_Exot 16834219 16834262 ife_weppro_ex
88 UFavoredEnemy 16825439 6079 ife_racehate 88 UFavoredEnemy 16825439 6079 ife_racehate
89 VileMartial 16825479 16825480 ife_combat 89 VileMartial 16825479 16825480 ife_combat
90 FocusedSpellPenetr 16825325 16825324 ife_magic 90 FocusedSpellPenetr 16825325 16825324 ife_magic
91 BondedSummoner 16826038 16826039 ife_mastelem 91 BondedSummoner 16826038 16826039 ife_mastelem
92 ElementalConflag 16823300 16823301 ife_mastelem 92 ElementalConflag 16823300 16823301 ife_mastelem
93 SanctifyMartial 16823244 16823245 ife_combat 93 SanctifyMartial 16823244 16823245 ife_combat
94 WeaponChoiceTempus 16822944 16822945 ife_X2WpCh 94 WeaponChoiceTempus 16822944 16822945 ife_X2WpCh
95 Evilbrand 16822849 16822850 ife_X2BoneSk1 95 Evilbrand 16822849 16822850 ife_X2BoneSk1
96 Aberrant 16790214 16790215 ife_dfrm_gaunt 96 Aberrant 16790214 16790215 ife_dfrm_gaunt
97 ExaltedFeats 16854436 16854437 ife_holyrad 97 ExaltedFeats 16854436 16854437 ife_holyrad
98 **** **** **** **** 98 **** **** **** ****
99 **** **** **** **** 99 **** **** **** ****
100 **** **** **** **** 100 **** **** **** ****
101 MinorOozyTouch 16825040 16825041 is_ghoultch 101 MinorOozyTouch 16825040 16825041 is_ghoultch
102 MajorOozyTouch 16825050 16825051 is_ghoultch 102 MajorOozyTouch 16825050 16825051 is_ghoultch
103 ToBFeats 16836033 16836034 im_MithTornado 103 ToBFeats 16836033 16836034 im_MithTornado
104 BaneMagic 16793665 16793666 ife_banemagic 104 BaneMagic 16793665 16793666 ife_banemagic
105 MinstrelSongTier1 16823496 16823497 ife_minstrel 105 MinstrelSongTier1 16823496 16823497 ife_minstrel
106 FavoredDivSong1 16823500 16823505 ife_fom 106 FavoredDivSong1 16823500 16823505 ife_fom
107 FavoredDivSong2 16823501 16823505 ife_fom 107 FavoredDivSong2 16823501 16823505 ife_fom
108 FavoredDivSong3 16823502 16823505 ife_fom 108 FavoredDivSong3 16823502 16823505 ife_fom
109 FavoredDivSong4 16823503 16823505 ife_fom 109 FavoredDivSong4 16823503 16823505 ife_fom
110 FavoredDivSong5 16823504 16823505 ife_fom 110 FavoredDivSong5 16823504 16823505 ife_fom
111 BonusDomains 16827845 16827846 rw_specialistdef 111 BonusDomains 16827845 16827846 rw_specialistdef
112 FocusedLexicon 16827469 16827468 ife_racehate 112 FocusedLexicon 16827469 16827468 ife_racehate
113 UtteranceFocus 16827483 16827482 ife_foc_spel 113 UtteranceFocus 16827483 16827482 ife_foc_spel
114 ReserveFeats 16852238 16852239 ife_foc_spel 114 ReserveFeats 16852238 16852239 ife_foc_spel
115 **** **** **** **** 115 **** **** **** ****
116 **** **** **** **** 116 **** **** **** ****
117 DivineGift 16854432 16854433 ife_magic 117 DivineGift 16854432 16854433 ife_magic
118 **** **** **** **** 118 **** **** **** ****
119 **** **** **** **** 119 **** **** **** ****
120 HiddenTalent 16990417 16990418 ife_psifeats 120 **** **** **** ****
121 SpecialAttack 16987216 16987217 ife_combat 121 SpecialAttack 16987216 16987217 ife_combat
122 InvokerMarkerFeats 16854434 16854435 ife_magic 122 InvokerMarkerFeats 16854434 16854435 ife_magic
123 AbilityFocus 16854430 16854431 ife_magic 123 AbilityFocus 16854430 16854431 ife_magic
124 PsionDiscipline 16854428 16854429 ife_psifeats 124 PsionDiscipline 16854428 16854429 ife_psifeats
125 SpellcastingMarkerFeats 16854426 16854427 ife_magic 125 SpellcastingMarkerFeats 16854426 16854427 ife_magic

View File

@@ -6287,6 +6287,7 @@ const int FEAT_DSONG_SPELLCASTING_NONE = 19592;
const int FEAT_OLLAM_SPELLCASTING_NONE = 19593; const int FEAT_OLLAM_SPELLCASTING_NONE = 19593;
//:: PRC8 Hidden Talent Feats //:: PRC8 Hidden Talent Feats
const int FEAT_HIDDEN_TALENT = 25900;
const int FEAT_HIDDEN_TALENT_BIOFEEDBACK = 25901; const int FEAT_HIDDEN_TALENT_BIOFEEDBACK = 25901;
const int FEAT_HIDDEN_TALENT_BITE_WOLF = 25902; const int FEAT_HIDDEN_TALENT_BITE_WOLF = 25902;
const int FEAT_HIDDEN_TALENT_BOLT = 25903; const int FEAT_HIDDEN_TALENT_BOLT = 25903;

View File

@@ -431,7 +431,7 @@ void EvalPRCFeats(object oPC)
ExecuteScript("moi_events", oPC); ExecuteScript("moi_events", oPC);
if (GetIsBinder(oPC)) if (GetIsBinder(oPC))
ExecuteScript("bnd_events", oPC); ExecuteScript("bnd_events", oPC);
// check if character with crafting feat has appropriate base item in her inventory // check if character with crafting feat has appropriate base item in her inventory
// x - moved from prc_onhb_indiv.nss // x - moved from prc_onhb_indiv.nss

View File

@@ -76,7 +76,7 @@
/* This variable MUST be updated with every new version of the PRC!!! */ /* This variable MUST be updated with every new version of the PRC!!! */
const string PRC_VERSION = "PRC8 4.74"; const string PRC_VERSION = "PRC8 4.75";
/* This variable MUST be updated every time 'assemble_spellbooks.bat' is run!!! */ /* This variable MUST be updated every time 'assemble_spellbooks.bat' is run!!! */

View File

@@ -1755,6 +1755,59 @@ int IsHiddenTalent(object oPC = OBJECT_SELF)
} }
} }
int GetHiddenTalentPowerFromFeat(int nFeatID)
{
// Map Hidden Talent feats to their corresponding power IDs
// Using the same mappings as GetIsHiddenTalentPower()
if(nFeatID == FEAT_HIDDEN_TALENT_BIOFEEDBACK) return POWER_BIOFEEDBACK;
if(nFeatID == FEAT_HIDDEN_TALENT_BITE_WOLF) return POWER_BITE_WOLF;
if(nFeatID == FEAT_HIDDEN_TALENT_BOLT) return POWER_BOLT;
if(nFeatID == FEAT_HIDDEN_TALENT_BURST) return POWER_BURST;
if(nFeatID == FEAT_HIDDEN_TALENT_CALLTOMIND) return POWER_CALLTOMIND;
if(nFeatID == FEAT_HIDDEN_TALENT_CALL_WEAPONRY) return POWER_CALL_WEAPONRY;
if(nFeatID == FEAT_HIDDEN_TALENT_CHAMELEON) return POWER_CHAMELEON;
if(nFeatID == FEAT_HIDDEN_TALENT_CLAWS_BEAST) return POWER_CLAWS_BEAST;
if(nFeatID == FEAT_HIDDEN_TALENT_COMPRESSION) return POWER_COMPRESSION;
if(nFeatID == FEAT_HIDDEN_TALENT_CONCEALTHOUGHT) return POWER_CONCEALTHOUGHT;
if(nFeatID == FEAT_HIDDEN_TALENT_CREATESOUND) return POWER_CREATESOUND;
if(nFeatID == FEAT_HIDDEN_TALENT_CRYSTALSHARD) return POWER_CRYSTALSHARD;
if(nFeatID == FEAT_HIDDEN_TALENT_DAZE) return POWER_DAZE;
if(nFeatID == FEAT_HIDDEN_TALENT_DECELERATION) return POWER_DECELERATION;
if(nFeatID == FEAT_HIDDEN_TALENT_DEFPRECOG) return POWER_DEFPRECOG;
if(nFeatID == FEAT_HIDDEN_TALENT_DEMORALIZE) return POWER_DEMORALIZE;
if(nFeatID == FEAT_HIDDEN_TALENT_DISABLE) return POWER_DISABLE;
if(nFeatID == FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH)return POWER_DISSIPATINGTOUCH;
if(nFeatID == FEAT_HIDDEN_TALENT_DISTRACT) return POWER_DISTRACT;
if(nFeatID == FEAT_HIDDEN_TALENT_ELFSIGHT) return POWER_ELFSIGHT;
if(nFeatID == FEAT_HIDDEN_TALENT_EMPATHY) return POWER_EMPATHY;
if(nFeatID == FEAT_HIDDEN_TALENT_EMPTYMIND) return POWER_EMPTYMIND;
if(nFeatID == FEAT_HIDDEN_TALENT_ENTANGLE) return POWER_ENTANGLE;
if(nFeatID == FEAT_HIDDEN_TALENT_EXPANSION) return POWER_EXPANSION;
if(nFeatID == FEAT_HIDDEN_TALENT_FARHAND) return POWER_FARHAND;
if(nFeatID == FEAT_HIDDEN_TALENT_FORCESCREEN) return POWER_FORCESCREEN;
if(nFeatID == FEAT_HIDDEN_TALENT_GREASE) return POWER_GREASE;
if(nFeatID == FEAT_HIDDEN_TALENT_HAMMER) return POWER_HAMMER;
if(nFeatID == FEAT_HIDDEN_TALENT_INERTIALARMOUR) return POWER_INERTIALARMOUR;
if(nFeatID == FEAT_HIDDEN_TALENT_MATTERAGITATION) return POWER_MATTERAGITATION;
if(nFeatID == FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW) return POWER_METAPHYSICAL_CLAW;
if(nFeatID == FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON) return POWER_METAPHYSICAL_WEAPON;
if(nFeatID == FEAT_HIDDEN_TALENT_MINDTHRUST) return POWER_MINDTHRUST;
if(nFeatID == FEAT_HIDDEN_TALENT_MYLIGHT) return POWER_MYLIGHT;
if(nFeatID == FEAT_HIDDEN_TALENT_OFFPRECOG) return POWER_OFFPRECOG;
if(nFeatID == FEAT_HIDDEN_TALENT_OFFPRESC) return POWER_OFFPRESC;
if(nFeatID == FEAT_HIDDEN_TALENT_PREVENOM) return POWER_PREVENOM;
if(nFeatID == FEAT_HIDDEN_TALENT_PREVENOM_WEAPON) return POWER_PREVENOM_WEAPON;
if(nFeatID == FEAT_HIDDEN_TALENT_SKATE) return POWER_SKATE;
if(nFeatID == FEAT_HIDDEN_TALENT_STOMP) return POWER_STOMP;
if(nFeatID == FEAT_HIDDEN_TALENT_SYNESTHETE) return POWER_SYNESTHETE;
if(nFeatID == FEAT_HIDDEN_TALENT_TELEMPATHICPRO) return POWER_TELEMPATHICPRO;
if(nFeatID == FEAT_HIDDEN_TALENT_THICKSKIN) return POWER_THICKSKIN;
if(nFeatID == FEAT_HIDDEN_TALENT_VIGOR) return POWER_VIGOR;
if(nFeatID == FEAT_HIDDEN_TALENT_GRIP_IRON) return POWER_GRIP_IRON;
return -1; // Not found
}
int GetHiddenTalentCount(object oPC = OBJECT_SELF) int GetHiddenTalentCount(object oPC = OBJECT_SELF)
{ {
int nCount = 0; int nCount = 0;

View File

@@ -142,8 +142,8 @@ int _GetFeatBonusPP(object oChar)
nBonusPP += 2; nBonusPP += 2;
//:: Hidden Talent //:: Hidden Talent
if(IsHiddenTalent()) if(GetHasFeat(FEAT_HIDDEN_TALENT, oChar))
nBonusPP += 2 * GetHiddenTalentCount(oChar); nBonusPP += 2;
//:: Psionic Feats //:: Psionic Feats
int i; int i;

View File

@@ -0,0 +1,174 @@
//:://////////////////////////////////////////////
//:: 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);
}
}

View File

@@ -635,7 +635,7 @@ void PRCFeat_AddBonusFeats(object oPC, object oSkin)
if(!GetHasFeat(FEAT_COMBAT_MOVE_3, oPC)) if(!GetHasFeat(FEAT_COMBAT_MOVE_3, oPC))
AddSkinFeat(FEAT_COMBAT_MOVE_3, IP_CONST_FEAT_COMBAT_MOVE_3, oSkin, oPC); AddSkinFeat(FEAT_COMBAT_MOVE_3, IP_CONST_FEAT_COMBAT_MOVE_3, oSkin, oPC);
if(GetHasFeat(FEAT_WILD_TALENT, oPC)) if(GetHasFeat(FEAT_WILD_TALENT, oPC) || (GetHasFeat(FEAT_HIDDEN_TALENT, oPC)))
AddSkinFeat(FEAT_PSIONIC_FOCUS, IP_CONST_FEAT_PSIONIC_FOCUS, oSkin, oPC); AddSkinFeat(FEAT_PSIONIC_FOCUS, IP_CONST_FEAT_PSIONIC_FOCUS, oSkin, oPC);
if(IsHiddenTalent()) if(IsHiddenTalent())

View File

@@ -60,7 +60,14 @@ void main()
ExecuteScript("prc_vassal_treas", oPC); ExecuteScript("prc_vassal_treas", oPC);
ExecuteScript("tob_evnt_recover", oPC); ExecuteScript("tob_evnt_recover", oPC);
ExecuteScript("moi_wchb_royal", oPC); ExecuteScript("moi_wchb_royal", oPC);
// Handle Hidden Talent
if(GetHasFeat(FEAT_HIDDEN_TALENT, oPC) && !GetPersistantLocalInt(oPC, "HiddenTalentChosen"))
{
// Trigger Hidden Talent power selection conversation
AssignCommand(oPC, ActionStartConversation(oPC, "hidden_talent_cv", TRUE, FALSE));
}
// Execute scripts hooked to this event for the player triggering it // Execute scripts hooked to this event for the player triggering it
ExecuteAllScriptsHookedToEvent(oPC, EVENT_ONPLAYERLEVELUP); ExecuteAllScriptsHookedToEvent(oPC, EVENT_ONPLAYERLEVELUP);
if(DEBUG) DoDebug("prc_levelup: Exiting"); if(DEBUG) DoDebug("prc_levelup: Exiting");

View File

@@ -5286,8 +5286,7 @@ Baelnorn Properties: +8 bonus to Hide, Listen, Move Silently, Search, Persuade,
<entry id="16565" lang="en" sex="m">Myconid</entry> <entry id="16565" lang="en" sex="m">Myconid</entry>
<entry id="16566" lang="en" sex="m">Algoid</entry> <entry id="16566" lang="en" sex="m">Algoid</entry>
<entry id="16567" lang="en" sex="m">****</entry> <entry id="16567" lang="en" sex="m">****</entry>
<entry id="16568" lang="en" sex="m">**** <entry id="16568" lang="en" sex="m">****</entry>
</entry>
<entry id="16569" lang="en" sex="m">****</entry> <entry id="16569" lang="en" sex="m">****</entry>
<entry id="16570" lang="en" sex="m">****</entry> <entry id="16570" lang="en" sex="m">****</entry>
<entry id="16571" lang="en" sex="m">Abundant Step (Su)</entry> <entry id="16571" lang="en" sex="m">Abundant Step (Su)</entry>
@@ -14756,8 +14755,7 @@ Level:
<entry id="47155" lang="en" sex="m">Archetypal Form</entry> <entry id="47155" lang="en" sex="m">Archetypal Form</entry>
<entry id="47156" lang="en" sex="m">Type of Feat: Builder's Tool <entry id="47156" lang="en" sex="m">Type of Feat: Builder's Tool
Prerequisite: A creature you don't want people to polymorph into Prerequisite: A creature you don't want people to polymorph into
Specifics: The presence of this feat on a creature, as tested for using GetHasFeat(), prevents the use of it as a template Specifics: The presence of this feat on a creature, as tested for using GetHasFeat(), prevents the use of it as a template by users of PRC polymorphing mechanics (PnP Shifter, Soul Eater, etc.)
by users of PRC polymorphing mechanics (PnP Shifter, Soul Eater, etc.)
Use: Automatic, used in the function GetCanShiftIntoCreature() in prc_inc_shifting</entry> Use: Automatic, used in the function GetCanShiftIntoCreature() in prc_inc_shifting</entry>
<entry id="47157" lang="en" sex="m">Soak 4 Damage</entry> <entry id="47157" lang="en" sex="m">Soak 4 Damage</entry>
<entry id="47158" lang="en" sex="m">Soak 6 Damage</entry> <entry id="47158" lang="en" sex="m">Soak 6 Damage</entry>
@@ -76094,4 +76092,4 @@ Specifics: You gain a +4 perfection bonus on Will saving throws against charm an
<entry id="213330" lang="en" sex="m">Type of Feat: Exalted <entry id="213330" lang="en" sex="m">Type of Feat: Exalted
Prerequisite: Wis 13+ Prerequisite: Wis 13+
Specifics: You gain a +2 bonus on saving throws to resist any fear effect, despair effect (such as the crushing despair spell), or similar mind-affecting condition, but not charms or compulsions (such as the charm person and dominate person spells)</entry> Specifics: You gain a +2 bonus on saving throws to resist any fear effect, despair effect (such as the crushing despair spell), or similar mind-affecting condition, but not charms or compulsions (such as the charm person and dominate person spells)</entry>
</tlk> </tlk>

View File

@@ -0,0 +1,239 @@
// -----------------------------------------------------------------------------
// Returns TRUE if the player used the last power to create a power stone
// -----------------------------------------------------------------------------
int CICraftCheckImprintPowerStone(object oSpellTarget, object oCaster, int nPowerID = 0)
{
if(nPowerID == 0) nPowerID = PRCGetSpellId(); // Using same function for powers
// -------------------------------------------------------------------------
// check if imprint stone feat is there
// -------------------------------------------------------------------------
if (GetHasFeat(FEAT_IMPRINT_STONE, oCaster) != TRUE) // Placeholder feat constant
{
FloatingTextStrRefOnCreature(40487, oCaster); // Item Creation Failed - Don't know how to create that type of item
return TRUE;
}
// -------------------------------------------------------------------------
// Check if the power is allowed to be used with Imprint Stone
// -------------------------------------------------------------------------
if (CIGetIsSpellRestrictedFromCraftFeat(nPowerID, FEAT_IMPRINT_STONE)) // Using same restriction function
{
FloatingTextStrRefOnCreature(83451, oCaster); // can not be used with this feat
return TRUE;
}
// -------------------------------------------------------------------------
// XP/GP Cost Calculation
// -------------------------------------------------------------------------
int nPowerLevel = CIGetSpellInnateLevel(nPowerID,TRUE); // Using same function for power level
int nManifesterLevel = GetManifesterLevel(oCaster); // Placeholder function for manifester level
int nCost = nPowerLevel * nManifesterLevel * 25; // Power stone formula: level <20> manifester level <20> 25 gp
struct craft_cost_struct costs = GetModifiedCostsFromBase(nCost, oCaster, FEAT_IMPRINT_STONE, FALSE);
// -------------------------------------------------------------------------
// Does Player have enough gold?
// -------------------------------------------------------------------------
if(!GetHasGPToSpend(oCaster, costs.nGoldCost))
{
FloatingTextStrRefOnCreature(3786, oCaster); // Item Creation Failed - not enough gold!
return TRUE;
}
int nHD = GetHitDice(oCaster);
int nMinXPForLevel = ((nHD * (nHD - 1)) / 2) * 1000;
int nNewXP = GetXP(oCaster) - costs.nXPCost;
// -------------------------------------------------------------------------
// check for sufficient XP to cast power
// -------------------------------------------------------------------------
if (!GetHasXPToSpend(oCaster, costs.nXPCost))
{
FloatingTextStrRefOnCreature(3785, oCaster); // Item Creation Failed - Not enough XP
return TRUE;
}
//check power emulation (using same function)
if(!CheckAlternativeCrafting(oCaster, nPowerID, costs))
{
FloatingTextStringOnCreature("*Crafting failed!*", oCaster, FALSE);
return TRUE;
}
// -------------------------------------------------------------------------
// Here we imprint the power stone
// -------------------------------------------------------------------------
object oPowerStone = CICraftImprintPowerStone(oCaster, nPowerID); // New function to create power stone
// -------------------------------------------------------------------------
// Verify Results
// -------------------------------------------------------------------------
if (GetIsObjectValid(oPowerStone))
{
SetIdentified(oPowerStone,TRUE);
ActionPlayAnimation (ANIMATION_FIREFORGET_READ,1.0);
SpendXP(oCaster, costs.nXPCost);
SpendGP(oCaster, costs.nGoldCost);
DestroyObject (oSpellTarget);
FloatingTextStrRefOnCreature(8502, oCaster); // Item Creation successful
//advance time here (1 day per 1000 gp of base price)
int nTimeCost = nCost / 1000;
if(nTimeCost < 1) nTimeCost = 1;
AdvanceTimeForPlayer(oCaster, RoundsToSeconds(nTimeCost * 24 * 60)); // Convert days to rounds
return TRUE;
}
else
{
FloatingTextStrRefOnCreature(76417, oCaster); // Item Creation Failed
return TRUE;
}
return FALSE;
}
/ -----------------------------------------------------------------------------
// Create and Return a power stone with an item property
// matching nPowerID.
// -----------------------------------------------------------------------------
object CICraftImprintPowerStone(object oCreator, int nPowerID)
{
if (DEBUG) DoDebug("CICraftImprintPowerStone: Enter (nPowerID=" + IntToString(nPowerID) + ")");
// Keep original and compute one-step master (if subradial)
int nPowerOriginal = nPowerID;
int nPowerMaster = nPowerOriginal;
if (GetIsSubradialSpell(nPowerOriginal))
{
nPowerMaster = GetMasterSpellFromSubradial(nPowerOriginal);
if (DEBUG) DoDebug("CICraftImprintPowerStone: subradial detected original=" + IntToString(nPowerOriginal) + " master=" + IntToString(nPowerMaster));
}
// Prefer iprp mapping for the original, fallback to master
int nPropID = IPGetIPConstCastSpellFromSpellID(nPowerOriginal);
int nPowerUsedForIP = nPowerOriginal;
if (nPropID < 0)
{
if (DEBUG) DoDebug("CICraftImprintPowerStone: no iprp for original " + IntToString(nPowerOriginal) + ", trying master " + IntToString(nPowerMaster));
nPropID = IPGetIPConstCastSpellFromSpellID(nPowerMaster);
nPowerUsedForIP = nPowerMaster;
}
// If neither original nor master has an iprp row, we can still try templates,
// but most templates expect a matching iprp. Bail out now if nothing found.
if (nPropID < 0)
{
if (DEBUG) DoDebug("CICraftImprintPowerStone: no iprp_spells entry for original/master -> aborting");
FloatingTextStringOnCreature("This power cannot be imprinted (no item property mapping).", oCreator, FALSE);
return OBJECT_INVALID;
}
if (DEBUG) DoDebug("CICraftImprintPowerStone: using power " + IntToString(nPowerUsedForIP) + " (iprp row " + IntToString(nPropID) + ") for item property");
// Material component check (based on resolved iprp row)
string sMat = GetMaterialComponentTag(nPropID);
if (sMat != "")
{
object oMat = GetItemPossessedBy(oCreator, sMat);
if (oMat == OBJECT_INVALID)
{
FloatingTextStrRefOnCreature(83374, oCreator); // Missing material component
return OBJECT_INVALID;
}
else
{
DestroyObject(oMat);
}
}
// Resolve manifester class and power stone template
int nClass = PRCGetLastSpellCastClass(); // Using same function for power manifestation class
string sClass = "";
switch (nClass)
{
case CLASS_TYPE_PSION: sClass = "Psion"; break;
case CLASS_TYPE_PSYCHIC_WARRIOR: sClass = "PsychicWarrior"; break;
case CLASS_TYPE_WILDER: sClass = "Wilder"; break;
}
object oTarget = OBJECT_INVALID;
string sResRef = "";
// Try to find a class-specific power stone template
if (sClass != "")
{
// Try original first (so if you made a subradial-specific template it will be used)
sResRef = Get2DACache("des_crft_powerstone", sClass, nPowerOriginal);
if (sResRef == "")
{
// fallback to the power that matched an iprp row (master or original)
sResRef = Get2DACache("des_crft_powerstone", sClass, nPowerUsedForIP);
}
if (sResRef != "")
{
oTarget = CreateItemOnObject(sResRef, oCreator);
if (DEBUG) DoDebug("CICraftImprintPowerStone: created template " + sResRef + " for class " + sClass);
// Ensure template uses the correct cast-spell property: replace the template's cast-spell IP with ours
if (oTarget != OBJECT_INVALID)
{
itemproperty ipIter = GetFirstItemProperty(oTarget);
while (GetIsItemPropertyValid(ipIter))
{
if (GetItemPropertyType(ipIter) == ITEM_PROPERTY_CAST_SPELL)
{
RemoveItemProperty(oTarget, ipIter);
break;
}
ipIter = GetNextItemProperty(oTarget);
}
itemproperty ipPower = ItemPropertyCastSpell(nPropID, IP_CONST_CASTSPELL_NUMUSES_SINGLE_USE);
AddItemProperty(DURATION_TYPE_PERMANENT, ipPower, oTarget);
}
}
}
// If no template or sClass was empty, create generic power stone and add itemprop.
if (oTarget == OBJECT_INVALID)
{
sResRef = "craft_powerstone";
oTarget = CreateItemOnObject(sResRef, oCreator);
if (oTarget == OBJECT_INVALID)
{
WriteTimestampedLogEntry("CICraftImprintPowerStone: failed to create craft_powerstone template.");
return OBJECT_INVALID;
}
// Remove existing default IP and add correct one
itemproperty ipFirst = GetFirstItemProperty(oTarget);
if (GetIsItemPropertyValid(ipFirst))
RemoveItemProperty(oTarget, ipFirst);
itemproperty ipPower = ItemPropertyCastSpell(nPropID, IP_CONST_CASTSPELL_NUMUSES_SINGLE_USE);
AddItemProperty(DURATION_TYPE_PERMANENT, ipPower, oTarget);
}
// Add PRC metadata (use the same power that matched the iprp row so metadata and IP line up)
if (GetPRCSwitch(PRC_SCRIBE_SCROLL_CASTER_LEVEL)) // Reusing same switch for power stones
{
int nManifesterLevel = GetManifesterLevel(oCreator); // Placeholder function
itemproperty ipLevel = ItemPropertyCastSpellCasterLevel(nPowerUsedForIP, nManifesterLevel);
AddItemProperty(DURATION_TYPE_PERMANENT, ipLevel, oTarget);
itemproperty ipMeta = ItemPropertyCastSpellMetamagic(nPowerUsedForIP, PRCGetMetaMagicFeat());
AddItemProperty(DURATION_TYPE_PERMANENT, ipMeta, oTarget);
int nDC = PRCGetSpellSaveDC(nPowerUsedForIP, GetSpellSchool(nPowerUsedForIP), OBJECT_SELF);
itemproperty ipDC = ItemPropertyCastSpellDC(nPowerUsedForIP, nDC);
AddItemProperty(DURATION_TYPE_PERMANENT, ipDC, oTarget);
}
if (oTarget == OBJECT_INVALID)
{
WriteTimestampedLogEntry("prc_x2_craft::CICraftImprintPowerStone failed - Resref: " + sResRef + " Class: " + sClass + "(" + IntToString(nClass) + ") " + " PowerID " + IntToString(nPowerID));
return OBJECT_INVALID;
}
if (DEBUG) DoDebug("CICraftImprintPowerStone: Success - created power stone " + sResRef + " for power " + IntToString(nPowerUsedForIP));
return oTarget;
}