Пример #1
0
    public static EPlayerHit CalcHitMarker(ItemGunAsset PAsset, ref RaycastInfo ri)
    {
        EPlayerHit eplayerHit = EPlayerHit.NONE;
        bool       flag       = ri == null || PAsset == null;
        EPlayerHit result;

        if (flag)
        {
            result = eplayerHit;
        }
        else
        {
            bool flag2 = ri.animal || ri.player || ri.zombie;
            if (flag2)
            {
                eplayerHit = EPlayerHit.ENTITIY;
                bool flag3 = ri.limb == ELimb.SKULL;
                if (flag3)
                {
                    eplayerHit = EPlayerHit.CRITICAL;
                }
            }
            else
            {
                bool flag4 = ri.transform;
                if (flag4)
                {
                    bool flag5 = ri.transform.CompareTag("Barricade") && PAsset.barricadeDamage > 1f;
                    if (flag5)
                    {
                        InteractableDoorHinge component = ri.transform.GetComponent <InteractableDoorHinge>();
                        bool flag6 = component != null;
                        if (flag6)
                        {
                            ri.transform = component.transform.parent.parent;
                        }
                        bool flag7 = !ushort.TryParse(ri.transform.name, out ushort id);
                        if (flag7)
                        {
                            return(eplayerHit);
                        }
                        ItemBarricadeAsset itemBarricadeAsset = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, id);
                        bool flag8 = itemBarricadeAsset == null || (!itemBarricadeAsset.isVulnerable && !PAsset.isInvulnerable);
                        if (flag8)
                        {
                            return(eplayerHit);
                        }
                        bool flag9 = eplayerHit == EPlayerHit.NONE;
                        if (flag9)
                        {
                            eplayerHit = EPlayerHit.BUILD;
                        }
                    }
                    else
                    {
                        bool flag10 = ri.transform.CompareTag("Structure") && PAsset.structureDamage > 1f;
                        if (flag10)
                        {
                            bool flag11 = !ushort.TryParse(ri.transform.name, out ushort id2);
                            if (flag11)
                            {
                                return(eplayerHit);
                            }
                            ItemStructureAsset itemStructureAsset = (ItemStructureAsset)Assets.find(EAssetType.ITEM, id2);
                            bool flag12 = itemStructureAsset == null || (!itemStructureAsset.isVulnerable && !PAsset.isInvulnerable);
                            if (flag12)
                            {
                                return(eplayerHit);
                            }
                            bool flag13 = eplayerHit == EPlayerHit.NONE;
                            if (flag13)
                            {
                                eplayerHit = EPlayerHit.BUILD;
                            }
                        }
                        else
                        {
                            bool flag14 = ri.transform.CompareTag("Resource") && PAsset.resourceDamage > 1f;
                            if (flag14)
                            {
                                bool flag15 = !ResourceManager.tryGetRegion(ri.transform, out byte x, out byte y, out ushort index);
                                if (flag15)
                                {
                                    return(eplayerHit);
                                }
                                ResourceSpawnpoint resourceSpawnpoint = ResourceManager.getResourceSpawnpoint(x, y, index);
                                bool flag16 = resourceSpawnpoint == null || resourceSpawnpoint.isDead || !PAsset.hasBladeID(resourceSpawnpoint.asset.bladeID);
                                if (flag16)
                                {
                                    return(eplayerHit);
                                }
                                bool flag17 = eplayerHit == EPlayerHit.NONE;
                                if (flag17)
                                {
                                    eplayerHit = EPlayerHit.BUILD;
                                }
                            }
                            else
                            {
                                bool flag18 = PAsset.objectDamage > 1f;
                                if (flag18)
                                {
                                    InteractableObjectRubble component2 = ri.transform.GetComponent <InteractableObjectRubble>();
                                    bool flag19 = component2 == null;
                                    if (flag19)
                                    {
                                        return(eplayerHit);
                                    }
                                    ri.section = component2.getSection(ri.collider.transform);
                                    bool flag20 = component2.isSectionDead(ri.section) || (!component2.asset.rubbleIsVulnerable && !PAsset.isInvulnerable);
                                    if (flag20)
                                    {
                                        return(eplayerHit);
                                    }
                                    bool flag21 = eplayerHit == EPlayerHit.NONE;
                                    if (flag21)
                                    {
                                        eplayerHit = EPlayerHit.BUILD;
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    bool flag22 = ri.vehicle && !ri.vehicle.isDead && PAsset.vehicleDamage > 1f;
                    if (flag22)
                    {
                        bool flag23 = ri.vehicle.asset != null && (ri.vehicle.asset.isVulnerable || PAsset.isInvulnerable);
                        if (flag23)
                        {
                            bool flag24 = eplayerHit == EPlayerHit.NONE;
                            if (flag24)
                            {
                                eplayerHit = EPlayerHit.BUILD;
                            }
                        }
                    }
                }
            }
            result = eplayerHit;
        }
        return(result);
    }