public ExpandExplodeOnDeath() { immuneToIBombApp = false; deathType = DeathType.PreDeath; preDeathDelay = 0.1f; useDefaultExplosion = false; spawnItemsOnExplosion = false; isCorruptedObject = false; ExplosionNotGuranteed = false; isCorruptedNPC = false; spawnShardsOnDeath = false; numberOfDefaultItemsToSpawn = 1; ExplosionOdds = 0.3f; ExplosionDamage = 120f; breakStyle = MinorBreakable.BreakStyle.BURST; direction = Vector2.zero; minAngle = 0; maxAngle = 0; verticalSpeed = 0.4f; minMagnitude = 0.25f; maxMagnitude = 0.5f; heightOffGround = 0.1f; m_hasTriggered = false; // m_GrenadeGuyPrefab = EnemyDatabase.GetOrLoadByGuid("4d37ce3d666b4ddda8039929225b7ede").gameObject; // ExpandExplosionData = m_GrenadeGuyPrefab.gameObject.GetComponent<ExplodeOnDeath>().explosionData; // This uses Explosion Data settings from Grenade Kin by default ExpandExplosionData = ExpandUtility.GenerateExplosionData(); }
public static void Init(AssetBundle expandSharedAssets1) { TableTechAssassinHook.TableExplosionData = ExpandUtility.GenerateExplosionData(damage: 60); TableTechAssasinObject = expandSharedAssets1.LoadAsset <GameObject>("Table Tech Assassin"); TableTechAssassin tableTechAssassin = TableTechAssasinObject.AddComponent <TableTechAssassin>(); ItemBuilder.AddSpriteToObject(TableTechAssasinObject, expandSharedAssets1.LoadAsset <Texture2D>("tabletech_assassin"), false, false); string shortDesc = "Betray the Flipper"; string longDesc = "A forbidden technique thought lost was recoverd in the Gungeon.\n\nAll that was written was this: \n\n 'Do upon the flipper that which the flipper had done to you'"; ItemBuilder.SetupItem(tableTechAssassin, shortDesc, longDesc, "ex"); tableTechAssassin.quality = ItemQuality.D; }
public static void Init(AssetBundle expandSharedAssets1) { TableTechAssassinHook.TableExplosionData = ExpandUtility.GenerateExplosionData(damage: 60); TableTechAssasinObject = expandSharedAssets1.LoadAsset <GameObject>("Table Tech Assassin"); SpriteSerializer.AddSpriteToObject(TableTechAssasinObject, ExpandPrefabs.EXItemCollection, "tabletech_assassin"); TableTechAssassin tableTechAssassin = TableTechAssasinObject.AddComponent <TableTechAssassin>(); string shortDesc = "Betray the Flipper"; string longDesc = "A forbidden technique thought lost was recovered in the Gungeon.\n\nAll that was written was this: \n\n 'Do upon the flipper that which the flipper had done to you'"; ItemBuilder.SetupItem(tableTechAssassin, shortDesc, longDesc, "ex"); tableTechAssassin.quality = ItemQuality.D; if (!ExpandSettings.EnableEXItems) { tableTechAssassin.quality = ItemQuality.EXCLUDED; } TableTechAssasinID = tableTechAssassin.PickupObjectId; }
public ExpandKickableObject() { rollSpeed = 6f; rollAnimations = null; goopFrequency = 0.05f; goopRadius = 1f; breakTimerLength = 3f; RollingDestroysSafely = false; triggersBreakTimer = false; AllowTopWallTraversal = true; explodesOnKick = true; willDefinitelyExplode = false; spawnObjectOnSelfDestruct = false; useDefaultExplosion = false; hasRollingAnimations = false; RollingBreakAnim = "red_barrel_break"; m_lastOutlineDirection = (DungeonData.Direction)(-1); m_objectSpawned = false; TableExplosionData = ExpandUtility.GenerateExplosionData(); m_WasKicked = false; }
private void Start() { // Delay initial configuration for ItemCrate version to avoid possible misalignment since GameObjects get instantiated initially from zero position. // Item crate object comes with this controller pre-attached. So position may not be correct frame 1. ;) if (!Configured && IsItemCrate) { StartCoroutine(DelayedAutoConfiguration()); return; } m_ParentEnemy = aiActor; m_CachedRotation = transform.rotation; m_cachedPosition = transform.position; m_CachedLayer = gameObject.layer; m_CachedSpriteZDepth = sprite.HeightOffGround; m_maxSway = MaxSwayAngle; if (knockbackDoer) { knockbackDoer.SetImmobile(true, "Paradrop Protection"); } if (m_ParentEnemy) { m_cachedScale = m_ParentEnemy.EnemyScale; } else { m_cachedScale = Vector2.one; } if (m_ParentEnemy && m_ParentEnemy.HasShadow && m_ParentEnemy.ShadowObject) { m_ParentEnemy.ShadowObject.GetComponent <tk2dSprite>().renderer.enabled = false; } if (m_ParentEnemy) { m_ParentEnemy.behaviorSpeculator.enabled = false; if (m_ParentEnemy.aiAnimator) { m_ParentEnemy.aiAnimator.FacingDirection = -90; } if (m_ParentEnemy.aiShooter) { m_ParentEnemy.aiShooter.AimAtPoint(m_ParentEnemy.CenterPosition - new Vector2(0, 2)); m_ParentEnemy.aiShooter.ToggleGunAndHandRenderers(false, "ParaDrop"); } } if (specRigidbody && !IsItemCrate) { specRigidbody.CollideWithOthers = false; } if (healthHaver) { healthHaver.PreventAllDamage = true; healthHaver.IsVulnerable = false; } if (ParentObjectExplodyBarrel && !IsItemCrate) { m_CachedExplosionData = ExpandUtility.GenerateExplosionData(); } // MeshRenderer pre-disabled via added components in Unity Editor for The Item Drop host object. if (!IsItemCrate) { sprite.renderer.enabled = false; } m_Parachute = Instantiate(ExpandPrefabs.EX_Parachute, Vector3.zero, Quaternion.identity); m_ParachuteSpriteAnimator = m_Parachute.GetComponent <tk2dSpriteAnimator>(); m_ParachuteSprite = m_Parachute.GetComponent <tk2dSprite>(); m_ParachuteSprite.renderer.enabled = false; if (IsItemCrate) { m_ParachuteSprite.HeightOffGround += 3f; m_ParachuteSprite.UpdateZDepth(); } // Despite my absolute shit math skills I somehow got this right. :P // (this correctly sets the parachute above the host object's sprite) float ParachuteXSize = (m_ParachuteSprite.GetBounds().size.x / 2); float ObjectUnitCenterX = m_cachedPosition.x; float ObjectUnitCenterY = m_cachedPosition.y; if (UseObjectSizeOverride) { ObjectUnitCenterX += OverrideObjectSize.x; ObjectUnitCenterY += OverrideObjectSize.y; } else if (specRigidbody) { specRigidbody.Reinitialize(); // Make sure rigidbody colliders are at current object's position ObjectUnitCenterX = specRigidbody.GetPixelCollider(ColliderType.HitBox).UnitCenter.x; ObjectUnitCenterY = specRigidbody.GetPixelCollider(ColliderType.HitBox).UnitTopCenter.y; } m_Parachute.transform.position = new Vector2((ObjectUnitCenterX - ParachuteXSize), ObjectUnitCenterY); m_Parachute.layer = gameObject.layer; if (IsItemCrate) { GameObject EXItemBoxAnchor = new GameObject("EX ItemBox Anchor") { layer = gameObject.layer }; EXItemBoxAnchor.transform.position = m_ParachuteSprite.WorldBottomCenter; m_ItemBoxAnchor = EXItemBoxAnchor; EXItemBoxAnchor.transform.SetParent(m_Parachute.transform); gameObject.transform.SetParent(EXItemBoxAnchor.transform); } else { gameObject.transform.SetParent(m_Parachute.transform); } // m_Anchor = Instantiate(ExpandPrefabs.EX_ParadropAnchor, m_ParachuteSprite.WorldBottomCenter, Quaternion.identity).transform; m_Anchor = new GameObject("EXParaDropAnchor") { layer = gameObject.layer }.transform; m_Anchor.transform.position = m_ParachuteSprite.WorldBottomCenter; m_Parachute.transform.SetParent(m_Anchor); m_CachedPositionOffset = (m_Anchor.position - m_cachedPosition.ToVector3ZUp()); switchState = State.PopIntoAir; m_Initialized = true; }