private void HellaPosion(Projectile arg1) { AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); GoopDefinition goopDef = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/poison goop.asset"); DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDef).TimedAddGoopCircle(arg1.sprite.WorldBottomCenter, 4f, 1f, false); }
protected override void Update() { if (Owner) { if (!Owner.IsDodgeRolling && Challenges.CurrentChallenge != ChallengeType.KEEP_IT_COOL) { if (Owner.HasPickupID(Gungeon.Game.Items["nn:supersonic_shots"].PickupObjectId)) { GoopDefinition GreenFireDef = (PickupObjectDatabase.GetById(698) as Gun).DefaultModule.projectiles[0].GetComponent <GoopModifier>().goopDefinition; var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(GreenFireDef); ddgm.AddGoopCircle(Owner.sprite.WorldBottomCenter, 1); } else { var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(MrFahrenheit.goopDefs[0]); ddgm.AddGoopCircle(Owner.sprite.WorldBottomCenter, 1); } } currentItems = Owner.passiveItems.Count; if (currentItems != lastItems) { if (Owner.HasPickupID(Gungeon.Game.Items["nn:supersonic_shots"].PickupObjectId)) { handleSpeeds(true); } else { handleSpeeds(false); } lastItems = currentItems; } } }
private void OnHitEnemy(Projectile bullet, SpeculativeRigidbody enemy, bool fatal) { if (enemy && enemy.healthHaver && fatal) { float procChance = 0.1f; if (owner && owner.PlayerHasActiveSynergy("Blood For The Blood God")) { procChance = 0.2f; } if (UnityEngine.Random.value <= procChance) { UnityEngine.Object.Instantiate <GameObject>(EasyVFXDatabase.TeleporterPrototypeTelefragVFX, enemy.UnitCenter, Quaternion.identity); if (owner && owner.PlayerHasActiveSynergy("Blood For The Blood God")) { GoopDefinition Blood = EasyGoopDefinitions.GenerateBloodGoop(15, Color.red, 20); DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(Blood); goopManagerForGoopType.TimedAddGoopCircle(enemy.UnitCenter, 3, 0.5f, false); } if (owner && owner.PlayerHasActiveSynergy("BLOOD IS FUEL")) { if (Vector2.Distance(owner.sprite.WorldCenter, enemy.sprite.WorldCenter) <= 4) { owner.healthHaver.ApplyHealing(0.5f); } } } } }
private void FireBlob(Projectile projectile) { AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); GoopDefinition goopDef = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset"); DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDef).TimedAddGoopCircle(projectile.sprite.WorldBottomCenter, 1.5f, 1.4f, false); }
private void NukeBlastOnHit(PlayerController player) { //I dont know how, but SOMEHOW using Cigarettes with RTG instantly kills you if i try to have this Nuke Code //this.random = UnityEngine.Random.Range(0.00f, 1.00f); //if (random <= 0.04f) { Vector3 position = player.sprite.WorldCenter; this.Boom(position); AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); GoopDefinition goopDefinition = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset"); goopDefinition.baseColor32 = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue); goopDefinition.fireColor32 = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue); goopDefinition.UsesGreenFire = false; DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition); goopManagerForGoopType.TimedAddGoopCircle(projectile.sprite.WorldCenter, 10f, 0.1f, false); this.Nuke = assetBundle.LoadAsset <GameObject>("assets/data/vfx prefabs/impact vfx/vfx_explosion_nuke.prefab"); GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(this.Nuke); gameObject2.GetComponent <tk2dBaseSprite>().PlaceAtLocalPositionByAnchor(projectile.specRigidbody.UnitCenter, tk2dBaseSprite.Anchor.LowerCenter); gameObject2.transform.position = gameObject.transform.position.Quantize(0.0625f); gameObject2.GetComponent <tk2dBaseSprite>().UpdateZDepth(); { this.FlashHoldtime = 0.1f; this.FlashFadetime = 0.5f; Pixelator.Instance.FadeToColor(this.FlashFadetime, Color.white, true, this.FlashHoldtime); StickyFrictionManager.Instance.RegisterCustomStickyFriction(0.15f, 1f, false, false); this.FlashHoldtime = 0.1f; } } }
private void DoNapalmSynergy(Vector2 position) { if (!ddgm) { napalm = Tools.sharedAuto1.LoadAsset <GoopDefinition>("napalmgoopthatworks"); ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(napalm); } ddgm.AddGoopCircle(position, 3f); }
protected override void DoEffect(PlayerController user) { GoopDefinition def = EnemyDatabase.GetOrLoadByGuid("98ca70157c364750a60f5e0084f9d3e2").bulletBank.GetComponent <GoopDoer>().goopDefinition; ETGModConsole.Log(def.AppliesCharm.ToString()); ETGModConsole.Log(def.AppliesCheese.ToString()); ETGModConsole.Log(def.AppliesDamageOverTime.ToString()); ETGModConsole.Log(def.AppliesSpeedModifier.ToString()); ETGModConsole.Log(def.AppliesSpeedModifierContinuously.ToString()); }
private IEnumerator Heatfuck(PlayerController user) { AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); GoopDefinition goopDefinition = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset"); DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition); goopManagerForGoopType.TimedAddGoopCircle(base.Owner.sprite.WorldCenter, 18f, 0.8f, false); yield return(new WaitForSeconds(1f)); DeadlyDeadlyGoopManager.DelayedClearGoopsInRadius(base.Owner.sprite.WorldCenter, 25f); yield break; }
protected override void DoEffect(PlayerController user) { AkSoundEngine.PostEvent("Play_OBJ_lock_pick_01", base.gameObject); foreach (AIActor aiactor in user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All)) { bool flag = aiactor != null; if (flag) { float currentHealthPercentage = aiactor.healthHaver.GetCurrentHealthPercentage(); bool flaga3 = currentHealthPercentage <= 0.3f; bool isBoss = aiactor.healthHaver.IsBoss; bool flag4 = flaga3 && !isBoss; if (flag4) { aiactor.healthHaver.ApplyDamage(100000f, Vector2.zero, "Telefrag", CoreDamageTypes.Void, DamageCategory.Normal, true, null, false); bool synergy = user.PlayerHasActiveSynergy("Judge, Jury and..."); if (synergy) { AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); GoopDefinition goopDef = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset"); DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDef).TimedAddGoopCircle(aiactor.sprite.WorldBottomCenter, 2.5f, 1.4f, false); } } else { aiactor.healthHaver.ApplyDamage(10f, Vector2.zero, "Telefrag", CoreDamageTypes.Void, DamageCategory.Normal, true, null, false); bool synergy = user.PlayerHasActiveSynergy("Lost Humanity"); if (synergy) { Vector3 position = aiactor.sprite.WorldCenter; GameObject gameObject = SpawnManager.SpawnProjectile((PickupObjectDatabase.GetById(45) as Gun).DefaultModule.projectiles[0].gameObject, position, Quaternion.Euler(0f, 0f, BraveMathCollege.Atan2Degrees(user.sprite.WorldCenter - aiactor.sprite.WorldCenter)), true); Projectile component = gameObject.GetComponent <Projectile>(); bool flag12 = component != null; bool flag2 = flag12; if (flag2) { PierceProjModifier spook = component.gameObject.AddComponent <PierceProjModifier>(); spook.penetration = 10; component.SpawnedFromOtherPlayerProjectile = true; component.Shooter = user.specRigidbody; component.Owner = user; component.baseData.speed = 4f; component.baseData.damage = 10f; component.AdditionalScaleMultiplier = 0.7f; component.ignoreDamageCaps = true; } } } } } }
// Token: 0x06007295 RID: 29333 RVA: 0x002CA3A0 File Offset: 0x002C85A0 private void Update() { if (goopType == 0 && needsToUseGreenFire) { GoopDefinition GreenFireDef = (PickupObjectDatabase.GetById(698) as Gun).DefaultModule.projectiles[0].GetComponent <GoopModifier>().goopDefinition; var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(GreenFireDef); ddgm.AddGoopCircle(m_projectile.sprite.WorldCenter, goopRadius); } else { var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(TrailFireModifier.goopDefs[goopType]); ddgm.AddGoopCircle(m_projectile.sprite.WorldCenter, goopRadius); } }
private void OnHitEnemy(Projectile me, SpeculativeRigidbody enemy, bool fatal) { if (enemy && fatal) { if (enemy.healthHaver) { float bloodDPS = enemy.healthHaver.GetMaxHealth(); bloodDPS *= 0.5f; GoopDefinition Blood = EasyGoopDefinitions.GenerateBloodGoop(bloodDPS, Color.red, 10); DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(Blood); goopManagerForGoopType.TimedAddGoopCircle(enemy.UnitCenter, 3, 0.5f, false); } } }
private void spawnCameraFirePool(bool needsToUseGreenFire) { if (needsToUseGreenFire) { GoopDefinition GreenFireDef = (PickupObjectDatabase.GetById(698) as Gun).DefaultModule.projectiles[0].GetComponent <GoopModifier>().goopDefinition; var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(GreenFireDef); ddgm.AddGoopCircle(Owner.sprite.WorldCenter, 10); } else { TracerRound.goopDefs[0].UsesGreenFire = false; var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(TracerRound.goopDefs[0]); ddgm.AddGoopCircle(Owner.sprite.WorldCenter, 10); } }
private void VenomPool(Projectile projectile) { GoopDefinition goopDefinition; goopDefinition = new GoopDefinition(); goopDefinition.CanBeIgnited = false; goopDefinition.damagesEnemies = false; goopDefinition.damagesPlayers = false; goopDefinition.baseColor32 = new Color32(78, 5, 120, 200); goopDefinition.goopTexture = ResourceExtractor.GetTextureFromResource("Items/Resources/goop_standard_base_001.png"); goopDefinition.AppliesDamageOverTime = true; goopDefinition.HealthModifierEffect = venom; var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition); ddgm.TimedAddGoopCircle(projectile.sprite.WorldCenter, 2.5f, .1f); }
private void OnEnemyKilled(PlayerController player, HealthHaver enemy) { bool flag = enemy.specRigidbody != null && enemy.aiActor != null && base.Owner != null; if (flag && UnityEngine.Random.value <= 0.66f) { PickupObject byId = PickupObjectDatabase.GetById(310); bool flag2 = byId == null; if (!flag2) { WingsItem component = byId.GetComponent <WingsItem>(); GoopDefinition goopDefinition = (component != null) ? component.RollGoop : null; } float duration = 0.75f; DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(Bleaker.goopDefs[UnityEngine.Random.Range(0, 3)]).TimedAddGoopCircle(enemy.specRigidbody.UnitCenter, 4f, duration, false); } }
public static void Init() { goopDefinition = new GoopDefinition(); goopDefinition.CanBeIgnited = false; goopDefinition.damagesEnemies = false; goopDefinition.damagesPlayers = false; goopDefinition.baseColor32 = new Color32(237, 93, 239, 200); goopDefinition.CanBeFrozen = false; goopDefinition.goopTexture = ResourceExtractor.GetTextureFromResource("LostItems/NuclearThrone/NuclearThroneSprite/water_standard_base_001.png"); goopDefinition.SpeedModifierEffect = item.SpeedModifierEffect; goopDefinition.AppliesSpeedModifier = true; goopDefinition.AppliesSpeedModifierContinuously = true; }
private void GoopReload(PlayerController player, Gun gun) { if (gun.ClipShotsRemaining == 0) { int amount = UnityEngine.Random.Range(5, 12); for (int i = 0; i < amount; i++) { float size = UnityEngine.Random.Range(1.5f, 4); float lifetime = UnityEngine.Random.Range(.2f, .4f); Vector2 location = player.sprite.WorldCenter + (UnityEngine.Random.insideUnitCircle * 7); GoopDefinition goop = possibleGoops[UnityEngine.Random.Range(0, possibleGoops.Count)]; DeadlyDeadlyGoopManager ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goop); ddgm.TimedAddGoopCircle(location, size, lifetime); if (goop == Library.goopDefs[5]) { ddgm.ElectrifyGoopCircle(player.sprite.WorldCenter, size); } } } }
// Token: 0x06000046 RID: 70 RVA: 0x00003E98 File Offset: 0x00002098 public void Start() { this.projectile = base.GetComponent <Projectile>(); this.player = (this.projectile.Owner as PlayerController); GameActor owner = this.projectile.Owner; Projectile component = base.gameObject.GetComponent <Projectile>(); if (component != null) { if (this.goop == null) { GoopDefinition goopDef = ResourceManager.LoadAssetBundle("shared_auto_001").LoadAsset <GoopDefinition>("assets/data/goops/water goop.asset"); this.goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDef); } if (this.radius == 0f) { this.radius = 0.75f; } GameManager.Instance.StartCoroutine(this.GoopTrail(component, this.goop)); } }
private void BFN(Projectile projectile) { Vector2 worldCenter = projectile.sprite.WorldCenter; Vector3 position = projectile.sprite.WorldCenter; Projectile projectile1 = ((Gun)ETGMod.Databases.Items[481]).DefaultModule.chargeProjectiles[0].Projectile; GameObject gameObject = SpawnManager.SpawnProjectile(projectile.gameObject, projectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, 0f)); bool flag = projectile1 != null; bool flag2 = flag; if (flag2) { projectile1.baseData.damage = 50f; projectile1.baseData.speed = 0f; projectile1.AdditionalScaleMultiplier = 2.5f; } this.Boom(position); AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); GoopDefinition goopDefinition = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset"); goopDefinition.baseColor32 = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue); goopDefinition.fireColor32 = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue); goopDefinition.UsesGreenFire = false; DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition); goopManagerForGoopType.TimedAddGoopCircle(projectile.sprite.WorldCenter, 10f, 0.1f, false); this.Nuke = assetBundle.LoadAsset <GameObject>("assets/data/vfx prefabs/impact vfx/vfx_explosion_nuke.prefab"); //this.Nuke = assetBundle.LoadAsset<GameObject>("assets/data/vfx prefabs/impact vfx/vfx_explosion_big_new.prefab"); GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(this.Nuke); gameObject2.GetComponent <tk2dBaseSprite>().PlaceAtLocalPositionByAnchor(projectile.specRigidbody.UnitCenter, tk2dBaseSprite.Anchor.LowerCenter); gameObject2.transform.position = gameObject.transform.position.Quantize(0.0625f); gameObject2.GetComponent <tk2dBaseSprite>().UpdateZDepth(); { this.FlashHoldtime = 0.1f; this.FlashFadetime = 0.5f; Pixelator.Instance.FadeToColor(this.FlashFadetime, Color.white, true, this.FlashHoldtime); StickyFrictionManager.Instance.RegisterCustomStickyFriction(0.15f, 1f, false, false); this.FlashHoldtime = 0.1f; } }
private void HandleHit(Projectile arg1, SpeculativeRigidbody arg2, bool arg3) { float currentHealthPercentage1 = arg2.healthHaver.GetCurrentHealthPercentage(); bool flag3 = currentHealthPercentage1 <= 0.9f; if (flag3) { arg2.healthHaver.ApplyDamage(20f, Vector2.zero, "Telefrag", CoreDamageTypes.Void, DamageCategory.Normal, true, null, false); } float currentHealthPercentage = arg2.healthHaver.GetCurrentHealthPercentage(); bool flaga3 = currentHealthPercentage <= 0.3f; bool isBoss = arg2.healthHaver.IsBoss; bool flag4 = flaga3 && !isBoss; if (flag4) { AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); GoopDefinition goopDef = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset"); DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDef).TimedAddGoopCircle(arg2.sprite.WorldBottomCenter, 1.5f, 1.4f, false); this.Execute(arg2); } }
public static GoopDefinition GenerateBloodGoop(float dps, Color Color, float lifeSpan = 20) { GoopDefinition Blood = ScriptableObject.CreateInstance <GoopDefinition>(); Blood.CanBeIgnited = false; Blood.damagesEnemies = true; Blood.damagesPlayers = false; Blood.baseColor32 = Color; Blood.goopTexture = PoisonDef.goopTexture; Blood.lifespan = lifeSpan; Blood.usesLifespan = true; Blood.damagePerSecondtoEnemies = dps; Blood.CanBeElectrified = true; Blood.electrifiedTime = 1; Blood.electrifiedDamagePerSecondToEnemies = 20; Blood.electrifiedDamageToPlayer = 0.5f; Blood.goopDamageTypeInteractions = new List <GoopDefinition.GoopDamageTypeInteraction> { new GoopDefinition.GoopDamageTypeInteraction { damageType = CoreDamageTypes.Electric, electrifiesGoop = true } }; return(Blood); }
private void DoFireAtPosition(IntVector2 position, float timeToLive) { if (!m_GoopDefinition) { m_GoopDefinition = ExpandAssets.LoadOfficialAsset <GoopDefinition>("NapalmGoopThatWorks", ExpandAssets.AssetSource.SharedAuto1); } GameObject newFireGoopObject = new GameObject("Jungle Fire Object" + UnityEngine.Random.Range(0, 99999)); newFireGoopObject.transform.position = position.ToVector3(); // + new Vector3(0.5f, 0.5f); if (newFireGoopObject.transform.position.GetAbsoluteRoom() != null) { newFireGoopObject.transform.SetParent(newFireGoopObject.transform.position.GetAbsoluteRoom().hierarchyParent); } newFireGoopObject.SetActive(false); TimedObjectKiller objectKiller = newFireGoopObject.AddComponent <TimedObjectKiller>(); objectKiller.lifeTime = timeToLive; objectKiller.m_poolType = TimedObjectKiller.PoolType.NonPooled; ExpandUtility.GenerateOrAddToRigidBody(newFireGoopObject, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, IsTrigger: true, dimensions: new IntVector2(1, 1)); SpeculativeRigidbody rigidBody = newFireGoopObject.GetComponent <SpeculativeRigidbody>(); rigidBody.OnTriggerCollision = (SpeculativeRigidbody.OnTriggerDelegate)Delegate.Combine(rigidBody.OnTriggerCollision, new SpeculativeRigidbody.OnTriggerDelegate(HandleTriggerCollision)); newFireGoopObject.SetActive(true); }
private void Update() { if (GameManager.Instance.Dungeon == null) { return; } RoomHandler absoluteRoomFromPosition = self.GetAbsoluteRoom(); List <DeadlyDeadlyGoopManager> roomGoops = absoluteRoomFromPosition.RoomGoops; if (roomGoops != null) { for (int i = 0; i < roomGoops.Count; i++) { bool isOverGoop = roomGoops[i].IsPositionInGoop(self.specRigidbody.UnitCenter); if (isOverGoop) { IntVector2 goopedCellVector = (self.specRigidbody.UnitCenter / DeadlyDeadlyGoopManager.GOOP_GRID_SIZE).ToIntVector2(VectorConversions.Floor); DeadlyDeadlyGoopManager currentGoopManager = roomGoops[i]; GoopDefinition currentGoopDef = currentGoopManager.goopDefinition; if (currentGoopDef.AppliesCharm && currentGoopDef.CharmModifierEffect != null) { self.statusEffectsToApply.Add(currentGoopDef.CharmModifierEffect); if (currentGoopDef.CharmModifierEffect.AppliesTint) { self.AdjustPlayerProjectileTint(currentGoopDef.CharmModifierEffect.TintColor, 2); } } if (currentGoopDef.AppliesCheese && currentGoopDef.CheeseModifierEffect != null) { self.statusEffectsToApply.Add(currentGoopDef.CheeseModifierEffect); if (currentGoopDef.CheeseModifierEffect.AppliesTint) { self.AdjustPlayerProjectileTint(currentGoopDef.CheeseModifierEffect.TintColor, 2); } } if (currentGoopDef.AppliesDamageOverTime && currentGoopDef.HealthModifierEffect != null) { self.statusEffectsToApply.Add(currentGoopDef.HealthModifierEffect); if (currentGoopDef.HealthModifierEffect.AppliesTint) { self.AdjustPlayerProjectileTint(currentGoopDef.HealthModifierEffect.TintColor, 2); } } if ((currentGoopDef.AppliesSpeedModifier || currentGoopDef.AppliesSpeedModifierContinuously) && currentGoopDef.SpeedModifierEffect != null) { self.statusEffectsToApply.Add(currentGoopDef.SpeedModifierEffect); if (currentGoopDef.SpeedModifierEffect.AppliesTint) { self.AdjustPlayerProjectileTint(currentGoopDef.HealthModifierEffect.TintColor, 2); } } if (currentGoopDef.damagesEnemies) { self.baseData.damage += currentGoopDef.damagePerSecondtoEnemies; self.AdjustPlayerProjectileTint(currentGoopDef.baseColor32, 2); } if (currentGoopManager.IsPositionOnFire(self.specRigidbody.UnitCenter)) { self.statusEffectsToApply.Add(currentGoopDef.fireEffect); if (currentGoopDef.fireEffect.AppliesTint) { self.AdjustPlayerProjectileTint(currentGoopDef.fireEffect.TintColor, 2); } } if (currentGoopManager.IsPositionFrozen(self.specRigidbody.UnitCenter)) { self.statusEffectsToApply.Add(StaticStatusEffects.frostBulletsEffect); self.AdjustPlayerProjectileTint(ExtendedColours.frostBulletsTint, 2); } AbsorbedGoops.Add(currentGoopDef); for (int j = 0; j < StaticReferenceManager.AllGoops.Count; j++) { if (StaticReferenceManager.AllGoops[j]) { StaticReferenceManager.AllGoops[j].RemoveGoopCircle(self.specRigidbody.UnitCenter, 0.5f); } } } } } }
void SetGoopIndex(int index) { this.goopIndex = index; currentGoop = goopDefs[index]; tint = tints[index]; }
private void DoGoop(Vector2 pos, GoopDefinition def) { DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(def); goop.TimedAddGoopCircle(pos, 7, 0.75f, true); }
public static void BuildPrefab() { ExpandPrefabs.EXFriendlyForgeHammer = new GameObject("Friendly_Forge_Hammer") { layer = 22 }; GameObject m_HitEffectObject = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().HitEffectAnimator.gameObject); GameObject m_TargetAnimatorObject = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().TargetAnimator.gameObject); GameObject m_ShadowObject = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().ShadowAnimator.gameObject); GameObject m_ShootPointObject = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().ShootPoint.gameObject); m_ShootPointObject.name = ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().ShootPoint.gameObject.name; m_HitEffectObject.transform.parent = ExpandPrefabs.EXFriendlyForgeHammer.transform; m_TargetAnimatorObject.transform.parent = ExpandPrefabs.EXFriendlyForgeHammer.transform; m_ShadowObject.transform.parent = ExpandPrefabs.EXFriendlyForgeHammer.transform; m_ShootPointObject.transform.parent = ExpandPrefabs.EXFriendlyForgeHammer.transform; ExpandPrefabs.EXFriendlyForgeHammer.SetActive(false); m_ShadowObject.GetComponent <tk2dSpriteAnimator>().playAutomatically = false; m_ShadowObject.GetComponent <tk2dSpriteAnimator>().DefaultClipId = 28; tk2dSprite m_NewHammerSprite = ExpandPrefabs.EXFriendlyForgeHammer.AddComponent <tk2dSprite>(); ExpandUtility.DuplicateSprite(m_NewHammerSprite, ExpandPrefabs.ForgeHammer.GetComponent <tk2dSprite>()); tk2dSpriteAnimation m_SourceHammerAnimationLibrary = ExpandPrefabs.ForgeHammer.GetComponent <tk2dSpriteAnimator>().Library; tk2dSpriteAnimation m_HammerAnimationLibrary = ExpandPrefabs.EXFriendlyForgeHammer.AddComponent <tk2dSpriteAnimation>(); List <tk2dSpriteAnimationClip> m_Clips = new List <tk2dSpriteAnimationClip>(); foreach (tk2dSpriteAnimationClip clip in m_SourceHammerAnimationLibrary.clips) { if (!string.IsNullOrEmpty(clip.name)) { if (clip.name.ToLower().StartsWith("hammer_right_out")) { m_Clips.Add(ExpandUtility.DuplicateAnimationClip(clip)); } else if (clip.name.ToLower().StartsWith("hammer_left_out")) { m_Clips.Add(ExpandUtility.DuplicateAnimationClip(clip)); } else if (clip.name.ToLower().StartsWith("hammer_right_slam")) { m_Clips.Add(ExpandUtility.DuplicateAnimationClip(clip)); } else if (clip.name.ToLower().StartsWith("hammer_left_slam")) { m_Clips.Add(ExpandUtility.DuplicateAnimationClip(clip)); } } } if (m_Clips.Count > 0) { m_HammerAnimationLibrary.clips = m_Clips.ToArray(); } ExpandUtility.GenerateSpriteAnimator(ExpandPrefabs.EXFriendlyForgeHammer, m_HammerAnimationLibrary, 0, 0, false, false, false, false, false, false, 0, 0, false, false, false); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXFriendlyForgeHammer, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, true, true, false, false, false, false, false, true, new IntVector2(30, 24), new IntVector2(16, 24)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXFriendlyForgeHammer, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, true, true, false, false, false, false, false, true, new IntVector2(30, 8), new IntVector2(16, 16)); AIBulletBank m_HammerBulletBank = ExpandPrefabs.EXFriendlyForgeHammer.AddComponent <AIBulletBank>(); m_HammerBulletBank.useDefaultBulletIfMissing = true; m_HammerBulletBank.transforms = new List <Transform>(0); m_HammerBulletBank.Bullets = new List <AIBulletBank.Entry>() { new AIBulletBank.Entry() { Name = "default", BulletObject = ExpandPrefabs.EXFriendlyForgeHammerBullet, OverrideProjectile = false, PlayAudio = false, AudioSwitch = string.Empty, AudioEvent = string.Empty, AudioLimitOncePerFrame = false, AudioLimitOncePerAttack = false, MuzzleLimitOncePerFrame = false, MuzzleInheritsTransformDirection = false, SpawnShells = false, ShellForce = 1.75f, ShellForceVariance = 0.75f, DontRotateShell = false, ShellGroundOffset = 0, ShellsLimitOncePerFrame = false, rampBullets = false, rampStartHeight = 0, rampTime = 0, conditionalMinDegFromNorth = 0, forceCanHitEnemies = true, suppressHitEffectsIfOffscreen = false, preloadCount = 0, ProjectileData = new ProjectileData() { damage = 0, speed = 0, range = 0, damping = 0, UsesCustomAccelerationCurve = false, AccelerationCurve = new AnimationCurve(), CustomAccelerationCurveDuration = 0, onDestroyBulletScript = new BulletScriptSelector() { scriptTypeName = string.Empty } }, MuzzleFlashEffects = new VFXPool() { type = VFXPoolType.None, effects = new VFXComplex[0] } } }; GoopDefinition m_HammerGoopDefinition = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().GoopToDo); ExpandForgeHammerComponent EXFriendlyHammerController = ExpandPrefabs.EXFriendlyForgeHammer.AddComponent <ExpandForgeHammerComponent>(); EXFriendlyHammerController.HitEffectAnimator = m_HitEffectObject.GetComponent <tk2dSpriteAnimator>(); EXFriendlyHammerController.TargetAnimator = m_TargetAnimatorObject.GetComponent <tk2dSpriteAnimator>(); EXFriendlyHammerController.ShadowAnimator = m_ShadowObject.GetComponent <tk2dSpriteAnimator>(); EXFriendlyHammerController.ShootPoint = m_ShootPointObject.transform; EXFriendlyHammerController.GoopToDo = m_HammerGoopDefinition; FakePrefab.MarkAsFakePrefab(ExpandPrefabs.EXFriendlyForgeHammer); DontDestroyOnLoad(ExpandPrefabs.EXFriendlyForgeHammer); }
private void fuckShitUp(Projectile projectile) { string header = ""; string text = ""; int num3 = UnityEngine.Random.Range(0, 19); bool flag3 = num3 == 0; if (flag3) { header = "You got nothing!"; text = "Get dunked on!"; } bool flag4 = num3 == 1; if (flag4) { AkSoundEngine.PostEvent("Play_OBJ_chaff_blast_01", base.gameObject); this.FlashHoldtime = 3f; this.FlashFadetime = 4f; Pixelator.Instance.FadeToColor(this.FlashFadetime, Color.white, true, this.FlashHoldtime); StickyFrictionManager.Instance.RegisterCustomStickyFriction(0.15f, 4f, false, false); this.FlashHoldtime = 3f; } bool flag5 = num3 == 2; if (flag5) { header = "Your bullets bounce!"; text = ""; ApplyStat(base.LastOwner, PlayerStats.StatType.AdditionalShotBounces, 2f, StatModifier.ModifyMethod.ADDITIVE); } bool flag6 = num3 == 3; if (flag6) { header = "You turn to Glass."; text = ""; ApplyStat(base.LastOwner, PlayerStats.StatType.Damage, 2f, StatModifier.ModifyMethod.MULTIPLICATIVE); ApplyStat(base.LastOwner, PlayerStats.StatType.Health, -5f, StatModifier.ModifyMethod.ADDITIVE); } bool flag7 = num3 == 4; if (flag7) { header = "The Game."; text = "You just lost it."; } bool flag9 = num3 == 5; if (flag9) { ApplyStat(base.LastOwner, PlayerStats.StatType.AdditionalItemCapacity, 1f, StatModifier.ModifyMethod.ADDITIVE); for (int counter = 0; counter < UnityEngine.Random.Range(1f, 9f); counter++) { PickupObject var = Gungeon.Game.Items["bny:ancient_whisper"]; LootEngine.GivePrefabToPlayer(var.gameObject, base.LastOwner); } } bool flag10 = num3 == 6; if (flag10) { header = "You fool!"; text = ""; ApplyStat(base.LastOwner, PlayerStats.StatType.Curse, 10f, StatModifier.ModifyMethod.ADDITIVE); } bool flag11 = num3 == 7; if (flag11) { header = "Try again!"; text = ""; for (int counter = 0; counter < UnityEngine.Random.Range(2f, 4f); counter++) { PickupObject var = Gungeon.Game.Items["bny:d-grenade"]; LootEngine.GivePrefabToPlayer(var.gameObject, base.LastOwner); } } bool flag12 = num3 == 8; if (flag12) { header = "mmm yees"; text = "junk"; for (int counter = 0; counter < UnityEngine.Random.Range(1f, 7f); counter++) { LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(127).gameObject, base.LastOwner); } } bool flag13 = num3 == 9; if (flag13) { header = "Unlocks!"; text = ""; for (int counter = 0; counter < UnityEngine.Random.Range(1f, 3f); counter++) { LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(67).gameObject, base.LastOwner); } } bool flag14 = num3 == 10; if (flag14) { GameManager.Instance.LoadCustomLevel("tt_bullethell"); } bool flag15 = num3 == 11; if (flag15) { GameManager.Instance.LoadCustomLevel("tt_castle"); } bool flag16 = num3 == 12; if (flag16) { IntVector2 randomVisibleClearSpot6 = base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(1, 1); GameManager.Instance.RewardManager.SpawnRewardChestAt(randomVisibleClearSpot6, -1f, PickupObject.ItemQuality.EXCLUDED); } bool flag17 = num3 == 13; if (flag17) { Vector3 position = projectile.sprite.WorldCenter; this.Boom(position); AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); GoopDefinition goopDefinition = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset"); goopDefinition.baseColor32 = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue); goopDefinition.fireColor32 = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue); goopDefinition.UsesGreenFire = false; DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition); goopManagerForGoopType.TimedAddGoopCircle(projectile.sprite.WorldCenter, 10f, 0.1f, false); this.Nuke = assetBundle.LoadAsset <GameObject>("assets/data/vfx prefabs/impact vfx/vfx_explosion_nuke.prefab"); GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(this.Nuke); gameObject2.GetComponent <tk2dBaseSprite>().PlaceAtLocalPositionByAnchor(projectile.specRigidbody.UnitCenter, tk2dBaseSprite.Anchor.LowerCenter); gameObject2.transform.position = gameObject.transform.position.Quantize(0.0625f); gameObject2.GetComponent <tk2dBaseSprite>().UpdateZDepth(); { this.FlashHoldtime = 0.1f; this.FlashFadetime = 0.5f; Pixelator.Instance.FadeToColor(this.FlashFadetime, Color.white, true, this.FlashHoldtime); StickyFrictionManager.Instance.RegisterCustomStickyFriction(0.15f, 1f, false, false); this.FlashHoldtime = 0.1f; } } bool flag18 = num3 == 14; if (flag18) { header = "Oops! Inflation!"; text = ""; ApplyStat(base.LastOwner, PlayerStats.StatType.MoneyMultiplierFromEnemies, 5f, StatModifier.ModifyMethod.MULTIPLICATIVE); ApplyStat(base.LastOwner, PlayerStats.StatType.GlobalPriceMultiplier, 5f, StatModifier.ModifyMethod.MULTIPLICATIVE); } bool flag19 = num3 == 15; if (flag19) { header = "Brrrap Papap Pop!"; text = "Pop! Brrrrrap!"; ApplyStat(base.LastOwner, PlayerStats.StatType.ShadowBulletChance, 10f, StatModifier.ModifyMethod.ADDITIVE); } bool flag20 = num3 == 16; if (flag20) { header = "Money!"; text = ""; for (int counter = 0; counter < UnityEngine.Random.Range(24f, 96f); counter++) { LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(68).gameObject, base.LastOwner); } } bool flag21 = num3 == 17; if (flag21) { for (int counter = 0; counter < UnityEngine.Random.Range(1f, 5f); counter++) { LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(224).gameObject, base.LastOwner); } } bool flag22 = num3 == 18; if (flag22) { header = "You can take your time..."; text = ""; ApplyStat(base.LastOwner, PlayerStats.StatType.ProjectileSpeed, .3f, StatModifier.ModifyMethod.MULTIPLICATIVE); ApplyStat(base.LastOwner, PlayerStats.StatType.EnemyProjectileSpeedMultiplier, .3f, StatModifier.ModifyMethod.MULTIPLICATIVE); } bool flag23 = num3 == 19; if (flag23) { LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(137).gameObject, base.LastOwner); } this.Notify(header, text); }
public static void DefineDefaultGoops() { //Sets up the goops that have to be extracted from asset bundles AssetBundle assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001"); EasyGoopDefinitions.goopDefs = new List <GoopDefinition>(); foreach (string text in EasyGoopDefinitions.goops) { GoopDefinition goopDefinition; try { GameObject gameObject = assetBundle.LoadAsset(text) as GameObject; goopDefinition = gameObject.GetComponent <GoopDefinition>(); } catch { goopDefinition = (assetBundle.LoadAsset(text) as GoopDefinition); } goopDefinition.name = text.Replace("assets/data/goops/", "").Replace(".asset", ""); EasyGoopDefinitions.goopDefs.Add(goopDefinition); } List <GoopDefinition> list = EasyGoopDefinitions.goopDefs; //Define the asset bundle goops FireDef = EasyGoopDefinitions.goopDefs[0]; OilDef = EasyGoopDefinitions.goopDefs[1]; PoisonDef = EasyGoopDefinitions.goopDefs[2]; BlobulonGoopDef = EasyGoopDefinitions.goopDefs[3]; WebGoop = EasyGoopDefinitions.goopDefs[4]; WaterGoop = EasyGoopDefinitions.goopDefs[5]; //HONEY GOOP - An Amber Goop that slows enemies and players #region HoneyGoop HoneyGoop = new GoopDefinition(); HoneyGoop.CanBeIgnited = false; HoneyGoop.damagesEnemies = false; HoneyGoop.damagesPlayers = false; HoneyGoop.baseColor32 = ExtendedColours.honeyYellow; HoneyGoop.goopTexture = ResourceExtractor.GetTextureFromResource("NevernamedsItems/Resources/honey_standard_base_001.png"); HoneyGoop.usesLifespan = false; HoneyGoop.playerStepsChangeLifetime = true; HoneyGoop.playerStepsLifetime = 2.5f; HoneyGoop.AppliesSpeedModifier = true; HoneyGoop.AppliesSpeedModifierContinuously = true; HoneyGoop.SpeedModifierEffect = StaticStatusEffects.HoneySpeedMod; PlayerFriendlyHoneyGoop = UnityEngine.Object.Instantiate <GoopDefinition>(HoneyGoop); PlayerFriendlyHoneyGoop.SpeedModifierEffect = StaticStatusEffects.FriendlyHoneySpeedMod; PlayerFriendlyHoneyGoop.playerStepsChangeLifetime = false; #endregion //PROPULSION GOOP - An orange goop that speeds up enemies and players #region PropulsionGoop PropulsionGoop = new GoopDefinition(); PropulsionGoop.CanBeIgnited = false; PropulsionGoop.damagesEnemies = false; PropulsionGoop.damagesPlayers = false; PropulsionGoop.baseColor32 = ExtendedColours.vibrantOrange; PropulsionGoop.goopTexture = PoisonDef.goopTexture; PropulsionGoop.lifespan = 30f; PropulsionGoop.usesLifespan = true; PropulsionGoop.AppliesSpeedModifier = true; PropulsionGoop.AppliesSpeedModifierContinuously = true; PropulsionGoop.SpeedModifierEffect = StaticStatusEffects.PropulsionGoopSpeedMod; #endregion //PLAYER FRIENDLY WEB GOOP - A web-textured goop that slows down enemies, but not players. #region PlayerFriendlyWebGoop GoopDefinition midInitWeb = UnityEngine.Object.Instantiate <GoopDefinition>(WebGoop); midInitWeb.playerStepsChangeLifetime = false; midInitWeb.SpeedModifierEffect = StaticStatusEffects.FriendlyWebGoopSpeedMod; PlayerFriendlyWebGoop = midInitWeb; #endregion //PIT GOOP - A black goop that sucks enemies down into itself #region PitGoop PitGoop = new GoopDefinition(); PitGoop.CanBeIgnited = false; PitGoop.damagesEnemies = false; PitGoop.damagesPlayers = false; PitGoop.baseColor32 = Color.black; PitGoop.goopTexture = ResourceExtractor.GetTextureFromResource("NevernamedsItems/Resources/pitgooptex.png"); PitGoop.usesLifespan = true; PitGoop.lifespan = 30f; #endregion //PLAGUE GOOP - A sickly purple goop that damages enemies over time, and makes them leave a trail that enplagues other enemies. #region PlagueGoop PlagueGoop = new GoopDefinition(); PlagueGoop.CanBeIgnited = false; PlagueGoop.damagesEnemies = false; PlagueGoop.damagesPlayers = false; PlagueGoop.baseColor32 = ExtendedColours.plaguePurple; PlagueGoop.goopTexture = PoisonDef.goopTexture; PlagueGoop.lifespan = 10; PlagueGoop.usesLifespan = true; PlagueGoop.HealthModifierEffect = StaticStatusEffects.StandardPlagueEffect; PlagueGoop.AppliesDamageOverTime = true; #endregion //ENEMYFRIENDLY POISON - Poison that doesnt hurt enemies #region EnemyFriendlyPoisonGoop GoopDefinition midInitPois = UnityEngine.Object.Instantiate <GoopDefinition>(PoisonDef); midInitPois.damagesEnemies = false; midInitPois.HealthModifierEffect = StatusEffectHelper.GeneratePoison(3, false, 4); EnemyFriendlyPoisonGoop = midInitPois; #endregion //ENEMYFRIENDLY FIRE - Fire that doesn't hurt enemies #region EnemyFriendlyFireGoop GoopDefinition midInitFire = UnityEngine.Object.Instantiate <GoopDefinition>(FireDef); midInitFire.damagesEnemies = false; midInitFire.damagePerSecondtoEnemies = 0; midInitFire.fireBurnsEnemies = false; midInitFire.AppliesDamageOverTime = false; midInitFire.fireDamagePerSecondToEnemies = 0; EnemyFriendlyFireGoop = midInitFire; #endregion //PLAYERFRIENDLY POISON - Poison that doesnt hurt the player #region PlayerFriendlyPoisonGoop GoopDefinition midInitFrenPois = UnityEngine.Object.Instantiate <GoopDefinition>(PoisonDef); midInitFrenPois.damagesEnemies = true; midInitFrenPois.damagesPlayers = false; midInitFrenPois.HealthModifierEffect = StatusEffectHelper.GeneratePoison(3, true, 4, false); PlayerFriendlyPoisonGoop = midInitFrenPois; #endregion //ENEMYFRIENDLY FIRE - Fire that doesn't hurt enemies #region PlayerFriendlyFireGoop GoopDefinition midInitFrenFire = UnityEngine.Object.Instantiate <GoopDefinition>(FireDef); midInitFrenFire.damagesPlayers = false; midInitFrenFire.fireDamageToPlayer = 0; PlayerFriendlyFireGoop = midInitFrenFire; #endregion }