100 lines
7.1 KiB
Plaintext
100 lines
7.1 KiB
Plaintext
void vamp_gaseous(object oPC)
|
|
{
|
|
PrintString("vamp_gaseous: "+GetName(oPC)+" called script.");
|
|
|
|
effect eSmoke = EffectVisualEffect(VFX_FNF_SMOKE_PUFF);
|
|
effect eVisual = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eSmoke,GetLocation(oPC));
|
|
|
|
effect ImmunityCritical = EffectImmunity(IMMUNITY_TYPE_CRITICAL_HIT);
|
|
effect Speed = EffectMovementSpeedIncrease(20);
|
|
effect AttackDecrease = EffectAttackDecrease(20,ATTACK_BONUS_MISC);
|
|
effect DamageReduction = EffectDamageReduction(20, DAMAGE_POWER_PLUS_ONE, 0);
|
|
effect TurnResistance = EffectTurnResistanceIncrease(4);
|
|
effect DamageResistanceCold = EffectDamageResistance(DAMAGE_TYPE_COLD, 20, 0);
|
|
effect DamageResistanceElectrical = EffectDamageResistance(DAMAGE_TYPE_ELECTRICAL, 20, 0);
|
|
effect Regenerate = EffectRegenerate(5, 5.0f);
|
|
effect ImmunityMind = EffectImmunity(IMMUNITY_TYPE_MIND_SPELLS);
|
|
effect ImmunityDisease = EffectImmunity(IMMUNITY_TYPE_DISEASE);
|
|
effect ImmunityPoison = EffectImmunity(IMMUNITY_TYPE_POISON);
|
|
effect ImmunityDeath = EffectImmunity(IMMUNITY_TYPE_DEATH);
|
|
effect ImmunityAbilityDecrease = EffectImmunity(IMMUNITY_TYPE_ABILITY_DECREASE);
|
|
effect Darkvision = EffectVisualEffect( VFX_DUR_DARKVISION );
|
|
// Old Hak Pak code that broke Hordes' new polymorphs (such as the entire Shifter class)
|
|
effect ePolymorph = ExtraordinaryEffect(EffectPolymorph(76));
|
|
// SetCreatureAppearanceType will be used instead IF they have died
|
|
// or need to rest.
|
|
effect eLink = EffectLinkEffects(eVisual, ePolymorph);
|
|
|
|
PrintString("vamp_gaseous: PermaSpectre["+IntToString(GetCampaignInt("Vampire","PermaSpectre",oPC))+"] is this, currently.");
|
|
PrintString("vamp_gaseous: Appearance["+IntToString(GetCampaignInt("Vampire","Appearance",oPC))+"] is this, currently.");
|
|
// Vampire "needs to rest" or has died.
|
|
if (GetCampaignInt("Vampire", "VampireMustRest", oPC)==1)
|
|
{
|
|
PrintString("vamp_gaseous: "+GetName(oPC)+" needs to rest or has died, and will be permanently set to a gaseous form.");
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(ImmunityCritical), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(Speed), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(AttackDecrease), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(DamageReduction), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(DamageResistanceCold), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(DamageResistanceElectrical),oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(Darkvision), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(ImmunityAbilityDecrease),oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(ImmunityDeath), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(ImmunityDisease), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(ImmunityMind), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(ImmunityPoison), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(Regenerate), oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(TurnResistance), oPC);
|
|
|
|
// apply damage-dealing penalties
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(EffectDamageDecrease(-50,DAMAGE_TYPE_BLUDGEONING)),oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(EffectDamageDecrease(-50,DAMAGE_TYPE_PIERCING)),oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(EffectDamageDecrease(-50,DAMAGE_TYPE_SLASHING)),oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(EffectDamageDecrease(-50,DAMAGE_TYPE_MAGICAL)),oPC);
|
|
// make him invisible for a moment
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectInvisibility(INVISIBILITY_TYPE_IMPROVED),oPC,RoundsToSeconds(1));
|
|
|
|
// Old Hak Pak code that broke Hordes' new polymorphs (such as the entire Shifter class)
|
|
// ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(eLink), oPC);
|
|
|
|
// If they have not already been turned into a spectre,
|
|
// we need to get their current appearance.
|
|
if (GetCampaignInt("Vampire","PermaSpectre",oPC)!=TRUE)
|
|
{
|
|
// First we get what the Vampire's real appearance type is.
|
|
// Until they use their Coffin, this won't be re-set.
|
|
// We set a campaign INT to tell that they have been changed.
|
|
SetCampaignInt("Vampire","PermaSpectre",TRUE,oPC);
|
|
PrintString("vamp_gaseous: PermaSpectre["+IntToString(GetCampaignInt("Vampire","PermaSpectre",oPC))+"] set to TRUE.");
|
|
// We set a campaign INT to what their real appearance type is.
|
|
SetCampaignInt("Vampire","Appearance",GetAppearanceType(oPC),oPC);
|
|
PrintString("vamp_gaseous: Appearance["+IntToString(GetCampaignInt("Vampire","Appearance",oPC))+"] set to original appearance type.");
|
|
}
|
|
// We set their creature appearance type, unremorsefully.
|
|
PrintString("vamp_gaseous: GetAppearanceType was ["+IntToString(GetAppearanceType(oPC))+"] "+GetName(oPC));
|
|
SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_SPECTRE);//76); //156 is what APPEARANCE_TYPE_SPECTRE is.
|
|
PrintString("vamp_gaseous: GetAppearanceType is now ["+IntToString(GetAppearanceType(oPC))+"] "+GetName(oPC));
|
|
|
|
}
|
|
else
|
|
{
|
|
PrintString("vamp_gaseous: "+GetName(oPC)+" is polymorphing into a gaseous form.");
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ImmunityCritical, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, Speed, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, AttackDecrease, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, DamageReduction, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, DamageResistanceCold, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, DamageResistanceElectrical, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, Darkvision, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ImmunityAbilityDecrease, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ImmunityDeath, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ImmunityDisease, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ImmunityMind, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ImmunityPoison, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, Regenerate, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, TurnResistance, oPC, RoundsToSeconds(12));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, RoundsToSeconds(12));
|
|
}
|
|
}
|