protected override void Update() { if (Owner) { RoomHandler currentRoom = GameManager.Instance.PrimaryPlayer.CurrentRoom; for (int i = 0; i < StaticReferenceManager.AllDebris.Count; i++) { DebrisObject alldebris = StaticReferenceManager.AllDebris[i]; if (alldebris && alldebris.sprite.WorldCenter.GetAbsoluteRoom() == currentRoom && alldebris.IsPickupObject && alldebris.canRotate && alldebris.sprite.IsPerpendicular && alldebris.sprite.automaticallyManagesDepth && alldebris.sprite.ignoresTiltworldDepth) { if (alldebris.GetComponent <PickupMover>() == null) { PickupMover pickupMover = alldebris.gameObject.AddComponent <PickupMover>(); if (pickupMover.specRigidbody) { pickupMover.specRigidbody.CollideWithTileMap = false; } pickupMover.acceleration = 100f; pickupMover.maxSpeed = 12f; pickupMover.minRadius = 0.85f; pickupMover.moveIfRoomUnclear = true; pickupMover.stopPathingOnContact = true; } } } } else { return; } }
private void HandleReturnLikeBoomerang(DebrisObject obj) { obj.PreventFallingInPits = true; obj.OnGrounded = (Action <DebrisObject>)Delegate.Remove(obj.OnGrounded, new Action <DebrisObject>(this.HandleReturnLikeBoomerang)); PickupMover pickupMover = obj.gameObject.AddComponent <PickupMover>(); if (pickupMover.specRigidbody) { pickupMover.specRigidbody.CollideWithTileMap = false; } pickupMover.minRadius = 1f; pickupMover.moveIfRoomUnclear = true; pickupMover.stopPathingOnContact = false; }
public static void Init(AssetBundle expandSharedAssets1) { SonicRingObject = expandSharedAssets1.LoadAsset <GameObject>("EXSonicRing"); SpriteSerializer.AddSpriteToObject(SonicRingObject, ExpandPrefabs.EXItemCollection, "SonicRing_Idle_05"); List <string> m_RingFrames = new List <string>(); for (int i = 1; i < 16; i++) { if (i < 10) { m_RingFrames.Add("SonicRing_Idle_0" + i.ToString()); } else { m_RingFrames.Add("SonicRing_Idle_" + i.ToString()); } } ExpandUtility.GenerateSpriteAnimator(SonicRingObject, playAutomatically: true); ExpandUtility.AddAnimation(SonicRingObject.GetComponent <tk2dSpriteAnimator>(), ExpandPrefabs.EXItemCollection.GetComponent <tk2dSpriteCollectionData>(), m_RingFrames, "idle", tk2dSpriteAnimationClip.WrapMode.Loop); ExpandUtility.GenerateOrAddToRigidBody(SonicRingObject, CollisionLayer.Pickup, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(0, 1), dimensions: new IntVector2(15, 14)); SonicRingObject.GetComponent <SpeculativeRigidbody>().PixelColliders[0].IsTrigger = true; PickupMover pickupMover = SonicRingObject.AddComponent <PickupMover>(); pickupMover.pathInterval = 0.25f; pickupMover.acceleration = 7; pickupMover.maxSpeed = 15; pickupMover.minRadius = 0; SonicRing sonicRing = SonicRingObject.AddComponent <SonicRing>(); string name = "Sonic Ring"; string shortDesc = "A Ring"; string longDesc = "A Simple Ring. Equilivent to one casing."; ItemBuilder.SetupEXItem(sonicRing, name, shortDesc, longDesc, "ex", false); sonicRing.quality = ItemQuality.COMMON; sonicRing.ItemSpansBaseQualityTiers = false; sonicRing.additionalMagnificenceModifier = 0; sonicRing.ItemRespectsHeartMagnificence = false; sonicRing.associatedItemChanceMods = new LootModData[0]; sonicRing.contentSource = ContentSource.BASE; sonicRing.ShouldBeExcludedFromShops = false; sonicRing.CanBeDropped = true; sonicRing.PreventStartingOwnerFromDropping = false; sonicRing.PersistsOnDeath = false; sonicRing.PersistsOnPurchase = false; sonicRing.RespawnsIfPitfall = true; sonicRing.PreventSaveSerialization = false; sonicRing.IgnoredByRat = false; sonicRing.SaveFlagToSetOnAcquisition = 0; sonicRing.UsesCustomCost = false; sonicRing.CustomCost = 0; sonicRing.CanBeSold = true; sonicRing.ForcedPositionInAmmonomicon = -1; sonicRing.currencyValue = 1; sonicRing.IsMetaCurrency = false; sonicRing.overrideBloopSpriteName = "SonicRing_Idle_05"; RingID = sonicRing.PickupObjectId; }