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); }
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); }
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); }
//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); }