1#ifdef FEATURE_NETWORK_RECONCILIATION
2class Person
extends Pawn
12#ifdef FEATURE_NETWORK_RECONCILIATION
13class Man
extends Person
23 proto native
EntityAI GetDrivingVehicle();
25 proto native owned
string GetCurrentWeaponMode();
28 proto native
void SetSpeechRestricted(
bool state);
30 proto native
bool IsSpeechRestricted();
33 proto native
void SetFaceTexture(
string texture_name);
35 proto native
void SetFaceMaterial(
string material_name);
37 proto native
bool IsSoundInsideBuilding();
38 proto native
bool IsCameraInsideVehicle();
40 proto native owned
string GetMasterAttenuation();
41 proto native
void SetMasterAttenuation(
string masterAttenuation);
53 override bool IsHealthVisible()
65 bool IsUnconsciousStateOnly();
79 proto native HumanInventory GetHumanInventory();
81 proto native
EntityAI GetEntityInHands();
130 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveDropEntity input data not sent yet, cannot allow another input action");
153 bool code = GetHumanInventory().DropEntity(mode, owner, item);
175 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveTakeEntityToHands input data not sent yet, cannot allow another input action");
197 if (!
g_Game.IsDedicatedServer() )
200 il.SetHands(
this, item);
205 EntityAI itemInHands = GetEntityInHands();
208 if (item.GetInventory().GetCurrentInventoryLocation(src_item))
210 if (itemInHands == null)
213 hand_dst.SetHands(
this, item);
214 GetHumanInventory().TakeToDst(mode, src_item, hand_dst);
216 else if (GetHumanInventory().CanSwapEntitiesEx(itemInHands, item))
217 GetInventory().SwapEntities(mode, itemInHands, item);
226 GetHumanInventory().LocalDestroyEntity(GetEntityInHands());
236 Print(
"[inv] PredictiveMoveItemFromHandsToInventory input data not sent yet, cannot allow another input action");
241 EntityAI entityInHands = GetEntityInHands();
248 if (entityInHands.m_OldLocation && entityInHands.m_OldLocation.IsValid())
251 entityInHands.GetInventory().GetCurrentInventoryLocation(invLoc);
254 EntityAI oldLocationParent = entityInHands.m_OldLocation.GetParent();
255 if (oldLocationParent && oldLocationParent.GetHierarchyRootPlayer())
257 humanInventory.ClearInventoryReservation(entityInHands, entityInHands.m_OldLocation);
258 if (humanInventory.LocationCanMoveEntity(invLoc, entityInHands.m_OldLocation))
260 EntityAI oldLocEntity = humanInventory.LocationGetEntity(entityInHands.m_OldLocation);
261 if (!oldLocEntity && humanInventory.TakeToDst(invMode, invLoc, entityInHands.m_OldLocation))
271 if (humanInventory.TakeToDst(invMode, invLoc, newLocation))
290 bool code = GetHumanInventory().ReplaceItemWithNew(mode, lambda);
310 bool code = GetHumanInventory().ReplaceItemElsewhereWithNewInHands(mode, lambda);
330 bool code = GetHumanInventory().ReplaceItemInHandsWithNew(mode, lambda);
350 bool code = GetHumanInventory().ReplaceItemInHandsWithNewElsewhere(mode, lambda);
376 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveTakeEntityToInventory input data not sent yet, cannot allow another input action");
399 bool code = GetHumanInventory().TakeEntityToInventory(mode, flags, item);
415 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveTakeEntityToCargo input data not sent yet, cannot allow another input action");
438 bool code = GetHumanInventory().TakeEntityToCargo(mode, item);
454 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveTakeEntityAsAttachment input data not sent yet, cannot allow another input action");
477 bool code = GetHumanInventory().TakeEntityAsAttachment(mode, item);
493 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveTakeEntityAsAttachmentEx input data not sent yet, cannot allow another input action");
516 bool code = GetHumanInventory().TakeEntityAsAttachmentEx(mode, item, slot);
532 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveSwapEntities input data not sent yet, cannot allow another input action");
536 EntityAI item1Parent = item1.GetHierarchyParent();
537 EntityAI item2Parent = item2.GetHierarchyParent();
540 if (need_j1 || need_j2)
561 Error(
"[inv] (Man@" +
this +
") SwapEntitiesImpl - cannot swap items!");
563 code = GetHumanInventory().SwapEntities(mode, item1, item2);
582 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveForceSwapEntities input data not sent yet, cannot allow another input action");
586 EntityAI item1Parent = item1.GetHierarchyParent();
587 EntityAI item2Parent = item2.GetHierarchyParent();
590 if (need_j1 || need_j2)
610 code = GetHumanInventory().ForceSwapEntities(mode, item1, item2, item2_dst);
629 Print(
"[inv] " + GetSimulationTimeStamp() +
" ::PredictiveTakeEntityToTargetInventory input data not sent yet, cannot allow another input action");
641 if( GetInventory().CanAddAttachment( item ) )
651 int slot_id = itemInventory.
GetSlotId(i);
670 bool code = GetInventory().TakeEntityToTargetInventory(mode, target, flags, item);
686 Print(
"[inv] " +
GetDebugName(
this) +
" STS = " + GetSimulationTimeStamp() +
" ::PredictiveTakeEntityToTargetCargoEx input data not sent yet, cannot allow another input action");
709 bool code = GetInventory().TakeEntityToTargetCargoEx(mode, cargo, item, row, col);
725 Print(
"[inv] " +
GetDebugName(
this) +
" STS = " + GetSimulationTimeStamp() +
" ::PredictiveTakeEntityToTargetCargo input data not sent yet, cannot allow another input action");
768 Print(
"[inv] " +
GetDebugName(
this) +
" STS = " + GetSimulationTimeStamp() +
" ::PredictiveTakeEntityToTargetAttachmentEx input data not sent yet, cannot allow another input action");
791 bool code = GetInventory().TakeEntityAsTargetAttachmentEx(mode, target, item, slot);
807 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveTakeEntityToTargetAttachment input data not sent yet, cannot allow another input action");
848 Print(
"[inv] " + GetSimulationTimeStamp() +
" Man@" +
this +
" ::PredictiveTakeToDst input data not sent yet, cannot allow another input action");
871 bool code = GetHumanInventory().TakeToDst(mode, src, dst);
885 return !GetIsFrozen();
void syncDebugPrint(string s)
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
represents base for cargo storage for entities
bool ReplaceItemInHandsWithNewImpl(InventoryMode mode, ReplaceItemWithNewLambdaBase lambda)
hand replace
override bool ServerTakeEntityToTargetAttachment(notnull EntityAI target, notnull EntityAI item)
proto native void StatUpdateByTime(string name)
Updates stat counter by time.
override bool PredictiveTakeToDst(notnull InventoryLocation src, notnull InventoryLocation dst)
override bool LocalTakeEntityToTargetInventory(notnull EntityAI target, FindInventoryLocationType flags, notnull EntityAI item)
override bool PredictiveTakeEntityToInventory(FindInventoryLocationType flags, notnull EntityAI item)
override bool LocalTakeToDst(notnull InventoryLocation src, notnull InventoryLocation dst)
override bool PredictiveTakeEntityAsAttachment(notnull EntityAI item)
bool JunctureTakeEntityToTargetCargoEx(notnull CargoBase cargo, notnull EntityAI item, int row, int col)
to target cgo ex juncture
ref ScriptInvoker m_OnItemAddedToHands
bool JunctureTakeEntityAsAttachment(notnull EntityAI item)
as att juncture
bool TakeEntityToCargoImpl(InventoryMode mode, notnull EntityAI item)
bool ServerReplaceItemInHandsWithNewElsewhere(ReplaceItemWithNewLambdaBase lambda)
override bool PredictiveTakeEntityAsAttachmentEx(notnull EntityAI item, int slot)
void UpdateInventoryMenu()
bool JunctureTakeEntityToTargetCargo(notnull EntityAI target, notnull EntityAI item)
to target cgo juncture
bool LocalReplaceItemElsewhereWithNewInHands(ReplaceItemWithNewLambdaBase lambda)
override bool PredictiveDropEntity(notnull EntityAI item)
override bool ServerTakeEntityToTargetCargo(notnull EntityAI target, notnull EntityAI item)
override bool ServerTakeEntityToCargo(notnull EntityAI item)
bool JunctureDropEntity(notnull EntityAI item)
drop juncture
bool LocalReplaceItemInHandsWithNewElsewhere(ReplaceItemWithNewLambdaBase lambda)
ScriptInvoker GetOnItemAddedToHands()
bool IsInventorySoftLocked()
void SetInventorySoftLock(bool status)
override bool PredictiveTakeEntityToTargetInventory(notnull EntityAI target, FindInventoryLocationType flags, notnull EntityAI item)
bool LocalReplaceItemInHandsWithNew(ReplaceItemWithNewLambdaBase lambda)
override bool LocalTakeEntityToInventory(FindInventoryLocationType flags, notnull EntityAI item)
bool IsInTransport()
returns true if man is in transport, false otherwise
proto native void StatSyncToClient()
override bool ServerTakeEntityToTargetAttachmentEx(notnull EntityAI target, notnull EntityAI item, int slot)
bool ServerSwapEntities(notnull EntityAI item1, notnull EntityAI item2)
array< InventoryItem > OnDrawOptics2D()
override bool LocalTakeEntityAsAttachmentEx(notnull EntityAI item, int slot)
void LocalDestroyEntityInHands()
ref CachedEquipmentStorageBase m_CachedEquipmentStorage
override bool PredictiveTakeEntityToTargetAttachmentEx(notnull EntityAI target, notnull EntityAI item, int slot)
void JunctureTakeEntityToHands(notnull EntityAI item)
hand juncture
bool SwapEntitiesImpl(InventoryMode mode, notnull EntityAI item1, notnull EntityAI item2)
override bool ServerTakeEntityToInventory(FindInventoryLocationType flags, notnull EntityAI item)
bool ReplaceItemWithNewImpl(InventoryMode mode, ReplaceItemWithNewLambdaBase lambda)
!hand -> !hand replace
bool JunctureTakeEntityAsAttachmentEx(notnull EntityAI item, int slot)
as att ex juncture
bool ReplaceItemElsewhereWithNewInHandsImpl(InventoryMode mode, ReplaceItemWithNewLambdaBase lambda)
!hand replace -> hand
void TakeEntityToHandsImpl(InventoryMode mode, EntityAI item)
bool ServerReplaceItemWithNew(ReplaceItemWithNewLambdaBase lambda)
override bool LocalTakeEntityToTargetAttachmentEx(notnull EntityAI target, notnull EntityAI item, int slot)
proto native float StatGet(string name)
Gets counter value of the specified stat type.
void OnItemInHandsChanged()
override bool LocalTakeEntityToTargetAttachment(notnull EntityAI target, notnull EntityAI item)
override bool PredictiveTakeEntityToTargetCargo(notnull EntityAI target, notnull EntityAI item)
override bool PredictiveTakeEntityToTargetAttachment(notnull EntityAI target, notnull EntityAI item)
bool PredictiveForceSwapEntities(notnull EntityAI item1, notnull EntityAI item2, notnull InventoryLocation item2_dst)
bool JunctureSwapEntities(notnull EntityAI item1, notnull EntityAI item2)
swap juncture
bool JunctureTakeEntityToTargetInventory(notnull EntityAI target, FindInventoryLocationType flags, notnull EntityAI item)
to target inv juncture
proto native void StatInvokeUpdate()
override bool CanBeSkinned()
void ServerTakeEntityToHands(EntityAI item)
void LocalTakeEntityToHands(EntityAI item)
bool TakeEntityAsAttachmentExImpl(InventoryMode mode, notnull EntityAI item, int slot)
override bool CanDropEntity(notnull EntityAI item)
CachedEquipmentStorageBase GetCachedEquipment()
override bool ServerTakeEntityToTargetCargoEx(notnull CargoBase cargo, notnull EntityAI item, int row, int col)
bool LocalSwapEntities(notnull EntityAI item1, notnull EntityAI item2)
void EEItemIntoHands(EntityAI item)
bool PhysicalPredictiveDropItem(EntityAI entity, bool heavy_item_only=true)
void StopDeathDarkeningEffect()
bool PredictiveTakeOrSwapAttachment(notnull EntityAI item)
proto void StatGetCounter(string name, out string value)
Gets counter value as string of the specified stat type.
override bool DisableVicinityIcon()
bool JunctureTakeEntityToCargo(notnull EntityAI item)
to cgo juncture
bool TakeEntityToTargetAttachmentExImpl(InventoryMode mode, notnull EntityAI target, notnull EntityAI item, int slot)
bool JunctureTakeEntityToInventory(FindInventoryLocationType flags, notnull EntityAI item)
to inv juncture
bool ServerReplaceItemElsewhereWithNewInHands(ReplaceItemWithNewLambdaBase lambda)
bool LocalForceSwapEntities(notnull EntityAI item1, notnull EntityAI item2, notnull InventoryLocation item2_dst)
bool JunctureTakeEntityToTargetAttachmentEx(notnull EntityAI target, notnull EntityAI item, int slot)
to target att ex juncture
bool JunctureTakeToDst(notnull InventoryLocation src, notnull InventoryLocation dst)
to dst juncture
bool ForceSwapEntitiesImpl(InventoryMode mode, notnull EntityAI item1, notnull EntityAI item2, notnull InventoryLocation item2_dst)
override bool ServerTakeToDst(notnull InventoryLocation src, notnull InventoryLocation dst)
proto native bool StatRegister(string name)
override bool LocalTakeEntityToTargetCargoEx(notnull CargoBase cargo, notnull EntityAI item, int row, int col)
bool TakeToDstImpl(InventoryMode mode, notnull InventoryLocation src, notnull InventoryLocation dst)
bool JunctureTakeEntityToTargetAttachment(notnull EntityAI target, notnull EntityAI item)
to target att juncture
bool ServerForceSwapEntities(notnull EntityAI item1, notnull EntityAI item2, notnull InventoryLocation item2_dst)
override bool LocalTakeEntityAsAttachment(notnull EntityAI item)
override bool LocalTakeEntityToCargo(notnull EntityAI item)
override bool LocalTakeEntityToTargetCargo(notnull EntityAI target, notnull EntityAI item)
override bool ServerDropEntity(notnull EntityAI item)
proto native void StatUpdate(string name, float value)
Updates stat counter with given value.
bool NeedInventoryJunctureFromServer(notnull EntityAI item, EntityAI currParent, EntityAI newParent)
bool TakeEntityToTargetAttachmentImpl(InventoryMode mode, notnull EntityAI target, notnull EntityAI item)
override bool ServerTakeEntityAsAttachment(notnull EntityAI item)
proto native void StatUpdateByPosition(string name)
Updates stat counter by player's actual position.
bool JunctureForceSwapEntities(notnull EntityAI item1, notnull EntityAI item2, notnull InventoryLocation item2_dst)
ForceSwap juncture.
bool CanPlaceItem(EntityAI item)
void SetProcessUIWarning(bool state)
ref ScriptInvoker m_OnItemRemovedFromHands
void JunctureDeleteItem(EntityAI item)
bool DropEntityImpl(InventoryMode mode, notnull EntityAI owner, notnull EntityAI item)
bool TakeEntityToTargetCargoImpl(InventoryMode mode, notnull EntityAI target, notnull EntityAI item)
bool TakeEntityToTargetCargoExImpl(InventoryMode mode, notnull CargoBase cargo, notnull EntityAI item, int row, int col)
proto void StatGetAsTime(string name, out string value)
Gets counter value as formatted time string of the specified stat type.
bool ServerReplaceItemInHandsWithNew(ReplaceItemWithNewLambdaBase lambda)
override bool ServerTakeEntityAsAttachmentEx(notnull EntityAI item, int slot)
void PredictiveMoveItemFromHandsToInventory()
ToDo: Old system method. Might should be adjusted to new system at some point.
override bool LocalDropEntity(notnull EntityAI item)
void OnGameplayDataHandlerSync()
void EEItemOutOfHands(EntityAI item)
bool TakeEntityToTargetInventoryImpl(InventoryMode mode, notnull EntityAI target, FindInventoryLocationType flags, notnull EntityAI item)
ScriptInvoker GetOnItemRemovedFromHands()
void PredictiveTakeEntityToHands(EntityAI item)
override bool PredictiveTakeEntityToCargo(notnull EntityAI item)
bool TakeEntityAsAttachmentImpl(InventoryMode mode, notnull EntityAI item)
proto native void StatUpdateByGivenPos(string name, vector pos)
Updates stat counter by given position.
bool PredictiveSwapEntities(notnull EntityAI item1, notnull EntityAI item2)
override bool PredictiveTakeEntityToTargetCargoEx(notnull CargoBase cargo, notnull EntityAI item, int row, int col)
bool ReplaceItemInHandsWithNewElsewhereImpl(InventoryMode mode, ReplaceItemWithNewLambdaBase lambda)
hand replace2
bool LocalReplaceItemWithNew(ReplaceItemWithNewLambdaBase lambda)
bool TakeEntityToInventoryImpl(InventoryMode mode, FindInventoryLocationType flags, notnull EntityAI item)
script counterpart to engine's class Inventory
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
proto native int GetSlotId(int index)
attachments
proto native int GetSlotIdCount()
proto native EntityAI FindAttachment(int slot)
Returns attached entity in slot (you can use InventorySlots.GetSlotIdFromString(name) to get slot id)...
inventory for plain man/human
The class that will be instanced (moddable).
base class for transformation operations (creating one item from another)
ScriptInvoker Class provide list of callbacks usage:
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
override bool HasFixedActionTargetCursorPosition()
override string GetDebugName()
void Error(string err)
Messagebox with error message.
proto void Print(void var)
Prints content of variable to console/log.
proto native void SetFlags(ShapeFlags flags)
FindInventoryLocationType
flags for searching locations in inventory