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); } }