コード例 #1
0
 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);
 }
コード例 #2
0
        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");
        }