64 lines
2.5 KiB
Plaintext
64 lines
2.5 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
|
// wazoo_polyoth - By Deva Bryson Winblood
|
|
// Polymorph Other
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
void main()
|
|
{
|
|
object oCaster=GetPCSpeaker();
|
|
object oTarget=GetLocalObject(oCaster,"oSpellTarget");
|
|
int nLevel=GetLocalInt(oCaster,"nCasterLevel");
|
|
effect eEff;
|
|
int nParm=GetLocalInt(oCaster,"nParm");
|
|
int nShape;
|
|
int nSave;
|
|
int bSpellSuccess=TRUE;
|
|
int bDifficultyHardcore=FALSE;
|
|
effect eBeam=EffectBeam(VFX_BEAM_SILENT_MIND,oCaster,BODY_NODE_HAND);
|
|
switch(nParm)
|
|
{ // pick shape
|
|
case 0: { nShape=POLYMORPH_TYPE_BADGER; break; }
|
|
case 1: { nShape=POLYMORPH_TYPE_BOAR; break; }
|
|
case 2: { nShape=POLYMORPH_TYPE_CHICKEN; break; }
|
|
case 3: { nShape=POLYMORPH_TYPE_COW; break; }
|
|
case 4: { nShape=POLYMORPH_TYPE_PENGUIN; break; }
|
|
case 5: { nShape=POLYMORPH_TYPE_BROWN_BEAR; break; }
|
|
case 6: { nShape=POLYMORPH_TYPE_WOLF; break; }
|
|
case 7: { nShape=POLYMORPH_TYPE_PANTHER; break; }
|
|
default: break;
|
|
} // pick shape
|
|
// fire beam
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eBeam,oTarget,4.0);
|
|
// check for save
|
|
nSave=GetSpellSaveDC();
|
|
if (GetIsPC(oTarget)==TRUE) SendMessageToPC(oTarget,GetName(oCaster)+" cast Polymorph Other spell at you.");
|
|
nSave=FortitudeSave(oTarget,nSave,SAVING_THROW_TYPE_SPELL,oCaster);
|
|
if (nSave>0) bSpellSuccess=FALSE;
|
|
// check for hardcore settings
|
|
if (GetLocalInt(GetModule(),"bHardcoreSpells")==TRUE) bDifficultyHardcore=TRUE;
|
|
if (bSpellSuccess==TRUE)
|
|
{ // check resistance
|
|
nSave=ResistSpell(oCaster,oTarget);
|
|
if (nSave>0) bSpellSuccess=FALSE;
|
|
if (nSave==1) SendMessageToPC(oCaster,"Spell was resisted via spell resistance.");
|
|
else if (nSave==2) SendMessageToPC(oCaster,"The target is immune to the spell.");
|
|
else if (nSave==3) SendMessageToPC(oCaster,"The target absorbed the spell.");
|
|
} // check resistance
|
|
if (bSpellSuccess)
|
|
{ // spell was successful
|
|
eEff=EffectPolymorph(nShape);
|
|
if (GetIsPC(oTarget)==FALSE||bDifficultyHardcore)
|
|
{ // permanent
|
|
DelayCommand(3.5,ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEff,oTarget,10000.0));
|
|
} // permanent
|
|
else
|
|
{ // use a duration
|
|
DelayCommand(3.5,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eEff,oTarget,HoursToSeconds(nLevel)));
|
|
} // use a duration
|
|
} // spell was successful
|
|
else
|
|
{
|
|
SendMessageToPC(oCaster,"*target saved versus that spell*");
|
|
if (GetIsPC(oTarget)==TRUE) SendMessageToPC(oTarget,"*you saved versus the polymorph spell*");
|
|
}
|
|
}
|