2276{
 2278    
 2280 
 2282    
 2284    
 2290    
 2291    
 2292    
 2298    
 2304    
 2306    
 2310    
 2311    
 2313    {
 2315        
 2316        
 2317        RegisterNetSyncVariableInt( "m_SyncParts01" );
 2318        RegisterNetSyncVariableInt( "m_SyncParts02" );
 2319        RegisterNetSyncVariableInt( "m_SyncParts03" );
 2320        RegisterNetSyncVariableInt( "m_InteractedPartId" );
 2321        RegisterNetSyncVariableInt( "m_PerformedActionId" );
 2322        RegisterNetSyncVariableBool( "m_HasBase" );
 2323        
 2324        
 2326        
 2327        if (ConfigIsExisting("hybridAttachments"))
 2328        {
 2331        }
 2332        if (ConfigIsExisting("mountables"))
 2333        {
 2336        }
 2337        
 2339    }
 2340    
 2342    {
 2343        super.EEDelete(parent);
 2344 
 2346        {
 2347            areaDamage.Destroy();
 2348        }
 2349        
 2350    }
 2351    
 2353    {
 2354        return "disableBaseDamage";
 2355    }
 2356    
 2358    {
 2359        return true;
 2360    }
 2361    
 2363    {
 2364        return EInventoryIconVisibility.HIDE_VICINITY;
 2365    }
 2366    
 2368    {
 2369        super.InitItemSounds();
 2370 
 2374 
 2379    }
 2380    
 2382    {
 2383        return "putDown_FenceKit_SoundSet";
 2384    }
 2385    
 2387    {
 2388        return "Shelter_Site_Build_Loop_SoundSet";
 2389    }
 2390 
 2391    
 2393    {
 2395        {
 2396            SetSynchDirty();
 2397        }
 2398    }
 2399 
 2401    {
 2403        super.OnVariablesSynchronized();
 2404 
 2406    }
 2407    
 2409    {
 2410        
 2412        
 2413        
 2415        
 2416        
 2418    }
 2419    
 2420    
 2422    {
 2423        
 2424        int offset;
 2425        int mask;
 2426        
 2427        if ( part_id >= 1 && part_id <= 31 )        
 2428        {
 2429            offset = part_id - 1;
 2430            mask = 1 << offset;
 2431            
 2433        }
 2434        else if ( part_id >= 32 && part_id <= 62  ) 
 2435        {
 2436            offset = ( part_id % 32 );
 2437            mask = 1 << offset;
 2438            
 2440        }
 2441        else if ( part_id >= 63 && part_id <= 93  ) 
 2442        {
 2443            offset = ( part_id % 63 );
 2444            mask = 1 << offset;
 2445            
 2447        }
 2448    }
 2449    
 2451    {
 2452        
 2453        int offset;
 2454        int mask;
 2455        
 2456        if ( part_id >= 1 && part_id <= 31 )        
 2457        {
 2458            offset = part_id - 1;
 2459            mask = 1 << offset;
 2460            
 2462        }
 2463        else if ( part_id >= 32 && part_id <= 62  ) 
 2464        {
 2465            offset = ( part_id % 32 );
 2466            mask = 1 << offset;
 2467            
 2469        }
 2470        else if ( part_id >= 63 && part_id <= 93  ) 
 2471        {
 2472            offset = ( part_id % 63 );
 2473            mask = 1 << offset;
 2474            
 2476        }
 2477    }   
 2478    
 2480    {
 2481        
 2482        int offset;
 2483        int mask;
 2484        
 2485        if ( part_id >= 1 && part_id <= 31 )        
 2486        {
 2487            offset = part_id - 1;
 2488            mask = 1 << offset;
 2489            
 2491            {
 2492                return true;
 2493            }
 2494        }
 2495        else if ( part_id >= 32 && part_id <= 62  ) 
 2496        {
 2497            offset = ( part_id % 32 );
 2498            mask = 1 << offset;
 2499            
 2501            {
 2502                return true;
 2503            }
 2504        }
 2505        else if ( part_id >= 63 && part_id <= 93  ) 
 2506        {
 2507            offset = ( part_id % 63 );
 2508            mask = 1 << offset;
 2509            
 2511            {
 2512                return true;
 2513            }
 2514        }               
 2515    
 2516        return false;
 2517    }
 2518 
 2520    {
 2523    }
 2524    
 2526    {
 2527        
 2530    }
 2531    
 2533    {
 2535        {
 2538            
 2539            switch( build_action_id )
 2540            {
 2544            }
 2545        }
 2546    }
 2547    
 2548    
 2550    {
 2552        bool is_base = part.
IsBase();
 
 2555        if ( is_part_built_sync )
 2556        {
 2558            {
 2562                
 2563                if (is_base)
 2564                {
 2567                }
 2568            }
 2569        }
 2570        else
 2571        {
 2573            {
 2577            
 2578                if (is_base)
 2579                {
 2582                }
 2583            }
 2584        }
 2585 
 2586        
 2588    }
 2589    
 2590    
 2592    {
 2595        
 2596        for ( int i = 0; i < construction_parts.Count(); ++i )
 2597        {
 2598            string key = construction_parts.GetKey( i );
 2601        }
 2602        
 2603        
 2605    }
 2606    
 2608    {
 2611        
 2612        for ( int i = 0; i < construction_parts.Count(); ++i )
 2613        {
 2614            string key = construction_parts.GetKey( i );
 2616        
 2617            if ( value.
GetId() == 
id )
 
 2618            {
 2619                return value;
 2620            }
 2621        }
 2622        
 2623        return NULL;
 2624    }
 2625    
 2626    
 2627    
 2629    {
 2631    }
 2632    
 2634    {
 2636    }
 2637    
 2639    {
 2640        return true;
 2641    }
 2642    
 2644    {
 2645        return false;
 2646    }
 2647    
 2648    
 2650    {
 2653        {
 2655        }
 2656        
 2657        return construction_kit;
 2658    }
 2659    
 2661    {
 2664        {
 2666        }
 2667    }
 2668    
 2670    {
 2672    }
 2673    
 2675    {
 2676        return "";
 2677    }
 2678    
 2680    {
 2683    }
 2684    
 2685    
 2687    {
 2690    }   
 2691    
 2692    
 2694    {   
 2695        super.OnStoreSave( ctx );
 2696        
 2697        
 2701        
 2703    }
 2704    
 2706    {
 2707        if ( !super.OnStoreLoad( ctx, version ) )
 2708            return false;
 2709        
 2710        
 2711        
 2713        {
 2715            return false;
 2716        }
 2718        {
 2720            return false;
 2721        }
 2723        {
 2725            return false;
 2726        }
 2727        
 2728        
 2730        {
 2732            return false;
 2733        }
 2734        
 2735 
 2736        return true;
 2737    }
 2738    
 2740    {   
 2741        super.AfterStoreLoad();     
 2742        
 2744        {
 2746        }
 2747    }
 2748    
 2750    {
 2751        
 2753        
 2754        
 2757            
 2758        
 2760    }
 2761    
 2763    {
 2764        super.OnCreatePhysics();
 2767    }
 2768    
 2770    {
 2772            return;
 2773        
 2774        super.EEHealthLevelChanged(oldLevel,newLevel,zone);
 2775        
 2777            return;
 2778        
 2780        string part_name = zone;
 2782        
 2784        {
 2785            ConstructionPart construction_part = construction.GetConstructionPart( part_name );
 
 2786            
 2787            if ( construction_part && construction.IsPartConstructed( part_name ) )
 2788            {
 2790                construction.DestroyConnectedParts(part_name);
 2791            }
 2792            
 2793            
 2794            if ( part_name.
Contains(
"barbed") )
 
 2795            {
 2796                BarbedWire barbed_wire = BarbedWire.Cast( FindAttachmentBySlotName( zone ) );
 2797                if (barbed_wire)
 2798                    barbed_wire.SetMountedState( false );
 2799            }
 2800        }
 2801    }
 2802    
 2804    {
 2806        {
 2808        }
 2809        
 2810        super.EEOnAfterLoad();
 2811    }
 2812    
 2814    {
 2815        super.EEInit();
 2816        
 2817        
 2819        
 2820        
 2821        #ifdef DEVELOPER
 2823        #endif
 2824    }
 2825 
 2827    {
 2828        super.EEItemAttached( item, slot_name );
 2829        
 2833    }
 2834    
 2836    {
 2837        super.EEItemDetached( item, slot_name );
 2838 
 2841    }
 2842    
 2843    protected void OnSetSlotLock( 
int slotId, 
bool locked, 
bool was_locked )
 
 2844    {
 2847 
 2850    }
 2851    
 2852    
 2854    {
 2855        return true;
 2856    }
 2857    
 2858    
 2859    
 2861    {
 2863        
 2864        
 2865        if (construtionPart.
IsBase())
 
 2866        {
 2868 
 2869            
 2871        }
 2872            
 2873        
 2875        
 2876        
 2878        
 2879        
 2881 
 2883        
 2885        
 2886        
 2888        
 2889        
 2891    }
 2892    
 2894    {
 2895        
 2897    }   
 2898    
 2899    
 2901    {
 2904                    
 2905        
 2907        
 2908        
 2910        
 2911        
 2913 
 2914        
 2916        
 2918        
 2919        
 2921        
 2922        
 2924        
 2925        
 2926        if (construtionPart.
IsBase())
 
 2927        {
 2928            
 2930        }
 2931    }
 2932    
 2934    {
 2935        
 2937    }   
 2938    
 2939    
 2940    void OnPartDestroyedServer(Man player, 
string part_name, 
int action_id, 
bool destroyed_by_connected_part = 
false)
 
 2941    {
 2944                    
 2945        
 2947        
 2948        
 2950        
 2951        
 2953        
 2954        
 2956        
 2958        
 2959        
 2961        
 2962        
 2964        
 2965        
 2966        if (construtionPart.
IsBase())
 
 2967        {
 2968            
 2970        }
 2971    }
 2972    
 2974    {
 2975        
 2977    }
 2978    
 2981    {
 2982        bool process = false;
 2983        
 2984        
 2988        
 2989        if (process)
 2990        {
 2991            if (!MemoryPointExists(part.
m_PartName + 
"_min") || !MemoryPointExists(part.
m_PartName + 
"_max"))
 
 2992            {
 2994                return;
 2995            }
 2996            
 2998            mins = ModelToWorld(GetMemoryPointPos(part.
m_PartName + 
"_min"));
 
 2999            maxs = ModelToWorld(GetMemoryPointPos(part.
m_PartName + 
"_max"));
 
 3000            
 3001            
 3003            minTmp[0] = 
Math.
Min(mins[0],maxs[0]);
 
 3004            maxTmp[0] = 
Math.
Max(mins[0],maxs[0]);
 
 3005            minTmp[1] = 
Math.
Min(mins[1],maxs[1]);
 
 3006            maxTmp[1] = 
Math.
Max(mins[1],maxs[1]);
 
 3007            minTmp[2] = 
Math.
Min(mins[2],maxs[2]);
 
 3008            maxTmp[2] = 
Math.
Max(mins[2],maxs[2]);
 
 3009            mins = minTmp;
 3010            maxs = maxTmp;
 3011            
 3012            maxs[1] = maxs[1] + 0.35; 
 3013            
 3015        }
 3016    }
 3017    
 3020    {
 3023        
 3024        
 3026        foreach (
EntityAI entity : foundEntities)
 
 3027        {
 3030        }
 3031    }
 3032    
 3033    
 3035    {
 3037 
 3041    }   
 3042    
 3044    {
 3046        
 3048        {
 3050        }
 3051        else
 3052        {
 3054        }
 3055        
 3057    }
 3058 
 3060    {
 3062 
 3064        foreach (
string slotName : attachmentSlots)
 
 3065        {
 3067        }
 3068        
 3069        
 3072        else
 3074        
 3076    }
 3077    
 3079    {
 3080        string slotNameMounted = slot_name + "_Mounted";
 3081        EntityAI attachment = FindAttachmentBySlotName(slot_name);
 
 3082        
 3083        if (attachment)
 3084        {
 3085            BarbedWire barbedWire = BarbedWire.Cast(attachment);
 3086            if (barbedWire && barbedWire.IsMounted())
 3088            else
 3090            
 3091            if (is_locked)
 3092            {
 3093                SetAnimationPhase(slotNameMounted, 0);
 3094                SetAnimationPhase(slot_name, 1);
 3095            }
 3096            else
 3097            {
 3098                SetAnimationPhase(slotNameMounted, 1);
 3099                SetAnimationPhase(slot_name, 0);
 3100            }
 3101        }
 3102        else
 3103        {
 3104            SetAnimationPhase(slotNameMounted, 1);
 3105            SetAnimationPhase(slot_name, 1);
 3106            
 3108        }
 3109    }
 3110    
 3111    
 3113    {
 3116        
 3119 
 3122 
 3123        foreach (
string slotName : attachmentSlots)
 
 3124        {
 3126        }
 3127        
 3128        
 3130        {
 3133 
 3135        }
 3136        else
 3137        {
 3140 
 3142        }
 3143        
 3146    }
 3147    
 3149    {
 3150        
 3152            return;
 3153        
 3154        string slot_name_mounted = slot_name + "_Mounted";
 3155        EntityAI attachment = FindAttachmentBySlotName( slot_name );
 
 3156        
 3157        
 3159        RemoveProxyPhysics( slot_name_mounted );
 3160        RemoveProxyPhysics( slot_name );
 3161        
 3162        if ( attachment )
 3163        {
 3165            if ( is_locked )
 3166            {
 3168                AddProxyPhysics( slot_name_mounted );
 3169            }
 3170            else
 3171            {
 3173                AddProxyPhysics( slot_name );
 3174            }
 3175        }
 3176    }
 3177    
 3179    {
 3180        SetAffectPathgraph( true, false );
 3182    }
 3183    
 3185    {
 3186        return true;
 3187    }
 3188    
 3190    {
 3191        return true;
 3192    }
 3193 
 3195    {
 3196        if ( attachment )
 3197        {
 3199            attachment.GetInventory().GetCurrentInventoryLocation( inventory_location );
 3200            
 3201            return GetInventory().GetSlotLock( inventory_location.
GetSlot() );
 
 3202        }
 3203            
 3204        return false;
 3205    }
 3206    
 3208    {
 3210    }   
 3211    
 3212    
 3214    {
 3215        string config_path = "CfgVehicles" + " " + entity.GetType() + " " + "attachments";
 3216        if ( 
GetGame().ConfigIsExisting( config_path ) )
 
 3217        {
 3219        }
 3220    }
 3221 
 3223    {
 3224        return true;
 3225    }
 3226        
 3228    {
 3229        return true;
 3230    }
 3231    
 3233    {
 3234        return true;
 3235    }
 3236    
 3237    
 3239    {
 3241        {
 3243        }
 3244        
 3246    }
 3247    
 3249    {
 3251    }
 3252    
 3253    
 3254    
 3256    {
 3257        return super.CanReceiveAttachment(attachment, slotId);
 3258    }
 3259    
 3261    {
 3262        int attachment_count = GetInventory().AttachmentCount();
 3263        if ( attachment_count > 0 )
 3264        {
 3265            if ( 
HasBase() && attachment_count == 1 )
 
 3266            {
 3267                return false;
 3268            }
 3269            
 3270            return true;
 3271        }
 3272        
 3273        return false;
 3274    }
 3275    
 3277    {
 3278        return true;
 3279    }
 3280    
 3282    {
 3283        return false;
 3284    }
 3285    
 3286    
 3288    {
 3289        return false;
 3290    }
 3291    
 3293    {
 3294        return false;
 3295    }
 3296 
 3297    
 3299    {
 3300        return false;
 3301    }
 3302    
 3303    
 3304    
 3306    {
 3307        return true;
 3308    }
 3309    
 3311    {
 3312        return true;
 3313    }
 3314    
 3317    {
 3318        return false;
 3319    }
 3320    
 3321    
 3323    {
 3324        return true;
 3325    }
 3326    
 3327    
 3329    {
 3330        return false;
 3331    }
 3332    
 3333    
 3335    {
 3336        return true;
 3337    }
 3338        
 3339    
 3341    {
 3342        if ( 
HasBase() || GetInventory().AttachmentCount() > 0 )
 
 3343        {
 3344            return false;
 3345        }
 3346        
 3347        return true;
 3348    }
 3349    
 3351    {
 3354 
 3355        return item;
 3356    }
 3357    
 3358    
 3360    {
 3362        {
 3363            
 3365            
 3366            
 3369            
 3371            if ( MemoryPointExists( slot_name + "_min" ) )
 3372            {
 3373                min_max[0] = GetMemoryPointPos( slot_name + "_min" );
 3374            }
 3375            if ( MemoryPointExists( slot_name + "_max" ) )
 3376            {
 3377                min_max[1] = GetMemoryPointPos( slot_name + "_max" );
 3378            }
 3379            
 3380            
 3383            
 3384            
 3387            center = ModelToWorld( center );
 3388            
 3389            
 3392            
 3393            areaDamage.SetExtents( extents[0], extents[1] );
 3394            areaDamage.SetAreaPosition( center );
 3395            areaDamage.SetAreaOrientation( orientation );
 3398            areaDamage.SetHitZones( { "Torso","LeftHand","LeftLeg","LeftFoot","RightHand","RightLeg","RightFoot" } );
 3399            areaDamage.SetAmmoName( "BarbedWireHit" );
 3400            areaDamage.Spawn();
 3401            
 3403        }
 3404    }
 3405        
 3407    {
 3408        if ( angle_deg != 0 )
 3409        {
 3410            
 3411            orientation[0] = orientation[0] - angle_deg;
 3412            
 3413            
 3415            if ( MemoryPointExists( "rotate_axis" ) )
 3416            {
 3417                rotate_axis = ModelToWorld( GetMemoryPointPos( "rotate_axis" ) );
 3418            }           
 3419            float r_center_x = ( 
Math.
Cos( angle_deg * 
Math.
DEG2RAD ) * ( center[0] - rotate_axis[0] ) ) - ( 
Math.
Sin( angle_deg * 
Math.
DEG2RAD ) * ( center[2] - rotate_axis[2] ) ) + rotate_axis[0];
 
 3420            float r_center_z = ( 
Math.
Sin( angle_deg * 
Math.
DEG2RAD ) * ( center[0] - rotate_axis[0] ) ) + ( 
Math.
Cos( angle_deg * 
Math.
DEG2RAD ) * ( center[2] - rotate_axis[2] ) ) + rotate_axis[2];
 
 3421            center[0] = r_center_x;
 3422            center[2] = r_center_z;
 3423        }
 3424    }
 3425        
 3427    {
 3429        {
 3432            {
 3433                if (areaDamage)
 3434                {
 3435                    areaDamage.Destroy();
 3436                }
 3437                
 3439            }
 3440        }
 3441    }
 3442    
 3444    {
 3445        return true;
 3446    }
 3447    
 3448    
 3449    
 3450    
 3452    {
 3454    }
 3455 
 3457    {
 3459    }
 3460    
 3462    {
 3464    }
 3465    
 3467    {
 3469        
 3470        switch ( material_type )
 3471        {
 3477        }
 3478        
 3479        return "";
 3480    }
 3481    
 3483    {
 3485        
 3486        switch ( material_type )
 3487        {
 3493        }
 3494        
 3495        return "";
 3496    }
 3497    
 3498    
 3500    {
 3502        {
 3503            
 3505            {
 3506                SetHealth(slot_name,"Health",item.GetHealth());
 3507            }
 3508        }
 3509    }
 3510    
 3512    {
 3513        return 111;
 3514    }
 3515    
 3517    {
 3518        super.SetActions();
 3519        
 3523    }
 3524    
 3525    
 3526    
 3527    
 3529    {
 3530    }
 3531    
 3534    {
 3535        return null;
 3536    }
 3537    
 3539    {
 3541    }
 3542    
 3544    {
 3547        
 3548        Man p;
 3549        
 3550        #ifdef SERVER
 3553        if (players.Count())
 3554            p = players[0];
 3555        #else
 3557        #endif
 3558        
 3560        {
 3561            bool excluded = false;
 3563            if (excludes)
 3564            {
 3565                foreach (string exclude : excludes)
 3566                {
 3568                    {
 3569                        excluded = true;
 3570                        break;
 3571                    }
 3572                }
 3573            }
 3574            
 3575            if (!excluded)
 3576            {
 3578            }
 3579        }
 3580        
 3582    }
 3583}
 3584 
 3586{
 3587#ifdef BSB_DEBUG
 3589#else
 3590    
 3591#endif
 3592}
 3594{
 3595#ifdef BSB_DEBUG_SPAM
 3597#else
 3598    
 3599#endif
 3600}
const int AT_DISMANTLE_PART
const int AT_DESTROY_PART
void AddAction(typename actionName)
void RemoveAction(typename actionName)
void AreaDamageManager(EntityAI parent)
void OnPartDismantledClient(string part_name, int action_id)
const string ANIMATION_DEPLOYED
override int GetHideIconMask()
override void OnStoreSave(ParamsWriteContext ctx)
void SetActionFromSyncData()
bool CheckMemoryPointVerticalDistance(float max_dist, string selection, PlayerBase player)
override void OnDebugSpawn()
array< string > OnDebugSpawnBuildExcludes()
Excludes certain parts from being built by OnDebugSpawn, uses Contains to compare.
void SoundDestroyStart(string part_name)
const string SOUND_BUILD_WOOD_LOG
void SoundBuildStart(string part_name)
void UpdateAttachmentVisuals(string slot_name, bool is_locked)
void CalcDamageAreaRotation(float angle_deg, out vector center, out vector orientation)
override bool CanObstruct()
bool HasAttachmentsBesidesBase()
override void InitItemSounds()
void RegisterPartForSync(int part_id)
const string SOUND_DISMANTLE_METAL
override bool CanReceiveAttachment(EntityAI attachment, int slotId)
void SetPartsAfterStoreLoad()
void DestroyConstruction()
ref array< string > m_HybridAttachments
override string GetFoldSoundset()
string GetDismantleSoundByMaterial(string part_name)
bool IsAttachmentSlotLocked(EntityAI attachment)
override bool IsFacingPlayer(PlayerBase player, string selection)
void OnPartBuiltClient(string part_name, int action_id)
bool HasProperDistance(string selection, PlayerBase player)
override void OnCreatePhysics()
void OnPartBuiltServer(notnull Man player, string part_name, int action_id)
void RegisterActionForSync(int part_id, int action_id)
const string SOUND_BUILD_WOOD_PLANK
void SetPartsFromSyncData()
ref array< string > m_Mountables
const string SOUND_BUILD_WIRE
void ResetActionSyncData()
override string GetInvulnerabilityTypeString()
void OnPartDismantledServer(notnull Man player, string part_name, int action_id)
void CheckForHybridAttachments(EntityAI item, string slot_name)
override void EEOnAfterLoad()
override void EEItemDetached(EntityAI item, string slot_name)
vector GetKitSpawnPosition()
ref Construction m_Construction
bool IsFacingCamera(string selection)
bool CheckSlotVerticalDistance(int slot_id, PlayerBase player)
void GetAttachmentSlots(EntityAI entity, out array< string > attachment_slots)
override bool IsDeployable()
void OnPartDestroyedClient(string part_name, int action_id)
void UnregisterPartForSync(int part_id)
void bsbDebugSpam(string s)
override void OnVariablesSynchronized()
bool PerformRoofCheckForBase(string partName, PlayerBase player, out bool result)
Construction GetConstruction()
void SoundDismantleStart(string part_name)
ConstructionPart GetConstructionPartById(int id)
string GetConstructionKitType()
bool CheckLevelVerticalDistance(float max_dist, string selection, PlayerBase player)
void OnPartDestroyedServer(Man player, string part_name, int action_id, bool destroyed_by_connected_part=false)
bool CanFoldBaseBuildingObject()
override int GetDamageSystemVersionChange()
const string SOUND_DISMANTLE_WOOD_PLANK
override void EEItemAttached(EntityAI item, string slot_name)
const string SOUND_DISMANTLE_WOOD_LOG
class BaseBuildingBase extends ItemBase bsbDebugPrint(string s)
const string SOUND_BUILD_WOOD_STAIRS
ItemBase FoldBaseBuildingObject()
override bool CanPutInCargo(EntityAI parent)
override bool CanUseConstruction()
override void AfterStoreLoad()
void SetPartFromSyncData(ConstructionPart part)
override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
override bool IgnoreOutOfReachCondition()
override bool OnStoreLoad(ParamsReadContext ctx, int version)
override bool ShowZonesHealth()
void UpdateAttachmentPhysics(string slot_name, bool is_locked)
override bool IsPlayerInside(PlayerBase player, string selection)
string GetBuildSoundByMaterial(string part_name)
ItemBase CreateConstructionKit()
const string SOUND_DISMANTLE_WIRE
bool MustBeBuiltFromOutside()
Some buildings can only be built from outside.
override bool IsTakeable()
float m_ConstructionKitHealth
override void EEDelete(EntityAI parent)
override void SetActions()
void HandleItemFalling(ConstructionPart part)
Disconnected temporarily.
void DestroyConstructionKit(ItemBase construction_kit)
void CreateConstructionKitInHands(notnull PlayerBase player)
void ItemFall(vector min, vector max)
Disconnected temporarily.
override bool CanUseConstructionBuild()
void OnSynchronizedClient()
void SynchronizeBaseState()
override bool IsIgnoredByConstruction()
ref map< string, ref AreaDamageManager > m_DamageTriggers
void SetBaseState(bool has_base)
const string SOUND_BUILD_METAL
override string GetLoopFoldSoundset()
void OnSetSlotLock(int slotId, bool locked, bool was_locked)
override bool CanPutIntoHands(EntityAI parent)
bool IsPartBuildInSyncData(int part_id)
override bool CanRemoveFromCargo(EntityAI parent)
const string SOUND_DISMANTLE_WOOD_STAIRS
const int ECE_PLACE_ON_SURFACE
PlayerSpawnPreset slotName
void Construction(BaseBuildingBase parent)
void DayZPlayerUtils()
cannot be instantiated
string GetLoopFoldSoundset()
ItemSoundHandler GetItemSoundHandler()
bool m_FixDamageSystemInit
void ItemSoundHandler(ItemBase parent)
override void SetLoopInterval(float time)
A particular version of the deferred loop used to not damage players inside vehicles.
override void SetDeferDuration(float time)
proto native World GetWorld()
override ScriptCallQueue GetCallQueue(int call_category)
proto native void ConfigGetTextArray(string path, out TStringArray values)
Get array of strings from config on path.
proto native DayZPlayer GetPlayer()
proto native void ObjectDelete(Object obj)
Super root of all classes in Enforce script.
static void Log(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Prints debug message with normal prio.
Wrapper class for managing sound through SEffectManager.
proto native int GetSlot()
returns slot id if current type is Attachment
static proto native int GetSlotIdFromString(string slot_name)
converts string to slot_id
static proto native owned string GetSlotName(int id)
converts slot_id to string
provides access to slot configuration
override bool CanUseConstruction()
static bool IsBaseBuildingLogEnable()
proto void CallLater(func fn, int delay=0, bool repeat=false, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
adds call into the queue with given parameters and arguments (arguments are held in memory until the ...
proto bool Write(void value_out)
proto bool Read(void value_in)
proto native void GetPlayerList(out array< Man > players)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
override string GetDebugName()
Serializer ParamsReadContext
proto native CGame GetGame()
Serializer ParamsWriteContext
proto void PrintToRPT(void var)
Prints content of variable to RPT file (performance warning - each write means fflush!...
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto float Min(float x, float y)
Returns smaller of two given values.
static proto float Cos(float angle)
Returns cosinus of angle in radians.
static proto float Sin(float angle)
Returns sinus of angle in radians.
static const float DEG2RAD
class JsonUndergroundAreaTriggerData GetPosition
bool Contains(string sample)
Returns true if sample is substring of string.
proto int ToLower()
Changes string to lowercase. Returns length.