23 protected const string LAMPS_SOUND =
"Bunker_Lamp_Hum_SoundSet";
31 protected const string COLOR_LAMP_OFF =
"DZ\\structures_sakhal\\military\\storage\\data\\Warhead_Storage_Lamp_Glass_int.rvmat";
32 protected const string COLOR_LAMP_ON =
"DZ\\structures_sakhal\\military\\storage\\data\\Warhead_Storage_Lamp_Glass_e_int.rvmat";
40 RegisterNetSyncVariableBool(
"m_HasPower");
41 RegisterNetSyncVariableInt(
"m_LeverStatesBits");
42 RegisterNetSyncVariableInt(
"m_IsLowEnergy");
54 for (
int i; i < 4; i++)
63 GetGame().RegisterNetworkStaticObject(
this);
68 for (
int i = 0; i < 12; i++)
116 PlaySoundSetAtMemoryPoint(soundEff,
LAMPS_SOUND,
"lamp" + (i+1).
ToString() +
"_pos",
true, 0.1, 0.1);
131 soundEff.SetAutodestroy(
true);
233 CloseDoor(doorIndex);
239 for (
int index = 1; index <= 4; index++)
241 int bit = 1 << (index - 1);
246 if (!IsDoorOpen(doorIndex))
251 if (IsDoorOpen(doorIndex))
252 CloseDoor(doorIndex);
259 for (
int index = 1; index <= 4; index++)
261 int bit = 1 << (index - 1);
287 return doorIndex - 8;
311 if (!super.CanDoorBeOpened(doorIndex, checkIfLocked))
317 return IsDoorClosed(4) && IsDoorClosed(5);
319 return IsDoorClosed(4) && IsDoorClosed(5);
321 return IsDoorClosed(6) && IsDoorClosed(7);
323 return IsDoorClosed(6) && IsDoorClosed(7);
337 return super.CanDoorBeLocked(doorIndex);
342 return doorIndex - 4;
347 return (doorIndex >= 4 && doorIndex <= 7);
352 return (doorIndex >= 8 && doorIndex <= 11);
361 return IsDoorOpen(doorIndex) && !IsDoorOpening(doorIndex);
363 return super.CanDoorBeClosed(doorIndex);
370 for (
int i = 1; i < count + 1; ++i)
373 string memoryPointNameMin =
"darkness_" +i+
"_min";
374 string memoryPointNameMax =
"darkness_" +i+
"_max";
375 vector memPosMin = GetMemoryPointPos(memoryPointNameMin);
376 vector memPosMax = GetMemoryPointPos(memoryPointNameMax);
377 vector triggerSize = memPosMax - memPosMin;
378 vector triggerPosLocal = memPosMin + (triggerSize * 0.5);
379 EUndergroundTriggerType type = EUndergroundTriggerType.INNER;
380 string linkedDoorSelection =
"";
383 type = EUndergroundTriggerType.TRANSITIONING;
388 type = EUndergroundTriggerType.TRANSITIONING;
392 data.m_Position = triggerPosLocal;
393 data.m_Size = triggerSize;
395 data.m_LinkedDoorSelection = linkedDoorSelection;
397 dataArr.Insert(data);
412 vector extMax = data.m_Size * 0.5;
414 #ifdef DIAG_DEVELOPER
415 trigger.m_Local =
true;
417 AddChild(trigger,-1);
418 trigger.SetExtents(extMin, extMax);
430 debug_output =
"IsDoorOpen(4) " + IsDoorOpen(4)+
"\n";
431 debug_output +=
"IsDoorOpen(5) " + IsDoorOpen(5)+
"\n";
432 debug_output +=
"IsDoorOpen(6) " + IsDoorOpen(6)+
"\n";
433 debug_output +=
"IsDoorOpen(7) " + IsDoorOpen(7)+
"\n";
437 debug_output =
"this is client";
445 super.OnVariablesSynchronized();
Param1< int > DoorStartParams
Wrapper class for managing sound through SEffectManager.
override void SetAutodestroy(bool auto_destroy)
Sets whether Effect automatically cleans up when it stops.
override void OnDoorOpenStart(DoorStartParams params)
const string WARHEAD_BUNKER_TRIGGER
void Land_WarheadStorage_Main()
const string ELECTRICITY_OFF_SOUND
const string MAIN_DOOR_SELECTION1
override bool CanDoorBeClosed(int doorIndex)
void SetLeverStatesServer(int leverBits)
const string ELECTRICITY_ON_SOUND
const float DOOR_AUTOCLOSE_TIME
void AutoCloseDoor(int doorIndex)
void ~Land_WarheadStorage_Main()
const string ALARM_DOOR_OPEN_SOUND
void RemoveDoorTimer(int doorIndex)
override bool CanDoorBeOpened(int doorIndex, bool checkIfLocked=false)
override void DeferredInit()
bool IsStorageDoor(int doorIndex)
ref map< int, ref Timer > m_AutoCloseTimers
const string ALARM_POS_MEMPOINT
int GetBunkerEffectIndexByDoor(int doorIndex)
override void OnDoorOpenFinish(DoorFinishParams params)
array< ref UndergroundBunkerTriggerData > GetTriggersData(int count)
void UpdateDoorStateServer()
EffectSound m_SoundDoorLoop[4]
override bool CanDoorBeLocked(int doorIndex)
void SetLowEnergyStateServer(bool state)
const string COLOR_LAMP_ON
override void OnVariablesSynchronized()
const string LAMP_SELECTION
const string ALARM_DOOR_CLOSE_SOUND
const string MAIN_DOOR_SELECTION2
void SetPowerServer(bool hasPower)
override void OnDoorCloseStart(DoorStartParams params)
int GetStorageLightIndexByDoor(int doorIndex)
const string ALARM_DOOR_OPEN_LOOP_SOUND
override void OnDoorCloseFinish(DoorFinishParams params)
const string VENT_POS_MEMPOINT
WarheadStorageLight m_StorageDoorLights[4]
const string VENTILATION_SOUND
void UpdateDoorStateClient()
int GetDoorIndexByLeverIndex(int LeverIndex)
override string GetDebugText()
const string COLOR_LAMP_OFF
ref array< EffectSound > m_PoweredSoundEffects
const string VENT_MAIN_POS_MEMPOINT
bool IsBunkerDoor(int doorIndex)
void SpawnTriggers(int count)
static void UnregisterBunker(Land_WarheadStorage_Main bunker)
static void RegisterBunker(Land_WarheadStorage_Main bunker)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
bool IsPlaying()
Returns true when the Effect is playing, false otherwise.
proto native CGame GetGame()