public override uint OnCollision(HitDetection hit)
    {
        ConfigContainer      ccVar4;
        int                  iVar5;
        VigTransform         tVar5;
        VigObject            oVar6;
        BufferedBinaryReader pcVar6;
        VigCamera            cVar6;
        Vehicle              ppcVar7;
        VigTransform         auStack128;
        Vector3Int           local_20;
        Vector3Int           local_28;

        if (physics1.X != 0)
        {
            if (hit.self.type == 2)
            {
                hit.object1.FUN_32B90((uint)physics1.X);
            }

            physics1.X = 0;
        }

        if (hit.collider1.ReadUInt16(0) != 1 || hit.collider1.ReadUInt16(2) == 0)
        {
            if ((hit.self.type != 2 || hit.object1 == this) && hit.self.type != 8)
            {
                return(0);
            }

            hit.object1.FUN_32B90(hit.self.maxHalfHealth);
            return(0);
        }

        if (tags != 1)
        {
            return(0);
        }

        if (hit.self.type != 2)
        {
            return(0);
        }

        ccVar4 = DAT_84.FUN_2C5F4(0x8002);

        if (ccVar4 == null)
        {
            return(0);
        }

        ppcVar7 = (Vehicle)hit.self;
        iVar5   = GameManager.instance.FUN_1DD9C();
        GameManager.instance.FUN_1E580(iVar5, GameManager.instance.DAT_C2C, 36, ppcVar7.vTransform.position);
        GameManager.instance.FUN_1E2C8(ppcVar7.DAT_18, 0);
        ppcVar7.state  = _VEHICLE_TYPE.Mansion;
        ppcVar7.tags   = 0;
        ppcVar7.flags  = ppcVar7.flags & 0xfffffffd | 0x6000020;
        auStack128     = GameManager.instance.FUN_2CEAC(DAT_84, ccVar4);
        ppcVar7.screen = auStack128.position;
        ppcVar7.vr     = ccVar4.v3_2;
        ppcVar7.vr.y  += DAT_84.vr.y;
        pcVar6         = hit.collider1;
        tVar5          = GameManager.instance.FUN_2CDF4(this);
        local_20       = new Vector3Int();
        local_20.x     = (pcVar6.ReadInt32(4) + pcVar6.ReadInt32(16)) / 2;
        local_20.y     = (pcVar6.ReadInt32(8) + pcVar6.ReadInt32(20)) / 2;
        local_20.z     = (pcVar6.ReadInt32(12) + pcVar6.ReadInt32(24)) / 2;
        local_20       = Utilities.FUN_24148(tVar5, local_20);
        Utilities.FUN_2A168(out local_28, ppcVar7.vTransform.position, local_20);
        ppcVar7.physics1.X = local_28.x * 143;
        ppcVar7.physics1.Y = local_28.y * 143;
        ppcVar7.physics1.Z = local_28.z * 143;
        ppcVar7.physics2.X = 0;
        ppcVar7.physics2.Y = 0;
        ppcVar7.physics2.Z = 0;
        cVar6 = ppcVar7.vCamera;

        if (cVar6 != null)
        {
            cVar6.DAT_84 = new Vector3Int(0, 0, 0);
            cVar6.flags |= 0xc000000;
            iVar5        = 2000;

            if (GetType() == typeof(Mansion))
            {
                iVar5 = 2001;
            }

            oVar6           = GameManager.instance.FUN_30250(GameManager.instance.DAT_1078, iVar5);
            ppcVar7.PDAT_74 = oVar6;
        }

        GameManager.instance.FUN_30CB0(ppcVar7, 58);

        if (-1 < ppcVar7.id)
        {
            return(0);
        }

        UIManager.instance.FUN_4E3A8(new Color32(0xff, 0xff, 0xff, 2));
        return(0);
    }
Exemple #2
0
    public override uint UpdateW(int arg1, VigObject arg2)
    {
        sbyte      sVar2;
        int        iVar7;
        VigObject  oVar7;
        VigObject  oVar8;
        Vector3Int auStack24;

        switch (arg1)
        {
        case 20:
        case 21:
            if (arg1 == 20)
            {
                DAT_84 = arg2;
            }
            else
            {
                DAT_80 = arg2;
            }

            if (tags != 0)
            {
                return(0);
            }

            if (DAT_80 == null)
            {
                return(0);
            }

            if (DAT_84 != null)
            {
                if (id != 120 && DAT_80.DAT_80 == null)
                {
                    return(0);
                }

                DAT_80.FUN_30C68();
                DAT_84.FUN_30C68();
                FUN_30B78();
                sVar2 = (sbyte)GameManager.instance.FUN_1DD9C();
                GameManager.instance.FUN_1E098(sVar2, vData.sndList, 1, 0);

                if (id == 120)
                {
                    oVar7 = DAT_84;
                    oVar8 = oVar7.child2;
                }
                else
                {
                    oVar7 = DAT_80;
                    oVar8 = oVar7.DAT_80;
                }

                auStack24 = Utilities.FUN_24148(oVar7.vTransform, oVar8.vTransform.position);
                DAT_88    = Utilities.FUN_24304(vTransform, auStack24);
                iVar7     = child2.screen.y;
                tags      = 1;
                DAT_88.y -= iVar7;
            }

            break;
        }

        return(0);
    }
Exemple #3
0
    public int DAT_94;        //0x94

    //FUN_2C1C (HARBOR.DLL)
    public override uint UpdateW(int arg1, int arg2)
    {
        bool            bVar1;
        sbyte           sVar2;
        Vector3Int      v3Var3;
        int             iVar4;
        VigObject       oVar4;
        ConfigContainer ccVar4;
        int             iVar5;
        uint            uVar5;
        VigObject       oVar5;
        ConfigContainer ccVar5;
        Vector3Int      v3Var5;
        int             iVar6;
        VigObject       oVar6;
        int             iVar7;
        bool            bVar7;
        VigObject       oVar7;
        VigObject       oVar8;
        int             iVar9;
        Vector3Int      auStack24;

        switch (arg1)
        {
        case 0:
            oVar7 = child2;
            oVar8 = oVar7.child2;

            switch (((byte)tags - 1) * 0x1000000 >> 24)
            {
            case 0:
            case 3:
                iVar4 = oVar7.vTransform.position.z + DAT_94;
                oVar7.vTransform.position.z = iVar4;

                if (DAT_88.z - iVar4 < 0)
                {
                    iVar4 = DAT_94 - 25;
                    iVar7 = -1525;

                    if (-1526 < iVar4)
                    {
                        iVar7 = 0;

                        if (iVar4 < 1)
                        {
                            iVar7 = iVar4;
                        }
                    }

                    DAT_94 = iVar7;
                }
                else
                {
                    iVar7 = DAT_94 + 25;

                    if (iVar7 < 0)
                    {
                        iVar4 = 0;
                    }
                    else
                    {
                        iVar4 = 1525;

                        if (iVar7 < 1526)
                        {
                            iVar4 = iVar7;
                        }
                    }

                    DAT_94 = iVar4;
                }

                bVar1 = tags == 1;

                if (id == 121)
                {
                    iVar7 = 0x400;

                    if (bVar1)
                    {
                        iVar7 = 0;
                    }
                }
                else
                {
                    iVar7 = 0x400;

                    if (!bVar1)
                    {
                        iVar7 = 0;
                    }
                }

                iVar6 = iVar7 - oVar8.vr.y;
                iVar4 = -8;

                if (-9 < iVar6)
                {
                    iVar4 = 8;

                    if (iVar6 < 9)
                    {
                        iVar4 = iVar6;
                    }
                }

                iVar4      = oVar8.vr.y + iVar4;
                oVar8.vr.y = iVar4;

                if (iVar4 * 0x10000 >> 0x10 != iVar7 || DAT_94 != 0)
                {
                    if (arg2 == 0)
                    {
                        return(0);
                    }

                    oVar8.ApplyRotationMatrix();
                    goto LAB_2CA0;
                }

                oVar8.ApplyRotationMatrix();
                break;

            case 1:
            case 4:
                iVar7 = oVar8.vTransform.position.y + 1525;
                oVar8.vTransform.position.y = iVar7;

                if (iVar7 <= DAT_88.y)
                {
                    goto LAB_2CA0;
                }

                iVar5  = GameManager.instance.FUN_1DD9C();
                v3Var3 = GameManager.instance.FUN_2CE50(oVar8);
                GameManager.instance.FUN_1E580(iVar5, vData.sndList, 2, v3Var3);
                iVar9 = (uint)(tags ^ 2) < 1 ? 1 : 0;

                if (id != 120)
                {
                    if (iVar9 != 0)
                    {
                        oVar7 = DAT_80;
                    }
                    else
                    {
                        oVar7 = DAT_84;
                    }
                }
                else
                {
                    if ((iVar9 ^ 1) != 0)
                    {
                        oVar7 = DAT_80;
                    }
                    else
                    {
                        oVar7 = DAT_84;
                    }
                }

                if (oVar7 == null)
                {
                    goto LAB_2FD4;
                }

                if (tags == 2)
                {
                    if (id == 120)
                    {
                        oVar7 = DAT_84;
                        GameManager.instance.FUN_30CB0(oVar7, 180);
                        oVar4 = oVar7.child2;
                    }
                    else
                    {
                        oVar7 = DAT_80;
                        GameManager.instance.FUN_30CB0(oVar7, 180);
                        oVar4        = oVar7.child2;
                        oVar7.DAT_80 = null;
                    }

                    oVar4.vTransform = GameManager.FUN_2A39C();
                    oVar5            = oVar4.FUN_2CCBC();
                    Utilities.FUN_2CC9C(oVar8, oVar5);
                    oVar5.transform.parent = oVar8.transform;
                }
                else
                {
                    if (id == 120)
                    {
                        oVar7        = oVar8.child2;
                        oVar4        = DAT_80;
                        oVar4.DAT_80 = oVar7;
                    }
                    else
                    {
                        oVar4 = DAT_84;
                        oVar7 = oVar8.child2;
                    }

                    ccVar5           = oVar4.FUN_2C5F4(0x8000);
                    oVar7.vTransform = Utilities.FUN_2C77C(ccVar5);
                    oVar5            = oVar7.FUN_2CCBC();
                    Utilities.FUN_2CC9C(oVar4, oVar5);
                    oVar5.transform.parent = oVar4.transform;
                    GameManager.instance.FUN_30CB0(oVar4, 180);
                }

                break;

            case 2:
            case 5:
                iVar4 = oVar8.vTransform.position.y - 1525;
                oVar8.vTransform.position.y = iVar4;

                if (oVar8.screen.y <= iVar4)
                {
                    goto LAB_2CA0;
                }

                if (id == 120)
                {
                    oVar4 = DAT_80;
                }
                else
                {
                    oVar4 = DAT_84;
                }

                if (oVar4 != null)
                {
                    if (id == 120)
                    {
                        ccVar4 = DAT_80.FUN_2C5F4(0x8000);
                        oVar6  = DAT_80;
                    }
                    else
                    {
                        ccVar4 = DAT_84.FUN_2C5F4(0x8000);
                        oVar6  = DAT_84;
                    }

                    auStack24 = Utilities.FUN_24148(oVar6.vTransform, ccVar4.v3_1);
                    DAT_88    = Utilities.FUN_24304(vTransform, auStack24);
                    iVar7     = oVar7.screen.y;
                    sVar2     = (sbyte)(tags + 1);
                    tags      = sVar2;
                    DAT_88.y -= iVar7;

                    if (sVar2 == 7)
                    {
                        GameManager.instance.FUN_1DE78(DAT_18);
                        tags   = 0;
                        DAT_18 = 0;
                        FUN_30BA8();
                        return(0);
                    }

                    goto LAB_2CA0;
                }

LAB_2FD4:
                tags = 0;
                FUN_30C68();
                FUN_30BA8();
                break;

            default:
                goto LAB_2CA0;
            }

            tags++;

LAB_2CA0:
            if (arg2 == 0)
            {
                return(0);
            }

            v3Var5 = GameManager.instance.FUN_2CE50(oVar8);
            uVar5  = GameManager.instance.FUN_1E7A8(v3Var5);
            GameManager.instance.FUN_1E2C8(DAT_18, uVar5);
            return(0);

        case 8:
            bVar7 = FUN_32B90((uint)arg2);

            if (!bVar7)
            {
                return(0);
            }

            if ((byte)tags - 3U < 3)
            {
                child2.child2.child2.FUN_4ECA0();
            }

            FUN_30BA8();
            FUN_30C68();

            if (DAT_80 != null)
            {
                GameManager.instance.FUN_30CB0(DAT_80, 60);
            }

            if (DAT_84 != null)
            {
                GameManager.instance.FUN_30CB0(DAT_84, 60);
            }

            tags = -1;
            break;
        }

        return(0);
    }
Exemple #4
0
    //FUN_F8 (EXCELSR.DLL)
    public override uint UpdateW(int arg1, int arg2)
    {
        short        sVar1;
        bool         bVar2;
        sbyte        sVar3;
        int          iVar4;
        VigObject    oVar4;
        VigTuple     tVar4;
        int          iVar5;
        VigObject    oVar5;
        uint         uVar6;
        uint         uVar7;
        int          iVar8;
        VigObject    oVar8;
        Throwaway    puVar9;
        int          iVar10;
        VigObject    oVar10;
        int          iVar12;
        Lightning2   oVar12;
        int          iVar13;
        Lightning2   oVar14;
        Lightning2   oVar15;
        Lightning3   oVar16;
        VigObject    local_20;
        Vector3Int   local_38;
        Vector3Int   local_68;
        Vector3Int   auStack88;
        VigTransform auStack80;

        switch (state)
        {
        case _LIGHTNING2_TYPE.Type1:
            if (arg1 == 2)
            {
                if (DAT_94 == 0)
                {
                    oVar5 = FUN_2CCBC();
                    GameManager.instance.FUN_307CC(oVar5);
                    return(0);
                }
                else
                {
                    DAT_94--;
                    GameManager.instance.FUN_30CB0(this, 180);
                    DAT_84.id += 180;
                }
            }

            if (arg1 < 3)
            {
                if (arg1 != 0)
                {
                    return(0);
                }

                oVar4  = Utilities.FUN_2CD78(this);
                DAT_84 = oVar4;

                if (oVar4 == null || (oVar4 = Utilities.FUN_2CD78(oVar4)) == null)
                {
                    oVar5 = FUN_2CCBC();
                    GameManager.instance.FUN_308C4(oVar5);
                    return(0xffffffff);
                }

                oVar12 = this;
                oVar4  = oVar12.DAT_80;

                if (oVar4 != null)
                {
                    while ((oVar4.flags & 0x4000) == 0)
                    {
                        if (oVar12.DAT_88 == null)
                        {
                            oVar5 = FUN_2CCBC();
                            GameManager.instance.FUN_308C4(oVar5);
                            return(0xffffffff);
                        }
                        else
                        {
                            oVar12 = oVar12.DAT_88;
                            oVar4  = oVar12.DAT_80;
                        }
                    }
                }

                oVar4    = DAT_80;
                local_38 = new Vector3Int();
                bVar2    = true;

                if (oVar4 == null)
                {
                    sVar3  = (sbyte)(DAT_19 - 1);
                    DAT_19 = (byte)sVar3;

                    if (sVar3 != 0)
                    {
                        return(0);
                    }

                    iVar4      = (int)GameManager.FUN_2AC5C();
                    local_68   = new Vector3Int();
                    local_68.x = (iVar4 - 0x4000) * 0x10000;
                    uVar6      = GameManager.FUN_2AC5C();
                    local_68.y = ((int)(uVar6 & 0x1fff) - 0x1000) * 0x10000;
                    iVar4      = (int)GameManager.FUN_2AC5C();
                    local_68.z = (iVar4 - 0x4000) * 0x10000;
                    Utilities.FUN_29FC8(local_68, out auStack88);
                    vTransform.rotation = Utilities.FUN_2A724(auStack88);
                    iVar4  = (int)GameManager.FUN_2AC5C();
                    iVar12 = (iVar4 * 0x50000 >> 15) + 0x20000;
                    iVar4  = iVar12 * vTransform.rotation.V02;

                    if (iVar4 < 0)
                    {
                        iVar4 += 0xffff;
                    }

                    iVar8 = iVar12 * vTransform.rotation.V12;
                    vTransform.rotation.V02 = (short)(iVar4 >> 16);

                    if (iVar8 < 0)
                    {
                        iVar8 += 0xffff;
                    }

                    iVar12 = iVar12 * vTransform.rotation.V22;
                    vTransform.rotation.V12 = (short)(iVar8 >> 16);

                    if (iVar12 < 0)
                    {
                        iVar12 += 0xffff;
                    }

                    vTransform.rotation.V22 = (short)(iVar12 >> 16);
                    iVar4  = (int)GameManager.FUN_2AC5C();
                    DAT_19 = (byte)((iVar4 * 10 >> 15) + 5);
                }
                else
                {
                    local_20 = Utilities.FUN_2CD78(DAT_84);
                    uVar6    = GameManager.FUN_2AC5C();
                    oVar12   = this;

                    while (true)
                    {
                        uVar7 = GameManager.FUN_2AC5C();

                        if (DAT_94 == 0)
                        {
                            oVar12.DAT_80.vTransform.position.y -= 682;
                        }
                        else
                        {
                            oVar12.DAT_80.vTransform.position.y -= 222;
                        }

                        iVar10 = oVar12.DAT_80.vTransform.position.x;
                        iVar8  = iVar10 - 2730;

                        if ((uVar7 & 1) == 0)
                        {
                            iVar8 = iVar10 + 2730;
                        }

                        oVar12.DAT_80.vTransform.position.x = iVar8;
                        iVar10 = oVar12.DAT_80.vTransform.position.z;
                        iVar8  = iVar10 - 2730;

                        if ((uVar7 & 2) == 0)
                        {
                            iVar8 = iVar10 + 2730;
                        }

                        oVar12.DAT_80.vTransform.position.z = iVar8;
                        oVar8        = oVar12.DAT_80;
                        oVar8.screen = oVar8.vTransform.position;     //should be ignored as a counter to his special
                        iVar8        = (int)GameManager.FUN_2AC5C();
                        oVar12.DAT_80.FUN_24700((short)((iVar8 * 511 >> 15) - 255), 0, 0);
                        sVar3         = (sbyte)(oVar12.DAT_19 - 1);
                        oVar12.DAT_19 = (byte)sVar3;

                        if (sVar3 == 0)
                        {
                            oVar12.DAT_19 = 40;

                            if (bVar2)
                            {
                                iVar8 = 0;
                                iVar5 = GameManager.instance.FUN_1DD9C();
                                GameManager.instance.FUN_1E580(iVar5, GameManager.instance.DAT_C2C, 75, oVar12.DAT_80.vTransform.position);
                                UIManager.instance.FUN_4E414(oVar12.DAT_80.vTransform.position, new Color32(0x00, 0x00, 0xff, 8));

                                do
                                {
                                    puVar9             = LevelManager.instance.xobfList[19].ini.FUN_2C17C(49, typeof(Throwaway), 8) as Throwaway;
                                    puVar9.physics1.M0 = 0;
                                    puVar9.physics1.M1 = 0;
                                    puVar9.physics1.M2 = 0;
                                    uVar7             = GameManager.FUN_2AC5C();
                                    puVar9.physics1.Z = (int)(uVar7 & 0xfff) - 0x800;
                                    iVar10            = (int)GameManager.FUN_2AC5C();

                                    if (iVar10 < 0)
                                    {
                                        iVar10 += 15;
                                    }

                                    puVar9.physics1.W = -(iVar10 >> 4);
                                    uVar7             = GameManager.FUN_2AC5C();
                                    puVar9.physics2.X = (int)(uVar7 & 0xfff) - 0x800;
                                    puVar9.type       = 7;
                                    puVar9.flags     |= 0xb4;
                                    sVar1             = id;
                                    iVar8++;
                                    puVar9.state               = _THROWAWAY_TYPE.Type3;
                                    puVar9.id                  = sVar1;
                                    puVar9.vTransform          = GameManager.FUN_2A39C();
                                    oVar10                     = oVar12.DAT_80;
                                    puVar9.vTransform.position = oVar10.vTransform.position;
                                    puVar9.FUN_2D1DC();
                                    puVar9.DAT_87 = 1;
                                    puVar9.FUN_305FC();
                                } while (iVar8 < 5);
                            }
                        }

                        if (((uVar6 ^ 1) & 1) != 0)
                        {
                            iVar5 = ((Vehicle)oVar12.DAT_80).FUN_3B078(local_20, (ushort)DAT_1A, -2, 1);
                            ((Vehicle)oVar12.DAT_80).FUN_39DCC(iVar5, Lightning.DAT_20, true);

                            if (oVar12.DAT_80.id < 0)
                            {
                                GameManager.instance.FUN_15ADC(~oVar12.DAT_80.id, 20);
                            }
                        }

                        if (bVar2)
                        {
                            auStack80 = GameManager.instance.FUN_2CEAC(oVar12.DAT_84, oVar12.DAT_90);
                            local_68  = Utilities.FUN_24304(auStack80, oVar12.DAT_80.vTransform.position);
                        }
                        else
                        {
                            oVar8      = oVar12.DAT_80;
                            local_68   = new Vector3Int();
                            local_68.x = oVar8.vTransform.position.x - local_38.x;
                            local_68.y = oVar8.vTransform.position.y - local_38.y;
                            local_68.z = oVar8.vTransform.position.z - local_38.z;
                            oVar12.vTransform.position = local_38;
                        }

                        oVar8    = oVar12.DAT_80;
                        local_38 = oVar8.vTransform.position;
                        Utilities.FUN_29FC8(local_68, out auStack88);
                        iVar8  = Utilities.FUN_29E84(local_68);
                        iVar8 /= 2;

                        if (0x70000 < iVar8 && bVar2)
                        {
                            break;
                        }

                        iVar10 = iVar8;

                        if (!bVar2)
                        {
                            iVar10 = 0x70000;

                            if (iVar8 < 0x70000)
                            {
                                iVar10 = iVar8;
                            }
                        }

                        oVar12.vTransform.rotation = Utilities.FUN_2A724(auStack88);
                        iVar8 = iVar10 * oVar12.vTransform.rotation.V02;

                        if (iVar8 < 0)
                        {
                            iVar8 += 0xffff;
                        }

                        iVar13 = iVar10 * oVar12.vTransform.rotation.V12;
                        oVar12.vTransform.rotation.V02 = (short)(iVar8 >> 16);

                        if (iVar13 < 0)
                        {
                            iVar13 += 0xffff;
                        }

                        iVar10 = iVar10 * oVar12.vTransform.rotation.V22;
                        oVar12.vTransform.rotation.V12 = (short)(iVar13 >> 16);

                        if (iVar10 < 0)
                        {
                            iVar10 += 0xffff;
                        }

                        oVar12.vTransform.rotation.V22 = (short)(iVar10 >> 16);
                        oVar12 = oVar12.DAT_88;
                        bVar2  = false;

                        if (oVar12 == null)
                        {
                            return(0);
                        }
                    }

                    oVar12.DAT_19 = 5;
                    oVar14        = oVar12;

                    while ((oVar15 = oVar14) != null)
                    {
                        oVar14        = oVar15.DAT_88;
                        oVar15.DAT_88 = null;

                        if (oVar15.DAT_80 != null)
                        {
                            oVar16 = oVar15.DAT_8C;

                            if (oVar16 != null && (oVar16.flags & 0x3000000) == 0)
                            {
                                oVar16.flags |= 0x2000000;
                                oVar5         = oVar15.DAT_8C.FUN_2CCBC();
                                GameManager.instance.FUN_307CC(oVar5);
                                oVar15.DAT_8C = null;
                            }
                            else
                            {
                                oVar15.DAT_80.flags &= 0xfbffffff;
                                oVar15.DAT_80.FUN_30B78();
                            }

                            oVar15.DAT_80 = null;
                        }

                        if (oVar15 != oVar12)
                        {
                            GameManager.instance.FUN_309A0(oVar15);
                        }
                    }

                    oVar12.DAT_80 = null;
                }
            }
            else
            {
                if (arg1 != 4)
                {
                    return(0);
                }

                oVar14 = DAT_88;

                while (oVar14 != null)
                {
                    oVar15        = oVar14.DAT_88;
                    oVar16        = oVar14.DAT_8C;
                    oVar14.DAT_88 = null;

                    if (oVar16 != null && (oVar16.flags & 0x3000000) == 0)
                    {
                        oVar16.flags |= 0x2000000;
                        oVar5         = oVar14.DAT_8C.FUN_2CCBC();
                        GameManager.instance.FUN_307CC(oVar5);
                        oVar14.DAT_8C = null;
                    }
                    else
                    {
                        oVar14.DAT_80.flags &= 0xfbffffff;
                        oVar14.DAT_80.FUN_30B78();
                    }

                    oVar14.DAT_80 = null;
                    GameManager.instance.FUN_309A0(oVar14);
                    oVar14 = oVar15;
                }

                if (DAT_80 != null)
                {
                    oVar16 = DAT_8C;

                    if (oVar16 != null && (oVar16.flags & 0x3000000) == 0)
                    {
                        oVar16.flags |= 0x2000000;
                        oVar5         = DAT_8C.FUN_2CCBC();
                        GameManager.instance.FUN_307CC(oVar5);
                        DAT_8C = null;
                    }
                    else
                    {
                        DAT_80.flags &= 0xfbffffff;
                        DAT_80.FUN_30B78();
                    }

                    DAT_80 = null;
                }

                if (DAT_84 != null)
                {
                    oVar4 = Utilities.FUN_2CD78(DAT_84);

                    if (oVar4 != null)
                    {
                        tVar4 = GameManager.instance.FUN_30134(GameManager.instance.worldObjs, oVar4);

                        if (tVar4 != null)
                        {
                            if (DAT_84.maxHalfHealth == 0)
                            {
                                DAT_84.FUN_3A368();
                            }
                        }
                    }
                }

                GameManager.instance.DAT_1084--;

                if (DAT_18 == 0)
                {
                    return(0);
                }

                GameManager.instance.FUN_1DE78(DAT_18);
            }

            break;
        }

        return(0);
    }