@@ -400,8 +400,6 @@ public FMHook_Spawn(pEntity) {
400400
401401 @Entity_SetPData (pEntity, g_itPData);
402402 g_itPData = Invalid_Trie;
403-
404- ExecuteHookFunction (CEFunction_Init, iId, pEntity);
405403 }
406404}
407405
@@ -480,10 +478,22 @@ bool:@Entity_IsCustom(this) {
480478 return this;
481479}
482480
481+ @Entity_Init (this) {
482+ new Trie: itPData = @Entity_GetPData (this);
483+ new iId = GetPDataMember (itPData, CE_MEMBER_ID);
484+ ExecuteHookFunction (CEFunction_Init, iId, pEntity);
485+ SetPDataMember (itPData, CE_MEMBER_INITIALIZED, true );
486+ }
487+
483488@Entity_Spawn (this) {
484489 new Float: flGameTime = get_gametime ();
485490
486491 new Trie: itPData = @Entity_GetPData (this);
492+
493+ if (! GetPDataMember (itPData, CE_MEMBER_INITIALIZED)) {
494+ @Entity_Init (this);
495+ }
496+
487497 new iId = GetPDataMember (itPData, CE_MEMBER_ID);
488498 new bool: bIsWorld = GetPDataMember (itPData, CE_MEMBER_WORLD);
489499
@@ -891,6 +901,7 @@ Trie:AllocPData(iId, pEntity) {
891901 SetPDataMember (itPData, CE_MEMBER_ID, iId);
892902 SetPDataMember (itPData, CE_MEMBER_WORLD, false );
893903 SetPDataMember (itPData, CE_MEMBER_POINTER, pEntity);
904+ SetPDataMember (itPData, CE_MEMBER_INITIALIZED, false );
894905 return itPData;
895906}
896907
0 commit comments