PoA_PRC8/_module/nss/sd_set_item_inc.nss
Jaysyn904 0dbb628b75 Added Skullkeep's dynamic loot generation system
Added Skullkeep's PRC8 compatible dynamic loot generation system.  Full compile.  Updated release archive.
2024-11-08 18:54:51 -05:00

1381 lines
50 KiB
Plaintext

effect eVis;
effect eFinal;
// Removes Supernatural Bonuses when set-gear is unequipped
void SD_REMOVE(object oSubraceCharacter);
//Applies Damage Vulernability to Target
//========================================
// oPC = Target to apply the effect to
// iType = DAMAGE_TYPE_*
// iAmount = nPercentImmunity
void BonusDamageVulnerability(object oPC, int iType, int iAmount);
//Applies Miss Chance Effect to Target
//========================================
// oPC = Target to apply the effect to
// iAmount = 1-100 inclusive
void BonusCTM(object oPC, int iAmount);
void m_BonusCTM(object oPC);
//Applies Bonus Attacks/Round to Target
//========================================
// oPC = Target to apply the effect to
// iAmount = maximum is 5, even with the effect stacked
void BonusAPR(object oPC, int iAmount);
void m_BonusAPR(object oPC);
//Applies Regeneration to Target
//========================================
// oPC = Target to apply the effect to
// iAmount = amount of damage to be regenerated per time interval
void BonusRegen(object oPC, int iAmount);
void m_BonusRegen(object oPC);
//Applies Temporary Hit Points to Target
//========================================
// oPC = Target to apply the effect to
// iAmount = # of Temporary HitPoints to award
void BonusHP(object oPC, int iHP);
//Applies Ability Bonus Target
//========================================
// oPC = Target to apply the effect to
// iAbility = ABILITY_*
// eg:
// ABILITY_CHARISMA, ABILITY_CONSTITUTION, ABILITY_DEXTERITY
// ABILITY_INTELLIGENCE, ABILITY_STRENGTH, ABILITY_WISDOM
// iAmount = Amount to Increase
void BonusAbility(object oPC, int iAbility, int iAmount);
void m_BonusAbility(object oPC, int iAbility, int iAmount);
//Applies AC Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iAmount = Amount to Increase
// iType = AC_*_BONUS
void BonusAC(object oPC, int iAmount, int iType);
void m_BonusAC(object oPC, int iAmount);
//Applies Bonus Movement Speed to Target
//========================================
// oPC = Target to apply the effect to
// iAmount = range 0 through 99
// eg.
// 0 = no change in speed
// 50 = 50% faster
// 99 = almost twice as fast
void BonusSpeed(object oPC, int iAmount);
void m_BonusSpeed(object oPC, int iAmount);
//Applies Attack Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iAmount = size of attack bonus
void BonusAttack(object oPC, int iAmount);
void m_BonusAttack(object oPC, int iAmount);
//Applies Damage Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iType = DAMAGE_TYPE_*
// iAmount = DAMAGE_BONUS_*
void BonusDamage(object oPC, int iType, int iAmount);
void m_BonusDamage(object oPC, int iType, int iAmount);
//Applies Immunity Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iType = IMMUNITY_TYPE_*
void BonusImmunity(object oPC, int iType);
void m_BonusImmunity(object oPC, int iType);
//Applies Save Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iType = SAVING_THROW_* (not SAVING_THROW_TYPE_*)
// iAmount = size of the Saving Throw increase
void BonusSave(object oPC, int iType, int iAmount);
void m_BonusSave(object oPC, int iType, int iAmount);
//Applies Save Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iSkill = SKILL_*
// iAmount = size of the skill increase
//* Returns an effect of type EFFECT_TYPE_INVALIDEFFECT if nSkill is invalid.
void BonusSkill(object oPC, int iSkill, int iAmount);
void m_BonusSkill(object oPC, int iSkill, int iAmount);
//Applies Damage Immunity Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iType = DAMAGE_TYPE_*
// iAmount = Percentage of immunity
void BonusDamageImmunity(object oPC, int iType, int iAmount);
void m_BonusDamageImmunity(object oPC, int iType, int iAmount);
//Applies Spell Immunity Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iSpell = SPELL_*
// There is a known bug with this function. There *must* be a parameter specified
// when this is called (even if the desired parameter is SPELL_ALL_SPELLS)
void BonusSpellImmunity(object oPC, int iSpell);
void m_BonusSpellImmunity(object oPC, int iSpell);
//Applies Concealment Bonus to Target
//========================================
// oPC = Target to apply the effect to
// iAmount = Percentage > 100
// iType = MISS_CHANCE_TYPE_*
void BonusConcealment(object oPC, int iAmount, int iType);
void m_BonusConcealment(object oPC, int iAmount);
//Applies Ultravision Bonus to Target
//========================================
// oPC = Target to apply the effect to
void BonusUltravision(object oPC);
void m_BonusUltravision(object oPC);
//Applies Truseeing Bonus to Target
//========================================
// oPC = Target to apply the effect to
void BonusTruseeing(object oPC);
void m_BonusTruseeing(object oPC);
//Applies Haste to Target
//========================================
// oPC = Target to apply the effect to
void BonusHaste(object oPC);
void m_BonusHaste(object oPC);
//Applies Haste to Target
//========================================
// oPC = Target to send message to
// sMessage = "Subrace Bonus: " + input
void SubMessage(object oPC, string sMessage);
//Applies Damage Reduction to Target
//========================================
// oPC = Target to send message to
// iPwr = Damage Power
// eg:
// DAMAGE_POWER_PLUS_ONE to DAMAGE_POWER_PLUS_TWENTY
// iAmount = Amount of Damage to Soak
void BonusDR(object oPC, int iPwr, int iAmount);
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void SubMessage(object oPC, string sMessage)
{
SendMessageToPC(oPC, "Subrace Bonus: "+sMessage);
}
////////////////////////////////////////////////////////////////////////////////
//:Ability Wrappers
//:
//:
//:
void BonusDamageVulnerability(object oPC, int iType, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectDamageImmunityDecrease(iType, iAmount)), oPC);
}
void BonusDR(object oPC, int iPwr, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectDamageReduction(iAmount, iPwr, 0)), oPC);
}
void BonusCTM(object oPC, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectMissChance(iAmount)), oPC);
}
void m_BonusCTM(object oPC)
{
SubMessage(oPC, "You can anticipate your enemy's next move with uncanny accuracy");
}
void BonusAPR(object oPC, int iAmount)
{
if (iAmount>5)iAmount=5;
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectModifyAttacks(iAmount)), oPC);
}
void m_BonusAPR(object oPC)
{
SubMessage(oPC, "You attack with more ferocity");
}
void BonusRegen(object oPC, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectRegenerate(iAmount, 6.0)), oPC);
}
void m_BonusRegen(object oPC)
{
SubMessage(oPC, "Your wounds begin to heal themselves");
}
void BonusHP(object oPC, int iHP)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectTemporaryHitpoints(iHP)), oPC);
}
void BonusAbility(object oPC, int iAbility, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectAbilityIncrease(iAbility, iAmount)), oPC);
}
void m_BonusAbility(object oPC, int iAbility, int iAmount)
{
switch (iAbility)
{
case ABILITY_CHARISMA: {SubMessage(oPC, "You feel more talented");}break;
case ABILITY_CONSTITUTION: {SubMessage(oPC, "You feel more stalwart");}break;
case ABILITY_DEXTERITY: {SubMessage(oPC, "You feel more agile");}break;
case ABILITY_INTELLIGENCE: {SubMessage(oPC, "You feel smarter");}break;
case ABILITY_STRENGTH: {SubMessage(oPC, "You feel stronger");}break;
case ABILITY_WISDOM: {SubMessage(oPC, "You feel wiser");}break;
}
}
void BonusAC(object oPC, int iAmount, int iType)
{
if (iAmount<0)iAmount=1;
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectACIncrease(iAmount, iType)), oPC);
}
void m_BonusAC(object oPC, int iAmount)
{
SubMessage(oPC, "AC increased");
}
void BonusSpeed(object oPC, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,SupernaturalEffect
(EffectMovementSpeedIncrease(iAmount)), oPC);
}
void m_BonusSpeed(object oPC, int iAmount)
{
SubMessage(oPC, "You feel faster");
}
void BonusAttackDecrease(object oPC, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectAttackDecrease(iAmount)), oPC);
}
void BonusAttack(object oPC, int iAmount)
{
if (iAmount<0)iAmount=1;
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectAttackIncrease(iAmount)), oPC);
}
void m_BonusAttack(object oPC, int iAmount)
{
SubMessage(oPC, "Your melee skill improves");
}
void BonusDamage(object oPC, int iType, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,SupernaturalEffect
(EffectDamageIncrease(iAmount, iType)), oPC);
}
void m_BonusDamage(object oPC, int iType, int iAmount)
{
SubMessage(oPC, "Your blows are more damaging");
}
void BonusImmunity(object oPC, int iType)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectImmunity(iType)), oPC);
}
void m_BonusImmunity(object oPC, int iType)
{
switch (iType)
{
case IMMUNITY_TYPE_BLINDNESS: {SubMessage(oPC, "Immunity to blindness");}break;
case IMMUNITY_TYPE_DEATH: {SubMessage(oPC, "You no longer fear death ");}break;
case IMMUNITY_TYPE_DISEASE: {SubMessage(oPC, "You shrug off disease");}break;
case IMMUNITY_TYPE_FEAR: {SubMessage(oPC, "Your fear dissapears");}break;
case IMMUNITY_TYPE_MOVEMENT_SPEED_DECREASE: {SubMessage(oPC, "Immunity to speed decrease");}break;
case IMMUNITY_TYPE_PARALYSIS: {SubMessage(oPC, "Immunity to paralysis");}break;
case IMMUNITY_TYPE_POISON: {SubMessage(oPC, "You drink poison for breakfast");}break;
case IMMUNITY_TYPE_STUN: {SubMessage(oPC, "Immunity to stun");}break;
case IMMUNITY_TYPE_NEGATIVE_LEVEL: {SubMessage(oPC, "Immunity to level drain");}break;
case IMMUNITY_TYPE_ABILITY_DECREASE: {SubMessage(oPC, "Immunity to ability decrease");}break;
case IMMUNITY_TYPE_CURSED: {SubMessage(oPC, "You laugh at curses");}break;
}
}
void BonusSave(object oPC, int iType, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectSavingThrowIncrease(iType, iAmount, SAVING_THROW_TYPE_ALL)), oPC);
}
void m_BonusSave(object oPC, int iType, int iAmount)
{
switch (iType)
{
case SAVING_THROW_FORT: {SubMessage(oPC, "You feel more fortuitous");}break;
case SAVING_THROW_REFLEX: {SubMessage(oPC, "Your reflexes improve");}break;
case SAVING_THROW_WILL: {SubMessage(oPC, "Your will strengthens");}break;
case SAVING_THROW_TYPE_FEAR: {SubMessage(oPC, "You are more fearless");}break;
case SAVING_THROW_TYPE_DEATH: {SubMessage(oPC, "You are less concerned about death");}break;
}
}
void BonusSkill(object oPC, int iSkill, int iAmount)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectSkillIncrease(iSkill, iAmount)), oPC);
}
void m_BonusSkill(object oPC, int iSkill, int iAmount)
{
switch (iSkill)
{
case SKILL_CONCENTRATION: {SubMessage(oPC, "Your concentration improves");}break;
case SKILL_DISCIPLINE: {SubMessage(oPC, "You feel more disciplined");}break;
case SKILL_HEAL: {SubMessage(oPC, "Your healing skills improve");}break;
case SKILL_HIDE: {SubMessage(oPC, "You are able to hide better");}break;
case SKILL_LISTEN: {SubMessage(oPC, "Your hearing improves");}break;
case SKILL_MOVE_SILENTLY: {SubMessage(oPC, "Your footsteps become quieter");}break;
case SKILL_SPELLCRAFT: {SubMessage(oPC, "Your knowledge of magic improves");}break;
case SKILL_TUMBLE: {SubMessage(oPC, "You can tumble more proficiently");}break;
case SKILL_TAUNT: {SubMessage(oPC, "Your antagonistic abilities improve");}break;
case SKILL_USE_MAGIC_DEVICE: {SubMessage(oPC, "Your understanding of magic devices increases");}break;
}
}
void BonusDamageImmunity(object oPC, int iType, int iAmount)
{
if (iAmount<0)iAmount=1;
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectDamageImmunityIncrease(iType, iAmount)), oPC);
}
void m_BonusDamageImmunity(object oPC, int iType, int iAmount)
{
switch (iType)
{
case DAMAGE_TYPE_ACID: {SubMessage(oPC, IntToString(iAmount)+"% acid damage immunity increase");}break;
case DAMAGE_TYPE_BLUDGEONING: {SubMessage(oPC, IntToString(iAmount)+"% bludgeoning damage immunity increase");}break;
case DAMAGE_TYPE_COLD: {SubMessage(oPC, IntToString(iAmount)+"% cold immunity damage increase");}break;
case DAMAGE_TYPE_MAGICAL: {SubMessage(oPC, IntToString(iAmount)+"% magical damage immunity increase");}break;
case DAMAGE_TYPE_ELECTRICAL: {SubMessage(oPC, IntToString(iAmount)+"% electrical damage immunity increase");}break;
case DAMAGE_TYPE_SLASHING: {SubMessage(oPC, IntToString(iAmount)+"% slashing damage immunity increase");}break;
case DAMAGE_TYPE_PIERCING: {SubMessage(oPC, IntToString(iAmount)+"% piercing damage immunity increase");}break;
case DAMAGE_TYPE_FIRE: {SubMessage(oPC, IntToString(iAmount)+"% fire damage immunity increase");}break;
case DAMAGE_TYPE_NEGATIVE: {SubMessage(oPC, IntToString(iAmount)+"% negative damage immunity increase");}break;
}
}
void BonusSpellImmunity(object oPC, int iSpell)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectSpellImmunity(iSpell)), oPC);
}
void m_BonusSpellImmunity(object oPC, int iSpell)
{
switch (iSpell)
{
case SPELL_DOOM: {SubMessage(oPC, "Immune to spell: Doom");}break;
case SPELL_DAZE: {SubMessage(oPC, "Immune to spell: Daze");}break;
case SPELL_STORM_OF_VENGEANCE: {SubMessage(oPC, "Immune to spell: Storm of Vengeance");}break;
case SPELL_HARM: {SubMessage(oPC, "Immune to spell: Harm");}break;
}
}
void BonusConcealment(object oPC, int iAmount, int iType)
{
int eVis;
if (iAmount>50)eVis = VFX_DUR_ETHEREAL_VISAGE;
else eVis = VFX_DUR_GHOSTLY_VISAGE_NO_SOUND;
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectConcealment(iAmount, iType)), oPC);
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectVisualEffect(eVis)), oPC);
}
void m_BonusConcealment(object oPC, int iAmount)
{
SubMessage(oPC, "You partially fade from sight");
}
void BonusUltravision(object oPC)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectUltravision()), oPC);
}
void m_BonusUltravision(object oPC)
{
SubMessage(oPC, "Your vision becomes all penetrating");
}
void BonusTruseeing(object oPC)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectTrueSeeing()), oPC);
}
void m_BonusTruseeing(object oPC)
{
SubMessage(oPC, "Your vision penetrates even the thickest of vales");
}
void BonusHaste(object oPC)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectHaste()), oPC);
}
void m_BonusHaste(object oPC)
{
SubMessage(oPC, "The world around you somehow seems slower");
}
////////////////////////////////////////////////////////////////////////////////
//:General Utilities
//:
//:
//:
void UnSet(object oPC, effect eSubraceEffect)
{
if((GetEffectCreator(eSubraceEffect) == GetModule()) &&
(GetEffectSubType(eSubraceEffect) == SUBTYPE_SUPERNATURAL))
{
RemoveEffect(oPC, eSubraceEffect);
}
}
void SD_REMOVE(object oPC)
{
effect eSpeed = SupernaturalEffect(EffectMovementSpeedIncrease(80));
effect eFX = GetFirstEffect(oPC);
while(GetIsEffectValid(eFX))
{
UnSet(oPC, eFX);
eFX = GetNextEffect(oPC);
}
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSpeed, oPC);
}
////////////////////////////////////////////////////////////////////////////////
//:Set Specifics
//:
//:
//:
//:
///////////////////////////////
//:Dorian's Battlegear
//:
void DoriansBattlegearEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_IMP_EVIL_HELP);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_STRENGTH, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Dorian's Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_STRENGTH, 4));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_STRENGTH, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_FIRE, DAMAGE_BONUS_1d4));
if (iFlag==0)FloatingTextStringOnCreature("* Dorian's Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_STRENGTH, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_FIRE, DAMAGE_BONUS_1d4));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_STRENGTH, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_FIRE, DAMAGE_BONUS_1d4));
DelayCommand(0.1, BonusAPR(oPC, 2));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Dorian's Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void DoriansBattlegearUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Set Dorian's Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 2:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_STRENGTH, 4);
} break;
case 3:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_STRENGTH, 4);
FloatingTextStringOnCreature("* Dorian's Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 4:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_STRENGTH, 4);
BonusDamage(oPC, DAMAGE_TYPE_FIRE, DAMAGE_BONUS_1d4);
} break;
case 5:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_STRENGTH, 4);
BonusDamage(oPC, DAMAGE_TYPE_FIRE, DAMAGE_BONUS_1d4);
FloatingTextStringOnCreature("* Dorian's Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
///////////////////////////////
//:Mystra's Rainment
//:
void MystrasRainmentEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_FNF_PWKILL);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_INTELLIGENCE, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Mystra's Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_INTELLIGENCE, 4));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_INTELLIGENCE, 4));
DelayCommand(0.1, BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL));
if (iFlag==0)FloatingTextStringOnCreature("* Mystra's Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_INTELLIGENCE, 4));
DelayCommand(0.1, BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_INTELLIGENCE, 4));
DelayCommand(0.1, BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL));
DelayCommand(0.1, BonusHaste(oPC));
DelayCommand(0.1, BonusImmunity(oPC, IMMUNITY_TYPE_CRITICAL_HIT));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Mystra's Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void MystrasRainmentUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Mystra's Set Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
case 2:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_INTELLIGENCE, 4);
}; break;
case 3:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_INTELLIGENCE, 4);
FloatingTextStringOnCreature("* Mystra's Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
case 4:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_INTELLIGENCE, 4);
BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL);
}; break;
case 5:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_INTELLIGENCE, 4);
BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL);
FloatingTextStringOnCreature("* Mystra's Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
}
}
///////////////////////////////
//:Thera's Vestments
//:
void TherasVestmentsEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_IMP_CHARM);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Thera's Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
DelayCommand(0.1, BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL));
if (iFlag==0)FloatingTextStringOnCreature("* Thera's Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
DelayCommand(0.1, BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
DelayCommand(0.1, BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL));
DelayCommand(0.1, BonusHaste(oPC));
DelayCommand(0.1, BonusImmunity(oPC, IMMUNITY_TYPE_CRITICAL_HIT));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Thera's Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void TherasVestmentsUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Thera's Set Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
case 2:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_CHARISMA, 4);
}; break;
case 3:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_CHARISMA, 4);
FloatingTextStringOnCreature("* Thera's Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
case 4:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_CHARISMA, 4);
BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL);
}; break;
case 5:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_INTELLIGENCE, 4);
BonusConcealment(oPC, 30, MISS_CHANCE_TYPE_NORMAL);
FloatingTextStringOnCreature("* Thera's Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
}
}
///////////////////////////////
//:Shinobi's Garb
//:
void ShinobisGarbEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_IMP_DEATH_WARD);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
if (iFlag==0)FloatingTextStringOnCreature("* Shinobi's Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_DEXTERITY, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Shinobi's Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_DEXTERITY, 4));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_DEXTERITY, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_PIERCING, DAMAGE_BONUS_1d4));
DelayCommand(0.1, BonusConcealment(oPC, 60, MISS_CHANCE_TYPE_NORMAL));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Shinobi's Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void ShinobisGarbUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Shinobi's Set Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
FloatingTextStringOnCreature("* Shinobi's Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_DEXTERITY, 4));
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusSpeed(oPC, 50));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_DEXTERITY, 4));
FloatingTextStringOnCreature("* Shinobi's Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
///////////////////////////////
//:Benedict's Herald
//:
void BenedictsHeraldEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Benedict's Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_DIVINE, DAMAGE_BONUS_1d4));
if (iFlag==0)FloatingTextStringOnCreature("* Benedict's Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_DIVINE, DAMAGE_BONUS_1d4));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_DIVINE, DAMAGE_BONUS_1d4));
DelayCommand(0.1, BonusImmunity(oPC, IMMUNITY_TYPE_NEGATIVE_LEVEL));
DelayCommand(0.1, BonusHaste(oPC));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Benedict's Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void BenedictsHeraldUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Benedict's Set Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
FloatingTextStringOnCreature("* Benedict's Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_DIVINE, DAMAGE_BONUS_1d4));
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_DIVINE, DAMAGE_BONUS_1d4));
FloatingTextStringOnCreature("* Benedict's Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
///////////////////////////////
//:Armor of Divinity
//:
void ArmorOfDivinityEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_IMP_GOOD_HELP);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Zealot's Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_SLASHING, DAMAGE_BONUS_1d4));
if (iFlag==0)FloatingTextStringOnCreature("* Zealot's Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_SLASHING, DAMAGE_BONUS_1d4));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CHARISMA, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_SLASHING, DAMAGE_BONUS_1d4));
DelayCommand(0.1, BonusAPR(oPC, 1));
DelayCommand(0.1, BonusAttack(oPC, 2));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Zealot's Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void ArmorOfDivinityUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Set Zealot's Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 2:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_STRENGTH, 4);
} break;
case 3:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_STRENGTH, 4);
FloatingTextStringOnCreature("* Zealot's Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 4:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_STRENGTH, 4);
BonusDamage(oPC, DAMAGE_TYPE_SLASHING, DAMAGE_BONUS_1d4);
} break;
case 5:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_STRENGTH, 4);
BonusDamage(oPC, DAMAGE_TYPE_SLASHING, DAMAGE_BONUS_1d4);
FloatingTextStringOnCreature("* Zealot's Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
///////////////////////////////
//:Soothsayer's Regalia
//:
void SoothsayersRegaliaEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_FNF_NATURES_BALANCE);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Oracle's Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusSpeed(oPC, 40));
if (iFlag==0)FloatingTextStringOnCreature("* Oracle's Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusSpeed(oPC, 40));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusSpeed(oPC, 40));
DelayCommand(0.1, BonusHaste(oPC));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_ELECTRICAL, DAMAGE_BONUS_1d4));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Oracle's Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void SoothsayersRegaliaUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Oracle's Set Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
case 2:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_WISDOM, 4);
}; break;
case 3:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_WISDOM, 4);
FloatingTextStringOnCreature("* Oracle's Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
case 4:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_WISDOM, 4);
DelayCommand(0.1, BonusSpeed(oPC, 40));
}; break;
case 5:
{
SD_REMOVE(oPC);
BonusAbility(oPC, ABILITY_WISDOM, 4);
DelayCommand(0.1, BonusSpeed(oPC, 40));
FloatingTextStringOnCreature("* Oracle's Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
}
}
///////////////////////////////
//:Robes of Enlightenment
//:
void RobesOfEnlightenmentEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Trancendent Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusDR(oPC, 5, DAMAGE_POWER_PLUS_TEN));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusDR(oPC, 5, DAMAGE_POWER_PLUS_TEN));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
if (iFlag==0)FloatingTextStringOnCreature("* Trancendent Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusDR(oPC, 5, DAMAGE_POWER_PLUS_TEN));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusDR(oPC, 5, DAMAGE_POWER_PLUS_TEN));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
DelayCommand(0.1, BonusDamage(oPC, DAMAGE_TYPE_SONIC, DAMAGE_BONUS_1d4));
DelayCommand(0.1, BonusRegen(oPC, 4));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Trancendent Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void RobesOfEnlightenmentUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Trancendent Set Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusDR(oPC, 5, DAMAGE_POWER_PLUS_TEN));
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusDR(oPC, 5, DAMAGE_POWER_PLUS_TEN));
FloatingTextStringOnCreature("* Trancendent Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusDR(oPC, 5, DAMAGE_POWER_PLUS_TEN));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusDR(oPC, 5, DAMAGE_POWER_PLUS_TEN));
DelayCommand(0.1, BonusAbility(oPC, ABILITY_WISDOM, 4));
FloatingTextStringOnCreature("* Trancendent Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
///////////////////////////////
//:Vestments of Rage
//:barbarian set
void VestmentsofRageEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
eFinal = EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY);
switch (iPieces)
{
case 1: {} break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
if (iFlag==0)FloatingTextStringOnCreature("* Conan's Set Bonus I Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
} break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
DelayCommand(0.1, BonusDR(oPC, DAMAGE_POWER_PLUS_TEN, 10));
if (iFlag==0)FloatingTextStringOnCreature("* Conan's Set Bonus II Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
DelayCommand(0.1, BonusDR(oPC, DAMAGE_POWER_PLUS_TEN, 10));
} break;
case 6:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
DelayCommand(0.1, BonusDR(oPC, DAMAGE_POWER_PLUS_TEN, 10));
DelayCommand(0.1, BonusHaste(oPC));
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eFinal, oPC);
if (iFlag==0)FloatingTextStringOnCreature("* Conan's Set Completion Bonus Applied *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
} break;
}
}
//////////////////////////////////////////////////////
void VestmentsofRageUnEquip(object oPC, int iPieces, int iFlag)
{
eVis = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
switch (iPieces)
{
case 1:
{
SD_REMOVE(oPC);
FloatingTextStringOnCreature("* Conan's Set Bonus I Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
case 2:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
}; break;
case 3:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
FloatingTextStringOnCreature("* Conan's Set Bonus II Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
case 4:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
DelayCommand(0.1, BonusDR(oPC, DAMAGE_POWER_PLUS_TEN, 10));
}; break;
case 5:
{
SD_REMOVE(oPC);
DelayCommand(0.1, BonusAbility(oPC, ABILITY_CONSTITUTION, 6));
DelayCommand(0.1, BonusDR(oPC, DAMAGE_POWER_PLUS_TEN, 10));
FloatingTextStringOnCreature("* Conan's Set Completion Bonus Lost *", oPC);
if (iFlag==0)ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}; break;
}
}
////////////////////////////////////////////////////////////////////////////////
//:Reapply set bonuses after death
//:
//:
//:
void ApplySetBonus(object oPC)
{
string sID, sSetName;
int iPieces;
object oItem;
sID = "Dorian's Battlegear_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)DoriansBattlegearEquip(oPC, iPieces, 1);
sID = "Mystra's Rainment_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)MystrasRainmentEquip(oPC, iPieces, 1);
sID = "Thera's Vestments_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)TherasVestmentsEquip(oPC, iPieces, 1);
sID = "Shinobi's Garb_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)ShinobisGarbEquip(oPC, iPieces, 1);
sID = "Benedict's Herald_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)BenedictsHeraldEquip(oPC, iPieces, 1);
sID = "Armor of Divinity_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)ArmorOfDivinityEquip(oPC, iPieces, 1);
sID = "Soothsayer's Regalia_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)SoothsayersRegaliaEquip(oPC, iPieces, 1);
sID = "Robes of Enlightenment_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)RobesOfEnlightenmentEquip(oPC, iPieces, 1);
sID = "Vestments of Rage_equ";
iPieces = GetLocalInt(oPC, sID);
if (iPieces>0)VestmentsofRageEquip(oPC, iPieces, 1);
}
///////////////////////
//: For Test Compiling
//: void main(){}