Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

698 lines
30 KiB
Plaintext

// summon emergency help for lair nParm = level
// 1 = minor - costs 100 mana
// 2 = medium - costs 200 mana
// 3 = major - costs 300 mana
// Summoned creatures only stay around for 4 game minutes
// A portion of them will set on follow or recon of master, and others will
// be set to Guard Lair, Guard Mana, and Guard Throne.
#include "rtsh_multiplay"
const int SUMMON_DURATION_EMERGENCY = 25; // decremented by 1 every 10 seconds
//////////////////////////////
// PROTOTYPES
//////////////////////////////
void fnDoSummon(object oPC,int nLevel);
///////////////////////////////////////////////////////////////////[ MAIN ]/////
void main()
{
object oLeader=OBJECT_SELF;
int nParm=GetLocalInt(oLeader,"nParm");
int nCost=0;
int nMana;
if (nParm==1) nCost=100;
else if (nParm==2) nCost=200;
else if (nParm==3) nCost=300;
if (nCost>0)
{ // valid cost
nMana=fnGetTeamMana(oLeader);
if (nMana>=nCost)
{ // have enough
nMana=nMana-nCost;
fnSetTeamMana(oLeader,nMana);
fnDoSummon(oLeader,nParm);
} // have enough
else
{ // not enough
SendMessageToPC(oLeader,"Insufficient mana to perform. That costs "+IntToString(nCost)+" mana and you only have "+IntToString(nMana)+".");
} // not enough
} // valid cost
else
{ // error
SendMessageToPC(oLeader,"Error in summoning");
PrintString("ERROR 'leader_summon': nParm="+IntToString(nParm));
} // error
}
///////////////////////////////////////////////////////////////////[ MAIN ]/////
//////////////////////////////
// FUNCTIONS
//////////////////////////////
/*
AI VALUES
nMState
11 = Guard Lair
14 = Recon
5 = Follow
2 = Guard nParm = type 4 = mana, 5 = throne
nFollowDist = distance 0 = 3.0, 1 = 7.0, 2 = 5.0
nRun
oDestWP = whom to follow
*/
void fnPossessiveScript()
{ // PURPOSE: Possessive script to run the AI for the summoned unit
object oMe=OBJECT_SELF;
int nTimer=GetLocalInt(oMe,"nTimer");
if (nTimer>0)
{ // remain spawned
if (!GetIsInCombat(oMe)&&!GetIsDMPossessed(oMe))
{ // possible to act
object oEnemy=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oMe,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY);
if (!GetIsObjectValid(oEnemy))
{ // no enemies in area
ExecuteScript("rts_unit_ai",oMe);
} // no enemies in area
} // possible to act
SetLocalInt(oMe,"nTimer",nTimer-1);
DelayCommand(10.0,fnPossessiveScript());
} // remain spawned
else
{ // despawn
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),GetLocation(oMe));
DestroyObject(oMe);
} // despawn
} // fnPossessiveScript()
void fnMinorSpiders(object oPC)
{ // PURPOSE: Do a minor summon for spider cultists
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
effect eCreate;
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergm2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","SPID");
SetLocalInt(oCreature,"nRun",TRUE);
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergm2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","SPID");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=8)
{ // spawn 8 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","SPID");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 8 creatures
} // fnMinorSpiders()
void fnMediumSpiders(object oPC)
{ // PURPOSE: Do a minor summon for spider cultists
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergm1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","SPID");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergm1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","SPID");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=12)
{ // spawn 12 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergm2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","SPID");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 12 creatures
} // fnMediumSpiders()
void fnMajorSpiders(object oPC)
{ // PURPOSE: Do a minor summon for spider cultists
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergh1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","SPID");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergh1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","SPID");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=10)
{ // spawn 10 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"spidemergh2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","SPID");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 10 creatures
} // fnMaforSpiders()
void fnMinorUndead(object oPC)
{ // PURPOSE: Do a minor summon for undead
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=12)
{ // spawn 12 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 12 creatures
} // fnMinorUndead()
void fnMediumUndead(object oPC)
{ // PURPOSE: Do a medium summon for undead
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergm2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergm1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=4)
{ // spawn 4 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergm1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 4 creatures
nN=1;
while(nN<=4)
{ // spawn 4 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergm2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 4 creatures
} // fnMediumUndead()
void fnMajorUndead(object oPC)
{ // PURPOSE: Do a major summon for undead
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergh1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergh1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=8)
{ // spawn 8 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"undemergh2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","UND");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 8 creatures
} // fnMajorUndead()
void fnMinorUnclean(object oPC)
{ // PURPOSE: Do a minor summon for unclean
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=8)
{ // spawn 8 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergl2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 8 creatures
nN=1;
while(nN<=4)
{ // spawn 4 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergl3",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 4 creatures
} // fnMinorUnclean()
void fnMediumUnclean(object oPC)
{ // PURPOSE: Do a medium summon for Unclean
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergm1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergm1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=8)
{ // spawn 8 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergm2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 8 creatures
} // fnMediumUnclean()
void fnMajorUnclean(object oPC)
{ // PURPOSE: Do a major summon for Unclean
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_evil",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergh2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergh1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=6)
{ // spawn 6 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"uncemergh3",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","UNC");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 6 creatures
} // fnMajorUnclean()
void fnMinorDwarves(object oPC)
{ // PURPOSE: Do a minor summon for dwarves
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_good",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=8)
{ // spawn 8 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergl1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 8 creatures
} // fnMinorDwarves()
void fnMediumDwarves(object oPC)
{ // PURPOSE: Do a minor summon for dwarves
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_good",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergm1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergm1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=8)
{ // spawn 8 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergm2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 8 creatures
} // fnMediumDwarves()
void fnMajorDwarves(object oPC)
{ // PURPOSE: Do a major summon for dwarves
object oGate=CreateObject(OBJECT_TYPE_PLACEABLE,"gate_good",GetLocation(oPC));
effect eSummon=EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
object oCreature;
int nN;
DelayCommand(5.0,DestroyObject(oGate));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergh1",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",5); // follow
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergh2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",14); // Recon
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN=1;
while(nN<=12)
{ // spawn 12 creatures
oCreature=CreateObject(OBJECT_TYPE_CREATURE,"dwfemergm2",GetLocation(oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eSummon,oCreature);
SetLocalObject(oCreature,"oDestWP",oPC);
SetLocalInt(oCreature,"nMState",11); // Guard Lair
SetLocalString(oCreature,"sTeamID","DWF");
SetAILevel(oCreature,AI_LEVEL_NORMAL);
DelayCommand(0.1,SetLocalInt(oCreature,"nTimer",SUMMON_DURATION_EMERGENCY));
DelayCommand(0.2,AssignCommand(oCreature,fnPossessiveScript()));
//AddHenchman(oPC,oCreature);
SetLocalInt(oCreature,"nRun",TRUE);
nN++;
} // spawn 12 creatures
} // fnMajorDwarves()
void fnDoSummon(object oPC,int nLevel)
{ // PURPOSE: Perform the summoning
string sTeamID=GetLocalString(oPC,"sTeamID");
sTeamID=GetStringUpperCase(sTeamID);
if (nLevel==1)
{ // minor
if (sTeamID=="SPID") fnMinorSpiders(oPC);
else if (sTeamID=="UND") fnMinorUndead(oPC);
else if (sTeamID=="UNC") fnMinorUnclean(oPC);
else if (sTeamID=="DWF") fnMinorDwarves(oPC);
} // minor
else if (nLevel==2)
{ // medium
if (sTeamID=="SPID") fnMediumSpiders(oPC);
else if (sTeamID=="UND") fnMediumUndead(oPC);
else if (sTeamID=="UNC") fnMediumUnclean(oPC);
else if (sTeamID=="DWF") fnMediumDwarves(oPC);
} // medium
else if (nLevel==3)
{ // major
if (sTeamID=="SPID") fnMajorSpiders(oPC);
else if (sTeamID=="UND") fnMajorUndead(oPC);
else if (sTeamID=="UNC") fnMajorUnclean(oPC);
else if (sTeamID=="DWF") fnMajorDwarves(oPC);
} // major
} // fnDoSummon()