예제 #1
0
 // Token: 0x0600071F RID: 1823 RVA: 0x0003EED4 File Offset: 0x0003D0D4
 private static AppMain.OBS_OBJECT_WORK GmBoss4CapsuleInit(AppMain.GMS_EVE_RECORD_EVENT eve_rec, int pos_x, int pos_y, int type)
 {
     AppMain._cap_kill_flag = 0;
     AppMain.OBS_OBJECT_WORK    obs_OBJECT_WORK    = AppMain.GMM_ENEMY_CREATE_WORK(eve_rec, pos_x, pos_y, () => new AppMain.GMS_BOSS4_CAP_WORK(), "BOSS4_CAP");
     AppMain.GMS_ENEMY_3D_WORK  gms_ENEMY_3D_WORK  = (AppMain.GMS_ENEMY_3D_WORK)obs_OBJECT_WORK;
     AppMain.GMS_BOSS4_CAP_WORK gms_BOSS4_CAP_WORK = (AppMain.GMS_BOSS4_CAP_WORK)obs_OBJECT_WORK;
     gms_BOSS4_CAP_WORK.cap_no  = AppMain._cap_no++ % 6;
     gms_BOSS4_CAP_WORK.type    = type;
     obs_OBJECT_WORK.move_flag |= 256U;
     AppMain.ObjObjectCopyAction3dNNModel(obs_OBJECT_WORK, AppMain.GmBoss4GetObj3D(2), gms_ENEMY_3D_WORK.obj_3d);
     AppMain.ObjDrawObjectSetToon(obs_OBJECT_WORK);
     obs_OBJECT_WORK.disp_flag |= 134217728U;
     obs_OBJECT_WORK.flag      |= 16U;
     obs_OBJECT_WORK.disp_flag |= 4194304U;
     AppMain.ObjRectWorkSet(gms_ENEMY_3D_WORK.ene_com.rect_work[0], -14, -30, 14, -2);
     gms_ENEMY_3D_WORK.ene_com.rect_work[0].ppDef = new AppMain.OBS_RECT_WORK_Delegate1(AppMain.gmBoss4CapsuleDamageDefFunc);
     AppMain.ObjRectWorkSet(gms_ENEMY_3D_WORK.ene_com.rect_work[1], -1, -9, 1, -7);
     gms_ENEMY_3D_WORK.ene_com.rect_work[1].ppHit = new AppMain.OBS_RECT_WORK_Delegate1(AppMain.gmBoss4CapsuleAtkHitFunc);
     gms_ENEMY_3D_WORK.ene_com.rect_work[1].flag |= 4U;
     gms_ENEMY_3D_WORK.ene_com.rect_work[2].flag &= 4294967291U;
     gms_ENEMY_3D_WORK.ene_com.enemy_flag        |= 32768U;
     AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleWaitLoad), obs_OBJECT_WORK);
     if (gms_BOSS4_CAP_WORK.chibi_type == 4)
     {
         obs_OBJECT_WORK.disp_flag |= 32U;
     }
     AppMain.mtTaskChangeTcbDestructor(obs_OBJECT_WORK.tcb, new AppMain.GSF_TASK_PROCEDURE(AppMain.gmBoss4CapsuleExit));
     obs_OBJECT_WORK.obj_3d.use_light_flag &= 4294967294U;
     obs_OBJECT_WORK.obj_3d.use_light_flag |= 64U;
     return(obs_OBJECT_WORK);
 }
예제 #2
0
 // Token: 0x06000726 RID: 1830 RVA: 0x0003F934 File Offset: 0x0003DB34
 private static void gmBoss4CapsuleDamageDefFunc(AppMain.OBS_RECT_WORK my_rect, AppMain.OBS_RECT_WORK your_rect)
 {
     AppMain.OBS_OBJECT_WORK     parent_obj          = my_rect.parent_obj;
     AppMain.OBS_OBJECT_WORK     parent_obj2         = your_rect.parent_obj;
     AppMain.GMS_BOSS4_CAP_WORK  w                   = (AppMain.GMS_BOSS4_CAP_WORK)parent_obj;
     AppMain.GMS_BOSS4_BODY_WORK gms_BOSS4_BODY_WORK = (AppMain.GMS_BOSS4_BODY_WORK)parent_obj.parent_obj;
     if (parent_obj2 != null && 1 == parent_obj2.obj_type)
     {
         if (AppMain._cap_inv_flag > 0)
         {
             return;
         }
         AppMain.GmBoss4UtilSetPlayerAttackReaction(parent_obj2, parent_obj);
         AppMain.GmSoundPlaySE("Enemy");
         AppMain.GmBoss4CapsuleSetInvincible(30);
         AppMain.GmBoss4UtilInitNoHitTimer(gms_BOSS4_BODY_WORK.nohit_work, (AppMain.GMS_ENEMY_COM_WORK)gms_BOSS4_BODY_WORK, 25);
         if (!AppMain.IS_FLAG(4U, w))
         {
             AppMain.SET_FLAG(1073741824U, w);
             if ((gms_BOSS4_BODY_WORK.flag[0] & 4096U) == 0U)
             {
                 gms_BOSS4_BODY_WORK.flag[0]    |= 2048U;
                 gms_BOSS4_BODY_WORK.avoid_timer = 90;
             }
         }
     }
 }
예제 #3
0
 // Token: 0x06000721 RID: 1825 RVA: 0x0003F288 File Offset: 0x0003D488
 private static void gmBoss4CapsuleWaitLoad(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_BOSS4_CAP_WORK gms_BOSS4_CAP_WORK = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
     if (AppMain.GmBoss4IsBuilded())
     {
         if (gms_BOSS4_CAP_WORK.type == 0)
         {
             AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleMain), obj_work);
         }
         else
         {
             obj_work.move_flag &= 4294963199U;
             obj_work.move_flag |= 128U;
             AppMain.ObjObjectFieldRectSet(obj_work, -20, -40, 20, 0);
             obj_work.dir.y = 0;
             gms_BOSS4_CAP_WORK.chibi_type = AppMain.gmBoss4ChibiGetAttackType(AppMain.GmBoss4GetLife());
             AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleMain2nd), obj_work);
             if (gms_BOSS4_CAP_WORK.chibi_type == 4)
             {
                 AppMain.OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GmEventMgrLocalEventBirth(329, obj_work.pos.x, obj_work.pos.y, 0, 0, 0, 0, 0, 0);
                 obs_OBJECT_WORK.spd.x = AppMain.FX_F32_TO_FX32(2f);
                 obs_OBJECT_WORK.spd.y = AppMain.FX_F32_TO_FX32(-3f);
                 AppMain.GmBoss4IncObjCreateCount();
                 obs_OBJECT_WORK.parent_obj = obj_work.parent_obj;
                 AppMain.GMM_BS_OBJ(gms_BOSS4_CAP_WORK).flag |= 8U;
             }
         }
         AppMain._cap_count++;
         gms_BOSS4_CAP_WORK.wait = 0;
     }
 }
예제 #4
0
 private static void gmBoss4CapsuleBomb2nd(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_BOSS4_CAP_WORK gmsBosS4CapWork = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
     obj_work.disp_flag &= 4294963199U;
     if (((int)AppMain.g_obj.flag & 1) != 0)
     {
         obj_work.disp_flag |= 4096U;
     }
     else
     {
         obj_work.pos.x += AppMain.GmBoss4GetScrollOffset();
     }
     if (gmsBosS4CapWork.wait > 0)
     {
         --gmsBosS4CapWork.wait;
         if (gmsBosS4CapWork.wait >= 36)
         {
             return;
         }
         obj_work.disp_flag |= 32U;
     }
     else
     {
         AppMain.GMM_BS_OBJ((object)gmsBosS4CapWork).flag |= 8U;
     }
 }
예제 #5
0
 private static AppMain.OBS_OBJECT_WORK GmBoss4CapsuleInit(
     AppMain.GMS_EVE_RECORD_EVENT eve_rec,
     int pos_x,
     int pos_y,
     int type)
 {
     AppMain._cap_kill_flag = 0;
     AppMain.OBS_OBJECT_WORK    work            = AppMain.GMM_ENEMY_CREATE_WORK(eve_rec, pos_x, pos_y, (AppMain.TaskWorkFactoryDelegate)(() => (object)new AppMain.GMS_BOSS4_CAP_WORK()), "BOSS4_CAP");
     AppMain.GMS_ENEMY_3D_WORK  gmsEnemy3DWork  = (AppMain.GMS_ENEMY_3D_WORK)work;
     AppMain.GMS_BOSS4_CAP_WORK gmsBosS4CapWork = (AppMain.GMS_BOSS4_CAP_WORK)work;
     gmsBosS4CapWork.cap_no = AppMain._cap_no++ % 6;
     gmsBosS4CapWork.type   = type;
     work.move_flag        |= 256U;
     AppMain.ObjObjectCopyAction3dNNModel(work, AppMain.GmBoss4GetObj3D(2), gmsEnemy3DWork.obj_3d);
     AppMain.ObjDrawObjectSetToon(work);
     work.disp_flag |= 134217728U;
     work.flag      |= 16U;
     work.disp_flag |= 4194304U;
     AppMain.ObjRectWorkSet(gmsEnemy3DWork.ene_com.rect_work[0], (short)-14, (short)-30, (short)14, (short)-2);
     gmsEnemy3DWork.ene_com.rect_work[0].ppDef = new AppMain.OBS_RECT_WORK_Delegate1(AppMain.gmBoss4CapsuleDamageDefFunc);
     AppMain.ObjRectWorkSet(gmsEnemy3DWork.ene_com.rect_work[1], (short)-1, (short)-9, (short)1, (short)-7);
     gmsEnemy3DWork.ene_com.rect_work[1].ppHit = new AppMain.OBS_RECT_WORK_Delegate1(AppMain.gmBoss4CapsuleAtkHitFunc);
     gmsEnemy3DWork.ene_com.rect_work[1].flag |= 4U;
     gmsEnemy3DWork.ene_com.rect_work[2].flag &= 4294967291U;
     gmsEnemy3DWork.ene_com.enemy_flag        |= 32768U;
     AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleWaitLoad), work);
     if (gmsBosS4CapWork.chibi_type == 4)
     {
         work.disp_flag |= 32U;
     }
     AppMain.mtTaskChangeTcbDestructor(work.tcb, new AppMain.GSF_TASK_PROCEDURE(AppMain.gmBoss4CapsuleExit));
     work.obj_3d.use_light_flag &= 4294967294U;
     work.obj_3d.use_light_flag |= 64U;
     return(work);
 }
예제 #6
0
 private static void gmBoss4CapsuleDamageDefFunc(
     AppMain.OBS_RECT_WORK my_rect,
     AppMain.OBS_RECT_WORK your_rect)
 {
     AppMain.OBS_OBJECT_WORK     parentObj1 = my_rect.parent_obj;
     AppMain.OBS_OBJECT_WORK     parentObj2 = your_rect.parent_obj;
     AppMain.GMS_BOSS4_CAP_WORK  w          = (AppMain.GMS_BOSS4_CAP_WORK)parentObj1;
     AppMain.GMS_BOSS4_BODY_WORK parentObj3 = (AppMain.GMS_BOSS4_BODY_WORK)parentObj1.parent_obj;
     if (parentObj2 == null || (ushort)1 != parentObj2.obj_type || AppMain._cap_inv_flag > 0)
     {
         return;
     }
     AppMain.GmBoss4UtilSetPlayerAttackReaction(parentObj2, parentObj1);
     AppMain.GmSoundPlaySE("Enemy");
     AppMain.GmBoss4CapsuleSetInvincible(30);
     AppMain.GmBoss4UtilInitNoHitTimer(parentObj3.nohit_work, (AppMain.GMS_ENEMY_COM_WORK)parentObj3, 25);
     if (AppMain.IS_FLAG(4U, w))
     {
         return;
     }
     AppMain.SET_FLAG(1073741824U, w);
     if (((int)parentObj3.flag[0] & 4096) != 0)
     {
         return;
     }
     parentObj3.flag[0]    |= 2048U;
     parentObj3.avoid_timer = 90;
 }
예제 #7
0
 private static void gmBoss4CapsuleWaitLoad(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_BOSS4_CAP_WORK gmsBosS4CapWork = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
     if (!AppMain.GmBoss4IsBuilded())
     {
         return;
     }
     if (gmsBosS4CapWork.type == 0)
     {
         AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleMain), obj_work);
     }
     else
     {
         obj_work.move_flag &= 4294963199U;
         obj_work.move_flag |= 128U;
         AppMain.ObjObjectFieldRectSet(obj_work, (short)-20, (short)-40, (short)20, (short)0);
         obj_work.dir.y             = (ushort)0;
         gmsBosS4CapWork.chibi_type = AppMain.gmBoss4ChibiGetAttackType(AppMain.GmBoss4GetLife());
         AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleMain2nd), obj_work);
         if (gmsBosS4CapWork.chibi_type == 4)
         {
             AppMain.OBS_OBJECT_WORK obsObjectWork = AppMain.GmEventMgrLocalEventBirth((ushort)329, obj_work.pos.x, obj_work.pos.y, (ushort)0, (sbyte)0, (sbyte)0, (byte)0, (byte)0, (byte)0);
             obsObjectWork.spd.x = AppMain.FX_F32_TO_FX32(2f);
             obsObjectWork.spd.y = AppMain.FX_F32_TO_FX32(-3f);
             AppMain.GmBoss4IncObjCreateCount();
             obsObjectWork.parent_obj = obj_work.parent_obj;
             AppMain.GMM_BS_OBJ((object)gmsBosS4CapWork).flag |= 8U;
         }
     }
     ++AppMain._cap_count;
     gmsBosS4CapWork.wait = 0;
 }
예제 #8
0
    private static void gmBoss4CapsuleMain2nd(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_BOSS4_CAP_WORK gmsBosS4CapWork = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
        obj_work.move_flag &= 4294443007U;
        obj_work.spd_fall   = AppMain.FX_F32_TO_FX32(0.2f);
        obj_work.move_flag |= 128U;
        obj_work.pos.x     += AppMain.GmBoss4GetScrollOffset();
        if (((int)obj_work.move_flag & 1) == 0)
        {
            return;
        }
        AppMain.VecFx32 pos = obj_work.pos;
        pos.z = 135168;
        AppMain.GmBoss4EffCommonInit(735, new AppMain.VecFx32?(pos));
        gmsBosS4CapWork.wait = 30;
        obj_work.spd.x       = AppMain.FX_F32_TO_FX32(0.0f);
        obj_work.spd.y       = AppMain.FX_F32_TO_FX32(-1f);
        obj_work.move_flag  &= 4294967294U;
        obj_work.move_flag  |= 256U;
        ushort id;

        switch (gmsBosS4CapWork.chibi_type)
        {
        case 2:
            id = (ushort)327;
            break;

        case 3:
            id = (ushort)328;
            break;

        case 4:
            id = (ushort)329;
            break;

        default:
            id = (ushort)326;
            break;
        }
        AppMain.OBS_OBJECT_WORK obsObjectWork = AppMain.GmEventMgrLocalEventBirth(id, obj_work.pos.x, obj_work.pos.y, (ushort)0, (sbyte)0, (sbyte)0, (byte)0, (byte)0, (byte)0);
        obsObjectWork.parent_obj = obj_work.parent_obj;
        AppMain.GmBoss4IncObjCreateCount();
        obsObjectWork.spd.y = AppMain.FX_F32_TO_FX32(-4f);
        obsObjectWork.spd.x = AppMain.FX_F32_TO_FX32(-1f);
        AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleBomb2nd), obj_work);
    }
    // Token: 0x06000724 RID: 1828 RVA: 0x0003F758 File Offset: 0x0003D958
    private static void gmBoss4CapsuleMain2nd(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_BOSS4_CAP_WORK gms_BOSS4_CAP_WORK = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
        obj_work.move_flag &= 4294443007U;
        obj_work.spd_fall   = AppMain.FX_F32_TO_FX32(0.2f);
        obj_work.move_flag |= 128U;
        obj_work.pos.x      = obj_work.pos.x + AppMain.GmBoss4GetScrollOffset();
        if ((obj_work.move_flag & 1U) != 0U)
        {
            AppMain.VecFx32 pos = obj_work.pos;
            pos.z = 135168;
            AppMain.GmBoss4EffCommonInit(735, new AppMain.VecFx32?(pos));
            gms_BOSS4_CAP_WORK.wait = 30;
            obj_work.spd.x          = AppMain.FX_F32_TO_FX32(0f);
            obj_work.spd.y          = AppMain.FX_F32_TO_FX32(-1f);
            obj_work.move_flag     &= 4294967294U;
            obj_work.move_flag     |= 256U;
            ushort id;
            switch (gms_BOSS4_CAP_WORK.chibi_type)
            {
            default:
                id = 326;
                break;

            case 2:
                id = 327;
                break;

            case 3:
                id = 328;
                break;

            case 4:
                id = 329;
                break;
            }
            OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GmEventMgrLocalEventBirth(id, obj_work.pos.x, obj_work.pos.y, 0, 0, 0, 0, 0, 0);
            obs_OBJECT_WORK.parent_obj = obj_work.parent_obj;
            AppMain.GmBoss4IncObjCreateCount();
            obs_OBJECT_WORK.spd.y = AppMain.FX_F32_TO_FX32(-4f);
            obs_OBJECT_WORK.spd.x = AppMain.FX_F32_TO_FX32(-1f);
            AppMain.T_FUNC(AppMain.gmBoss4CapsuleBomb2nd, obj_work);
        }
    }
예제 #10
0
 private static void gmBoss4CapsuleBomb(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_BOSS4_CAP_WORK gmsBosS4CapWork = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
     obj_work.disp_flag |= 32U;
     if (gmsBosS4CapWork.wait > 0)
     {
         --gmsBosS4CapWork.wait;
         if (gmsBosS4CapWork.wait != 30 || AppMain._cap_kill_flag != 0)
         {
             return;
         }
         AppMain.OBS_OBJECT_WORK obsObjectWork = AppMain.GmEventMgrLocalEventBirth((ushort)325, obj_work.pos.x, obj_work.pos.y, (ushort)0, (sbyte)0, (sbyte)0, (byte)0, (byte)0, (byte)0);
         AppMain.GmBoss4IncObjCreateCount();
         obsObjectWork.parent_obj = obj_work.parent_obj;
     }
     else
     {
         AppMain.GMM_BS_OBJ((object)gmsBosS4CapWork).flag |= 8U;
     }
 }
예제 #11
0
 // Token: 0x06000727 RID: 1831 RVA: 0x0003F9F0 File Offset: 0x0003DBF0
 private static void gmBoss4CapsuleBomb(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_BOSS4_CAP_WORK gms_BOSS4_CAP_WORK = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
     obj_work.disp_flag |= 32U;
     if (gms_BOSS4_CAP_WORK.wait > 0)
     {
         gms_BOSS4_CAP_WORK.wait--;
         if (gms_BOSS4_CAP_WORK.wait == 30)
         {
             if (AppMain._cap_kill_flag != 0)
             {
                 return;
             }
             AppMain.OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GmEventMgrLocalEventBirth(325, obj_work.pos.x, obj_work.pos.y, 0, 0, 0, 0, 0, 0);
             AppMain.GmBoss4IncObjCreateCount();
             obs_OBJECT_WORK.parent_obj = obj_work.parent_obj;
         }
         return;
     }
     AppMain.GMM_BS_OBJ(gms_BOSS4_CAP_WORK).flag |= 8U;
 }
예제 #12
0
 // Token: 0x06000728 RID: 1832 RVA: 0x0003FA88 File Offset: 0x0003DC88
 private static void gmBoss4CapsuleBomb2nd(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_BOSS4_CAP_WORK gms_BOSS4_CAP_WORK = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
     obj_work.disp_flag &= 4294963199U;
     if ((AppMain.g_obj.flag & 1U) != 0U)
     {
         obj_work.disp_flag |= 4096U;
     }
     else
     {
         obj_work.pos.x = obj_work.pos.x + AppMain.GmBoss4GetScrollOffset();
     }
     if (gms_BOSS4_CAP_WORK.wait > 0)
     {
         gms_BOSS4_CAP_WORK.wait--;
         if (gms_BOSS4_CAP_WORK.wait < 36)
         {
             obj_work.disp_flag |= 32U;
         }
         return;
     }
     AppMain.GMM_BS_OBJ(gms_BOSS4_CAP_WORK).flag |= 8U;
 }
예제 #13
0
    // Token: 0x06000723 RID: 1827 RVA: 0x0003F3C4 File Offset: 0x0003D5C4
    private static void gmBoss4CapsuleMain(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_BOSS4_BODY_WORK gms_BOSS4_BODY_WORK = (AppMain.GMS_BOSS4_BODY_WORK)obj_work.parent_obj;
        AppMain.GMS_BOSS4_CAP_WORK  gms_BOSS4_CAP_WORK  = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
        AppMain.NNS_MATRIX          nns_MATRIX          = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.NNS_MATRIX nns_MATRIX2 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.NNS_MATRIX nns_MATRIX3 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        if (gms_BOSS4_CAP_WORK.wait > 0)
        {
            obj_work.pos.z = 131072;
            AppMain.GmBoss4UtilUpdateFlicker(obj_work, gms_BOSS4_CAP_WORK.flk_work);
            if (AppMain.GmBoss4UtilUpdate1ShotTimer(gms_BOSS4_CAP_WORK.timer))
            {
                AppMain.VecFx32 pos = obj_work.pos;
                pos.z = 135168;
                AppMain.GmBoss4EffCommonInit(735, new AppMain.VecFx32?(pos));
                AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleBomb), obj_work);
            }
        }
        else
        {
            AppMain.GmBsCmnUpdateObject3DNNStuckWithNode(obj_work, gms_BOSS4_BODY_WORK.node_work.snm_work, gms_BOSS4_BODY_WORK.node_work.work[2], 0);
            obj_work.pos.y = obj_work.pos.y + AppMain.FX_F32_TO_FX32(20f);
            int num = AppMain._cap_rot_y;
            num += AppMain.AKM_DEGtoA32(360) / 6 * gms_BOSS4_CAP_WORK.cap_no;
            num %= AppMain.AKM_DEGtoA32(360);
            AppMain.nnMakeRotateXMatrix(nns_MATRIX, AppMain._cap_rot_x);
            AppMain.nnRotateZMatrix(nns_MATRIX, nns_MATRIX, AppMain._cap_rot_z);
            AppMain.nnRotateYMatrix(nns_MATRIX, nns_MATRIX, num);
            AppMain.nnMakeTranslateMatrix(nns_MATRIX2, AppMain._cap_len, 0f, 0f);
            AppMain.nnMultiplyMatrix(nns_MATRIX3, nns_MATRIX, nns_MATRIX2);
            AppMain.NNS_VECTOR nns_VECTOR = AppMain.GlobalPool <AppMain.NNS_VECTOR> .Alloc();

            AppMain.nnCopyMatrixTranslationVector(nns_VECTOR, nns_MATRIX3);
            obj_work.pos.x = obj_work.pos.x + AppMain.FX_F32_TO_FX32(nns_VECTOR.x);
            obj_work.pos.y = obj_work.pos.y + AppMain.FX_F32_TO_FX32(nns_VECTOR.y);
            obj_work.pos.z = obj_work.pos.z + AppMain.FX_F32_TO_FX32(nns_VECTOR.z);
            AppMain.GlobalPool <AppMain.NNS_VECTOR> .Release(nns_VECTOR);
        }
        if (AppMain._cap_kill_flag != 0)
        {
            AppMain.VecFx32 pos2 = obj_work.pos;
            pos2.z = 135168;
            AppMain.GmBoss4EffCommonInit(735, new AppMain.VecFx32?(pos2));
            gms_BOSS4_CAP_WORK.wait = 30;
            AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleBomb), obj_work);
            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX3);

            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX2);

            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX);

            return;
        }
        AppMain.GMS_ENEMY_3D_WORK gms_ENEMY_3D_WORK = (AppMain.GMS_ENEMY_3D_WORK)obj_work;
        if (AppMain._cap_inv_flag != 0)
        {
            if (!AppMain._cap_inv_hit)
            {
                gms_ENEMY_3D_WORK.ene_com.rect_work[0].flag |= 2048U;
                gms_ENEMY_3D_WORK.ene_com.rect_work[0].flag &= 4294967291U;
            }
            gms_ENEMY_3D_WORK.ene_com.rect_work[1].flag |= 2048U;
        }
        else
        {
            gms_ENEMY_3D_WORK.ene_com.rect_work[0].flag &= 4294965247U;
            gms_ENEMY_3D_WORK.ene_com.rect_work[0].flag |= 4U;
            gms_ENEMY_3D_WORK.ene_com.rect_work[1].flag &= 4294965247U;
        }
        if (AppMain.IS_FLAG(1073741824U, gms_BOSS4_CAP_WORK))
        {
            AppMain._cap_count--;
            gms_ENEMY_3D_WORK.ene_com.rect_work[0].flag &= 4294967291U;
            gms_ENEMY_3D_WORK.ene_com.rect_work[1].flag &= 4294967291U;
            gms_ENEMY_3D_WORK.ene_com.rect_work[2].flag &= 4294967291U;
            AppMain.RESET_FLAG(1073741824U, gms_BOSS4_CAP_WORK);
            AppMain.GmBoss4UtilInitFlicker(obj_work, gms_BOSS4_CAP_WORK.flk_work);
            AppMain.GmBoss4UtilInit1ShotTimer(gms_BOSS4_CAP_WORK.timer, 20U);
            gms_BOSS4_CAP_WORK.wait = 60;
        }
        AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX3);

        AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX2);

        AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nns_MATRIX);
    }
예제 #14
0
    private static void gmBoss4CapsuleMain(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_BOSS4_BODY_WORK parentObj  = (AppMain.GMS_BOSS4_BODY_WORK)obj_work.parent_obj;
        AppMain.GMS_BOSS4_CAP_WORK  w          = (AppMain.GMS_BOSS4_CAP_WORK)obj_work;
        AppMain.NNS_MATRIX          nnsMatrix1 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.NNS_MATRIX nnsMatrix2 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        AppMain.NNS_MATRIX nnsMatrix3 = AppMain.GlobalPool <AppMain.NNS_MATRIX> .Alloc();

        if (w.wait > 0)
        {
            obj_work.pos.z = 131072;
            AppMain.GmBoss4UtilUpdateFlicker(obj_work, w.flk_work);
            if (AppMain.GmBoss4UtilUpdate1ShotTimer(w.timer))
            {
                AppMain.VecFx32 pos = obj_work.pos;
                pos.z = 135168;
                AppMain.GmBoss4EffCommonInit(735, new AppMain.VecFx32?(pos));
                AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleBomb), obj_work);
            }
        }
        else
        {
            AppMain.GmBsCmnUpdateObject3DNNStuckWithNode(obj_work, parentObj.node_work.snm_work, parentObj.node_work.work[2], 0);
            obj_work.pos.y += AppMain.FX_F32_TO_FX32(20f);
            int ay = (AppMain._cap_rot_y + AppMain.AKM_DEGtoA32(360) / 6 * w.cap_no) % AppMain.AKM_DEGtoA32(360);
            AppMain.nnMakeRotateXMatrix(nnsMatrix1, AppMain._cap_rot_x);
            AppMain.nnRotateZMatrix(nnsMatrix1, nnsMatrix1, AppMain._cap_rot_z);
            AppMain.nnRotateYMatrix(nnsMatrix1, nnsMatrix1, ay);
            AppMain.nnMakeTranslateMatrix(nnsMatrix2, AppMain._cap_len, 0.0f, 0.0f);
            AppMain.nnMultiplyMatrix(nnsMatrix3, nnsMatrix1, nnsMatrix2);
            AppMain.NNS_VECTOR dst = new AppMain.NNS_VECTOR();
            AppMain.nnCopyMatrixTranslationVector(dst, nnsMatrix3);
            obj_work.pos.x += AppMain.FX_F32_TO_FX32(dst.x);
            obj_work.pos.y += AppMain.FX_F32_TO_FX32(dst.y);
            obj_work.pos.z += AppMain.FX_F32_TO_FX32(dst.z);
            //AppMain.GlobalPool<AppMain.NNS_VECTOR>.Release(dst);
        }
        if (AppMain._cap_kill_flag != 0)
        {
            AppMain.VecFx32 pos = obj_work.pos;
            pos.z = 135168;
            AppMain.GmBoss4EffCommonInit(735, new AppMain.VecFx32?(pos));
            w.wait = 30;
            AppMain.T_FUNC(new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4CapsuleBomb), obj_work);
            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix3);

            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix2);

            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix1);
        }
        else
        {
            AppMain.GMS_ENEMY_3D_WORK gmsEnemy3DWork = (AppMain.GMS_ENEMY_3D_WORK)obj_work;
            if (AppMain._cap_inv_flag != 0)
            {
                if (!AppMain._cap_inv_hit)
                {
                    gmsEnemy3DWork.ene_com.rect_work[0].flag |= 2048U;
                    gmsEnemy3DWork.ene_com.rect_work[0].flag &= 4294967291U;
                }
                gmsEnemy3DWork.ene_com.rect_work[1].flag |= 2048U;
            }
            else
            {
                gmsEnemy3DWork.ene_com.rect_work[0].flag &= 4294965247U;
                gmsEnemy3DWork.ene_com.rect_work[0].flag |= 4U;
                gmsEnemy3DWork.ene_com.rect_work[1].flag &= 4294965247U;
            }
            if (AppMain.IS_FLAG(1073741824U, w))
            {
                --AppMain._cap_count;
                gmsEnemy3DWork.ene_com.rect_work[0].flag &= 4294967291U;
                gmsEnemy3DWork.ene_com.rect_work[1].flag &= 4294967291U;
                gmsEnemy3DWork.ene_com.rect_work[2].flag &= 4294967291U;
                AppMain.RESET_FLAG(1073741824U, w);
                AppMain.GmBoss4UtilInitFlicker(obj_work, w.flk_work);
                AppMain.GmBoss4UtilInit1ShotTimer(w.timer, 20U);
                w.wait = 60;
            }
            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix3);

            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix2);

            AppMain.GlobalPool <AppMain.NNS_MATRIX> .Release(nnsMatrix1);
        }
    }
예제 #15
0
 // Token: 0x06000714 RID: 1812 RVA: 0x0003EE2D File Offset: 0x0003D02D
 public static void RESET_FLAG(uint f, AppMain.GMS_BOSS4_CAP_WORK w)
 {
     w.flag &= ~f;
 }
예제 #16
0
 // Token: 0x06000715 RID: 1813 RVA: 0x0003EE3E File Offset: 0x0003D03E
 public static bool IS_FLAG(uint f, AppMain.GMS_BOSS4_CAP_WORK w)
 {
     return(0U != (w.flag & f));
 }
예제 #17
0
 public static bool IS_FLAG(uint f, AppMain.GMS_BOSS4_CAP_WORK w)
 {
     return(0 != ((int)w.flag & (int)f));
 }