public override void PostProcessProjectile(Projectile projectile) { if (projectile.Owner is PlayerController) { PlayerController player = projectile.Owner as PlayerController; if (player.PlayerHasActiveSynergy("You Need To Chill")) { SimpleFreezingBulletBehaviour freezing = projectile.gameObject.GetComponent <SimpleFreezingBulletBehaviour>(); if (freezing != null) { freezing.freezeAmount *= 2; } } } }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Master's Gun", "mastersgun"); Game.Items.Rename("outdated_gun_mods:master's_gun", "nn:masters_gun"); gun.gameObject.AddComponent <MastersGun>(); gun.SetShortDescription("Firing On All Cylinders"); gun.SetLongDescription("A humongous firearm, created by the Gungeon's Master to fire the legendary master rounds, though he never truly finished it." + "\n\nAfter it's recent rediscovery, the Blacksmith managed to finish the spectacular weapon, and even forged Master-Sized bullet replicas for ammo." + "\n\nNothing can beat the gun's original purpose though, so getting your grubby hands on some master rounds would be good."); gun.SetupSprite(null, "mastersgun_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 11); gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false); //GUN STATS gun.DefaultModule.ammoCost = 1; gun.DefaultModule.shootStyle = ProjectileModule.ShootStyle.SemiAutomatic; gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; gun.reloadTime = 1f; gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(37) as Gun).muzzleFlashEffects; gun.DefaultModule.cooldownTime = 0.4f; gun.DefaultModule.numberOfShotsInClip = 6; gun.barrelOffset.transform.localPosition = new Vector3(3.62f, 1.81f, 0f); gun.SetBaseMaxAmmo(50); gun.gunClass = GunClass.PISTOL; //DEFAULT BULLET STATS Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); gun.DefaultModule.projectiles[0] = projectile; projectile.baseData.damage *= 10f; projectile.ignoreDamageCaps = true; projectile.baseData.speed *= 1f; projectile.pierceMinorBreakables = true; PierceProjModifier orAddComponent = projectile.gameObject.GetOrAddComponent <PierceProjModifier>(); orAddComponent.penetratesBreakables = true; orAddComponent.penetration++; projectile.SetProjectileSpriteRight("mastersgun_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12); projectile.transform.parent = gun.barrelOffset; //KEEP BULLET STATS keepProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]); keepProjectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(keepProjectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(keepProjectile); keepProjectile.baseData.damage *= 16f; keepProjectile.ignoreDamageCaps = true; keepProjectile.baseData.speed *= 1f; keepProjectile.pierceMinorBreakables = true; PierceProjModifier keepComponent = keepProjectile.gameObject.GetOrAddComponent <PierceProjModifier>(); keepComponent.penetratesBreakables = true; keepComponent.penetration++; BounceProjModifier Bouncing = keepProjectile.gameObject.GetOrAddComponent <BounceProjModifier>(); Bouncing.numberOfBounces = 5; keepProjectile.SetProjectileSpriteRight("mastersgun_keep_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12); keepProjectile.transform.parent = gun.barrelOffset; gun.gunSwitchGroup = (PickupObjectDatabase.GetById(37) as Gun).gunSwitchGroup; //PROPER BULLET STATS properProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]); properProjectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(properProjectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(properProjectile); properProjectile.baseData.damage *= 16f; properProjectile.ignoreDamageCaps = true; properProjectile.baseData.speed *= 1f; properProjectile.pierceMinorBreakables = true; PierceProjModifier properComponent = properProjectile.gameObject.GetOrAddComponent <PierceProjModifier>(); properComponent.penetratesBreakables = true; properComponent.penetration++; ApplyLockdownBulletBehaviour properLockdown = properProjectile.gameObject.GetOrAddComponent <ApplyLockdownBulletBehaviour>(); properLockdown.duration = 6; properProjectile.SetProjectileSpriteRight("mastersgun_proper_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12); properProjectile.transform.parent = gun.barrelOffset; //MINES BULLET STATS minesProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]); minesProjectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(minesProjectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(minesProjectile); minesProjectile.baseData.damage *= 16f; minesProjectile.ignoreDamageCaps = true; minesProjectile.baseData.speed *= 1f; minesProjectile.pierceMinorBreakables = true; PierceProjModifier minesComponent = minesProjectile.gameObject.GetOrAddComponent <PierceProjModifier>(); minesComponent.penetratesBreakables = true; minesComponent.penetration++; ExtremelySimplePoisonBulletBehaviour minesPoisoning = minesProjectile.gameObject.GetOrAddComponent <ExtremelySimplePoisonBulletBehaviour>(); minesPoisoning.procChance = 1; minesPoisoning.useSpecialTint = false; minesProjectile.SetProjectileSpriteRight("mastersgun_mines_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12); minesProjectile.transform.parent = gun.barrelOffset; //HOLLOW BULLET STATS hollowProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]); hollowProjectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(hollowProjectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(hollowProjectile); hollowProjectile.baseData.damage *= 16f; hollowProjectile.ignoreDamageCaps = true; hollowProjectile.baseData.speed *= 1f; hollowProjectile.pierceMinorBreakables = true; PierceProjModifier hollowComponent = hollowProjectile.gameObject.GetOrAddComponent <PierceProjModifier>(); hollowComponent.penetratesBreakables = true; hollowComponent.penetration++; SimpleFreezingBulletBehaviour freezing = hollowProjectile.gameObject.GetOrAddComponent <SimpleFreezingBulletBehaviour>(); freezing.procChance = 1; freezing.useSpecialTint = false; freezing.freezeAmount = 150; freezing.freezeAmountForBosses = 100; hollowProjectile.SetProjectileSpriteRight("mastersgun_hollow_projectile", 27, 12, false, tk2dBaseSprite.Anchor.MiddleCenter, 27, 12); hollowProjectile.transform.parent = gun.barrelOffset; //FORGE BULLET STATS forgeProjectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]); forgeProjectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(forgeProjectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(forgeProjectile); forgeProjectile.baseData.damage *= 20f; forgeProjectile.ignoreDamageCaps = true; forgeProjectile.baseData.speed *= 1f; forgeProjectile.pierceMinorBreakables = true; PierceProjModifier forgeComponent = forgeProjectile.gameObject.GetOrAddComponent <PierceProjModifier>(); forgeComponent.penetratesBreakables = true; forgeComponent.penetration++; ExtremelySimpleStatusEffectBulletBehaviour burning = forgeProjectile.gameObject.GetOrAddComponent <ExtremelySimpleStatusEffectBulletBehaviour>(); burning.onFiredProcChance = 1; burning.usesFireEffect = true; burning.fireEffect = StaticStatusEffects.hotLeadEffect; burning.useSpecialTint = false; forgeProjectile.SetProjectileSpriteRight("mastersgun_forge_projectile", 33, 18, false, tk2dBaseSprite.Anchor.MiddleLeft, 27, 12); forgeProjectile.transform.parent = gun.barrelOffset; gun.quality = PickupObject.ItemQuality.S; //S gun.encounterTrackable.EncounterGuid = "this is the Master's Gun"; ETGMod.Databases.Items.Add(gun, null, "ANY"); }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Icicle", "icicle"); Game.Items.Rename("outdated_gun_mods:icicle", "nn:icicle"); gun.gameObject.AddComponent <Icicle>(); gun.SetShortDescription("Begins Anew"); gun.SetLongDescription("Becomes more powerful the cooler it's owner is." + "\n\nSnapped off of the ceiling of the Hollow's deepest catacomb, and somehow hasn't thawed ever since."); gun.SetupSprite(null, "icicle_idle_001", 8); gun.gunSwitchGroup = (PickupObjectDatabase.GetById(199) as Gun).gunSwitchGroup; gun.SetAnimationFPS(gun.shootAnimation, 14); gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(97) as Gun).muzzleFlashEffects; gun.AddPassiveStatModifier(PlayerStats.StatType.Coolness, 1, StatModifier.ModifyMethod.ADDITIVE); gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false); //GUN STATS gun.DefaultModule.ammoCost = 1; gun.DefaultModule.shootStyle = ProjectileModule.ShootStyle.SemiAutomatic; gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; gun.reloadTime = 1f; gun.DefaultModule.cooldownTime = 0.5f; gun.DefaultModule.numberOfShotsInClip = 10; gun.barrelOffset.transform.localPosition = new Vector3(1.62f, 0.56f, 0f); gun.SetBaseMaxAmmo(220); gun.ammo = 220; gun.gunClass = GunClass.ICE; //BULLET STATS Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); projectile.baseData.damage *= 1.6f; projectile.baseData.speed *= 1f; projectile.damageTypes |= CoreDamageTypes.Ice; ScaleProjectileStatOffPlayerStat coolnessScaling = projectile.gameObject.AddComponent <ScaleProjectileStatOffPlayerStat>(); coolnessScaling.multiplierPerLevelOfStat = 0.2f; coolnessScaling.projstat = ScaleProjectileStatOffPlayerStat.ProjectileStatType.DAMAGE; coolnessScaling.playerstat = PlayerStats.StatType.Coolness; SimpleFreezingBulletBehaviour freezing = projectile.gameObject.AddComponent <SimpleFreezingBulletBehaviour>(); freezing.freezeAmount = 40; freezing.useSpecialTint = false; freezing.freezeAmountForBosses = 40; GoopModifier watering = projectile.gameObject.AddComponent <GoopModifier>(); watering.CollisionSpawnRadius = 0.8f; watering.SpawnGoopOnCollision = true; watering.SpawnGoopInFlight = false; watering.goopDefinition = EasyGoopDefinitions.WaterGoop; projectile.SetProjectileSpriteRight("icicle_projectile", 13, 5, false, tk2dBaseSprite.Anchor.MiddleCenter, 13, 5); gun.DefaultModule.projectiles[0] = projectile; gun.quality = PickupObject.ItemQuality.B; ETGMod.Databases.Items.Add(gun, null, "ANY"); IcicleID = gun.PickupObjectId; }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Blizzkrieg", "blizzkrieg"); Game.Items.Rename("outdated_gun_mods:blizzkrieg", "nn:blizzkrieg"); var behav = gun.gameObject.AddComponent <Blizzkrieg>(); gun.SetShortDescription("Kalt Action"); gun.SetLongDescription("Fires chunks of hypercold H2O." + "\n\nSecret Blobulonian technology, developed during their ill-fated winter campaign."); gun.SetupSprite(null, "blizzkrieg_idle_001", 8); gun.gunSwitchGroup = (PickupObjectDatabase.GetById(38) as Gun).gunSwitchGroup; gun.SetAnimationFPS(gun.shootAnimation, 12); for (int i = 0; i < 2; i++) { gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(402) as Gun, true, false); } foreach (ProjectileModule mod in gun.Volley.projectiles) { Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(mod.projectiles[0]); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); mod.projectiles[0] = (projectile); Projectile projectile2 = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(56) as Gun).DefaultModule.projectiles[0]); projectile2.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile2.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile2); projectile2.baseData.damage *= 1.6f; projectile2.baseData.speed *= 1f; projectile2.damageTypes |= CoreDamageTypes.Ice; ScaleProjectileStatOffPlayerStat coolnessScaling = projectile2.gameObject.AddComponent <ScaleProjectileStatOffPlayerStat>(); coolnessScaling.multiplierPerLevelOfStat = 0.2f; coolnessScaling.projstat = ScaleProjectileStatOffPlayerStat.ProjectileStatType.DAMAGE; coolnessScaling.playerstat = PlayerStats.StatType.Coolness; SimpleFreezingBulletBehaviour freezing = projectile2.gameObject.AddComponent <SimpleFreezingBulletBehaviour>(); freezing.freezeAmount = 40; freezing.useSpecialTint = false; freezing.freezeAmountForBosses = 40; GoopModifier watering = projectile2.gameObject.AddComponent <GoopModifier>(); watering.CollisionSpawnRadius = 0.8f; watering.SpawnGoopOnCollision = true; watering.SpawnGoopInFlight = false; watering.goopDefinition = EasyGoopDefinitions.WaterGoop; projectile2.SetProjectileSpriteRight("icicle_projectile", 13, 5, false, tk2dBaseSprite.Anchor.MiddleCenter, 13, 5); mod.projectiles.Add(projectile2); mod.ammoCost = 1; mod.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; mod.shootStyle = ProjectileModule.ShootStyle.Automatic; mod.cooldownTime = 0.1f; mod.angleVariance = 34f; mod.numberOfShotsInClip = 30; if (mod != gun.DefaultModule) { mod.ammoCost = 0; } } gun.reloadTime = 1.5f; gun.barrelOffset.transform.localPosition = new Vector3(2.56f, 0.81f, 0f); gun.SetBaseMaxAmmo(400); gun.gunClass = GunClass.ICE; gun.DefaultModule.ammoType = GameUIAmmoType.AmmoType.CUSTOM; gun.DefaultModule.customAmmoType = CustomClipAmmoTypeToolbox.AddCustomAmmoType("Blizzkrieg Bullets", "NevernamedsItems/Resources/CustomGunAmmoTypes/blizzkreig_clipfull", "NevernamedsItems/Resources/CustomGunAmmoTypes/blizzkreig_clipempty"); gun.quality = PickupObject.ItemQuality.S; ETGMod.Databases.Items.Add(gun, null, "ANY"); BlizzkriegID = gun.PickupObjectId; gun.SetupUnlockOnCustomFlag(CustomDungeonFlags.CHALLENGE_KEEPITCOOL_BEATEN, true); }