protected override void DoEffect(PlayerController user) { base.DoEffect(user); AIActor actor = user.CurrentRoom.GetNearestEnemy(Camera.main.ScreenToWorldPoint(Input.mousePosition), out _); if (actor && actor.healthHaver && !actor.healthHaver.IsBoss) { BoxOTools.AddPermanentCharm(actor); if (user.PlayerHasActiveSynergy("Flock Together") && user.CurrentRoom != null) { List <AIActor> synergyActors = user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All); for (int i = 0; i < synergyActors.Count; i++) { if (Vector2.Distance(synergyActors[i].specRigidbody.UnitCenter, actor.specRigidbody.UnitCenter) < 5) { BoxOTools.AddPermanentCharm(synergyActors[i]); } } } } if (user.PlayerHasActiveSynergy("Birds of a Feather") && user.CurrentRoom != null) { AIActor bird = BoxOTools.SummonAtRandomPosition("ed37fa13e0fa4fcf8239643957c51293", user); BoxOTools.AddPermanentCharm(bird); } }
public void PostProcessProjectile(Projectile projectile, float chungo) { PlayerController player = base.Owner; float Chance = 0.8f; if (player.HasGun(7)) { Chance -= 0.05f; } if (BoxOTools.BasicRandom(Chance) && !CoolAsIce) { CoolAsIce = true; StartCoroutine(StartCooldown()); if (BoxOTools.BasicRandom(0.98f) && !SharkMFs) { SharkMFs = true; StartCoroutine(SharkCooldown()); player.HandleProjectile(25f, (player.HasGun(359)) ? 110 : 90f, 359, true, Vector2.zero, true); } else { player.HandleProjectile(20f, (player.HasGun(7)) ? 15 : 10, 7, false, Vector2.zero, true); } } }
private void OnHitEnemy(Projectile arg1, SpeculativeRigidbody arg2, bool arg3) { try { if (arg2 != null && arg2.aiActor != null && Owner != null) { if (BoxOTools.BasicRandom(.5f)) { if (arg2.aiActor.GetEffect("weezer") != null) { GameActorUnweaveEffect unweave = arg2.aiActor.GetEffect("weezer") as GameActorUnweaveEffect; unweave.duration += 5; unweave.IncreaseIfAmountNotHit(arg2.aiActor); } else { GameActorUnweaveEffect unweave = weezer; arg2.aiActor.ApplyEffect(unweave); } } } } catch (Exception eror) { eror.ToString().Log(); } }
private void PostProcessProjectile(Projectile sourceProjectile, float effectChanceScalar) { try { if (sourceProjectile.GetComponent <HomingModifier>() == null) { BoomerangEffect boom = sourceProjectile.gameObject.AddComponent <BoomerangEffect>(); boom.m_speed = sourceProjectile.baseData.speed / 10; boom.startingDamage = sourceProjectile.baseData.damage; sourceProjectile.baseData.range *= 10; } else { sourceProjectile.baseData.damage *= 1.3f; } if (BoxOTools.BasicRandom(0.9f) && Owner.PlayerHasActiveSynergy("Suicide King")) { Owner.HandleProjectile(40, 1, 39, false, Vector2.zero); } if (BoxOTools.BasicRandom(0.8f) && Owner.PlayerHasActiveSynergy("Boomerang Bros")) { Owner.HandleProjectile(20, 6, 448, false, Vector2.zero); } } catch (Exception ex) { ETGModConsole.Log(ex.Message, false); } this.damageToDo = sourceProjectile.baseData.damage; }
protected override void DoEffect(PlayerController user) { base.DoEffect(user); if (user.CurrentRoom != null && user) { List <AIActor> activeEnemies = user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All); if (activeEnemies.Count != 0 && activeEnemies != null) { for (int counter = 0; counter < activeEnemies.Count; counter++) { AIActor actor = activeEnemies[counter]; if (actor && actor.healthHaver && !actor.healthHaver.IsBoss && actor.gameObject.GetComponent <GhostAllyComponent>() == null && actor.healthHaver.IsVulnerable && actor.IsNormalEnemy && !actor.IsMimicEnemy && actor.GetResistanceForEffectType(EffectResistanceType.Charm) != 1) { List <int> Colors = new List <int> { 7, 141, 222 }; GameActorCharmEffect ghostCharm = GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect; ghostCharm.OverheadVFX = null; ghostCharm.TintColor = new Color(Colors[0], Colors[1], Colors[2]); ghostCharm.TintColor.a /= 100; string guid = actor.EnemyGuid; AIActor aiactor = BoxOTools.SummonAtRandomPosition(guid, user); aiactor.AddPermanentCharm(ghostCharm); aiactor.gameObject.AddComponent <GhostAllyComponent>(); aiactor.HandleReinforcementFallIntoRoom(counter / 10); } } } } }
public static void DoubleKeys(Action <KeyBulletPickup, PlayerController> acshon, KeyBulletPickup key, PlayerController player) { acshon(key, player); foreach (PassiveItem passives in player.passiveItems) { if (passives is KeyDoubler && BoxOTools.BasicRandom(0.5f)) { player.carriedConsumables.KeyBullets += 1; player.BloopItemAboveHead(itemator.sprite); if (player.PlayerHasActiveSynergy("Twice the Pride")) { if (player.characterIdentity != PlayableCharacters.Robot) { player.healthHaver.ApplyHealing(1f); } else { player.healthHaver.Armor += 1; } AkSoundEngine.PostEvent("Play_OBJ_heart_heal_01", passives.gameObject); player.PlayEffectOnActor(ResourceCache.Acquire("Global VFX/vfx_healing_sparkles_001") as GameObject, Vector3.zero); } } } }
private void PostProcessBeamChanceTick(BeamController beamController) { if (BoxOTools.BasicRandom(0.7f) && !CoolAsIce) { ShootPlagueShit(); } }
void Event(Chest chest, PlayerController player) { if (player.carriedConsumables.KeyBullets > 0 && BoxOTools.BasicRandom(0.5f)) { player.carriedConsumables.KeyBullets--; } }
private void PostProcessBeamChanceTick(BeamController beamController) { if (BoxOTools.BasicRandom(Owner.PlayerHasActiveSynergy("Mahoguny Sapling") ? 0.6f : 0.75f) && CoolAsIce) { ShootLeafShit(); } }
private void PostProcessProjectile(Projectile projectile, float Chance) { if (BoxOTools.BasicRandom(0.7f) && !CoolAsIce) { ShootPlagueShit(); } }
private void PostProcessProjectile(Projectile projectile, float Chance) { if (BoxOTools.BasicRandom(Owner.PlayerHasActiveSynergy("Mahoguny Sapling") ? 0.6f : 0.75f) && CoolAsIce && Owner) { ShootLeafShit(); } }
private void OnEnemyDamaged(float damage, bool fatal, HealthHaver enemy) { if (enemy.specRigidbody != null && enemy.aiActor != null && base.Owner != null && enemy != null) { if (fatal) { if (BoxOTools.BasicRandom(0.97f)) { if (BoxOTools.BasicRandom(0.99f) && !base.Owner.HasPickupID(580) && !base.Owner.HasPickupID(641)) { if (BoxOTools.BasicRandom(0.05f) && !base.Owner.HasPickupID(580)) { LootEngine.SpawnItem(PickupObjectDatabase.GetById(580).gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f, false, true, false); } else if (!base.Owner.HasPickupID(641)) { LootEngine.SpawnItem(PickupObjectDatabase.GetById(641).gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f, false, true, false); } } else { LootEngine.SpawnItem(PickupObjectDatabase.GetById(127).gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f, false, true, false); } } } } }
private void PostProcessBeamChanceTick(BeamController beamController) { PlayerController player = base.Owner; float Chance = 0.9f; if (player.HasGun(7)) { Chance -= 0.05f; } if (BoxOTools.BasicRandom(Chance) && !CoolAsIce) { CoolAsIce = true; StartCoroutine(StartCooldown()); if (BoxOTools.BasicRandom(0.97f) && !SharkMFs) { SharkMFs = true; StartCoroutine(SharkCooldown()); player.HandleProjectile(25f, (player.HasGun(359)) ? 110 : 95f, 359, true, Vector2.zero, true); } else { player.HandleProjectile(20f, (player.HasGun(7)) ? 20 : 10, 7, false, Vector2.zero, true); } } }
private void PostProcessProjectile(Projectile projectile, float arg2) { if (projectile && BoxOTools.BasicRandom(0.85f)) { projectile.AdjustPlayerProjectileTint(Color.red, 5); projectile.OnDestruction += PushinPeopleToTheGround; } }
private void Player_PostProcessProjectile(Projectile projectile, float arg2) { if (projectile && BoxOTools.BasicRandom(0.9f)) { projectile.baseData.damage *= 2; projectile.AdjustPlayerProjectileTint(Color.yellow, 5); } }
private void PostProcessProjectile(Projectile projectile, float chungo) { if (BoxOTools.BasicRandom(base.Owner.CurrentGun.PickupObjectId == 7 ? 0.4f : 0.9f) && !CoolAsIce && projectile) { CoolAsIce = true; projectile.AdjustPlayerProjectileTint(Color.blue, 5); projectile.OnDestruction += Wave; } }
private void OnEnemyDamaged(Projectile arg1, SpeculativeRigidbody arg2, bool arg3) { if (arg2 && arg2.healthHaver && arg2.aiActor) { if ((Owner.PlayerHasActiveSynergy("Mirror Cannon") || BoxOTools.BasicRandom(0.9f)) && !arg2.healthHaver.IsBoss) { arg2.aiActor.gameActor.ApplyEffect(EnemyDebuff, 1f, null); } } }
public void AmmoInator(PlayerController player, HealthHaver healed) { if (healed && healed.specRigidbody && player) { if (BoxOTools.BasicRandom(0.825f) && Shells < Mathf.FloorToInt(55 * player.stats.GetStatValue(PlayerStats.StatType.AmmoCapacityMultiplier)) && player.HasGun(Gungeon.Game.Items["psm:wastelanders_shotgun"].PickupObjectId)) { LootEngine.SpawnItem(PickupObjectDatabase.GetById(NuclearAmmoPickup.id).gameObject, healed.specRigidbody.UnitCenter, Vector2.zero, 1f, true, true); } } }
private void Doublinator(PlayerController arg1, ShopItemController arg2) { if (arg1 && arg2 && arg2.item) { if (arg2.item.quality != ItemQuality.COMMON && arg2.item.quality != ItemQuality.SPECIAL && arg2.item.quality != ItemQuality.EXCLUDED && BoxOTools.BasicRandom(0.4f)) { LootEngine.GivePrefabToPlayer(BoxOTools.GetTotallyRandomItem(arg2.item.quality, false).gameObject, arg1); } } }
private void OnHitEnemy(Projectile arg1, SpeculativeRigidbody arg2, bool arg3) { if (arg2 != null && arg2.aiActor != null && Owner != null && arg2.healthHaver && arg2.healthHaver.IsVulnerable) { if (BoxOTools.BasicRandom(0.97f)) { LootEngine.SpawnItem(PickupObjectDatabase.GetById(68).gameObject, arg2.UnitCenter, Vector2.zero, 1f, false, true, true); } } }
public void MineSynergy() { if (Owner.PlayerHasActiveSynergy("Into the Depths")) { if (Owner.CurrentRoom != null) { AIActor actor = BoxOTools.SummonAtRandomPosition("3cadf10c489b461f9fb8814abc1a09c1", Owner); actor.AddPermanentCharm(); } } }
public static void Healing(Action <HealthPickup, PlayerController> acshon, HealthPickup key, PlayerController player) { acshon(key, player); foreach (PassiveItem passives in player.passiveItems) { if (passives is CodexUmbra && BoxOTools.BasicRandom(.5f)) { GiveRandomItem(player); } } }
public static void VeryBlank(Action <SilencerItem, PlayerController> acshon, SilencerItem key, PlayerController player) { acshon(key, player); foreach (PassiveItem passives in player.passiveItems) { if (passives is CodexUmbra && BoxOTools.BasicRandom(.5f)) { GiveRandomItem(player); } } }
public static void VeryShady(Action <KeyBulletPickup, PlayerController> acshon, KeyBulletPickup key, PlayerController player) { acshon(key, player); foreach (PassiveItem passives in GameManager.Instance.GetActivePlayerClosestToPoint(key.specRigidbody.UnitCenter, true).passiveItems) { if (passives is CodexUmbra && BoxOTools.BasicRandom(.5f)) { GiveRandomItem(player); } } }
public static void PigHook(Action <CompanionController, PlayerController> orig, CompanionController companion, PlayerController owner) { orig(companion, owner); if (companion && companion.specRigidbody && companion.name.StartsWith("Pig") && owner.PlayerHasActiveSynergy("Oink")) { if (BoxOTools.BasicRandom(0.4f)) { LootEngine.SpawnCurrency(companion.specRigidbody.UnitCenter, 2); } } }
// the old "I don't lnow how to balance my items" version private void OnEnemyDamaged(float damage, bool fatal, HealthHaver enemy) { if (enemy.specRigidbody != null && enemy.aiActor != null && base.Owner != null) { if (fatal) { if (BoxOTools.BasicRandom(.985f) && !GameStatsManager.Instance.IsRainbowRun) { GameManager.Instance.RewardManager.SpawnTotallyRandomItem(enemy.specRigidbody.UnitCenter); } } } }
private void OnEnemyDamaged(float damage, bool fatal, HealthHaver enemy) { if (!Owner.PlayerHasActiveSynergy("REANIMATE")) { if (fatal && enemy && enemy.aiActor && enemy.aiActor.EnemyGuid != "699cd24270af4cd183d671090d8323a1") { if (Owner.CurrentRoom != null) { if (BoxOTools.BasicRandom(0.975f) && DoneKill) { try { AIActor aiactor = BoxOTools.SummonAtRandomPosition("699cd24270af4cd183d671090d8323a1", Owner); if (base.Owner.PlayerHasActiveSynergy("keysight")) { aiactor.IsHarmlessEnemy = true; aiactor.BecomeBlackPhantom(); } if (!base.Owner.PlayerHasActiveSynergy("keysight")) { aiactor.PreventBlackPhantom = true; } aiactor.HandleReinforcementFallIntoRoom(0f); DoneKill = false; } catch (Exception Error) { ETGModConsole.Log(Error.Message); } } } } } else { if (BoxOTools.BasicRandom(0.8f) && enemy && enemy.aiActor && Owner.CurrentRoom != null && fatal) { if (BoxOTools.BasicRandom(0.3f) || base.Owner.PlayerHasActiveSynergy("keysight")) { AIActor aiactor = BoxOTools.SummonAtRandomPosition("336190e29e8a4f75ab7486595b700d4a", Owner); BoxOTools.AddPermanentCharm(aiactor); aiactor.HandleReinforcementFallIntoRoom(0f); } else { AIActor aiactor = BoxOTools.SummonAtRandomPosition("95ec774b5a75467a9ab05fa230c0c143", Owner); BoxOTools.AddPermanentCharm(aiactor); aiactor.HandleReinforcementFallIntoRoom(0f); } } } }
private void OnEnemyDamaged(float damage, bool fatal, HealthHaver enemy) { XP += (int)damage; if (XP >= 1000 && Level < 5) { XP = 0; BoxOTools.Notify("LEVEL UP!", $"{Level + 1} => {Level + 2}", "katmod/Resources/Swarm/beeswarm", UINotificationController.NotificationColor.PURPLE); Level++; } if (enemy.specRigidbody != null && enemy.aiActor != null && base.Owner != null) { if (fatal) { //if (BoxOTools.BasicRandom(.9f - (Level / 100))) { int pick = UnityEngine.Random.Range(1, 4 + Drone.Level); switch (pick) { default: ETGModConsole.Log($"Unknown number {pick} appeared at {Level}, oopsy daisies"); LootEngine.SpawnItem(Gungeon.Game.Items["psm:whitesplode"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f); break; case 1: LootEngine.SpawnItem(Gungeon.Game.Items["psm:whitesplode"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f); break; case 2: LootEngine.SpawnItem(Gungeon.Game.Items["psm:redsplode"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f); break; case 3: LootEngine.SpawnItem(Gungeon.Game.Items["psm:bluesplode"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f); break; case 4: LootEngine.SpawnItem(Gungeon.Game.Items["psm:beesneak"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f); break; case 5: LootEngine.SpawnItem(Gungeon.Game.Items["psm:whiteup"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f); break; case 6: LootEngine.SpawnItem(Gungeon.Game.Items["psm:yvswarm"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f); break; } } } } }
public void OnHit(Projectile proj, SpeculativeRigidbody target, bool flag) { if (proj && proj.specRigidbody) { target?.aiActor?.ParentRoom?.BetterDoToEnemiesInRadius(proj.specRigidbody.UnitCenter, 6, delegate(AIActor enemy) { if (BoxOTools.BasicRandom(0.5f)) { GameActorHealthEffect poisonEffect = Gungeon.Game.Items["irradiated_lead"].GetComponent <BulletStatusEffectItem>().HealthModifierEffect; enemy.ApplyEffect(poisonEffect); } }); } }
private void ItemGiver(PlayerController player) { if (BoxOTools.BasicRandom(.91f) && player && player.specRigidbody && !player.CurrentRoom.PlayerHasTakenDamageInThisRoom) { if (Owner.PlayerHasActiveSynergy("Lucky Bird")) { GameManager.Instance.RewardManager.SpawnTotallyRandomItem(player.specRigidbody.UnitCenter, ItemQuality.A, ItemQuality.S); } else { GameManager.Instance.RewardManager.SpawnTotallyRandomItem(player.specRigidbody.UnitCenter); } LootEngine.DoDefaultItemPoof(player.specRigidbody.UnitCenter); } }