// Token: 0x06000036 RID: 54 RVA: 0x000037D8 File Offset: 0x000019D8 public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Robotic Injector", "directiveinject"); Game.Items.Rename("outdated_gun_mods:robotic_injector", "bny:robotic_injector"); gun.gameObject.AddComponent <REXNeedler>(); GunExt.SetShortDescription(gun, "Directive: Inject"); GunExt.SetLongDescription(gun, "An injector commonly used by hydroponic robots. Looks like its original carrier is off protocol."); GunExt.SetupSprite(gun, null, "directiveinject_idle_001", 11); GunExt.SetAnimationFPS(gun, gun.shootAnimation, 36); GunExt.SetAnimationFPS(gun, gun.reloadAnimation, 7); GunExt.SetAnimationFPS(gun, gun.idleAnimation, 1); GunExt.AddProjectileModuleFrom(gun, PickupObjectDatabase.GetById(26) as Gun, true, false); gun.gunHandedness = GunHandedness.HiddenOneHanded; gun.gunSwitchGroup = (PickupObjectDatabase.GetById(26) as Gun).gunSwitchGroup; gun.DefaultModule.burstShotCount = 3; gun.DefaultModule.burstCooldownTime = 0.0833f; gun.DefaultModule.ammoCost = 1; gun.DefaultModule.shootStyle = ProjectileModule.ShootStyle.Burst; gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; gun.reloadTime = 0f; gun.DefaultModule.cooldownTime = .7f; gun.DefaultModule.numberOfShotsInClip = 300; gun.SetBaseMaxAmmo(300); gun.quality = PickupObject.ItemQuality.C; gun.DefaultModule.angleVariance = 0f; gun.encounterTrackable.EncounterGuid = "THE PLANT, THE PLANT, ITS THE PLANT"; 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.PoisonApplyChance = 1f; projectile.baseData.damage = 3f; projectile.baseData.speed = 20f; projectile.baseData.range *= 10f; projectile.baseData.force *= 0.3f; projectile.HasDefaultTint = true; projectile.SetProjectileSpriteRight("directiveinject_projectile_001", 11, 3, true, tk2dBaseSprite.Anchor.MiddleCenter, new int?(8), new int?(2), null, null, null); projectile.AdditionalScaleMultiplier = 1.1f; projectile.pierceMinorBreakables = true; projectile.transform.parent = gun.barrelOffset; projectile.damageTypes |= CoreDamageTypes.Poison; PoisonForDummiesLikeMe auegh = projectile.gameObject.AddComponent <PoisonForDummiesLikeMe>(); auegh.procChance = 1; auegh.useSpecialTint = false; ETGMod.Databases.Items.Add(gun, null, "ANY"); gun.AddToSubShop(ItemBuilder.ShopType.Goopton, 1f); }
public override void PostProcessProjectile(Projectile projectile) { bool hasDeterminedValidFloor = false; if (GameManager.Instance.Dungeon.IsGlitchDungeon) //GLITCHED FLOOR BONUS { projectile.baseData.damage *= 3; } else { switch (GameManager.Instance.Dungeon.tileIndices.tilesetId) { case GlobalDungeonData.ValidTilesets.CASTLEGEON: //KEEP { projectile.baseData.damage *= 1.4f; projectile.baseData.speed *= 1.4f; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.SEWERGEON: //OUBLIETTE { PoisonForDummiesLikeMe auegh = projectile.gameObject.AddComponent <PoisonForDummiesLikeMe>(); auegh.procChance = 1; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.JUNGLEGEON: //JUNGLE { projectile.baseData.damage *= 1.6f; projectile.baseData.speed *= 1.6f; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.GUNGEON: //GUNGEON PROPER { projectile.baseData.range = 9f; projectile.baseData.speed = 15f; projectile.AdditionalScaleMultiplier *= 1.25f; projectile.baseData.damage *= 2f; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.CATHEDRALGEON: //ABBEY { HomingModifier homing = projectile.gameObject.AddComponent <HomingModifier>(); homing.HomingRadius = 25f; homing.AngularVelocity = 100f; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.MINEGEON: //MINES { projectile.baseData.damage *= 1.6f; projectile.baseData.force *= 2f; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.RATGEON: //RAT LAIR { Cheesesprayer cheese = projectile.gameObject.AddComponent <Cheesesprayer>(); cheese.projectileToSpawn = (PickupObjectDatabase.GetById(626) as Gun).DefaultModule.projectiles[0]; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.CATACOMBGEON: // HOLLOW { projectile.OnHitEnemy += (Action <Projectile, SpeculativeRigidbody, bool>)Delegate.Combine(projectile.OnHitEnemy, new Action <Projectile, SpeculativeRigidbody, bool>(this.cold)); //FIX FREEZE EFFECT } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.OFFICEGEON: //R&G DEPT { projectile.OnDestruction += this.kerboomer; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.WESTGEON: //OLD WEST FLOOR (EXPAND) { projectile.baseData.damage *= 1.8f; projectile.baseData.speed *= 1.8f; } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.FORGEGEON: //FORGE { projectile.OnHitEnemy += (Action <Projectile, SpeculativeRigidbody, bool>)Delegate.Combine(projectile.OnHitEnemy, new Action <Projectile, SpeculativeRigidbody, bool>(this.fire)); } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.HELLGEON: //BULLET HELL if (GameManager.IsGunslingerPast) { projectile.specRigidbody.OnPreRigidbodyCollision = (SpeculativeRigidbody.OnPreRigidbodyCollisionDelegate)Delegate.Combine(projectile.specRigidbody.OnPreRigidbodyCollision, new SpeculativeRigidbody.OnPreRigidbodyCollisionDelegate(this.HandlePreCollision)); } else { projectile.specRigidbody.OnPreRigidbodyCollision = (SpeculativeRigidbody.OnPreRigidbodyCollisionDelegate)Delegate.Combine(projectile.specRigidbody.OnPreRigidbodyCollision, new SpeculativeRigidbody.OnPreRigidbodyCollisionDelegate(this.HandlePreCollision)); } hasDeterminedValidFloor = true; break; case GlobalDungeonData.ValidTilesets.BELLYGEON: //BELLY { projectile.baseData.damage *= 1.8f; projectile.baseData.speed *= 1.8f; } break; } //-----------------------------------------DEFAULT CATCH EFFECT if (!hasDeterminedValidFloor) { projectile.baseData.damage *= 3; } } }