Marrusalts are large creatures
Marrusalts are large creatures. Updated Vow of Poverty to function more like Pen & Paper. (@fencas) Updated release archive.
This commit is contained in:
@@ -59,12 +59,21 @@ void Sanctify()
|
||||
}
|
||||
|
||||
if(!Sanctify_Feat_Wrapper(iType, oPC, oItem)) return;
|
||||
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_HOLY),oItem,9999.0);
|
||||
|
||||
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1);
|
||||
ip1 = TagItemProperty(ip1,"Sanctify1");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
||||
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
||||
ip2 = TagItemProperty(ip2,"Sanctify2");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
||||
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
||||
ip3 = TagItemProperty(ip3,"Sanctify3");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
||||
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
||||
ip4 = TagItemProperty(ip4,"Sanctify4");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip4,oItem,9999.0);
|
||||
SetLocalInt(oItem,"SanctMar",1);
|
||||
|
||||
}
|
||||
else if (iEquip==1)
|
||||
{
|
||||
@@ -173,22 +182,38 @@ void Sanctify()
|
||||
|
||||
if(Sanctify_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"SanctMar")))
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_HOLY),oItem,9999.0);
|
||||
SetLocalInt(oItem,"SanctMar",1);
|
||||
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1);
|
||||
ip1 = TagItemProperty(ip1,"Sanctify1");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
||||
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
||||
ip2 = TagItemProperty(ip2,"Sanctify2");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
||||
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
||||
ip3 = TagItemProperty(ip3,"Sanctify3");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
||||
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
||||
ip4 = TagItemProperty(ip4,"Sanctify4");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip4,oItem,9999.0);
|
||||
SetLocalInt(oItem,"SanctMar",1);
|
||||
}
|
||||
|
||||
oItem=GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
|
||||
iType= GetBaseItemType(oItem);
|
||||
if(Sanctify_Feat_Wrapper(iType, oPC, oItem) && (!GetLocalInt(oItem,"SanctMar")))
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4),oItem,9999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyVisualEffect(ITEM_VISUAL_HOLY),oItem,9999.0);
|
||||
SetLocalInt(oItem,"SanctMar",1);
|
||||
itemproperty ip1 = ItemPropertyDamageBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1);
|
||||
ip1 = TagItemProperty(ip1,"Sanctify1");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oItem,9999.0);
|
||||
itemproperty ip2 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
||||
ip2 = TagItemProperty(ip2,"Sanctify2");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip2,oItem,9999.0);
|
||||
itemproperty ip3 = ItemPropertyDamageBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
||||
ip3 = TagItemProperty(ip3,"Sanctify3");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip3,oItem,9999.0);
|
||||
itemproperty ip4 = ItemPropertyVisualEffect(ITEM_VISUAL_HOLY);
|
||||
ip4 = TagItemProperty(ip4,"Sanctify4");
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip4,oItem,9999.0);
|
||||
SetLocalInt(oItem,"SanctMar",1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -15,24 +15,24 @@
|
||||
#include "nw_i0_spells"
|
||||
#include "inc_persist_loca"
|
||||
|
||||
effect VoPDamage(int nTotalEnhancement) //Just for unarmed, so just bludgeoning
|
||||
effect VoPDamage(int nTotalEnhancement)
|
||||
{
|
||||
effect eDamage;
|
||||
if (nTotalEnhancement>=15) eDamage = EffectDamageIncrease(DAMAGE_BONUS_15,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=14) eDamage = EffectDamageIncrease(DAMAGE_BONUS_14,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=13) eDamage = EffectDamageIncrease(DAMAGE_BONUS_13,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=12) eDamage = EffectDamageIncrease(DAMAGE_BONUS_12,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=11) eDamage = EffectDamageIncrease(DAMAGE_BONUS_11,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=10) eDamage = EffectDamageIncrease(DAMAGE_BONUS_10,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=9) eDamage = EffectDamageIncrease(DAMAGE_BONUS_9,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=8) eDamage = EffectDamageIncrease(DAMAGE_BONUS_8,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=7) eDamage = EffectDamageIncrease(DAMAGE_BONUS_7,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=6) eDamage = EffectDamageIncrease(DAMAGE_BONUS_6,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=5) eDamage = EffectDamageIncrease(DAMAGE_BONUS_5,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=4) eDamage = EffectDamageIncrease(DAMAGE_BONUS_4,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=3) eDamage = EffectDamageIncrease(DAMAGE_BONUS_3,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=2) eDamage = EffectDamageIncrease(DAMAGE_BONUS_2,DAMAGE_TYPE_BLUDGEONING);
|
||||
else if (nTotalEnhancement>=1) eDamage = EffectDamageIncrease(DAMAGE_BONUS_1,DAMAGE_TYPE_BLUDGEONING);
|
||||
if (nTotalEnhancement>=15) eDamage = EffectDamageIncrease(DAMAGE_BONUS_15,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=14) eDamage = EffectDamageIncrease(DAMAGE_BONUS_14,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=13) eDamage = EffectDamageIncrease(DAMAGE_BONUS_13,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=12) eDamage = EffectDamageIncrease(DAMAGE_BONUS_12,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=11) eDamage = EffectDamageIncrease(DAMAGE_BONUS_11,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=10) eDamage = EffectDamageIncrease(DAMAGE_BONUS_10,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=9) eDamage = EffectDamageIncrease(DAMAGE_BONUS_9,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=8) eDamage = EffectDamageIncrease(DAMAGE_BONUS_8,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=7) eDamage = EffectDamageIncrease(DAMAGE_BONUS_7,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=6) eDamage = EffectDamageIncrease(DAMAGE_BONUS_6,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=5) eDamage = EffectDamageIncrease(DAMAGE_BONUS_5,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=4) eDamage = EffectDamageIncrease(DAMAGE_BONUS_4,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=3) eDamage = EffectDamageIncrease(DAMAGE_BONUS_3,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=2) eDamage = EffectDamageIncrease(DAMAGE_BONUS_2,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
else if (nTotalEnhancement>=1) eDamage = EffectDamageIncrease(DAMAGE_BONUS_1,DAMAGE_TYPE_BLUDGEONING || DAMAGE_TYPE_SLASHING || DAMAGE_TYPE_PIERCING);
|
||||
|
||||
return eDamage;
|
||||
}
|
||||
@@ -45,10 +45,8 @@ void main()
|
||||
object oArmor;
|
||||
object oShield;
|
||||
object oSkin = GetPCSkin(oPC);
|
||||
int nSlot;
|
||||
int nEvent = GetCurrentlyRunningEvent();
|
||||
int nLevel = GetCharacterLevel(oPC)-GetPersistantLocalInt(oPC,"VoPLevel1")+1;
|
||||
int nLevelCheck;
|
||||
int nACArmor = 4+nLevel/3;
|
||||
int nACDeflection = nLevel/6;
|
||||
int nACNatural = nLevel/8;
|
||||
@@ -56,8 +54,7 @@ void main()
|
||||
int nDR = 5*(1+(nLevel-10)/9);
|
||||
int nER = (10*(1+(nLevel-13)/7))-5;
|
||||
int nForsakerBonus = GetLevelByClass(CLASS_TYPE_FORSAKER, oPC)/2;
|
||||
int nExaltedStrike;
|
||||
int nTotalEnhancement;
|
||||
int nSlot, nLevelCheck, nExaltedStrike, nTotalEnhancement;
|
||||
|
||||
//Enhancement bonus for unarmed damage and weapons; consider the bigger, Forsaker or VoP
|
||||
if(nLevel>=10) nExaltedStrike = 1+(nLevel-7)/3;
|
||||
@@ -69,16 +66,24 @@ void main()
|
||||
|
||||
if(nEvent == FALSE)
|
||||
{
|
||||
//Check if level up bonus has already been chosen and given for any of past Forsaker levels
|
||||
//Check if level up bonus has already been chosen and given for any of past VoP levels
|
||||
for(nLevelCheck=1; nLevelCheck <= nLevel; nLevelCheck++)
|
||||
{
|
||||
{
|
||||
//Call stat boost dialogue for level 7 and each 4 levels after that
|
||||
if (!GetPersistantLocalInt(oPC, "VoPBoost"+IntToString(nLevelCheck)) && (nLevelCheck-(nLevelCheck/4)*4 == 3) && (nLevelCheck >= 7) && (nLevelCheck <= 27))
|
||||
{
|
||||
//Call stat boost dialogue for level 7 and each 4 levels after that
|
||||
AssignCommand(oPC, ClearAllActions(TRUE));
|
||||
SetPersistantLocalInt(oPC,"VoPBoostCheck",nLevelCheck);
|
||||
StartDynamicConversation("ft_vowpoverty_ab", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
|
||||
}
|
||||
|
||||
//Call exalted feat for each even level
|
||||
if (!GetPersistantLocalInt(oPC, "VoPFeat"+IntToString(nLevelCheck)) && (nLevelCheck-(nLevelCheck/2)*2 == 0))
|
||||
{
|
||||
AssignCommand(oPC, ClearAllActions(TRUE));
|
||||
SetPersistantLocalInt(oPC,"VoPFeatCheck",nLevelCheck);
|
||||
StartDynamicConversation("ft_vowpoverty_ft", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
|
||||
}
|
||||
}
|
||||
|
||||
//AC Armor +4 on 1st, then +1 each 3 levels
|
||||
@@ -140,6 +145,23 @@ void main()
|
||||
//Give player the bonus, regardless of the weapon
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC);
|
||||
|
||||
//Apply Golden Ice effect if unarmed and has feat
|
||||
if(GetIsUnarmed(oPC) && (GetHasFeat(FEAT_RAVAGEGOLDENICE, oPC) || GetPersistantLocalInt(oPC, "VoPFeat"+IntToString(FEAT_RAVAGEGOLDENICE))))
|
||||
{
|
||||
itemproperty ip1 = ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_RAVAGEGOLDENICE,2);
|
||||
ip1 = TagItemProperty(ip1,"GoldenIce");
|
||||
IPSafeAddItemProperty(oPC,ip1,0.0,X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,FALSE,FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
itemproperty eCheckIPL = GetFirstItemProperty(oPC);
|
||||
while (GetIsItemPropertyValid(eCheckIPL))
|
||||
{
|
||||
if(GetItemPropertyTag(eCheckIPL) == "GoldenIce") RemoveItemProperty(oPC,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_RAVAGEGOLDENICE,2));
|
||||
eCheckIPL = GetNextItemProperty(oPC);
|
||||
}
|
||||
}
|
||||
|
||||
// For some reason, EVENT_ONPLAYEREQUIPITEM just works with weapons, so it is better to check all other items for magic elsewhere
|
||||
for (nSlot=0; nSlot < 13; nSlot++) //All but creatures slots
|
||||
{
|
||||
@@ -159,7 +181,7 @@ void main()
|
||||
|
||||
//Remove bonus from unequiped weapons
|
||||
oItem = GetPCItemLastUnequipped();
|
||||
if((IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem))) IPRemoveAllItemProperties(oItem, DURATION_TYPE_PERMANENT);
|
||||
if(IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem)) IPRemoveAllItemProperties(oItem, DURATION_TYPE_PERMANENT);
|
||||
|
||||
AddEventScript(oPC, EVENT_SCRIPT_MODULE_ON_EQUIP_ITEM, "ft_vowofpoverty", TRUE, FALSE);
|
||||
}
|
||||
@@ -184,9 +206,18 @@ void main()
|
||||
|| GetBaseItemType(oItem) == BASE_ITEM_KATAR
|
||||
|| GetBaseItemType(oItem) == BASE_ITEM_HEAVY_MACE
|
||||
|| GetBaseItemType(oItem) == BASE_ITEM_BULLET;
|
||||
|
||||
if((IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem)) &&
|
||||
(GetIsItemPropertyValid(GetFirstItemProperty(oItem)) || !iWeaponAllowed)) //Check if weapon is magical or not on allowed list
|
||||
|
||||
//Check if the magic is JUST Sanctify
|
||||
int iMagic = 0;
|
||||
itemproperty eCheckIP = GetFirstItemProperty(oItem);
|
||||
while (GetIsItemPropertyValid(eCheckIP))
|
||||
{
|
||||
if(!(GetItemPropertyTag(eCheckIP) == "Sanctify1") && !(GetItemPropertyTag(eCheckIP) == "Sanctify2") && !(GetItemPropertyTag(eCheckIP) == "Sanctify3")
|
||||
&& !(GetItemPropertyTag(eCheckIP) == "Sanctify4")) iMagic = 1;
|
||||
eCheckIP = GetNextItemProperty(oItem);
|
||||
}
|
||||
|
||||
if((IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem)) && (iMagic || !iWeaponAllowed)) //Check if weapon is magical or not on allowed list
|
||||
{
|
||||
if(!(GetBaseItemType(oItem) == BASE_ITEM_SLING && GetItemPropertyType(GetFirstItemProperty(oItem)) == ITEM_PROPERTY_MIGHTY)) //Allow Mighty Bonus on Slings
|
||||
{
|
||||
|
@@ -296,7 +296,10 @@ void main()
|
||||
//if(GetHasFeat(FEAT_LINGERING_DAMAGE, oPC)) ExecuteScript("ft_lingdmg", oPC);
|
||||
//if(GetHasFeat(FEAT_MAGICAL_APTITUDE, oPC)) ExecuteScript("prc_magaptitude", oPC);
|
||||
if(GetHasFeat(FEAT_ETERNAL_FREEDOM, oPC)) ExecuteScript("etern_free", oPC);
|
||||
if(GetHasFeat(FEAT_INTUITIVE_ATTACK, oPC)) ExecuteScript("prc_intuiatk", oPC);
|
||||
if(GetHasFeat(FEAT_INTUITIVE_ATTACK, oPC) || GetPersistantLocalInt(oPC, "VoPFeat"+IntToString(FEAT_INTUITIVE_ATTACK)))
|
||||
{
|
||||
ExecuteScript("prc_intuiatk", oPC);
|
||||
}
|
||||
//if(GetPersistantLocalInt(oPC, "EpicSpell_TransVital")) ExecuteScript("trans_vital", oPC);
|
||||
//if(GetHasFeat(FEAT_COMBAT_MANIFESTATION, oPC)) ExecuteScript("psi_combat_manif", oPC);
|
||||
//if(GetHasFeat(FEAT_WILD_TALENT, oPC)) ExecuteScript("psi_wild_talent", oPC);
|
||||
|
@@ -53,7 +53,23 @@ void main()
|
||||
if (nClass >=2) ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDamageReduction((nClass+1),(nClass/2)),oPC);
|
||||
|
||||
//Natural AC increase by CON starting on level 3
|
||||
if (nClass >= 3) ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectACIncrease(GetAbilityModifier(ABILITY_CONSTITUTION, oPC), AC_NATURAL_BONUS), oPC);
|
||||
if (nClass >= 3)
|
||||
{
|
||||
effect eEffect1 = EffectACIncrease(GetAbilityModifier(ABILITY_CONSTITUTION, oPC), AC_NATURAL_BONUS);
|
||||
eEffect1 = ExtraordinaryEffect(eEffect1);
|
||||
eEffect1 = TagEffect(eEffect1, "EffectToughDefense");
|
||||
|
||||
//Remove any prior bonus to avoid duplication
|
||||
effect eCheckEffect = GetFirstEffect(oPC);
|
||||
while (GetIsEffectValid(eCheckEffect))
|
||||
{
|
||||
if(GetEffectTag(eCheckEffect) == "EffectToughDefense") RemoveEffect(oPC, eCheckEffect);
|
||||
eCheckEffect = GetNextEffect(oPC);
|
||||
}
|
||||
|
||||
//Give player the bonus
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect1, oPC);
|
||||
}
|
||||
|
||||
// For some reason, EVENT_ONPLAYEREQUIPITEM just works with weapons, so armors and shields should be checked elsewhere
|
||||
if(!GetHasFeat(FEAT_VOWOFPOVERTY,oPC))
|
||||
@@ -93,8 +109,19 @@ void main()
|
||||
else if((nEvent == EVENT_SCRIPT_MODULE_ON_EQUIP_ITEM) && (!GetHasFeat(FEAT_VOWOFPOVERTY,oPC)))
|
||||
{
|
||||
oItem = GetPCItemLastEquipped();
|
||||
|
||||
//Check if the magic is JUST Sanctify
|
||||
int iMagic = 0;
|
||||
itemproperty eCheckIP = GetFirstItemProperty(oItem);
|
||||
while (GetIsItemPropertyValid(eCheckIP))
|
||||
{
|
||||
if(!(GetItemPropertyTag(eCheckIP) == "Sanctify1") && !(GetItemPropertyTag(eCheckIP) == "Sanctify2") && !(GetItemPropertyTag(eCheckIP) == "Sanctify3")
|
||||
&& !(GetItemPropertyTag(eCheckIP) == "Sanctify4")) iMagic = 1;
|
||||
eCheckIP = GetNextItemProperty(oItem);
|
||||
}
|
||||
|
||||
//Check if weapons are magical
|
||||
if(GetIsItemPropertyValid(GetFirstItemProperty(oItem)) && (IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem)) &&
|
||||
if(iMagic && (IPGetIsMeleeWeapon(oItem) || GetWeaponRanged(oItem)) &&
|
||||
!(GetBaseItemType(oItem) == BASE_ITEM_SLING && GetItemPropertyType(GetFirstItemProperty(oItem)) == ITEM_PROPERTY_MIGHTY))
|
||||
//Check if weapon is magical or not on allowed list
|
||||
{
|
||||
@@ -121,11 +148,4 @@ void main()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add AC bonus for rage
|
||||
//else if(nEvent == EVENT_ONHEARTBEAT)
|
||||
//{
|
||||
// PostString(oPC, "Tum tum", 0, 0, SCREEN_ANCHOR_TOP_LEFT, 20.0, 0xFF0000FF, 0x00000000);
|
||||
// if (nClass >= 3) ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectACIncrease(GetAbilityModifier(ABILITY_CONSTITUTION, oPC), AC_NATURAL_BONUS), oPC);
|
||||
//}
|
||||
}
|
||||
|
@@ -59,7 +59,7 @@ void main()
|
||||
object oPC = OBJECT_SELF; // This should only be called via ExecuteScript on the target, so...
|
||||
object oSkin = GetPCSkin(oPC);
|
||||
|
||||
if (GetHasFeat(FEAT_RAVAGEGOLDENICE, oPC))
|
||||
if (GetHasFeat(FEAT_RAVAGEGOLDENICE, oPC) || GetPersistantLocalInt(oPC, "VoPFeat"+IntToString(FEAT_RAVAGEGOLDENICE)))
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_intuiatk: PC has Ravage: Golden Ice");
|
||||
int iEquip = GetLocalInt(oPC,"ONEQUIP") ;
|
||||
@@ -92,17 +92,20 @@ void main()
|
||||
|
||||
if (GetAlignmentGoodEvil(oPC)== ALIGNMENT_GOOD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_RAVAGEGOLDENICE,2),oCweapB);
|
||||
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_RAVAGEGOLDENICE,2),oCweapL);
|
||||
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_RAVAGEGOLDENICE,2),oCweapR);
|
||||
itemproperty ip1 = ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_RAVAGEGOLDENICE,2);
|
||||
ip1 = TagItemProperty(ip1,"GoldenIce");
|
||||
AddItemProperty(DURATION_TYPE_PERMANENT,ip1,oCweapB);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oCweapL);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ip1,oCweapR);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(GetHasFeat(FEAT_INTUITIVE_ATTACK, oPC) || GetHasFeat(FEAT_WEAPON_FINESSE, oPC))
|
||||
if(GetHasFeat(FEAT_INTUITIVE_ATTACK, oPC) || GetHasFeat(FEAT_WEAPON_FINESSE, oPC) || GetPersistantLocalInt(oPC, "VoPFeat"+IntToString(FEAT_INTUITIVE_ATTACK)))
|
||||
{
|
||||
if(DEBUG) DoDebug("prc_intuiatk: PC has Intuitive Attack or WepFinesse");
|
||||
|
||||
// shorthand - IA is intuitive attack and WF is weapon finesse
|
||||
object oItem ;
|
||||
int iEquip = GetLocalInt(oPC,"ONEQUIP") ;
|
||||
@@ -111,7 +114,7 @@ void main()
|
||||
int iWis = GetAbilityModifier(ABILITY_WISDOM,oPC);
|
||||
int iIABonus = 0;
|
||||
int iWFBonus = 0;
|
||||
int bHasIA = GetHasFeat(FEAT_INTUITIVE_ATTACK, oPC);
|
||||
int bHasIA = GetHasFeat(FEAT_INTUITIVE_ATTACK, oPC) || GetPersistantLocalInt(oPC, "VoPFeat"+IntToString(FEAT_INTUITIVE_ATTACK));
|
||||
int bHasWF = GetHasFeat(FEAT_WEAPON_FINESSE, oPC);
|
||||
int bUseIA = FALSE;
|
||||
int bUseWF = FALSE;
|
||||
|
@@ -26,7 +26,8 @@ void main()
|
||||
object oCompSkin = GetPCSkin(oComp);
|
||||
|
||||
//Exalted Companion
|
||||
if(GetHasFeat(FEAT_EXALTED_COMPANION, oPC) && GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
|
||||
if((GetHasFeat(FEAT_EXALTED_COMPANION, oPC) || GetPersistantLocalInt(oPC, "VoPFeat"+IntToString(FEAT_EXALTED_COMPANION)))
|
||||
&& GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
|
||||
ApplyExaltedCompanion(oComp, oCompSkin);
|
||||
|
||||
//Talontar Blightlord's Illmaster
|
||||
|
Reference in New Issue
Block a user