Files
HeroesStone_PRC8/_module/nss/bh_maincontrol.nss
Jaysyn904 1eefc84201 Initial Commit
Initial Commit.
2025-09-14 15:40:46 -04:00

120 lines
5.1 KiB
Plaintext

void CreatePortal()
{
object oExitwaypoint = GetObjectByTag("TempASExitportal");
location lLocation = GetLocation(oExitwaypoint);
CreateObject(OBJECT_TYPE_PLACEABLE,"bh_tas_exitport",lLocation);
}
void DestroyTemplePortal()
{
object oDestroy = GetObjectByTag("BH_TAS_Exitportal");
DestroyObject(oDestroy);
object oBlue = GetObjectByTag("BH_BlueControl");
object oYellow = GetObjectByTag("BH_YellowControl");
object oGreen = GetObjectByTag("BH_GreenControl");
object oRed = GetObjectByTag("BH_RedControl");
AssignCommand(oBlue,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oYellow,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oGreen,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oRed,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
int nActive = GetLocalInt (oBlue,"X2_L_PLC_ACTIVATED_STATE");
SetLocalInt(oBlue,"X2_L_PLC_ACTIVATED_STATE",!nActive);
nActive = GetLocalInt(oYellow,"X2_L_PLC_ACTIVATED_STATE");
SetLocalInt(oYellow,"X2_L_PLC_ACTIVATED_STATE",!nActive);
nActive = GetLocalInt(oGreen,"X2_L_PLC_ACTIVATED_STATE");
SetLocalInt(oGreen,"X2_L_PLC_ACTIVATED_STATE",!nActive);
nActive = GetLocalInt(oRed,"X2_L_PLC_ACTIVATED_STATE");
SetLocalInt(oRed,"X2_L_PLC_ACTIVATED_STATE",!nActive);
}
void main()
{
object oPC;
oPC=GetLastUsedBy();
if (!GetIsPC(oPC)) return;
object oBlue = GetObjectByTag("BH_BlueControl");
object oYellow = GetObjectByTag("BH_YellowControl");
object oGreen = GetObjectByTag("BH_GreenControl");
object oRed = GetObjectByTag("BH_RedControl");
object oControlSwitch1 = GetObjectByTag("BH_ControlSwitch1");
object oControlSwitch2 = GetObjectByTag("BH_ControlSwitch2");
object oControlSwitch3 = GetObjectByTag("BH_ControlSwitch3");
object oControlSwitch4 = GetObjectByTag("BH_ControlSwitch4");
//If all the colored triggers are activated then activate the main Console and create a portal.
int nTrigsActive = GetLocalInt(oPC,"nColorTrigsActivated");
if (nTrigsActive == 4)
{
//If a portal has already been created then we destroy it before creating a new one.
object oDestroy = GetObjectByTag("BH_TAS_Exitportal");
DestroyObject(oDestroy);
//Set the triggeractivated to 5. Now the main control should not work again for the same player until he resets the triggers.
SetLocalInt(oPC,"nColorTrigsActivated",5);
PlaySound("al_mg_crystalev1");
//Just in case any of the control switches are already activated, we deactivate them all.
FloatingTextStringOnCreature("Standby.....Loading Coordinates....",oPC);
AssignCommand(oControlSwitch1,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
DelayCommand(1.0,AssignCommand(oControlSwitch2,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)));
DelayCommand(2.0,AssignCommand(oControlSwitch3,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)));
DelayCommand(3.0,AssignCommand(oControlSwitch4,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)));
DelayCommand(4.0,FloatingTextStringOnCreature("Charging up Flux Capacitors.....",oPC));
//Now we reactivate all the control switches.
DelayCommand(5.0,AssignCommand(oControlSwitch1,ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));
DelayCommand(6.0,AssignCommand(oControlSwitch2,ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));
DelayCommand(7.0,AssignCommand(oControlSwitch3,ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));
DelayCommand(8.0,AssignCommand(oControlSwitch4,ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));
DelayCommand(9.0,PlaySound("al_mg_sourceston"));
DelayCommand(10.0,CreatePortal());
DelayCommand(11.0,FloatingTextStringOnCreature("Portal Active.....Shutdown begins in twenty seconds.",oPC));
//Shut everything down 20 seconds after its been activated.
DelayCommand(30.0,DestroyTemplePortal());
return;
}
if (nTrigsActive == 5)
{
FloatingTextStringOnCreature("Shutting down main console and all auxilary flux power.",oPC);
DestroyTemplePortal();
SetLocalInt(oPC,"nColorTrigsActivated",0);
/*
object oDestroy = GetObjectByTag("BH_TAS_Exitportal");
DestroyObject(oDestroy);
FloatingTextStringOnCreature("Shutting down main console and all auxilary power.",oPC);
AssignCommand(oBlue,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oYellow,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oGreen,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oRed,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
int nActive = GetLocalInt (oBlue,"X2_L_PLC_ACTIVATED_STATE");
SetLocalInt(oBlue,"X2_L_PLC_ACTIVATED_STATE",!nActive);
nActive = GetLocalInt(oYellow,"X2_L_PLC_ACTIVATED_STATE");
SetLocalInt(oYellow,"X2_L_PLC_ACTIVATED_STATE",!nActive);
nActive = GetLocalInt(oGreen,"X2_L_PLC_ACTIVATED_STATE");
SetLocalInt(oGreen,"X2_L_PLC_ACTIVATED_STATE",!nActive);
nActive = GetLocalInt(oRed,"X2_L_PLC_ACTIVATED_STATE");
SetLocalInt(oRed,"X2_L_PLC_ACTIVATED_STATE",!nActive);
SetLocalInt(oPC,"nColorTrigsActivated",0);
*/
return;
}
else
{
FloatingTextStringOnCreature("The main console needs flux power to operate.",oPC);
}
}