private void SpawnFoldingTable() { Vector2 nearbyPoint = Owner.CenterPosition + (Owner.unadjustedAimPoint.XY() - Owner.CenterPosition).normalized; IntVector2? nearestAvailableCell = Owner.CurrentRoom.GetNearestAvailableCell(nearbyPoint, new IntVector2?(IntVector2.One), new CellTypes?(CellTypes.FLOOR), false, null); FoldingTableItem component6 = PickupObjectDatabase.GetById(644).GetComponent <FoldingTableItem>(); GameObject gameObject5 = component6.TableToSpawn.gameObject; GameObject gameObject6 = UnityEngine.Object.Instantiate <GameObject>(gameObject5.gameObject, nearestAvailableCell.Value.ToVector2(), Quaternion.identity); SpeculativeRigidbody componentInChildren = gameObject6.GetComponentInChildren <SpeculativeRigidbody>(); FlippableCover component7 = gameObject6.GetComponent <FlippableCover>(); component7.transform.position.XY().GetAbsoluteRoom().RegisterInteractable(component7); component7.ConfigureOnPlacement(component7.transform.position.XY().GetAbsoluteRoom()); componentInChildren.Initialize(); PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(componentInChildren, null, false); }
private void HandleHit(Projectile arg1, SpeculativeRigidbody arg2, bool arg3) { if (arg2.aiActor != null && arg2.aiActor.behaviorSpeculator && !arg2.aiActor.IsHarmlessEnemy) { PlayerController player = gun.CurrentOwner as PlayerController; if ((player.HasPickupID(131) || player.HasPickupID(239) || player.HasPickupID(815)) || (gun.DuctTapeMergedGunIDs != null)) { float value2 = UnityEngine.Random.Range(0.0f, 1.0f); if (value2 <= 0.05 && armorCount < 10) { GameManager.Instance.StartCoroutine(this.Clang()); LootEngine.SpawnItem(PickupObjectDatabase.GetById(120).gameObject, arg2.sprite.WorldBottomCenter, Vector2.up, 1f, true, false, true); armorCount += 1; } } float value = UnityEngine.Random.Range(0.0f, 1.0f); if (value <= 0.05) { GameManager.Instance.StartCoroutine(this.Clang()); // TURRET SpawnObjectPlayerItem portableturret = PickupObjectDatabase.GetById(201).GetComponent <SpawnObjectPlayerItem>(); String turretGuid = portableturret.enemyGuidToSpawn; GameObject objectToSpawn = EnemyDatabase.GetOrLoadByGuid(turretGuid).gameObject; GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(objectToSpawn, arg2.sprite.WorldBottomCenter, Quaternion.identity); tk2dBaseSprite component4 = gameObject2.GetComponent <tk2dBaseSprite>(); if (component4) { component4.sprite.IsPerpendicular = true; component4.PlaceAtPositionByAnchor(arg2.sprite.WorldBottomCenter.ToVector3ZUp(component4.transform.position.z), tk2dBaseSprite.Anchor.MiddleCenter); } this.spawnedPlayerObject = gameObject2; PortableTurretController component5 = this.spawnedPlayerObject.GetComponent <PortableTurretController>(); if (component5) { component5.sourcePlayer = player; } } else { if (value <= 0.1) { GameManager.Instance.StartCoroutine(this.Clang()); //MINE SpawnObjectPlayerItem proximitymine = PickupObjectDatabase.GetById(66).GetComponent <SpawnObjectPlayerItem>(); GameObject mineObject = proximitymine.objectToSpawn.gameObject; GameObject mineObject2 = UnityEngine.Object.Instantiate <GameObject>(mineObject, arg2.sprite.WorldBottomCenter, Quaternion.identity); tk2dBaseSprite mineSprite = mineObject2.GetComponent <tk2dBaseSprite>(); if (mineSprite) { mineSprite.IsPerpendicular = true; mineSprite.PlaceAtPositionByAnchor(arg2.sprite.WorldBottomCenter, tk2dBaseSprite.Anchor.MiddleCenter); } } else { if (value <= 0.15) { GameManager.Instance.StartCoroutine(this.Clang()); //TABLE FoldingTableItem foldingtable = PickupObjectDatabase.GetById(644).GetComponent <FoldingTableItem>(); GameObject tableObject = foldingtable.TableToSpawn.gameObject; GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(tableObject.gameObject, arg2.sprite.WorldBottomCenter, Quaternion.identity); SpeculativeRigidbody componentInChildren = gameObject.GetComponentInChildren <SpeculativeRigidbody>(); FlippableCover component = gameObject.GetComponent <FlippableCover>(); component.transform.position.XY().GetAbsoluteRoom().RegisterInteractable(component); component.ConfigureOnPlacement(component.transform.position.XY().GetAbsoluteRoom()); componentInChildren.Initialize(); PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(componentInChildren, null, false); } } } } }