Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1ec88ceb96 | ||
|
|
01eb86d307 | ||
|
|
ef380d9efb | ||
|
|
f319be6dec |
4328
PRC8_ChangeLog.txt
Normal file
4328
PRC8_ChangeLog.txt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -27,8 +27,8 @@
|
|||||||
23 16828848 Anarchic_Power 16828849 M 21 *_*_*_C_* **** **** 3223_*_*_*_*_* 8 **** 1 17_2_31_8 48_17_70_1 **** **** **** **** 1 ****
|
23 16828848 Anarchic_Power 16828849 M 21 *_*_*_C_* **** **** 3223_*_*_*_*_* 8 **** 1 17_2_31_8 48_17_70_1 **** **** **** **** 1 ****
|
||||||
24 16828826 Axiomatic 16828827 M 7 *_*_*_L_* **** **** 76_*_*_*_*_* 2 **** **** 17_3_10_8 **** **** **** **** **** 0 ****
|
24 16828826 Axiomatic 16828827 M 7 *_*_*_L_* **** **** 76_*_*_*_*_* 2 **** **** 17_3_10_8 **** **** **** **** **** 0 ****
|
||||||
25 16828850 Axiomatic_Power 16828851 M 21 *_*_*_L_* **** **** 3222_*_*_*_*_* 8 **** 1 17_3_31_8 48_17_70_1 **** **** **** **** 1 ****
|
25 16828850 Axiomatic_Power 16828851 M 21 *_*_*_L_* **** **** 3222_*_*_*_*_* 8 **** 1 17_3_31_8 48_17_70_1 **** **** **** **** 1 ****
|
||||||
26 16828828 Bane 16828829 M 8 **** **** **** 174_*_*_*_*_* 1 **** **** 18_*_10_4 8_*_2_* **** **** **** **** 0 1
|
26 16828828 Bane 16828829 M 8 **** **** **** 174_*_*_*_*_* 1 **** **** 18_*_10_4 **** **** **** **** **** 0 1
|
||||||
27 16828852 Dread 16828853 M 22 **** **** **** 178_*_*_*_*_* 7 **** 1 18_*_32_4 8_*_4_* 48_21_27_* **** **** **** 1 1
|
27 16828852 Dread 16828853 M 22 **** **** **** 178_*_*_*_*_* 7 **** 1 18_*_32_4 48_21_27_* **** **** **** **** 1 1
|
||||||
28 16828830 Disruption 16828831 M 14 **** **** **** 79_*_*_*_*_* 2 **** **** 48_21_0_24 **** **** **** **** **** 0 1
|
28 16828830 Disruption 16828831 M 14 **** **** **** 79_*_*_*_*_* 2 **** **** 48_21_0_24 **** **** **** **** **** 0 1
|
||||||
29 16828862 Mighty_Disruption 16828863 M 21 **** **** **** 1855_*_*_*_*_* 6 **** 1 48_21_21_24 **** **** **** **** **** 1 1
|
29 16828862 Mighty_Disruption 16828863 M 21 **** **** **** 1855_*_*_*_*_* 6 **** 1 48_21_21_24 **** **** **** **** **** 1 1
|
||||||
30 16828832 Flaming 16828833 M 10 **** **** **** *_*_*_542_58_61 1 **** **** 16_10_7_* **** **** **** **** **** 0 ****
|
30 16828832 Flaming 16828833 M 10 **** **** **** *_*_*_542_58_61 1 **** **** 16_10_7_* **** **** **** **** **** 0 ****
|
||||||
|
|||||||
@@ -1912,7 +1912,10 @@ void MakeMasterwork(object oItem)
|
|||||||
|
|
||||||
void MakeAdamantine(object oItem)
|
void MakeAdamantine(object oItem)
|
||||||
{
|
{
|
||||||
if(GetPlotFlag(oItem)) return; //sanity check
|
if(GetPlotFlag(oItem)) return; //sanity check
|
||||||
|
|
||||||
|
itemproperty ip;
|
||||||
|
|
||||||
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
|
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
|
||||||
{
|
{
|
||||||
int nBonus = 0;
|
int nBonus = 0;
|
||||||
@@ -1929,7 +1932,7 @@ void MakeAdamantine(object oItem)
|
|||||||
}
|
}
|
||||||
if(nBonus)
|
if(nBonus)
|
||||||
{
|
{
|
||||||
itemproperty ip = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_BLUDGEONING, nBonus);
|
ip = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_BLUDGEONING, nBonus);
|
||||||
ip = TagItemProperty(ip, "Material_Adamantine");
|
ip = TagItemProperty(ip, "Material_Adamantine");
|
||||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||||
|
|
||||||
@@ -1939,21 +1942,21 @@ void MakeAdamantine(object oItem)
|
|||||||
|
|
||||||
ip = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_SLASHING, nBonus);
|
ip = ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_SLASHING, nBonus);
|
||||||
ip = TagItemProperty(ip, "Material_Adamantine");
|
ip = TagItemProperty(ip, "Material_Adamantine");
|
||||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||||
|
|
||||||
ip = ItemPropertyMaterial(IP_MATERIAL_ADAMANTINE);
|
|
||||||
ip = TagItemProperty(ip, "Material_Adamantine");
|
|
||||||
IPSafeAddItemProperty(oItem, ip, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ip = ItemPropertyMaterial(IP_MATERIAL_ADAMANTINE);
|
||||||
|
ip = TagItemProperty(ip, "Material_Adamantine");
|
||||||
|
IPSafeAddItemProperty(oItem, ip, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeDarkwood(object oItem)
|
void MakeDarkwood(object oItem)
|
||||||
{
|
{
|
||||||
if(GetPlotFlag(oItem)) return; //sanity check
|
if(GetPlotFlag(oItem)) return; //sanity check
|
||||||
|
|
||||||
itemproperty ip = ItemPropertyWeightReduction(IP_CONST_REDUCEDWEIGHT_50_PERCENT);
|
itemproperty ip = ItemPropertyWeightReduction(IP_CONST_REDUCEDWEIGHT_50_PERCENT);
|
||||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||||
|
|
||||||
int nBase = GetBaseItemType(oItem);
|
int nBase = GetBaseItemType(oItem);
|
||||||
@@ -1996,11 +1999,11 @@ void MakeDarkwood(object oItem)
|
|||||||
ip = ItemPropertySkillBonus(SKILL_JUMP, nBonus);
|
ip = ItemPropertySkillBonus(SKILL_JUMP, nBonus);
|
||||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||||
|
|
||||||
ip = ItemPropertyMaterial(IP_MATERIAL_WOOD_DARKWOOD_ZALANTAR);
|
|
||||||
ip = TagItemProperty(ip, "Material_Darkwood");
|
|
||||||
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ip = ItemPropertyMaterial(IP_MATERIAL_WOOD_DARKWOOD_ZALANTAR);
|
||||||
|
ip = TagItemProperty(ip, "Material_Darkwood");
|
||||||
|
IPSafeAddItemProperty(oItem, ip, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeDragonhide(object oItem)
|
void MakeDragonhide(object oItem)
|
||||||
|
|||||||
@@ -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.86";
|
const string PRC_VERSION = "PRC8 4.87";
|
||||||
|
|
||||||
/* This variable MUST be updated every time 'assemble_spellbooks.bat' is run!!! */
|
/* This variable MUST be updated every time 'assemble_spellbooks.bat' is run!!! */
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ void main()
|
|||||||
if(nEvent == FALSE)
|
if(nEvent == FALSE)
|
||||||
{
|
{
|
||||||
// Add eventhook to OnRestFinished to reset the used marker
|
// Add eventhook to OnRestFinished to reset the used marker
|
||||||
AddEventScript(oPC, EVENT_ONPLAYERREST_FINISHED, "prc_factotum", FALSE, FALSE);
|
AddEventScript(oPC, EVENT_ONPLAYERREST_FINISHED, "prc_factotum", TRUE, FALSE);
|
||||||
if (!GetLocalInt(oPC, "InspirationHBRunning")) DeleteLocalInt(oPC, "InspirationHB");
|
if (!GetLocalInt(oPC, "InspirationHBRunning")) DeleteLocalInt(oPC, "InspirationHB");
|
||||||
if (!GetLocalInt(oPC, "InspirationHB") && !GetLocalInt(oPC, "InspirationHBRunning"))
|
if (!GetLocalInt(oPC, "InspirationHB") && !GetLocalInt(oPC, "InspirationHBRunning"))
|
||||||
{
|
{
|
||||||
@@ -69,7 +69,7 @@ void main()
|
|||||||
SetLocalInt(oPC, "InspirationHB", TRUE);
|
SetLocalInt(oPC, "InspirationHB", TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(EVENT_ONCLIENTENTER)
|
else if(nEvent == EVENT_ONCLIENTENTER)
|
||||||
{
|
{
|
||||||
if(GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC) > 0)
|
if(GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC) > 0)
|
||||||
{
|
{
|
||||||
@@ -84,6 +84,6 @@ void main()
|
|||||||
AssignCommand(oPC, ClearAllActions(TRUE));
|
AssignCommand(oPC, ClearAllActions(TRUE));
|
||||||
ClearFactotumSlots(oPC);
|
ClearFactotumSlots(oPC);
|
||||||
SetLocalInt(oPC, "FactotumArcDil", GetMaxArcDilSpellLevel(oPC));
|
SetLocalInt(oPC, "FactotumArcDil", GetMaxArcDilSpellLevel(oPC));
|
||||||
StartDynamicConversation("prc_fact_splconv", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
|
DelayCommand(0.1f, StartDynamicConversation("prc_fact_splconv", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,38 +2,105 @@
|
|||||||
|
|
||||||
#include "prc_craft_inc"
|
#include "prc_craft_inc"
|
||||||
|
|
||||||
//:: Assumes only one bane/dread can be applied
|
//:: Assumes only one bane/dread can be applied
|
||||||
void BaneCheck(object oItem)
|
//:: Assumes only one bane/dread can be applied
|
||||||
{
|
void BaneCheck(object oItem)
|
||||||
if(!GetIsObjectValid(oItem))
|
{
|
||||||
return;
|
if(!GetIsObjectValid(oItem))
|
||||||
|
return;
|
||||||
itemproperty ipDread, ipBane;
|
|
||||||
int bDread = FALSE, bBane = FALSE;
|
itemproperty ipDread, ipBane;
|
||||||
ipBane = GetSpecificProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP, -1, IP_CONST_DAMAGEBONUS_2d6);
|
int bDread = FALSE, bBane = FALSE;
|
||||||
bBane = GetIsItemPropertyValid(ipBane);
|
ipBane = GetSpecificProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP, -1, IP_CONST_DAMAGEBONUS_2d6);
|
||||||
if(!bBane)
|
bBane = GetIsItemPropertyValid(ipBane);
|
||||||
{ //don't want to search through itemprops again
|
if(!bBane)
|
||||||
ipDread = GetSpecificProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP, -1, IP_CONST_DAMAGEBONUS_4d6);
|
{
|
||||||
bDread = GetIsItemPropertyValid(ipDread);
|
ipDread = GetSpecificProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP, -1, IP_CONST_DAMAGEBONUS_4d6);
|
||||||
}
|
bDread = GetIsItemPropertyValid(ipDread);
|
||||||
if(bBane || bDread)
|
}
|
||||||
{
|
if(bBane || bDread)
|
||||||
int nRace, nBonus;
|
{
|
||||||
int nEnhance = IPGetWeaponEnhancementBonus(oItem);
|
int nRace;
|
||||||
if(bBane)
|
if(bBane)
|
||||||
{
|
{
|
||||||
nRace = GetItemPropertySubType(ipBane);
|
nRace = GetItemPropertySubType(ipBane);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nRace = GetItemPropertySubType(ipDread);
|
nRace = GetItemPropertySubType(ipDread);
|
||||||
}
|
}
|
||||||
//Refresh enhancement bonuses in case of item upgrade
|
|
||||||
SetCompositeBonusT(oItem, "BaseEnhancementRace", nEnhance, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP, nRace);
|
// Check if weapon already has permanent enhancement vs this race
|
||||||
SetCompositeBonusT(oItem, "BaneEnhancement", (bDread) ? 4 : 2, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP, nRace);
|
itemproperty ip = GetFirstItemProperty(oItem);
|
||||||
}
|
int bHasExistingRacialEnhance = FALSE;
|
||||||
|
while(GetIsItemPropertyValid(ip))
|
||||||
|
{
|
||||||
|
if(GetItemPropertyType(ip) == ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP &&
|
||||||
|
GetItemPropertySubType(ip) == nRace &&
|
||||||
|
GetItemPropertyDurationType(ip) == DURATION_TYPE_PERMANENT)
|
||||||
|
{
|
||||||
|
bHasExistingRacialEnhance = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ip = GetNextItemProperty(oItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip BaneCheck if weapon already has permanent racial enhancement
|
||||||
|
if(bHasExistingRacialEnhance)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Get only base enhancement bonus
|
||||||
|
int nEnhance = 0;
|
||||||
|
ip = GetFirstItemProperty(oItem);
|
||||||
|
while(GetIsItemPropertyValid(ip))
|
||||||
|
{
|
||||||
|
if(GetItemPropertyType(ip) == ITEM_PROPERTY_ENHANCEMENT_BONUS &&
|
||||||
|
GetItemPropertyDurationType(ip) == DURATION_TYPE_PERMANENT)
|
||||||
|
{
|
||||||
|
nEnhance = GetItemPropertyCostTableValue(ip);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ip = GetNextItemProperty(oItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Refresh enhancement bonuses in case of item upgrade
|
||||||
|
SetCompositeBonusT(oItem, "BaseEnhancementRace", nEnhance, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP, nRace);
|
||||||
|
SetCompositeBonusT(oItem, "BaneEnhancement", (bDread) ? 4 : 2, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP, nRace);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
/* void BaneCheck(object oItem)
|
||||||
|
{
|
||||||
|
if(!GetIsObjectValid(oItem))
|
||||||
|
return;
|
||||||
|
|
||||||
|
itemproperty ipDread, ipBane;
|
||||||
|
int bDread = FALSE, bBane = FALSE;
|
||||||
|
ipBane = GetSpecificProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP, -1, IP_CONST_DAMAGEBONUS_2d6);
|
||||||
|
bBane = GetIsItemPropertyValid(ipBane);
|
||||||
|
if(!bBane)
|
||||||
|
{ //don't want to search through itemprops again
|
||||||
|
ipDread = GetSpecificProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP, -1, IP_CONST_DAMAGEBONUS_4d6);
|
||||||
|
bDread = GetIsItemPropertyValid(ipDread);
|
||||||
|
}
|
||||||
|
if(bBane || bDread)
|
||||||
|
{
|
||||||
|
int nRace, nBonus;
|
||||||
|
//int nEnhance = IPGetWeaponEnhancementBonus(oItem);
|
||||||
|
int nEnhance = IPGetWeaponEnhancementBonus(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS, TRUE);
|
||||||
|
|
||||||
|
if(bBane)
|
||||||
|
{
|
||||||
|
nRace = GetItemPropertySubType(ipBane);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nRace = GetItemPropertySubType(ipDread);
|
||||||
|
}
|
||||||
|
//Refresh enhancement bonuses in case of item upgrade
|
||||||
|
SetCompositeBonusT(oItem, "BaseEnhancementRace", nEnhance, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP, nRace);
|
||||||
|
SetCompositeBonusT(oItem, "BaneEnhancement", (bDread) ? 4 : 2, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP, nRace);
|
||||||
|
}
|
||||||
|
} */
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -74,6 +74,8 @@ void main()
|
|||||||
eLink = EffectLinkEffects(eLink, EffectAttackIncrease(1));
|
eLink = EffectLinkEffects(eLink, EffectAttackIncrease(1));
|
||||||
eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_ALL, 1));
|
eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_ALL, 1));
|
||||||
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
|
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
|
||||||
|
eLink = EffectLinkEffects(eLink, EffectTurnResistanceIncrease(3));
|
||||||
|
|
||||||
effect eHP = EffectTemporaryHitpoints(GetHitDice(oTarget));
|
effect eHP = EffectTemporaryHitpoints(GetHitDice(oTarget));
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID);
|
effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID);
|
||||||
|
|
||||||
@@ -82,13 +84,27 @@ void main()
|
|||||||
eHP = TagEffect(eHP, "EFFECT_DESECRATE_HP");
|
eHP = TagEffect(eHP, "EFFECT_DESECRATE_HP");
|
||||||
|
|
||||||
if(!GetPRCSwitch(PRC_TRUE_NECROMANCER_ALTERNATE_VISUAL))
|
if(!GetPRCSwitch(PRC_TRUE_NECROMANCER_ALTERNATE_VISUAL))
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||||||
else
|
else
|
||||||
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR));
|
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR));
|
||||||
|
|
||||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget, 0.0f, SPELL_DESECRATE);
|
||||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHP, oTarget);
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eHP, oTarget, 0.0f, SPELL_DESECRATE);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Apply visual indicator for non-undead
|
||||||
|
effect eIcon = EffectIcon(EFFECT_ICON_FRIGHTENED);
|
||||||
|
effect eVis = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||||
|
//effect eLink = EffectLinkEffects(eIcon, eVis);
|
||||||
|
effect eLink = EffectLinkEffects(eLink, eVis);
|
||||||
|
eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_ALL, 1));
|
||||||
|
eLink = EffectLinkEffects(eLink, EffectSavingThrowDecrease(SAVING_THROW_ALL, 1));
|
||||||
|
|
||||||
|
eLink = TagEffect(eLink, "EFFECT_DESECRATE_AURA");
|
||||||
|
|
||||||
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget, 0.0f, SPELL_DESECRATE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +1,33 @@
|
|||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
//:: Desecrate
|
//:: Desecrate onExit script
|
||||||
//:: prc_tn_des_b
|
//:: prc_tn_des_b
|
||||||
//:://////////////////////////////////////////////
|
//:://////////////////////////////////////////////
|
||||||
/*
|
/*
|
||||||
You create an aura that boosts the undead
|
You create an aura that boosts the undead
|
||||||
around you.
|
around you.
|
||||||
*/
|
*/
|
||||||
#include "prc_alterations"
|
#include "prc_alterations"
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
object oTarget = GetExitingObject();
|
||||||
|
|
||||||
|
// Search through the valid effects on the target
|
||||||
|
effect eAOE = GetFirstEffect(oTarget);
|
||||||
|
while (GetIsEffectValid(eAOE))
|
||||||
|
{
|
||||||
|
// If the effect was created by the AoE then remove it
|
||||||
|
if (GetEffectCreator(eAOE) == GetAreaOfEffectCreator())
|
||||||
|
{
|
||||||
|
string sTag = GetEffectTag(eAOE);
|
||||||
|
if(sTag == "EFFECT_DESECRATE_AURA" || sTag == "EFFECT_DESECRATE_HP")
|
||||||
|
RemoveEffect(oTarget, eAOE);
|
||||||
|
}
|
||||||
|
// Get next effect on the target
|
||||||
|
eAOE = GetNextEffect(oTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
object oTarget = GetExitingObject();
|
|
||||||
|
|
||||||
effect eAOE = GetFirstEffect(oTarget);
|
|
||||||
if(GetEffectCreator(eAOE) == GetAreaOfEffectCreator())
|
|
||||||
{
|
|
||||||
string sTag = GetEffectTag(eAOE);
|
|
||||||
if(sTag == "EFFECT_DESECRATE_AURA" || sTag == "EFFECT_DESECRATE_HP")
|
|
||||||
RemoveEffect(oTarget, eAOE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* object oTarget = GetExitingObject();
|
/* object oTarget = GetExitingObject();
|
||||||
|
|
||||||
if(GetHasSpellEffect(SPELL_DES_20, oTarget) || GetHasSpellEffect(SPELL_DES_100, oTarget) || GetHasSpellEffect(SPELL_DESECRATE, oTarget))
|
if(GetHasSpellEffect(SPELL_DES_20, oTarget) || GetHasSpellEffect(SPELL_DES_100, oTarget) || GetHasSpellEffect(SPELL_DESECRATE, oTarget))
|
||||||
@@ -36,5 +44,4 @@ void main()
|
|||||||
//Get next effect on the target
|
//Get next effect on the target
|
||||||
eAOE = GetNextEffect(oTarget);
|
eAOE = GetNextEffect(oTarget);
|
||||||
}
|
}
|
||||||
} */
|
} */
|
||||||
}
|
|
||||||
@@ -64,7 +64,7 @@ void main()
|
|||||||
if(GetPRCSwitch(PRC_PNP_ANIMATE_DEAD))
|
if(GetPRCSwitch(PRC_PNP_ANIMATE_DEAD))
|
||||||
{
|
{
|
||||||
int nMaxHD = GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oCaster) >= 8 ?
|
int nMaxHD = GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oCaster) >= 8 ?
|
||||||
nCasterLevel * (4 + GetAbilityModifier(ABILITY_CHARISMA, oCaster)) : nCasterLevel * 4;
|
nCasterLevel * (4 + GetAbilityModifier(ABILITY_CHARISMA, oCaster)) : nCasterLevel * 2;
|
||||||
|
|
||||||
if(GetHasSpellEffect(SPELL_DES_20) || GetHasSpellEffect(SPELL_DES_100) || GetHasSpellEffect(SPELL_DESECRATE))
|
if(GetHasSpellEffect(SPELL_DES_20) || GetHasSpellEffect(SPELL_DES_100) || GetHasSpellEffect(SPELL_DESECRATE))
|
||||||
nMaxHD *= 2;
|
nMaxHD *= 2;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//::///////////////////////////////////////////////
|
//::///////////////////////////////////////////////
|
||||||
//:: Desecrate
|
//:: Desecrate onEnter script
|
||||||
//:: sp_desecrate.nss
|
//:: sp_desecrate.nss
|
||||||
//:: //////////////////////////////////////////////
|
//:: //////////////////////////////////////////////
|
||||||
/*
|
/*
|
||||||
@@ -41,7 +41,7 @@ void main()
|
|||||||
float fDuration = HoursToSeconds(2 * nCastLvl);
|
float fDuration = HoursToSeconds(2 * nCastLvl);
|
||||||
int nMetaMagic = PRCGetMetaMagicFeat();
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||||
int nDesecrate;
|
int nDesecrate;
|
||||||
string sTag = Get2DACache("vfx_persistent", "LABEL", AOE_PER_CONSECRATE);
|
string sTag = Get2DACache("vfx_persistent", "LABEL", AOE_PER_DESECRATE);
|
||||||
|
|
||||||
//Make sure duration does no equal 0
|
//Make sure duration does no equal 0
|
||||||
if(fDuration < 2.0)
|
if(fDuration < 2.0)
|
||||||
@@ -76,7 +76,7 @@ void main()
|
|||||||
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, lLoc, fDuration);
|
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, lLoc, fDuration);
|
||||||
|
|
||||||
oAoE = GetAreaOfEffectObject(lLoc, "VFX_AOE_DESECRATE_20");
|
oAoE = GetAreaOfEffectObject(lLoc, "VFX_AOE_DESECRATE_20");
|
||||||
SetAllAoEInts(SPELL_CONSECRATE, oAoE, 20, 0, nCastLvl);
|
SetAllAoEInts(SPELL_DESECRATE, oAoE, 20, 0, nCastLvl);
|
||||||
}
|
}
|
||||||
|
|
||||||
PRCSetSchool();
|
PRCSetSchool();
|
||||||
|
|||||||
Reference in New Issue
Block a user