private Cannonball FUN_45218(VigObject param1, short param2, ushort param3) { int iVar4; int iVar5; VigObject oVar6; Ballistic ppcVar2; Cannonball ppcVar3; Vector3Int auStack32; oVar6 = child2; ppcVar2 = LevelManager.instance.xobfList[19].ini.FUN_2C17C(3, typeof(Ballistic), 8) as Ballistic; Utilities.ParentChildren(ppcVar2, ppcVar2); ppcVar3 = LevelManager.instance.FUN_42408(param1, oVar6, (ushort)param2, typeof(Cannonball), ppcVar2) as Cannonball; ppcVar3.flags = 0x20000094; ppcVar3.maxHalfHealth = param3; ppcVar3.FUN_305FC(); ppcVar3.physics2.M2 = 60; iVar5 = param1.physics1.X; if (iVar5 < 0) { iVar5 += 127; } ppcVar3.physics1.Z = (iVar5 >> 7) + ppcVar3.vTransform.rotation.V02 * 6; iVar5 = param1.physics1.Y; if (iVar5 < 0) { iVar5 += 127; } ppcVar3.physics1.W = (iVar5 >> 7) + ppcVar3.vTransform.rotation.V12 * 6; iVar5 = param1.physics1.Z; if (iVar5 < 0) { iVar5 += 127; } ppcVar3.physics2.X = (iVar5 >> 7) + ppcVar3.vTransform.rotation.V22 * 6; ppcVar2.FUN_30BF0(); auStack32 = Utilities.FUN_24094(oVar6.vTransform.rotation, GameManager.DAT_A3C); param1.FUN_2B1FC(auStack32, screen); iVar4 = GameManager.instance.FUN_1DD9C(); GameManager.instance.FUN_1E580(iVar4, GameManager.instance.DAT_C2C, 53, ppcVar3.screen); maxHalfHealth--; if (maxHalfHealth == 0) { FUN_3A368(); } return(ppcVar3); }
public override uint UpdateW(int arg1, VigObject arg2) { bool bVar1; uint uVar2; ushort uVar3; short sVar4; uint uVar5; Ballistic puVar6; Revolver3 puVar7; int iVar8; int iVar9; Vector3Int local_28; Vector3Int local_18; switch (arg1) { case 0: FUN_42330(arg2); uVar2 = 0; break; case 1: maxHalfHealth = 6; goto default; default: uVar2 = 0; break; case 12: uVar5 = GameManager.FUN_2AC5C(); bVar1 = (uVar5 & 3) == 0; puVar6 = LevelManager.instance.xobfList[19].ini.FUN_2C17C(3, typeof(Ballistic), 8) as Ballistic; iVar9 = 3; if (bVar1) { iVar9 = 2; } puVar7 = LevelManager.instance.FUN_42408(arg2, this, (ushort)iVar9, typeof(Revolver3), puVar6) as Revolver3; local_28 = new Vector3Int(); local_28.x = 0; local_28.y = 0; if (bVar1) { local_28.z = -0x180000; } else { local_28.z = -0x10000; } puVar7.flags = 0x60000084; puVar7.tags = (sbyte)(bVar1 ? 1 : 0); if (bVar1) { uVar3 = 450; } else { uVar3 = 250; } puVar7.maxHalfHealth = uVar3; puVar7.physics2.M2 = 60; iVar8 = arg2.physics1.X; if (iVar8 < 0) { iVar8 += 127; } puVar7.physics1.Z = (iVar8 >> 7) + puVar7.vTransform.rotation.V02 * 6; iVar8 = arg2.physics1.Y; if (iVar8 < 0) { iVar8 += 127; } puVar7.physics1.W = (iVar8 >> 7) + puVar7.vTransform.rotation.V12 * 6; iVar8 = arg2.physics1.Z; if (iVar8 < 0) { iVar8 += 127; } puVar7.physics2.X = (iVar8 >> 7) + puVar7.vTransform.rotation.V22 * 6; puVar7.FUN_305FC(); GameManager.instance.FUN_30CB0(puVar7, 120); puVar6.FUN_30BF0(); if ((child2.flags & 0x80) == 0) { child2.FUN_30B78(); } child2.maxHalfHealth = 90; arg2.FUN_2B1FC(local_28, screen); iVar9 = GameManager.instance.FUN_1DD9C(); GameManager.instance.FUN_1E580(iVar9, vData.sndList, 3, puVar7.screen); iVar9 = GameManager.instance.FUN_1DD9C(); GameManager.instance.FUN_1E188(iVar9, vData.sndList, 2); if (arg2.id < 0) { GameManager.instance.FUN_15B00(~arg2.id, 255, (byte)((uint)(bVar1 ? 1 : 0) << 5), 64); } sVar4 = (short)(maxHalfHealth - 1); maxHalfHealth = (ushort)sVar4; uVar2 = 60; if (sVar4 == 0) { FUN_3A368(); uVar2 = 60; } break; case 13: local_18 = Utilities.FUN_24304(arg2.vTransform, ((Vehicle)arg2).target.vTransform.position); uVar2 = 0; if ((uint)local_18.z - 1 < 0x7cfff) { if (local_18.x < 0) { local_18.x = -local_18.x; } uVar2 = local_18.x << 3 < local_18.z ? 1U : 0; } break; } return(uVar2); }
public override uint UpdateW(int arg1, VigObject arg2) { short sVar1; uint uVar2; Ballistic puVar3; Tantrum2 puVar4; Throwaway puVar5; int iVar6; VigTransform tVar6; VigObject oVar6; int iVar7; uint uVar7; ConfigContainer ccVar7; int iVar8; VigObject oVar8; int iVar9; VigObject oVar10; Vector3Int local_30; Vector3Int auStack32; switch (arg1) { case 0: iVar6 = FUN_42330(arg2); uVar7 = 0; if (0 < iVar6 && ((Vehicle)arg2).target != null) { oVar10 = child2; tVar6 = GameManager.instance.FUN_2CDF4(this); oVar8 = ((Vehicle)arg2).target; local_30 = new Vector3Int(); local_30.x = oVar8.screen.x - tVar6.position.x; local_30.y = oVar8.screen.y - tVar6.position.y; local_30.z = oVar8.screen.z - tVar6.position.z; local_30 = Utilities.FUN_2426C(tVar6.rotation, new Matrix2x4 (local_30.x, local_30.y, local_30.z, 0)); iVar8 = Utilities.Ratan2(local_30.x, local_30.z); iVar6 = Utilities.Ratan2(local_30.y, local_30.z); iVar9 = iVar6 * -0x100000 >> 20; iVar6 = 0x100; if (iVar9 < 0x100) { iVar6 = iVar9; } iVar9 = -128; if (-128 < iVar6) { iVar9 = iVar6; } oVar10.vr.y += (((iVar8 << 20) >> 20) - oVar10.vr.y) / 2; oVar10.vr.x += (iVar9 - oVar10.vr.x) / 2; oVar10.ApplyTransformation(); uVar7 = 0; if (id != 0) { oVar10.child2.vr.z += 42; oVar10.child2.ApplyTransformation(); uVar7 = 0; } } break; case 1: maxHalfHealth = 50; uVar2 = flags | 0x4000; flags = uVar2; uVar7 = 0; break; default: uVar7 = 0; break; case 11: vr.x = 0; uVar2 = flags & 0xfdffffff; flags = uVar2; uVar7 = 0; break; case 12: oVar6 = child2; puVar3 = LevelManager.instance.xobfList[19].ini.FUN_2C17C(9, typeof(Ballistic), 8) as Ballistic; Utilities.ParentChildren(puVar3, puVar3); puVar4 = LevelManager.instance.FUN_42408(arg2, oVar6, 2, typeof(Tantrum2), puVar3) as Tantrum2; puVar5 = vData.ini.FUN_2C17C(1, typeof(Throwaway), 0) as Throwaway; uVar7 = 0x280; if (vr.x == 0) { uVar7 = 0x60000280; } puVar4.maxHalfHealth = 20; puVar4.flags = uVar7; puVar4.FUN_305FC(); iVar8 = arg2.physics1.X; if (iVar8 < 0) { iVar8 += 127; } puVar4.physics1.Z = (iVar8 >> 7) + puVar4.vTransform.rotation.V02 * 6; iVar8 = arg2.physics1.Y; if (iVar8 < 0) { iVar8 += 127; } puVar4.physics1.W = (iVar8 >> 7) + puVar4.vTransform.rotation.V12 * 6; iVar8 = arg2.physics1.Z; if (iVar8 < 0) { iVar8 += 127; } puVar4.physics2.X = (iVar8 >> 7) + puVar4.vTransform.rotation.V22 * 6; puVar4.physics2.M2 = 180; if ((arg2.flags & 4) == 0) { puVar3.FUN_30BF0(); } ccVar7 = oVar6.FUN_2C5F4(0x8001); puVar5.vTransform = GameManager.instance.FUN_2CEAC(oVar6, ccVar7); puVar5.type = 4; puVar5.flags = 0xa0; iVar8 = puVar5.vTransform.rotation.V02; puVar5.state = _THROWAWAY_TYPE.Unspawnable; puVar5.vCollider = null; if (iVar8 < 0) { iVar8 += 3; } iVar9 = puVar5.vTransform.rotation.V12; puVar5.physics1.Z = iVar8 >> 2; if (iVar9 < 0) { iVar9 += 3; } iVar8 = puVar5.vTransform.rotation.V22; puVar5.physics1.W = iVar9 >> 2; if (iVar8 < 0) { iVar8 += 3; } puVar5.physics2.X = iVar8 >> 2; puVar5.DAT_87 = 2; puVar5.FUN_305FC(); auStack32 = Utilities.FUN_24094(oVar6.vTransform.rotation, DAT_20); arg2.FUN_2B1FC(auStack32, screen); if ((flags & 0x2000000) == 0) { flags |= 0x2000000; iVar7 = GameManager.instance.FUN_1DD9C(); GameManager.instance.FUN_1E188(iVar7, vData.sndList, 2); } iVar7 = GameManager.instance.FUN_1DD9C(); GameManager.instance.FUN_1E628(iVar7, vData.sndList, 3, puVar4.screen); sVar1 = (short)(maxHalfHealth - 1); maxHalfHealth = (ushort)sVar1; if (sVar1 == 0) { FUN_3A368(); } if (arg2.id < 0) { uVar7 = 12; flags |= 0x4000000; goto LAB_794; } sVar1 = (short)(vr.x + 1); vr.x = sVar1; if (sVar1 < 8) { uVar7 = 12; flags |= 0x4000000; } else { uVar7 = 180; flags &= 0xfbffffff; } LAB_794: break; case 13: uVar7 = 0; if (vr.x < 8) { if (vr.x == 0) { if (GameManager.instance.DAT_1084 != 0) { return(0); } iVar6 = Utilities.FUN_29F6C(arg2.screen, ((Vehicle)arg2).target.screen); if (0x31fff < iVar6) { return(0); } if (3050 < arg2.physics1.W) { return(0); } } uVar7 = 1; } break; } return(uVar7); }