public override void PostProcessProjectile(Projectile projectile) { if (projectile.Owner && projectile.Owner is PlayerController && (projectile.Owner as PlayerController).PlayerHasActiveSynergy("Lightning Fast Strike")) { ViperProjModifier mod = projectile.GetComponent <ViperProjModifier>(); if (mod != null) { mod.DistanceBetweenPositions = 1; } } base.PostProcessProjectile(projectile); }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Viper", "viper"); Game.Items.Rename("outdated_gun_mods:viper", "nn:viper"); var behav = gun.gameObject.AddComponent <Viper>(); behav.overrideNormalFireAudio = "Play_ENM_snake_shot_01"; behav.preventNormalFireAudio = true; gun.SetShortDescription("Death Throws"); gun.SetLongDescription("A futuristic plasma blaster modeled after a historic flintlock." + "\n\nIt's initial bite has a deadly followup."); gun.SetupSprite(null, "viper_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 10); gun.gunSwitchGroup = (PickupObjectDatabase.GetById(32) as Gun).gunSwitchGroup; 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.3f; gun.DefaultModule.angleVariance = 5; gun.DefaultModule.numberOfShotsInClip = 4; gun.muzzleFlashEffects = (PickupObjectDatabase.GetById(334) as Gun).muzzleFlashEffects; gun.barrelOffset.transform.localPosition = new Vector3(1.81f, 0.43f, 0f); gun.SetBaseMaxAmmo(200); gun.ammo = 200; gun.gunClass = GunClass.PISTOL; //SECONDARY BULLETS Projectile secondaryProj = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); secondaryProj.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(secondaryProj.gameObject); UnityEngine.Object.DontDestroyOnLoad(secondaryProj); secondaryProj.baseData.damage *= 1.2f; secondaryProj.baseData.force *= 2f; secondaryProj.SetProjectileSpriteRight("vipersecondary_projectile", 6, 6, true, tk2dBaseSprite.Anchor.MiddleCenter, 4, 4); //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 *= 2f; projectile.baseData.force *= 1f; projectile.baseData.speed *= 2f; projectile.baseData.range *= 2f; ViperProjModifier mod = projectile.gameObject.GetOrAddComponent <ViperProjModifier>(); mod.projToSpawn = secondaryProj; PierceProjModifier pierce = projectile.gameObject.GetOrAddComponent <PierceProjModifier>(); pierce.penetration++; pierce.penetratesBreakables = true; projectile.SetProjectileSpriteRight("vipermain_projectile", 15, 10, true, tk2dBaseSprite.Anchor.MiddleCenter, 11, 6); gun.DefaultModule.projectiles[0] = projectile; gun.quality = PickupObject.ItemQuality.B; ETGMod.Databases.Items.Add(gun, null, "ANY"); }