2025/07/31 Update

Reverted Luminous Armor.
Updated NUI spellcast menu (@Alhooness).
Fixed Inlindl School.
Tweaked prc_2da_cache creature.
Fixed Celebrant of Sharess spellcasting.
Found a few more functions to remove Assassin from.
Added GetTotalShieldACBonus().
Made magic staves medium weapons again, so that small creatures can use them.
Added feat constants for Charge & Grapple.
Devil's Eye should be Extendable.
Setup talents for Combat maneuvers.
Updated PRC8 manual.
This commit is contained in:
Jaysyn904 2025-07-31 07:35:50 -04:00
parent 2181120567
commit 98e0b02799
41 changed files with 1953 additions and 1800 deletions

1
.gitignore vendored
View File

@ -163,3 +163,4 @@ nwn/nwnprc/trunk/makefile.temp
nwn/nwnprc/trunk/makefile.temp
/Release
/old_backup
nwn/nwnprc/trunk/2das/prepeps_feat.2da

View File

@ -11,7 +11,7 @@
<center> <img src="../../images/manual_prclogo.jpg"> </center>
<br>
<br>
<div><h1>:: PRC8 v4.1.11 ::</h1></div>
<div><h1>:: PRC8 v4.56 ::</h1></div>
<br>
<div class="div_paddedcontent">
<center><b>Welcome to the Player Resource Consortium 8 manual!</b>

View File

@ -17,7 +17,7 @@ For questions concerning scripting check out the
<a href="http://www.nwnlexicon.com/" target="_blank">NWN Lexicon</a>.
<br><br>
If you can not find what you are looking for there,
feel free to ask questions on <a href="http://www.nwnprc.com/" target="_blank">our forums</a>.
feel free to ask questions on <a href="https://discord.gg/FW9V9RKy5U" target="_blank">our Discord</a>.
<br><br>
</div>
</body>

View File

@ -49,14 +49,14 @@
<div class="div_menu_line_padding"> <hr> </div>
<div class="div_menu_padding"> <a href="#" onclick="openContent('languages');return false;" onfocus="this.blur();" onmouseover="setStatus('Languages');return true;" onmouseout="unsetStatus();"><div class="div_menuitem">Languages</div></a> </div>
<div class="div_menu_padding"> <a href="http://nwnprc.com/" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC Website</div></a> </div>
<div class="div_menu_padding"> <a href="https://discord.gg/FW9V9RKy5U" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC8 Discord</div></a> </div>
<script language="javascript1.2">
<!--
if(!IsOnlineManual)
{
var sMes1 = "Online Manual";
document.writeln("<div class='div_menu_padding'> <a href='http://www.nwnprc.com/nwn/index.html' target='_top' onmouseover='setStatus(sMes1);return true' onmouseout='unsetStatus();'><div class='div_menuitem'>Online Manual</div></a> </div>");
document.writeln("<div class='div_menu_padding'> <a href='https://discord.gg/FW9V9RKy5U' target='_top' onmouseover='setStatus(sMes1);return true' onmouseout='unsetStatus();'><div class='div_menuitem'>Online Manual</div></a> </div>");
}
//-->
</script>

View File

@ -458,7 +458,7 @@ The reason this is important is because you will want to make sure you are using
If you are not, then either another PRC member or yourself will need to move a lot of data around to add your PrC.
<br><br>
For the most current list of open 2da / tlk slots <a href="http://www.nwnprc.com/cgi-bin/tlk_2da_info.cgi" target="_blank">click here</a>.
For the most current list of open 2da / tlk slots <a href="https://nwn.wiki/display/NWN1/Community+Reserved+Ranges" target="_blank">click here</a>.
[Note: Link requires active internet connection to work]
<br><br>

View File

@ -42,7 +42,7 @@
<div class="div_menu_line_padding"> <hr> </div>
<div class="div_menu_padding"> <a href="#" onclick="openContent('languages');return false;" onfocus="this.blur();" onmouseover="setStatus('Languages');return true;" onmouseout="unsetStatus();"><div class="div_menuitem">Languages</div></a> </div>
<div class="div_menu_padding"> <a href="http://www.nwnprc.com/index.html" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC Website</div></a> </div>
<div class="div_menu_padding"> <a href="https://discord.gg/FW9V9RKy5U" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC8 Discord</div></a> </div>
<script language="javascript1.2">
<!--

View File

@ -42,7 +42,7 @@
<div class="div_menu_line_padding"> <hr> </div>
<div class="div_menu_padding"> <a href="#" onclick="openContent('languages');return false;" onfocus="this.blur();" onmouseover="setStatus('Languages');return true;" onmouseout="unsetStatus();"><div class="div_menuitem">Languages</div></a> </div>
<div class="div_menu_padding"> <a href="http://www.nwnprc.com/index.html" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC Website</div></a> </div>
<div class="div_menu_padding"> <a href="https://discord.gg/FW9V9RKy5U" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC8 Discord</div></a> </div>
<script language="javascript1.2">
<!--

View File

@ -458,7 +458,7 @@ The reason this is important is because you will want to make sure you are using
If you are not, then either another PRC member or yourself will need to move a lot of data around to add your PrC.
<br><br>
For the most current list of open 2da / tlk slots <a href="http://www.nwnprc.com/cgi-bin/tlk_2da_info.cgi" target="_blank">click here</a>.
For the most current list of open 2da / tlk slots <a href="https://nwn.wiki/display/NWN1/Community+Reserved+Ranges" target="_blank">click here</a>.
[Note: Link requires active internet connection to work]
<br><br>

View File

@ -42,7 +42,7 @@
<div class="div_menu_line_padding"> <hr> </div>
<div class="div_menu_padding"> <a href="#" onclick="openContent('languages');return false;" onfocus="this.blur();" onmouseover="setStatus('Languages');return true;" onmouseout="unsetStatus();"><div class="div_menuitem">Languages</div></a> </div>
<div class="div_menu_padding"> <a href="http://www.nwnprc.com/index.html" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC Website</div></a> </div>
<div class="div_menu_padding"> <a href="https://discord.gg/FW9V9RKy5U" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC8 Discord</div></a> </div>
<script language="javascript1.2">
<!--

View File

@ -42,14 +42,14 @@
<div class="div_menu_line_padding"> <hr> </div>
<div class="div_menu_padding"> <a href="#" onclick="openContent('languages');return false;" onfocus="this.blur();" onmouseover="setStatus('Languages');return true;" onmouseout="unsetStatus();"><div class="div_menuitem">Languages</div></a> </div>
<div class="div_menu_padding"> <a href="http://www.nwnprc.com/index.html" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC Website</div></a> </div>
<div class="div_menu_padding"> <a href="https://discord.gg/FW9V9RKy5U" target="_top" onmouseover="setStatus('PRC Website');return true" onmouseout="unsetStatus();"><div class="div_menuitem">PRC8 Discord</div></a> </div>
<script language="javascript1.2">
<!--
if(!IsOnlineManual)
{
var sMes1 = "Online Manual";
document.writeln("<div class='div_menu_padding'> <a href='http://www.nwnprc.com/manual/index.html' target='_top' onmouseover='setStatus(sMes1);return true' onmouseout='unsetStatus();'><div class='div_menuitem'>Online Manual</div></a> </div>");
document.writeln("<div class='div_menu_padding'> <a href='https://discord.gg/FW9V9RKy5U' target='_top' onmouseover='setStatus(sMes1);return true' onmouseout='unsetStatus();'><div class='div_menuitem'>Online Manual</div></a> </div>");
}
//-->
</script>

View File

@ -0,0 +1,33 @@
2DA V2.0
Model
0 grn_m_bone
1 grn_m_giblet
2 grn_m_rib
3 grn_m_thigh
4 grn_s_giblet
5 red_l_bone
6 red_l_giblet
7 red_l_rib
8 red_l_thigh
9 red_m_bone
10 red_m_giblet
11 red_m_rib
12 red_m_thigh
13 red_m_torso
14 red_s_bone
15 red_s_giblet
16 red_s_rib
17 red_s_thigh
18 wht_m_bone
19 wht_m_head
20 wht_m_pelves
21 wht_s_bone
22 vwp_m_chunk_grn
23 vwp_m_chunk_red
24 vwp_m_chunk_wht
25 vwp_m_chunk_yel
26 vwp_s_chunk_red
27 vwp_s_chunk_grn
28 vwp_s_chunk_yel
29 vwp_l_chunk_red

View File

@ -1,9 +1,9 @@
2DA V2.0
Label FeedbackStrref ColorR ColorG ColorB
0 Physical 5594 **** **** ****
0 Physical 5594 255 102 0
1 Magical 5593 204 119 255
2 Acid 10458 0 102 0
2 Acid 10458 0 255 0
3 Cold 10459 153 255 255
4 Divine 10460 255 255 0
5 Electrical 10461 0 102 255

View File

@ -1,16 +1,16 @@
2DA V2.0
Label CharsheetStrref DamageTypeGroup
0 Bludgeoning 58345 0
1 Piercing 58341 0
2 Slashing 58344 0
3 Magical 58302 1
4 Acid 58303 2
5 Cold 58304 3
6 Divine 58305 4
7 Electrical 58306 5
8 Fire 58308 6
9 Negative 58309 7
10 Positive 58310 8
11 Sonic 58311 9
12 Base 58301 0
Label CharsheetStrref DamageTypeGroup DamageRangedProjectile
0 Bludgeoning 58345 0 0
1 Piercing 58341 0 0
2 Slashing 58344 0 0
3 Magical 58302 1 0
4 Acid 58303 2 1
5 Cold 58304 3 2
6 Divine 58305 4 0
7 Electrical 58306 5 3
8 Fire 58308 6 4
9 Negative 58309 7 0
10 Positive 58310 8 0
11 Sonic 58311 9 5
12 Base 58301 0 0

View File

@ -703,4 +703,3 @@
699 ACTIVATE_ITEM_ONHITSPELLCAST **** 1 1 1 **** 0
700 Summon_Baatezu **** 1 1 1 **** 0
701 OnHitPlanarRift **** 1 1 1 **** 0
702

View File

@ -1090,13 +1090,13 @@
1086 FEAT_PDK_INSPIRE_2 111724 111725 ife_x3_pdkinsp **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 811 **** 1 2 **** 1 **** **** **** **** **** **** **** **** **** FEAT_PDK_INSPIRE_2 4 **** **** **** **** **** 0 1
1087 FEAT_MOUNTED_COMBAT 111728 111729 ife_x3_mcombat **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** 27 1 **** **** FEAT_MOUNTED_COMBAT 4 **** **** **** **** **** 0 1
1088 FEAT_MOUNTED_ARCHERY 111730 111731 ife_x3_marchery **** **** **** **** **** **** **** **** 1087 **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** 27 1 **** **** FEAT_MOUNTED_ARCHERY 4 **** **** **** **** **** 0 1
1089 HORSE_MENU 111875 111876 ife_x3_horse **** **** **** **** **** **** **** **** **** **** 0 0 0 10 **** 812 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_HORSE_MENU 6 **** 99 **** **** **** 0 0
1090 HORSE_MOUNT 111877 111878 ife_x3_mount **** **** **** **** **** **** **** **** **** **** 0 0 0 10 **** 813 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HORSE_MOUNT 6 **** 99 **** **** **** 0 0
1091 HORSE_DISMOUNT 111879 111880 ife_x3_dismount **** **** **** **** **** **** **** **** **** **** 0 0 0 10 **** 814 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HORSE_DISMOUNT 6 **** 99 **** **** **** 0 0
1092 HORSE_PARTY_MOUNT 111883 111884 ife_x3_pmount **** **** **** **** **** **** **** **** **** **** 0 0 0 10 **** 815 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HORSE_PARTY_MOUNT 6 **** 99 **** **** **** 0 0
1093 HORSE_PARTY_DISMOUNT 111885 111886 ife_x3_pdmount **** **** **** **** **** **** **** **** **** **** 0 0 0 10 **** 816 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_HORSE_GATHER_MOUNTS 6 **** 99 **** **** **** 0 0
1094 HORSE_ASSIGN_MOUNT 111887 111888 ife_x3_amount **** **** **** **** **** **** **** **** **** **** 0 0 0 10 **** 817 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_HORSE_ASSIGN_MOUNT 6 **** 99 **** **** **** 0 0
1095 PALADIN_SUMMON_MOUNT 111881 111882 ife_x3_whsummon **** **** **** **** **** **** **** **** **** **** 0 0 0 2 **** 818 **** 1 1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_PALADIN_SUMMON_MOUNT 6 **** **** **** **** **** 0 1
1089 HORSE_MENU 111875 111876 ife_x3_horse **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 812 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_HORSE_MENU 6 **** 99 **** **** **** 0 0
1090 HORSE_MOUNT 111877 111878 ife_x3_mount **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 813 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HORSE_MOUNT 6 **** 99 **** **** **** 0 0
1091 HORSE_DISMOUNT 111879 111880 ife_x3_dismount **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 814 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HORSE_DISMOUNT 6 **** 99 **** **** **** 0 0
1092 HORSE_PARTY_MOUNT 111883 111884 ife_x3_pmount **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 815 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_HORSE_PARTY_MOUNT 6 **** 99 **** **** **** 0 0
1093 HORSE_PARTY_DISMOUNT 111885 111886 ife_x3_pdmount **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 816 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_HORSE_GATHER_MOUNTS 6 **** 99 **** **** **** 0 0
1094 HORSE_ASSIGN_MOUNT 111887 111888 ife_x3_amount **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 817 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_HORSE_ASSIGN_MOUNT 6 **** 99 **** **** **** 0 0
1095 PALADIN_SUMMON_MOUNT 111881 111882 ife_x3_whsummon **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 818 **** 1 1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_PALADIN_SUMMON_MOUNT 6 **** **** **** **** **** 0 1
1096 DM_TOOL_01 111674 111935 ife_x3_dmtool01 **** **** **** **** **** **** **** **** **** **** 0 0 1 10 **** 820 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_DM_TOOL_01 6 **** 99 **** **** **** 0 0
1097 DM_TOOL_02 111675 111936 ife_x3_dmtool02 **** **** **** **** **** **** **** **** **** **** 0 0 1 10 **** 821 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_DM_TOOL_02 6 **** 99 **** **** **** 0 0
1098 DM_TOOL_03 111676 111937 ife_x3_dmtool03 **** **** **** **** **** **** **** **** **** **** 0 0 1 10 **** 822 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_DM_TOOL_03 6 **** 99 **** **** **** 0 0

View File

@ -2724,7 +2724,7 @@
2720 Gather_Shaman **** 1 1 1 1 0
2721 BLOOD_OF_THE_WARLORD **** 1 1 1 4 0
2722 Dirge_Sorrow **** 1 1 1 1 0
2723 InlindlSchool **** 1 1 1 2 0
2723 InlindlSchool **** 1 1 1 **** 0
2724 SpinningHalberd **** 1 1 1 **** 0
2725 Shou_Flurry_Light **** 1 1 1 0 0
2726 Shou_Flurry_All **** 1 1 1 0 0

View File

@ -2811,8 +2811,8 @@
2807 ImprovedTrip 16834580 16834581 ife_X1ImpExp **** **** **** 13 **** **** **** **** 389 **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_ALERTNESS 5 **** **** **** **** **** 0 1
2808 FEAT_ACROBATIC_CHARGE 16822731 16822735 ife_x2epicdodge **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 1750 **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_ACROBATIC_CHARGE 4 **** **** **** **** **** 0 1
2809 CurlingWaveStrike 16834582 16834583 ife_X2ImKiStrk5 **** **** 13 **** **** **** **** **** 2807 **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_ALERTNESS 5 **** **** **** **** **** 0 1
2810 Bullrush 16834586 16834587 ife_X1Bull **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3476 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
2811 Overrun 16834588 16834589 ife_X1DivMig **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3477 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
2810 Bullrush 16834586 16834587 ife_X1Bull **** **** **** **** **** **** **** **** **** **** 0 0 0 22 1 3476 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
2811 Overrun 16834588 16834589 ife_X1DivMig **** **** **** **** **** **** **** **** **** **** 0 0 0 22 1 3477 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
2812 FEAT_ELABORATE_PARRY 16822736 16822737 ife_impparry **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_ELABORATE_PARRY 4 **** **** **** **** **** 0 1
2813 FEAT_EPIC_DUELIST 16822738 16822739 ife_epduel **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_EPIC_DUELIST 4 **** **** **** **** **** 0 1
2814 FEAT_BLAST_INFIDEL 16822748 16822749 ife_x2grsmt1 **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_BLAST_INFIDEL 4 **** **** **** **** **** 0 1
@ -2823,8 +2823,8 @@
2819 FEAT_SPELLPOWER_6 16822756 16822759 ife_X1GFSPen **** **** **** **** **** **** **** **** 2818 **** 0 0 0 **** **** **** 2820 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SPELL_POWER_6 4 **** **** **** **** **** 0 1
2820 FEAT_SPELLPOWER_8 16822757 16822759 ife_X1GFSPen **** **** **** **** **** **** **** **** 2819 **** 0 0 0 **** **** **** 2821 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SPELL_POWER_8 4 **** **** **** **** **** 0 1
2821 FEAT_SPELLPOWER_10 16822758 16822759 ife_X1GFSPen **** **** **** **** **** **** **** **** 2820 **** 0 0 0 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SPELL_POWER_10 4 **** **** **** **** **** 0 1
2822 Trip 16834590 16834591 ife_X1ImpExp **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3478 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
2823 Charge 16834592 16834593 ife_X2ImKiStrk5 **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3479 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
2822 Trip 16834590 16834591 ife_X1ImpExp **** **** **** **** **** **** **** **** **** **** 0 0 0 22 1 3478 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
2823 Charge 16834592 16834593 ife_X2ImKiStrk5 **** **** **** **** **** **** **** **** **** **** 0 0 0 22 1 3479 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
2824 UnsettlingEnchantment 16827143 16827144 ife_X2EpicRepu **** **** **** **** **** **** **** **** 168 **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_ALERTNESS 5 **** **** **** **** **** 0 1
2825 SLA_I 16822760 16822761 ife_heiro_sla1 **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 2036 **** 1 5 **** **** **** **** **** **** **** **** **** **** **** FEAT_SLA_I 4 **** **** **** **** **** 0 0
2826 SLA_II 16822760 16822761 ife_heiro_sla2 **** **** **** **** **** **** **** **** 2825 **** 0 0 0 **** **** 2037 **** 1 5 **** **** **** **** **** **** **** **** **** **** **** FEAT_SLA_II 4 **** **** **** **** **** 0 0
@ -3414,9 +3414,9 @@
3410 OcAdept_FlSto 16789515 16789525 ife_petray **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 1545 **** 1 2 **** 0 **** **** **** **** **** **** **** **** **** FEAT_PETRAY 6 **** **** **** **** **** 0 1
3411 OcAdept_Dis 16789516 16789526 ife_disray **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 1546 **** 1 2 **** 0 **** **** **** **** **** **** **** **** **** FEAT_DISRAY 6 **** **** **** **** **** 0 1
3412 OcAdept_Death 16789517 16789527 ife_deathray **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 1547 **** 1 2 **** 0 **** **** **** **** **** **** **** **** **** FEAT_DEATHRAY 6 **** **** **** **** **** 0 1
3413 ChargeBullrush 16834594 16834595 ife_X2Epfighter **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3480 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
3414 GrappleBegin 16834584 16834585 ife_X2ImKiStrk4 **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3475 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
3415 CombatMove_RadialMaster3 16833148 16832298 ife_X2Epmonk **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3496 **** 0.5 -1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 **** **** **** **** **** 0 0
3413 ChargeBullrush 16834594 16834595 ife_X2Epfighter **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3480 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
3414 GrappleBegin 16834584 16834585 ife_X2ImKiStrk4 **** **** **** **** **** **** **** **** **** **** 0 0 0 22 1 3475 **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
3415 CombatMove_RadialMaster3 16833148 16832298 ife_X2Epmonk **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3496 **** 0.5 **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 **** **** **** **** **** 0 0
3416 FEAT_EPIC_SAMURAI 16789545 16789546 ife_X2Epfighter **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_EPIC_SAMURAI 6 **** **** **** **** **** 1 1
3417 Samur_AncestralDaisho 16789547 16789548 ife_wepspec_Kat **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 1548 **** 0 **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_ANCESTRAL_DAISHO 6 **** **** **** **** **** 0 1
3418 Warpr_Rally 16789555 16789556 is_fear **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 1549 **** 0 **** **** 1 **** **** **** **** **** **** **** **** **** FEAT_RALLY 6 **** **** **** **** **** 0 1
@ -5285,7 +5285,7 @@
5281 SpiderfriendMagic 16834999 16835000 ife_web **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_BLADE_MEDITATION **** **** **** **** **** **** **** 1
5282 ProfaneAgony 16834997 16834998 ife_prfnlflch **** **** **** **** **** **** **** **** 294 **** 0 0 1 **** **** 3792 **** 0.5 -1 **** **** 310 313 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
5283 DivineIntercession 16834995 16834996 ife_telep_manag **** **** **** **** **** **** **** **** 294 **** 0 0 1 **** **** 3791 **** 0.5 -1 **** **** 324 323 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
5284 InlindlSchool 16834993 16834994 ife_X2DCrtWhip **** **** **** 13 **** **** **** **** 389 42 **** **** 1 **** **** 2723 **** **** -1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_INLINDL_SCHOOL 2 **** **** **** **** **** 0 0
5284 InlindlSchool 16834993 16834994 ife_X2DCrtWhip **** **** **** 13 **** **** **** **** 389 42 **** **** 1 22 1 2723 **** 0.5 **** **** 0 **** **** **** **** **** **** **** **** **** FEAT_INLINDL_SCHOOL 2 1 **** **** **** **** 0 1
5285 VaeSchool 16834991 16834992 ife_X2WpCh 7 **** **** **** **** **** **** **** 993 **** **** **** 1 **** **** **** **** **** **** **** **** 2807 4079 **** **** **** **** **** **** **** FEAT_SNAP_KICK **** **** **** **** **** **** **** 0
5286 ThreeMountains 16834989 16834990 ife_X2DiviWrth **** 13 **** **** **** **** **** **** 2806 6 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SNAP_KICK **** **** **** **** **** **** **** 0
5287 SpinningHalberd 16834987 16834988 ife_X2CritDHalb **** **** **** **** **** **** **** **** 112 **** 0 0 1 **** **** 2724 **** 0.5 -1 **** **** 41 374 **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
@ -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 **** **** 2340 **** 0.5 -1 **** **** **** **** **** **** **** **** **** **** **** FEAT_SMITE_UNDEAD 6 1 **** **** **** **** 0 1
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
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
@ -24002,7 +24002,7 @@
23998 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1
23999 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1
24000 SkillFocusAlchemy 16847243 424 ife_X2BrewPotion **** **** **** **** **** **** **** **** **** **** **** 1 1 4 **** **** **** **** **** 4 **** **** **** **** **** **** **** **** **** **** FEAT_SKILL_FOCUS_ALCHEMY **** 0 **** **** **** **** **** 1
24001 EpicSkillFocusAlchemy 16847245 4063 ife_X2BrewPotion **** **** **** **** **** **** **** **** **** **** **** 1 1 15 **** **** **** **** **** 16 **** **** **** **** **** **** 34 20 **** **** FEAT_EPIC_SKILL_FOCUS_ALCHEMY **** 0 **** **** **** **** 1 1
24001 EpicSkillFocusAlchemy 16847245 4063 ife_X2BrewPotion **** **** **** **** **** **** **** **** **** **** **** 1 1 15 **** **** **** **** **** 15 **** **** **** **** **** **** 34 20 **** **** FEAT_EPIC_SKILL_FOCUS_ALCHEMY **** 0 **** **** **** **** 1 1
24002 MagicalArtisanMagicArmsAndArmor 16847247 16847257 ife_crftarmarmor **** **** **** **** **** **** **** **** 2926 **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MAGICAL_ARTISAN_CRAFT_MAGIC_ARMS **** 0 **** **** **** **** **** 1
24003 MagicalArtisanCraftRod 16847248 16847257 ife_craft_rod **** **** **** **** **** **** **** **** 2927 **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MAGICAL_ARTISAN_CRAFT_ROD **** 0 **** **** **** **** **** 1
24004 MagicalArtisanCraftStaff 16847249 16847257 ife_craft_staff **** **** **** **** **** **** **** **** 2928 **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MAGICAL_ARTISAN_CRAFT_STAFF **** 0 **** **** **** **** **** 1

View File

@ -31,7 +31,7 @@
27 Shadowdancer 2944 **** **** 0
28 Harper 2956 S Arc 0
29 Arcane_Archer 9003 **** **** 0
30 Assassin 9007 S Arc 0
30 Assassin 9007 P Arc 0
31 Blackguard 9011 P Div 0
32 Champion_Torm 9015 **** **** 0
33 WeaponMaster 9019 **** **** 0

View File

@ -2542,7 +2542,7 @@
2538 DEMONFLESH 16829512 is_demonflesh T P vs 0x3a 0x09 sp_demonflesh **** **** **** **** **** **** 1 1500 head VCO_MEHEDEVIL01 **** **** SCO_LGSPREVIL01 VS_CHANT_CONJ_LM VS_CHANT_CONJ_LF self 1000 **** **** VCA_UPHEXEVIL01 SDR_PARALYZED 0 **** **** **** **** **** **** 1 **** **** **** **** **** 10 **** 1 16829513 1 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** **** ****
2539 DESPOIL 16829514 is_despoil T P vs 0x38 0x09 sp_despoil **** 9 **** **** **** **** 9 1500 head VCO_MEHEDNATR01 **** VCO_GRNDLEAF SCO_LGSPREVIL01 VS_CHANT_ENCH_HM VS_CHANT_ENCH_HF Area 1000 **** **** VCA_UPHEXEVIL01 SAR_CONEDISEA 0 **** **** **** **** **** **** 1 **** **** **** **** **** 11 **** 1 16829515 1 0 **** 1 **** **** **** **** Sphere 518.16 **** 3 **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2540 DEVILS_EGO 16829516 is_devils_ego T P vs 0x3b 0x09 sp_devils_ego **** **** **** **** **** **** 3 1500 head VCO_MEHEDEVIL01 **** **** SCO_MEHEDEVIL01 VS_CHANT_ENCH_HM VS_CHANT_ENCH_HF self 1000 **** **** **** c_devil_hit2 0 **** **** **** **** **** **** **** **** **** **** **** **** 10 **** 1 16829517 1 0 **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2541 DEVILS_EYE 16829518 is_devils_eye D P vs 0x38 0x09 sp_devils_eye **** 3 **** **** **** 3 3 1500 head VCO_MEHEDEVIL01 **** **** SCO_MEGRDEVIL01 VS_CHANT_EVOC_HM VS_CHANT_EVOC_HF self 1000 **** **** **** c_devil_hit1 0 **** **** **** **** **** **** **** **** **** **** **** **** 10 **** 1 16829519 1 0 **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** 2 **** **** **** **** **** **** ****
2541 DEVILS_EYE 16829518 is_devils_eye D P vs 0x3a 0x09 sp_devils_eye **** 3 **** **** **** 3 3 1500 head VCO_MEHEDEVIL01 **** **** SCO_MEGRDEVIL01 VS_CHANT_EVOC_HM VS_CHANT_EVOC_HF self 1000 **** **** **** c_devil_hit1 0 **** **** **** **** **** **** **** **** **** **** **** **** 10 **** 1 16829519 1 0 **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** 2 **** **** **** **** **** **** ****
2542 DEVILS_TAIL 16829520 **** T **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 16829521 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2543 DREAD_WORD 16829522 is_dread_word V S v 0x1d 0x0a sp_dread_word **** **** **** **** **** 3 3 1500 hand **** VCO_MEHANEVIL02 **** SCO_MEHANEVIL02 VS_CHANT_EVOC_LM VS_CHANT_EVOC_LF out 1000 **** VCA_OUTNEG **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** 2 **** 1 16829523 1 0 **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2544 DRUG_RESISTANCE 16829524 is_drug_resist E T v 0x18 0x0b sp_drug_resist **** 1 **** **** **** 1 1 1500 hand **** VCO_MEHANHEAL02 **** SCO_MEHANMIND01 VS_CHANT_ENCH_LM VS_CHANT_ENCH_LF touch 1000 **** VCA_OUTHOLY01 **** SDR_SANCTUARY 0 **** **** **** **** **** **** **** **** **** **** **** **** 9 **** 1 16829525 1 0 **** 0 **** **** **** **** **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** ****
@ -2724,8 +2724,8 @@
2720 Gather_Shaman 16824333 ife_x2wfspr V P **** 0x00 0x04 ow_sum_sham **** **** **** **** **** **** 1 0 head **** **** **** **** **** **** self 0 **** **** **** **** 0 **** **** **** **** **** **** 1 **** **** **** **** **** **** 2715 3 **** 0 0 **** 0 365564420 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2721 BLOOD_OF_THE_WARLORD 16824316 ife_x2mightrage V P 0 0x00 0x09 ft_bloodwarlord **** **** **** **** **** **** 4 1 head **** **** **** **** **** **** out 500 **** **** **** **** 0 **** **** **** **** **** **** 1 **** **** **** **** **** 16 **** 3 **** 0 0 53219 0 4608 **** **** 0 sphere 10 **** 20 **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2722 Dirge_Sorrow 16835023 IR_USE V P v **** 0x01 prc_ft_hntmldy **** **** **** **** **** **** 1 500 head **** **** **** **** **** **** out 500 **** **** **** **** 0 **** **** **** **** **** Cold 1 **** **** **** **** **** 8 **** 3 6075 0 0 53224 0 257 **** **** 0 Sphere 9.14 **** 18 **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2723 InlindlSchool 16834993 is_Invisib I P s 0x00 0x01 prc_ft_inlindl **** **** **** **** **** **** 2 0 **** **** **** **** **** **** **** self 1000 **** **** **** sdr_invisible 0 **** **** **** **** **** **** 0 **** **** **** **** **** 10 **** 3 **** 0 0 **** 0 5284 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2724 SpinningHalberd 16834987 is_SlayLive N T 0 **** 0x02 prc_ft_spnhlbrd **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** attack 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** **** 1 **** 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2723 InlindlSchool 16834993 is_Invisib I T s 0x00 0x32 prc_ft_inlindl **** **** **** **** **** **** **** **** hand **** **** **** **** **** **** attack 1000 **** **** **** sdr_invisible 0 **** **** **** **** **** **** 0 **** **** **** **** **** 22 **** 3 16834994 0 0 16824540 1 5284 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2724 SpinningHalberd 16834987 is_SlayLive N T s 0x00 0x32 prc_ft_spnhlbrd **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** attack 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 22 **** 3 **** 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2725 Shou_Flurry_Light **** **** V L **** 0x00 0x04 prc_shou_flrylgt **** **** **** **** **** **** 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** **** **** 3 **** 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2726 Shou_Flurry_All **** **** V L **** 0x00 0x04 prc_shou_flryall **** **** **** **** **** **** 0 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** **** **** **** **** **** 3 **** 0 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
2727 FEAT_JUMP 16826011 ife_jump V L **** 0x00 0x04 skill_jump **** **** **** **** **** **** 0 0 **** **** **** **** **** **** **** **** 0 **** **** **** **** 0 **** **** **** **** **** **** 1 **** **** **** **** **** **** **** 3 **** 0 0 **** 0 2884 **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

View File

@ -242,7 +242,7 @@ void SetupLookupStage(object oMod, int n)
case 11: SetLkupStage(n, oMod, CLASS_TYPE_DRAGON_SHAMAN, "cls_inv_drgshm"); break;
case 12: SetLkupStage(n, oMod, CLASS_TYPE_WARLOCK, "cls_inv_warlok"); break;
case 13: SetLkupStage(n, oMod, CLASS_TYPE_ARCHIVIST, "cls_spell_archv"); break;
case 14: SetLkupStage(n, oMod, CLASS_TYPE_ASSASSIN, "cls_spell_asasin"); break;
//case 14: SetLkupStage(n, oMod, CLASS_TYPE_ASSASSIN, "cls_spell_asasin"); break;
case 15: SetLkupStage(n, oMod, CLASS_TYPE_BARD, "cls_spell_bard"); break;
case 16: SetLkupStage(n, oMod, CLASS_TYPE_BEGUILER, "cls_spell_beguil"); break;
case 17: SetLkupStage(n, oMod, CLASS_TYPE_DREAD_NECROMANCER, "cls_spell_dnecro"); break;
@ -528,7 +528,7 @@ int SpellToSpellbookID(int nSpell)
int nOutSpellID = GetLocalInt(oWP, /*"PRC_GetRowFromSpellID_" + */IntToString(nSpell));
if(nOutSpellID == 0)
nOutSpellID = -1;
//if(DEBUG) DoDebug("SpellToSpellbookID(" + IntToString(nSpell) + ", " + sFile + ") = " + IntToString(nOutSpellID));
if(DEBUG) DoDebug("inc_lookup >> SpellToSpellbookID: (nSpell: " + IntToString(nSpell) + ") = nOutSpellID: " + IntToString(nOutSpellID));
return nOutSpellID;
}

View File

@ -559,7 +559,7 @@ int bKnowsAllClassSpells(int nClass)
{
//case CLASS_TYPE_WIZARD:
case CLASS_TYPE_ARCHIVIST:
case CLASS_TYPE_ASSASSIN:
//case CLASS_TYPE_ASSASSIN:
case CLASS_TYPE_BARD:
case CLASS_TYPE_CELEBRANT_SHARESS:
case CLASS_TYPE_CULTIST_SHATTERED_PEAK:
@ -850,7 +850,7 @@ void SetupSpells(object oPC, int nClass)
int nAbility = GetAbilityScoreForClass(nClass, oPC);
int nSpellbookType = GetSpellbookTypeForClass(nClass);
if(DEBUG) DoDebug("SetupSpells\n"
if(DEBUG) DoDebug("SetupSpells()\n"
+ "nClass = " + IntToString(nClass) + "\n"
+ "nSpellslotLevel = " + IntToString(nLevel) + "\n"
+ "nAbility = " + IntToString(nAbility) + "\n"
@ -1178,7 +1178,7 @@ void CastSpontaneousSpell(int nClass, int bInstantSpell = FALSE)
else if(GetLocalInt(OBJECT_SELF, "PRC_metamagic_state") == 1)
SetLocalInt(OBJECT_SELF, "MetamagicFeatAdjust", 0);
}
if (DEBUG) DoDebug("CastSpontaneousSpell(): nSpellLevel is: "+IntToString(nSpellLevel)+".");
CheckSpontSlots(nClass, nSpellID, nSpellLevel);
if(GetLocalInt(OBJECT_SELF, "NSB_Cast"))
ActionDoCommand(CheckSpontSlots(nClass, nSpellID, nSpellLevel, TRUE));
@ -1331,6 +1331,8 @@ void NewSpellbookSpell(int nClass, int nSpellbookType, int nMetamagic = METAMAGI
string sFile = GetFileForClass(nClass);
int nSpellLevel = StringToInt(Get2DACache(sFile, "Level", nSpellbookID));
if (DEBUG) DoDebug("inc_newspellbook >> NewSpellbookSpell(): nSpellbookType is: "+IntToString(nSpellbookType)+".");
// Make sure the caster has uses of this spell remaining
// 2009-9-20: Add metamagic feat abilities. -N-S
if(nSpellbookType == SPELLBOOK_TYPE_PREPARED)
@ -1371,13 +1373,14 @@ void NewSpellbookSpell(int nClass, int nSpellbookType, int nMetamagic = METAMAGI
else if(nSpellLevel > 9)//now test the spell level
{
nMetamagic = METAMAGIC_NONE;
ActionDoCommand(SendMessageToPC(oPC, "Modified spell level is to high! Casting spell without metamagic"));
ActionDoCommand(SendMessageToPC(oPC, "Modified spell level is too high! Casting spell without metamagic"));
nSpellLevel = nSpellSlotLevel;
}
else if(GetLocalInt(oPC, "PRC_metamagic_state") == 1)
SetLocalInt(oPC, "MetamagicFeatAdjust", 0);
}
if (DEBUG) DoDebug("inc_newspellbook >> NewSpellbookSpell(): nSpellLevel is: "+IntToString(nSpellLevel)+".");
CheckSpontSlots(nClass, nSpellID, nSpellLevel);
if(GetLocalInt(oPC, "NSB_Cast"))
ActionDoCommand(CheckSpontSlots(nClass, nSpellID, nSpellLevel, TRUE));
@ -1460,7 +1463,7 @@ void CheckPrepSlots(int nClass, int nSpellID, int nSpellbookID, int bIsAction =
{
DeleteLocalInt(OBJECT_SELF, "NSB_Cast");
int nCount = persistant_array_get_int(OBJECT_SELF, "NewSpellbookMem_" + IntToString(nClass), nSpellbookID);
if(DEBUG) DoDebug("NewSpellbookSpell: NewSpellbookMem_" + IntToString(nClass) + "[" + IntToString(nSpellbookID) + "] = " + IntToString(nCount));
if(DEBUG) DoDebug("NewSpellbookSpell >> CheckPrepSlots: NewSpellbookMem_" + IntToString(nClass) + "[SpellbookID: " + IntToString(nSpellbookID) + "] = " + IntToString(nCount));
if(nCount < 1)
{
string sSpellName = GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nSpellID)));
@ -1486,7 +1489,7 @@ void CheckSpontSlots(int nClass, int nSpellID, int nSpellSlotLevel, int bIsActio
{
DeleteLocalInt(OBJECT_SELF, "NSB_Cast");
int nCount = persistant_array_get_int(OBJECT_SELF, "NewSpellbookMem_" + IntToString(nClass), nSpellSlotLevel);
if(DEBUG) DoDebug("NewSpellbookSpell: NewSpellbookMem_" + IntToString(nClass) + "[" + IntToString(nSpellSlotLevel) + "] = " + IntToString(nCount));
if(DEBUG) DoDebug("NewSpellbookSpell >> CheckSpontSlots: NewSpellbookMem_" + IntToString(nClass) + "[SpellSlotLevel: " + IntToString(nSpellSlotLevel) + "] = " + IntToString(nCount));
if(nCount < 1)
{
// "You have no castings of spells of level " + IntToString(nSpellLevel) + " remaining"

View File

@ -513,6 +513,8 @@ int PRCGetSpellSaveDC(int nSpellID = -1, int nSchool = -1, object oCaster = OBJE
if(nClass == CLASS_TYPE_BARD)
nDC += StringToInt(Get2DACache("Spells", "Bard", nSpellID));
else if(nClass == CLASS_TYPE_ASSASSIN)
nDC += StringToInt(Get2DACache("Spells", "Assassin", nSpellID));
else if(nClass == CLASS_TYPE_CLERIC || nClass == CLASS_TYPE_UR_PRIEST || nClass == CLASS_TYPE_OCULAR)
nDC += StringToInt(Get2DACache("Spells", "Cleric", nSpellID));
else if(nClass == CLASS_TYPE_DRUID)

View File

@ -3933,6 +3933,8 @@ const int FEAT_OPPORTUNISTIC_PIETY_HEAL = 5358;
const int FEAT_OPPORTUNISTIC_PIETY_TURN = 5359;
// Combat Maneuver Feats
const int FEAT_CM_CHARGE = 2823;
const int FEAT_CM_GRAPPLE = 3414;
const int FEAT_CURLING_WAVE_STRIKE = 2809;
const int FEAT_SIDESTEP_CHARGE = 3505;
const int FEAT_POWERFUL_CHARGE = 3506;

View File

@ -1148,8 +1148,8 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_ASSASSIN, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_ASSASSIN, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DRAGONHEART_MAGE, oCaster);
//if(GetHasFeat(FEAT_DHEART_SPELLCASTING_ASSASSIN, oCaster))
//nArcane += GetLevelByClass(CLASS_TYPE_DRAGONHEART_MAGE, oCaster);
if(GetHasFeat(FEAT_EKNIGHT_SPELLCASTING_ASSASSIN, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_ELDRITCH_KNIGHT, oCaster);

View File

@ -605,7 +605,7 @@ int PRCGetHasSpell(int nRealSpellID, object oCreature = OBJECT_SELF)
if(nSpellbookType == SPELLBOOK_TYPE_PREPARED)
{
nCount = persistant_array_get_int(oCreature, "NewSpellbookMem_" + IntToString(nClass), j);
if(DEBUG) DoDebug("PRCGetHasSpell: NewSpellbookMem_" + IntToString(nClass) + "[" + IntToString(j) + "] = " + IntToString(nCount));
if(DEBUG) DoDebug("prc_inc_core >> PRCGetHasSpell: NewSpellbookMem_" + IntToString(nClass) + "[" + IntToString(j) + "] = " + IntToString(nCount));
if(nCount > 0)
{
nUses += nCount;
@ -615,7 +615,7 @@ int PRCGetHasSpell(int nRealSpellID, object oCreature = OBJECT_SELF)
{
nSpellLevel = StringToInt(Get2DACache(sFile, "Level", j));
nCount = persistant_array_get_int(oCreature, "NewSpellbookMem_" + IntToString(nClass), nSpellLevel);
if(DEBUG) DoDebug("PRCGetHasSpell: NewSpellbookMem_" + IntToString(nClass) + "[" + IntToString(j) + "] = " + IntToString(nCount));
if(DEBUG) DoDebug("prc_inc_core >> PRCGetHasSpell: NewSpellbookMem_" + IntToString(nClass) + "[" + IntToString(j) + "] = " + IntToString(nCount));
if(nCount > 0)
{
nUses += nCount;

View File

@ -795,7 +795,7 @@ int GetWeaponSize(object oWeapon)
case BASE_ITEM_GREATAXE:
case BASE_ITEM_HEAVYFLAIL:
case BASE_ITEM_QUARTERSTAFF:
case BASE_ITEM_MAGICSTAFF:
//case BASE_ITEM_MAGICSTAFF:
case BASE_ITEM_SCYTHE:
case BASE_ITEM_SHORTSPEAR:
case BASE_ITEM_ELVEN_COURTBLADE:
@ -832,7 +832,7 @@ int PRCLargeWeaponCheck(int iBaseType, int nSize)
case BASE_ITEM_GREATAXE:
case BASE_ITEM_HEAVYFLAIL:
case BASE_ITEM_QUARTERSTAFF:
case BASE_ITEM_MAGICSTAFF:
//case BASE_ITEM_MAGICSTAFF:
case BASE_ITEM_SCYTHE:
case BASE_ITEM_SHORTSPEAR:
case BASE_ITEM_ELVEN_COURTBLADE:

View File

@ -108,7 +108,7 @@ void SetupCharacterData(object oPC)
case CLASS_TYPE_ALIENIST: sScript = "prc_alienist"; break;
case CLASS_TYPE_ARCANE_DUELIST: sScript = "prc_arcduel"; break;
case CLASS_TYPE_ARCHIVIST: sScript = "prc_archivist"; iData |= 0x01; break;
case CLASS_TYPE_ASSASSIN: iData |= 0x03; break;
case CLASS_TYPE_ASSASSIN: break;
case CLASS_TYPE_BAELNORN: sScript = "prc_baelnorn"; break;
case CLASS_TYPE_BARD: iData |= 0x07; break;
case CLASS_TYPE_BATTLESMITH: sScript = "prc_battlesmith"; break;
@ -121,7 +121,7 @@ void SetupCharacterData(object oPC)
case CLASS_TYPE_BLIGHTLORD: sScript = "prc_blightlord"; break;
case CLASS_TYPE_BLOODCLAW_MASTER: sScript = "tob_bloodclaw"; break;
case CLASS_TYPE_BONDED_SUMMONNER: sScript = "prc_bondedsumm"; break;
case CLASS_TYPE_CELEBRANT_SHARESS: iData |= 0x03; break;
case CLASS_TYPE_CELEBRANT_SHARESS: iData |= 0x07; break;
case CLASS_TYPE_CHILD_OF_NIGHT: sScript = "shd_childnight"; break;
case CLASS_TYPE_COC: sScript = "prc_coc"; break;
case CLASS_TYPE_COMBAT_MEDIC: sScript = "prc_cbtmed"; break;

View File

@ -20,6 +20,9 @@
/* Function prototypes */
//////////////////////////////////////////////////
//:: Calculates total Shield AC bonuses from all sources
int GetTotalShieldACBonus(object oCreature);
//:: Handles psuedo-Foritifcation
void DoFortification(object oPC = OBJECT_SELF, int nFortification = 25);
@ -2223,6 +2226,78 @@ int GetControlledCelestialTotalHD(object oPC = OBJECT_SELF)
return nTotalHD;
}
//:: Calculates total Shield AC bonuses from all sources
int GetTotalShieldACBonus(object oCreature)
{
int nShieldBonus = 0;
object oItem;
// Check left hand for shield
oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCreature);
if (GetIsObjectValid(oItem))
{
int nBaseItem = GetBaseItemType(oItem);
if (nBaseItem == BASE_ITEM_SMALLSHIELD ||
nBaseItem == BASE_ITEM_LARGESHIELD ||
nBaseItem == BASE_ITEM_TOWERSHIELD)
{
nShieldBonus += GetItemACValue(oItem);
if(DEBUG) DoDebug("prc_inc_spells >> GetTotalShieldACBonus: Found Shield AC, bonus = " + IntToString(nShieldBonus)+".");
}
}
// Check creature weapon slots for shield AC bonus
oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oCreature);
if (GetIsObjectValid(oItem))
nShieldBonus += GetItemACValue(oItem);
oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oCreature);
if (GetIsObjectValid(oItem))
nShieldBonus += GetItemACValue(oItem);
oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oCreature);
if (GetIsObjectValid(oItem))
nShieldBonus += GetItemACValue(oItem);
// Add shield AC bonuses from magical effects
effect eEffect = GetFirstEffect(oCreature);
while (GetIsEffectValid(eEffect))
{
int nACType = GetEffectInteger(eEffect, 0);
int nACAmount = GetEffectInteger(eEffect, 1);
if(GetEffectType(eEffect) == EFFECT_TYPE_AC_INCREASE && nACType == AC_SHIELD_ENCHANTMENT_BONUS)
{
if(DEBUG) DoDebug("prc_inc_spells >> GetTotalShieldACBonus: Found Shield AC effect, bonus = " + IntToString(nACAmount)+".");
nShieldBonus += nACAmount;
}
eEffect = GetNextEffect(oCreature);
}
return nShieldBonus;
}
// Add shield AC bonuses from magical effects
/* effect eEffect = GetFirstEffect(oCreature);
while (GetIsEffectValid(eEffect))
{
if (GetEffectType(eEffect) == EFFECT_TYPE_AC_INCREASE &&
GetEffectInteger(eEffect, 1) == AC_SHIELD_ENCHANTMENT_BONUS)
{
int nMod = GetEffectInteger(eEffect, 0);
int nType = GetEffectInteger(eEffect, 1);
nShieldBonus += GetEffectInteger(eEffect, 0);
string s = "Found AC effect: bonus = " + IntToString(nMod) + ", type = " + IntToString(nType);
SendMessageToPC(GetFirstPC(), s);
}
eEffect = GetNextEffect(oCreature);
}
return nShieldBonus;
}*/
//
//:: Handles psuedo-Foritifcation
void DoFortification(object oPC = OBJECT_SELF, int nFortification = 25)
{
@ -2275,7 +2350,7 @@ void DoFortification(object oPC = OBJECT_SELF, int nFortification = 25)
IPSafeAddItemProperty(oHide, ItemPropertyImmunityMisc(IP_CONST_IMMUNITYMISC_BACKSTAB));
}
}
//
// wrapper for DecrementRemainingSpellUses, works for newspellbook 'fake' spells too
// should also find and decrement metamagics for newspellbooks

View File

@ -387,8 +387,7 @@ int IsClassAllowedToUseNUISpellbook(object oPlayer, int nClass)
return TRUE;
// Arcane Spont
if (nClass == CLASS_TYPE_ASSASSIN
|| nClass == CLASS_TYPE_BEGUILER
if (nClass == CLASS_TYPE_BEGUILER
|| nClass == CLASS_TYPE_CELEBRANT_SHARESS
|| nClass == CLASS_TYPE_DREAD_NECROMANCER
|| nClass == CLASS_TYPE_DUSKBLADE
@ -506,8 +505,7 @@ int CanClassUseMetamagicFeats(int nClass)
// I don't want to spend the time looping through each class's
// feat 2da so this is the list of all classes that are allowed to use the
// Spellbook NUI and can use Metamagic
return (nClass == CLASS_TYPE_ASSASSIN
|| nClass == CLASS_TYPE_BARD
return (nClass == CLASS_TYPE_BARD
|| nClass == CLASS_TYPE_SORCERER
|| nClass == CLASS_TYPE_BEGUILER
|| nClass == CLASS_TYPE_DREAD_NECROMANCER
@ -527,7 +525,6 @@ int CanClassUseSuddenMetamagicFeats(int nClass)
// Spellbook NUI and can use Sudden Metamagic
return (nClass == CLASS_TYPE_SHADOWLORD
|| nClass == CLASS_TYPE_ARCHIVIST
|| nClass == CLASS_TYPE_ASSASSIN
|| nClass == CLASS_TYPE_BARD
|| nClass == CLASS_TYPE_BEGUILER
|| nClass == CLASS_TYPE_DREAD_NECROMANCER

View File

@ -125,8 +125,8 @@ void CheckSpellbooks(object oPC)
CheckMissingSpells(oPC, CLASS_TYPE_ARCHIVIST, 0, 9);
CheckMissingSpells(oPC, CLASS_TYPE_BEGUILER, 0, 9);
CheckMissingSpells(oPC, CLASS_TYPE_HARPER, 1, 3);
CheckMissingSpells(oPC, CLASS_TYPE_ASSASSIN, 1, 4);
CheckMissingSpells(oPC, CLASS_TYPE_CELEBRANT_SHARESS, 1, 4);
//CheckMissingSpells(oPC, CLASS_TYPE_ASSASSIN, 1, 4);
// Check psionics
DelayCommand(0.0f, CheckPsionics(oPC));

View File

@ -2,5 +2,5 @@
void main()
{
NewSpellbookSpell(CLASS_TYPE_CELEBRANT_SHARESS, SPELLBOOK_TYPE_PREPARED);
NewSpellbookSpell(CLASS_TYPE_CELEBRANT_SHARESS, SPELLBOOK_TYPE_SPONTANEOUS);
}

View File

@ -2,20 +2,72 @@
//:: Name Inlindl School
//:: FileName prc_ft_inlindl.nss
//:://////////////////////////////////////////////
/** You can choose to sacrifice your shield bonus
to AC in exchange for a bonus on melee attack rolls
equal to one-half that bonus. This bonus applies
only on attacks made with light weapons.
/**
You can choose to sacrifice your shield bonus
to AC in exchange for a bonus on melee attack rolls
equal to one-half that bonus. This bonus applies
only on attacks made with light weapons.
Author: Stratovarius
Created: 12.11.2018
Author: Stratovarius
Created: 12.11.2018
Fixed by: Jaysyn
Fixed on: 2025-07-24 16:18:03
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
#include "prc_inc_spells"
#include "prc_inc_combat"
#include "prc_inc_combmove"
void main()
{
object oInitiator = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND);
int nWeaponType = GetBaseItemType(oWeapon);
int nWeaponSize = GetWeaponSize(oWeapon);
int nCreatureSize = GetCreatureSize(oInitiator);
if(DEBUG) DoDebug("prc_ft_inlindl >> Base item type: " + IntToString(nWeaponType));
if(DEBUG) DoDebug("prc_ft_inlindl >> Base item size: " + IntToString(nWeaponSize));
if(DEBUG) DoDebug("prc_ft_inlindl >> Creature size: " + IntToString(nCreatureSize));
effect eBlank;
if (nWeaponType != BASE_ITEM_RAPIER && nWeaponType != BASE_ITEM_ELVEN_THINBLADE && nWeaponType != BASE_ITEM_ELVEN_COURTBLADE &&
(nWeaponSize > 3 || nWeaponSize >= nCreatureSize))
{
SendMessageToPC(oInitiator, "Inlindl School strike requires a light weapon.");
PerformAttack(oTarget, oInitiator, eBlank);
return;
}
PRCRemoveEffectsFromSpell(oInitiator, GetSpellId());
int nShieldAC = GetTotalShieldACBonus(oInitiator);
effect eShieldMalus = EffectACDecrease(nShieldAC, AC_SHIELD_ENCHANTMENT_BONUS);
effect eVis = EffectVisualEffect(VFX_DUR_ARMOR_OF_DARKNESS);
effect eLink = EffectLinkEffects(eShieldMalus, eVis);
//DelayCommand(0.0f, ClearAllActions());
//DelayCommand(0.1f, AssignCommand(oInitiator,
PerformAttackRound(oTarget, oInitiator, eBlank, 0.0, nShieldAC/2, 0, 0, TRUE, "Inlindl School Strike (+"+IntToString(nShieldAC/2)+") : Hit!", "Inlindl School Strike (+"+IntToString(nShieldAC/2)+") : Miss!");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(eLink), oInitiator, 5.9);
ActionAttack(oTarget);
}
// Almost every part of this is wrong. - Jaysyn
/* void main()
{
object oInitiator = OBJECT_SELF;
int nSwitch = GetLocalInt(oInitiator, "InlindlSchool");
@ -35,5 +87,5 @@ void main()
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_ARMOR_OF_DARKNESS));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(eLink), oInitiator, 6.0);
}
}
} */

View File

@ -3,9 +3,13 @@
//:: prc_ft_spnhlbrd.nss
//::///////////////////////////////////////////////
/*
If you hit the same creature with both your
sword and your axe in the same round, you may
make a free trip attempt against that foe.
Type of Feat: General
Prerequisite: Two-Weapon Fighting, Weapon Focus (halberd)
Benefit: When you make a full attack with your halberd, you gain
a +1 dodge bonus to your Armor Class as well as an additional
attack with the weapon at a -5 penalty. This attack deals points
of bludgeoning damage equal to 1d6 + 1/2 your Strength modifier.
Use: Selected
*/
//:://////////////////////////////////////////////
//:: Modified By: Stratovarius

View File

@ -133,7 +133,7 @@ void main()
title = title + ": " + GetStringByStrRef(StringToInt(Get2DACache("classes", "Name", selectedClassId)));
// This is the main window with jRoot as the main pane. It includes titles and parameters (more on those later)
json nui = NuiWindow(jRoot, JsonString(title), NuiBind("geometry"), NuiBind("resizable"), NuiBind("collapsed"), NuiBind("closable"), NuiBind("transparent"), NuiBind("border"));
json nui = NuiWindow(jRoot, JsonString(title), NuiBind("geometry"), NuiBind("resizable"), NuiBind("collapsed"), NuiBind("closable"), NuiBind("transparent"), NuiBind("border"),JSON_NULL,JSON_NULL, NuiBind("edgeConstraint"));
// finally create it and it'll return us a non-zero token.
int nToken = NuiCreate(OBJECT_SELF, nui, PRC_SPELLBOOK_NUI_WINDOW_ID);
@ -151,9 +151,27 @@ void main()
{
float x = JsonGetFloat(JsonObjectGet(geometry, "x"));
float y = JsonGetFloat(JsonObjectGet(geometry, "y"));
geometry = NuiRect(x, y, 489.0f, 351.0f);
float WINDOW_WIDTH = 489.0f;
float WINDOW_HEIGHT = 351.0f;
geometry = NuiRect(x, y, WINDOW_WIDTH, WINDOW_HEIGHT);
}
float QUICKBAR_HEIGHT_ESTIMATE = 40.0f;
float CHAT_BAR_ESTIMATE = 20.0f;
float MIN_BOTTOM_PADDING = 10.0f;
int uiScale = GetPlayerDeviceProperty(OBJECT_SELF, PLAYER_DEVICE_PROPERTY_GUI_SCALE);
float scale = IntToFloat(uiScale) / 100.0f;
float bottomSize = QUICKBAR_HEIGHT_ESTIMATE * scale + CHAT_BAR_ESTIMATE * scale + MIN_BOTTOM_PADDING;
float screenW = IntToFloat(GetPlayerDeviceProperty(OBJECT_SELF, PLAYER_DEVICE_PROPERTY_GUI_WIDTH));
float screenH = IntToFloat(GetPlayerDeviceProperty(OBJECT_SELF, PLAYER_DEVICE_PROPERTY_GUI_HEIGHT));
json edgeConstraint = NuiRect(0.0f,0.0f, 0.0f, bottomSize);
//json edgeConstraint = NuiRect(0.0f, 0.0f, 0.0f, 0.0f);
// Set the binds to their default values
NuiSetBind(OBJECT_SELF, nToken, "geometry", geometry);
NuiSetBind(OBJECT_SELF, nToken, "collapsed", JsonBool(FALSE));
@ -161,6 +179,7 @@ void main()
NuiSetBind(OBJECT_SELF, nToken, "closable", JsonBool(TRUE));
NuiSetBind(OBJECT_SELF, nToken, "transparent", JsonBool(TRUE));
NuiSetBind(OBJECT_SELF, nToken, "border", JsonBool(FALSE));
NuiSetBind(OBJECT_SELF, nToken, "edgeConstraint", edgeConstraint);
NuiSetBindWatch(OBJECT_SELF, nToken, "geometry", TRUE);
}

View File

@ -61,22 +61,9 @@ void main()
{
if(!X2PreSpellCastCode()) return;
//Declare main variables.
int nEvent = GetRunningEvent();
object oPC;
switch(nEvent)
{
case EVENT_ONHEARTBEAT: oPC = OBJECT_SELF; break;
default:
oPC = OBJECT_SELF;
}
PRCSetSchool(SPELL_SCHOOL_ABJURATION);
if(nEvent == FALSE)
{
object oPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nSpell = GetSpellId();
int nCasterLvl = PRCGetCasterLevel(oPC);
@ -119,7 +106,6 @@ void main()
PRCRemoveEffectsFromSpell(oTarget, SPELL_LUMINOUS_ARMOR);
PRCRemoveEffectsFromSpell(oTarget, SPELL_GREATER_LUMINOUS_ARMOR);
RemoveEventScript(oPC, EVENT_ONHEARTBEAT, "sp_lumins_armr", TRUE, FALSE);
effect eArmor = EffectACIncrease(nArmor, AC_ARMOUR_ENCHANTMENT_BONUS, AC_VS_DAMAGE_TYPE_ALL);
eArmor = EffectLinkEffects(eArmor, eLight);
@ -134,26 +120,6 @@ void main()
}
PRCSetSchool();
AddEventScript(oPC, EVENT_ONHEARTBEAT, "sp_lumins_armr", TRUE, FALSE);
DelayCommand(fDur, RemoveEventScript(oPC, EVENT_ONHEARTBEAT, "sp_lumins_armr", TRUE, FALSE));
//Sanctified spells get mandatory 10 pt good adjustment, regardless of switch
AdjustAlignment(oPC, ALIGNMENT_GOOD, 10, FALSE);
}
else if(nEvent == EVENT_ONHEARTBEAT)
{
if(GetHasSpellEffect(SPELL_LUMINOUS_ARMOR, oPC) || GetHasSpellEffect(SPELL_GREATER_LUMINOUS_ARMOR, oPC))
{
object oArmour = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
if (GetBaseAC(oArmour) > 0)
{
ForceUnequip(oPC, oArmour, INVENTORY_SLOT_CHEST);
SendMessageToPC(oPC, "You cannot wear armor while under the effects of Luminous Armour");
}
}
else
{
PRCRemoveEffectsFromSpell(oPC, SPELL_LUMINOUS_ARMOR);
PRCRemoveEffectsFromSpell(oPC, SPELL_GREATER_LUMINOUS_ARMOR);
}
}
}

View File

@ -15156,7 +15156,7 @@ Prerequisite: Healer level 4
A Healer deals with certain kinds of maladies so often, that eventually she can cure them without resorting to a spell. At 4th level, a healer gains the ability to cleanse disease once per day, as if casting a Remove Disease spell.
At epic levels a Healer gains +1 use per day every 4 levels, starting at 21st level.</entry>
<entry id="47323" lang="en" sex="m">****</entry>
<entry id="47324" lang="en" sex="m">****</entry>
<entry id="47324" lang="en" sex="m">&lt;CUSTOM0&gt; performs an Inlindl School strike!</entry>
<entry id="47325" lang="en" sex="m">****</entry>
<entry id="47326" lang="en" sex="m">****</entry>
<entry id="47327" lang="en" sex="m">****</entry>