57 lines
2.2 KiB
Plaintext
57 lines
2.2 KiB
Plaintext
////////////////////////////////////////////////////////////////////////////////
|
|
// it_ac_sculpt - Item Sculpture Summon
|
|
// By Deva B. Winblood. November 12th, 2008
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
void fnWatch(object oMaster)
|
|
{ // PURPOSE: For summone critter to know when to despawn
|
|
effect eUnsum=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
|
|
object oMe=OBJECT_SELF;
|
|
SetLocalInt(oMe,"bWatcher",TRUE);
|
|
//SendMessageToPC(oMaster,"DEBUG: '"+GetName(oMe)+"' Watching");
|
|
if (GetIsObjectValid(oMaster)==TRUE)
|
|
{ // valid master
|
|
if (GetIsDead(oMaster)||GetCurrentAction(oMaster)==ACTION_REST||GetLocalInt(oMe,"bUnsummon"))
|
|
{ // despawn
|
|
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eUnsum,GetLocation(oMe),4.0);
|
|
RemoveHenchman(oMaster,oMe);
|
|
SetIsDestroyable(TRUE,FALSE,FALSE);
|
|
DelayCommand(1.0,DestroyObject(oMe));
|
|
} // despawn
|
|
DelayCommand(6.0,fnWatch(oMaster));
|
|
} // valid master
|
|
else
|
|
{ // destroy self
|
|
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eUnsum,GetLocation(oMe),4.0);
|
|
RemoveHenchman(oMaster,oMe);
|
|
SetIsDestroyable(TRUE,FALSE,FALSE);
|
|
DelayCommand(1.0,DestroyObject(oMe));
|
|
DelayCommand(6.0,fnWatch(oMaster));
|
|
} // destroy self
|
|
} // fnWatch()
|
|
|
|
|
|
void main()
|
|
{
|
|
object oItem=GetItemActivated();
|
|
object oPC=GetItemActivator();
|
|
object oCreature;
|
|
string sRes=GetLocalString(oItem,"sRes");
|
|
effect eVFX=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
|
|
string sTeamID=GetLocalString(oPC,"sTeamID");
|
|
object oProxy=GetObjectByTag(sTeamID+"_PROXY");
|
|
oCreature=CreateObject(OBJECT_TYPE_CREATURE,sRes,GetLocation(oPC));
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eVFX,GetLocation(oCreature));
|
|
if (GetIsObjectValid(oProxy)) ChangeFaction(oCreature,oProxy);
|
|
AssignCommand(oCreature,ClearAllActions(TRUE));
|
|
AddHenchman(oPC,oCreature);
|
|
SetLocalString(oCreature,"sTeamID",sTeamID);
|
|
if (GetMaster(oCreature)!=oPC)
|
|
{ // adjust
|
|
SetMaxHenchmen(GetMaxHenchmen()+2);
|
|
AddHenchman(oPC,oCreature);
|
|
} // adjust
|
|
AssignCommand(oCreature,fnWatch(oPC));
|
|
if (sRes=="sumhorse"||sRes=="sumunicorn"||sRes=="sumnightmare") SetFootstepType(FOOTSTEP_TYPE_HORSE,oCreature);
|
|
}
|