Files
PRC8/nwn/nwnprc/trunk/scripts/prc_chngshp_true.nss
Jaysyn904 0f1c10c279 2026/01/26 Update
Added Wispling race.
Wispling qualifies for Shifter (PnP).
Bioware poisons now work with "new" PRC8 weapons.
Updated PRC8 Tester mod store to have Bioware venoms.
Updated PRC8 version.
Added Alchemy expansion notes.
Updated Starting package TLK notes.
2026-01-20 09:11:57 -05:00

99 lines
3.3 KiB
Plaintext

//:://////////////////////////////////////////////
//:: Change Shape - return to true form
//:: prc_chngshp_true
//:://////////////////////////////////////////////
/** @file
Undoes any shifting that the character may
have undergone. Also removes any polymorph
effects.
Note: Also attempts to clear old shifter style shifting.
Depending on which one overrides, may need to change the
order of the if statements.
@author Shane Hennessy
@date Modified - 2006.10.08 - rewritten by Ornedan - modded by Fox
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
#include "prc_inc_shifting"
#include "pnp_shft_poly"
#include "prc_racial_const"
void main()
{
object oPC = OBJECT_SELF;
int nRace = GetRacialType(oPC);
if(GetSpellId() == SPELL_IRDA_CHANGE_SHAPE_TRUE)
IncrementRemainingFeatUses(oPC, FEAT_IRDA_CHANGE_SHAPE);
if(GetSpellId() == SPELL_WISPLING_CHANGE_SHAPE_TRUE)
IncrementRemainingFeatUses(oPC, FEAT_WISPLING_CHANGE_SHAPE);
//End treeshape
if(GetHasSpellEffect(SPELL_TREESHAPE, oPC))
{
effect eVis;
string sTag = "Tree" + GetName(oPC);
object oTree = GetNearestObjectByTag(sTag, oPC);
if(GetIsObjectValid(oTree))
eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
DestroyObject(oTree);
PRCRemoveSpellEffects(SPELL_TREESHAPE, oPC, oPC);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
}
//;: Wispling Change Shape
PRCRemoveSpellEffects(17980, oPC, oPC);
// Aranea Alternate Form
PRCRemoveSpellEffects(1489, oPC, oPC);
PRCRemoveSpellEffects(1490, oPC, oPC);
PRCRemoveSpellEffects(1491, oPC, oPC);
// Undead Wildshape
PRCRemoveSpellEffects(2283, oPC, oPC);
PRCRemoveSpellEffects(2284, oPC, oPC);
PRCRemoveSpellEffects(2285, oPC, oPC);
PRCRemoveSpellEffects(2286, oPC, oPC);
PRCRemoveSpellEffects(2287, oPC, oPC);
PRCRemoveSpellEffects(2288, oPC, oPC);
DeleteLocalInt(oPC, "PRC_ShiftingOverride_Race");
if(GetLocalInt(oPC, "AraneaHumanoidForm") == TRUE || GetLocalInt(oPC, "AraneaHybridForm") == TRUE || GetPersistantLocalInt(oPC, "nPCShifted") == TRUE || GetLocalInt(oPC, "shifting") == TRUE)
{
SetLocalInt(oPC, "AraneaBiteEquip", TRUE);
}
//clear old style shifting first
if(GetLocalInt(oPC, "shifting"))
{
effect eFx = EffectVisualEffect(VFX_IMP_MAGICAL_VISION);
ApplyEffectToObject(DURATION_TYPE_INSTANT,eFx,OBJECT_SELF);
//re-use unshifter code from shifter instead
//this will also remove complexities with lich/shifter characters
SetShiftTrueForm(oPC);
}
// Attempt to unshift and if it fails, inform the user with a message so they don't wonder whether something is happening or not
else if(UnShift(oPC, TRUE) == UNSHIFT_FAIL)
FloatingTextStrRefOnCreature(16828383, oPC, FALSE); // "Failed to return to true form!"
if(nRace==RACIAL_TYPE_ARANEA)
{
//string sResRef = "prc_ara_bite_";
//int nSize = PRCGetCreatureSize(oPC);
//primary weapon
//sResRef += GetAffixForSize(nSize);
//DelayCommand(0.5f, AddNaturalPrimaryWeapon(oPC, sResRef, 1, TRUE));
DeleteLocalInt(oPC, "AraneaHumanoidForm");
DeleteLocalInt(oPC, "AraneaHybridForm");
}
}