33 RegisterNetSyncVariableInt(
"m_CodeLockComponent.m_DoorIndex");
34 RegisterNetSyncVariableInt(
"m_CodeLockComponent.m_Stage");
35 RegisterNetSyncVariableInt(
"m_CodeLockComponent.m_WrongCodeCount");
36 RegisterNetSyncVariableInt(
"m_CodeLockComponent.m_UIAction");
37 RegisterNetSyncVariableBool(
"m_CodeLockComponent.m_IsLocked");
38 RegisterNetSyncVariableBool(
"m_CodeLockComponent.m_HasPIN");
39 RegisterNetSyncVariableBool(
"m_CodeLockComponent.m_HasBruteForceProtection");
40 RegisterNetSyncVariableBoolSignal(
"m_CodeLockComponent.m_HandleBruteForceProtection");
41 RegisterNetSyncVariableBool(
"m_Reversed");
54 super.EEItemLocationChanged(oldLoc, newLoc);
60 if (
g_Game.IsDedicatedServer())
71 super.EEItemAttached(item, slot_name);
81 float batteryEnergy = battery.GetCompEM().GetEnergy();
85 GetCompEM().SwitchOn();
96 super.EEItemDetached(item, slot_name);
104 GetCompEM().SwitchOff();
113 super.OnWasAttached(parent, slot_id);
119 if (
slotName.IndexOf(
"Att_CodeLock") > -1)
122 if (battery && battery.GetCompEM().GetEnergy() > 0 && !GetCompEM().IsWorking())
125 GetCompEM().SwitchOn();
128 if (parent && parent.CanUseConstruction())
144 super.OnWasDetached(parent, slot_id);
149 if (GetCompEM().IsWorking())
150 GetCompEM().SwitchOff();
153 if (
slotName.IndexOf(
"Att_CodeLock") > -1)
176 if (doorsInfoMap && doorsInfoMap.Count() > 0)
182 foreach(
string relatedSlotName: doorInfoData.m_RelatedInventorySlotNames)
186 doorIndex = doorInfoIndex;
187 doorInfo = doorInfoData;
203 if (rebuilding && doorInfo)
206 ConstructionPartRebuildReversibleDoor reversibleDoorPart;
207 if (constructionPart &&
Class.
CastTo(reversibleDoorPart, constructionPart))
209 m_Reversed = reversibleDoorPart.IsReversedLocal();
251 override void OnWork(
float consumed_energy)
253 super.OnWork(consumed_energy);
260 if (GetCompEM().IsWorking() && battery.GetCompEM().GetEnergy() <= 0)
262 GetCompEM().SwitchOff();
280 GetInventory().GetCurrentInventoryLocation(inventoryLocation);
283 if (
g_Game.IsMultiplayer())
285 parent.GetInventory().DropEntity(
InventoryMode.SERVER, parent,
this);
289 parent.GetInventory().DropEntity(
InventoryMode.LOCAL, parent,
this);
294 if (parent.MemoryPointExists(
slotName))
296 groundPos = parent.ModelToWorld(parent.GetMemoryPointPos(
slotName));
340 return GetCompEM().IsWorking();
425 EntityAI hierarchyParent = GetHierarchyRoot();
426 if (hierarchyParent.CanUseConstruction())
429 if (BroadcastedBunker.Cast(hierarchyParent))
446 float energy = battery.GetCompEM().GetEnergy();
447 float energyMax = battery.GetCompEM().GetEnergyMax();
452 return (energy / energyMax) * 100.0;
479 super.OnRPC(sender, rpc_type, ctx);
486 super.OnStoreSave(ctx);
493 if (!super.OnStoreLoad(ctx, version))
504 super.AfterStoreLoad();
523 super.EEHealthLevelChanged(oldLevel,newLevel,zone);
530 super.OnVariablesSynchronized();
535 if (uiAction != CodeLockUIAction.NONE)
549 super.InitItemSounds();
563 GetInventory().CreateInInventory(
"Battery9V");
576 if (bunkerConfig && bunkerConfig.bunkerSettings)
579 pinCodeLength = bunkerConfig.bunkerSettings.lockCodeLength;
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
void AddAction(typename actionName)
PlayerSpawnPreset slotName
bool SetLockCode(string pin)
ref CodeLockComponent m_CodeLockComponent
void CodeLockComponent(notnull EntityAI parent, int minLockPinLength=MIN_LOCK_PIN_LENGTH)
void CodeLockVisualManager(DigitalCodeLock codeLock, CodeLockComponent component)
InventoryLocationType
types of Inventory Location
ItemSoundHandler GetItemSoundHandler()
string m_DoorConstructionPartName
memory point name for limiting open/close actions on the door/window
static BunkerBroadcastConfigInstance GetData()
Super root of all classes in Enforce script.
Instanced construction part data classes for dynamic data, statics now stored on EntityType level in ...
override void EEItemAttached(EntityAI item, string slot_name)
override void OnDebugSpawn()
CodeLockComponent GetCodeLockComponent()
bool HasBruteForceProtection()
ref CodeLockVisualManager m_VisualManager
override bool OnStoreLoad(ParamsReadContext ctx, int version)
bool ShouldHandleBruteForce()
override void OnWasAttached(EntityAI parent, int slot_id)
override void OnStoreSave(ParamsWriteContext ctx)
override void OnWorkStart()
override void OnRPC(PlayerIdentity sender, int rpc_type, ParamsReadContext ctx)
const string SELECTION_NAME_BACK
override void OnWork(float consumed_energy)
bool IsPlayerOnBackside(PlayerBase player)
override bool IsExternalLockType()
const string CODELOCK_DIGITS_SOUND
const string CODELOCK_ACCESS_SOUND
const string CODELOCK_ERROR_SOUND
const string ATTACHMENT_SLOT_BATTERY
override void OnWorkStop()
const string CODELOCK_CLEAR_SOUND
override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
bool CanDetachCodeLock(notnull PlayerBase player, int componentIndex)
Condition check called from ActionTakeItem and ActionTakeItemToHands.
const string CODELOCK_CONFIRM_SOUND
override void OnVariablesSynchronized()
const string MEMPOINT_INSIDE
void SetDoorInfoFromSlot(BuildingBase buildingBase, string slotName)
override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
const string CODELOCK_LOCK_SOUND
int GetMinLockPINLength()
override void InitItemSounds()
CodeLockVisualManager GetVisualManager()
override void SetActions()
void SetLockState(bool state)
override void EEItemDetached(EntityAI item, string slot_name)
ref CodeLockComponent m_CodeLockComponent
void ForceFullVisualsUpdate()
override void AfterStoreLoad()
const string CODELOCK_UNLOCK_SOUND
const string MEMPOINT_CENTER
void UnlockOnServer(EntityAI parent)
Unlock AND drop.
override void OnWasDetached(EntityAI parent, int slot_id)
override bool CanDetachAttachment(EntityAI parent)
proto native int GetSlot()
returns slot id if current type is Attachment
static proto native owned string GetSlotName(int id)
converts slot_id to string
provides access to slot configuration
override bool ShowZonesHealth()
The class that will be instanced (moddable)
Serializer ParamsReadContext
Serializer ParamsWriteContext
proto native void SetPosition(vector position)
Set the world position of the Effect.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
vector GetPosition()
Get the world position of the Effect.