151 lines
4.9 KiB
Plaintext
151 lines
4.9 KiB
Plaintext
// *** Special damage resistance potions depending on class for Alangara, by Tarashon ***
|
|
|
|
#include "x2_inc_spellhook"
|
|
#include "prc_class_const"
|
|
|
|
void main()
|
|
{
|
|
|
|
object oPC;
|
|
|
|
if ((GetObjectType(GetItemActivatedTarget())!=OBJECT_TYPE_CREATURE)
|
|
){
|
|
|
|
SendMessageToPC(GetItemActivator(), "Improper use of item!");
|
|
return;}
|
|
|
|
oPC = GetItemActivator();
|
|
|
|
object oTarget;
|
|
oTarget = oPC;
|
|
|
|
int iTier1 = GetLevelByClass(CLASS_TYPE_DRAGONDISCIPLE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SHADOWDANCER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_HARPER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_ASSASSIN, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_ARCANE_ARCHER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_ROGUE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_RANGER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_MONK, oPC);
|
|
|
|
int iTier2 = GetLevelByClass(CLASS_TYPE_FIGHTER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_KNIGHT, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_MARSHAL, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SAMURAI, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SOULKNIFE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SOULBORN, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SCOUT, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_INCARNATE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_DUSKBLADE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_PSYWAR, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SWASHBUCKLER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_WARBLADE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_PALADIN, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_CRUSADER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SWORDSAGE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_BLACKGUARD, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_BATTLERAGER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_BATTLESMITH, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_COC, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_DISPATER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_DIVINECHAMPION, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_DUELIST, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_DWARVENDEFENDER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_ETERNAL_BLADE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_FOE_HUNTER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_GHOST_FACED_KILLER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_HALFLING_WARSLINGER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_HEXTOR, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_IAIJUTSU_MASTER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_INCARNUM_BLADE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_JUDICATOR, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_LASHER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_LEGENDARY_DREADNOUGHT, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_MASTER_OF_NINE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_ORC_WARLORD, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_PURPLE_DRAGON_KNIGHT, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_PYROKINETICIST, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_RAVAGER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_REAPING_MAULER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SANCTIFIED_MIND, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SERENE_GUARDIAN, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SHINING_BLADE, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SHOU, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SPINEMELD_WARRIOR, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_TEMPEST, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_THAYAN_KNIGHT, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_WARCHIEF, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_WARFORGED_JUGGERNAUT, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_WARMIND, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_WEAPON_MASTER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_PALADIN, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_WEREWOLF, oPC);
|
|
|
|
int nAmount = 15;
|
|
|
|
int nDuration = 30;
|
|
|
|
if ((GetLevelByClass(CLASS_TYPE_BARBARIAN, oPC) > 0))
|
|
{
|
|
nAmount = 35;
|
|
}
|
|
else if (iTier2 > 0)
|
|
{
|
|
nAmount = 30;
|
|
}
|
|
else if (iTier1 > 0)
|
|
{
|
|
nAmount = 25;
|
|
}
|
|
else
|
|
{
|
|
nAmount = 15;
|
|
}
|
|
|
|
effect eEffect1;
|
|
effect eEffect2;
|
|
effect eEffect3;
|
|
|
|
|
|
eEffect1 = EffectDamageResistance(DAMAGE_TYPE_BLUDGEONING, nAmount);
|
|
eEffect2 = EffectDamageResistance(DAMAGE_TYPE_PIERCING, nAmount);
|
|
eEffect3 = EffectDamageResistance(DAMAGE_TYPE_SLASHING, nAmount);
|
|
|
|
|
|
effect eDur = EffectVisualEffect(VFX_DUR_AURA_GREEN);
|
|
|
|
effect eLink = EffectLinkEffects(eEffect1, eDur);
|
|
eLink = EffectLinkEffects(eEffect2, eLink);
|
|
eLink = EffectLinkEffects(eEffect3, eLink);
|
|
|
|
|
|
|
|
if ( GetItemPossessedBy(oTarget, "potioncrystal7") != OBJECT_INVALID )
|
|
{
|
|
nDuration = nDuration +10;
|
|
}
|
|
|
|
// *** Fokus Token in action *** //
|
|
|
|
if (GetItemPossessedBy(oPC, "potioncrystal6")!= OBJECT_INVALID)
|
|
{
|
|
|
|
if (d100()<=25)
|
|
{
|
|
CreateItemOnObject("damageresist", oPC);
|
|
|
|
FloatingTextStringOnCreature("The Focus Stone emits a brief radiance as it restores your potion", oPC);
|
|
|
|
}
|
|
}
|
|
|
|
// *** End of focus Token *** //
|
|
|
|
|
|
float fTime = RoundsToSeconds(nDuration);
|
|
|
|
//After effects are removed we apply the immunity to mind spells to the target
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fTime);
|
|
} |