Ejemplo n.º 1
0
        public static bool ReloadHook(Func <Gun, bool> orig, Gun self)
        {
            bool result = orig(self);

            if (result && self.GetComponent <MultiActiveReloadController>() != null)
            {
                self.GetComponent <MultiActiveReloadController>().canAttemptActiveReload = true;
                self.GetComponent <MultiActiveReloadController>().damageMult             = 1f;
            }
            return(result);
        }
Ejemplo n.º 2
0
 public static void OnActiveReloadPressedHook(Action <Gun, PlayerController, Gun, bool> orig, Gun self, PlayerController p, Gun g, bool actualPress)
 {
     orig(self, p, g, actualPress);
     if (self.IsReloading || self.reloadTime < 0f)
     {
         PlayerController playerController = self.CurrentOwner as PlayerController;
         if (playerController && (actualPress || true))
         {
             MultiActiveReloadController controller = self.GetComponent <MultiActiveReloadController>();
             if (controller != null && controller.activeReloadEnabled && controller.canAttemptActiveReload && !GameUIRoot.Instance.GetReloadBarForPlayer(self.CurrentOwner as PlayerController).IsActiveReloadGracePeriod())
             {
                 bool flag2 = GameUIRoot.Instance.AttemptActiveReloadOnlyMultireload(self.CurrentOwner as PlayerController);
                 MultiActiveReload reload = GameUIRoot.Instance.GetReloadBarForPlayer(self.CurrentOwner as PlayerController).GetMultiActiveReloadForController();
                 if (flag2)
                 {
                     controller.OnActiveReloadSuccess(reload);
                     GunFormeSynergyProcessor component = self.GetComponent <GunFormeSynergyProcessor>();
                     if (component)
                     {
                         component.JustActiveReloaded = true;
                     }
                     ChamberGunProcessor component2 = self.GetComponent <ChamberGunProcessor>();
                     if (component2)
                     {
                         component2.JustActiveReloaded = true;
                     }
                 }
                 else
                 {
                     controller.OnActiveReloadFailure(reload);
                 }
                 if (reload == null || !reload.canAttemptActiveReloadAfterwards)
                 {
                     ETGModConsole.Log("yes");
                     controller.canAttemptActiveReload = false;
                     Action <PlayerController, Gun, bool> act = (Action <PlayerController, Gun, bool>)info2.CreateDelegate <Action <PlayerController, Gun, bool> >();
                     self.OnReloadPressed -= act;
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
        public override void InheritData(Gun source)
        {
            base.InheritData(source);
            MultiActiveReloadController component = source.GetComponent <MultiActiveReloadController>();

            if (component)
            {
                this.reloads             = component.reloads;
                this.activeReloadEnabled = component.activeReloadEnabled;
            }
        }
Ejemplo n.º 4
0
        public static void Add()
        {
            Gun gun = ETGMod.Databases.Items.NewGun("Sliver Beam", "sliver_beam");

            Game.Items.Rename("outdated_gun_mods:sliver_beam", "cel:sliver_beam");
            var behav = gun.gameObject.AddComponent <SliverBeam>();

            behav.overrideNormalFireAudio = "Play_ENM_shelleton_beam_01";
            behav.preventNormalFireAudio  = true;
            gun.SetShortDescription("Like A Pike Through Butter");
            gun.SetLongDescription("Can cut across rooms, assuming there is no walls in the way.");
            gun.SetupSprite(null, "sliver_beam_idle_001", 8);
            gun.SetAnimationFPS(gun.shootAnimation, 8);
            gun.isAudioLoop = true;
            gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false);
            gun.doesScreenShake             = false;
            gun.DefaultModule.ammoCost      = 10;
            gun.DefaultModule.angleVariance = 0;
            gun.DefaultModule.shootStyle    = ProjectileModule.ShootStyle.Beam;
            gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random;
            gun.reloadTime = 1f;
            gun.muzzleFlashEffects.type              = VFXPoolType.None;
            gun.DefaultModule.cooldownTime           = 0.001f;
            gun.DefaultModule.numberOfShotsInClip    = 3000;
            gun.DefaultModule.ammoType               = GameUIAmmoType.AmmoType.BEAM;
            gun.barrelOffset.transform.localPosition = new Vector3(1.75f, 0.5f, 0f);
            gun.SetBaseMaxAmmo(3000);
            gun.ammo = 3000;

            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).wrapMode  = tk2dSpriteAnimationClip.WrapMode.LoopSection;
            gun.GetComponent <tk2dSpriteAnimator>().GetClipByName(gun.shootAnimation).loopStart = 1;

            List <string> BeamAnimPaths = new List <string>()
            {
                "Items/Resources/Beams/sliver_beam_mid_001",
            };
            List <string> BeamEndPaths = new List <string>()
            {
                "Items/Resources/Beams/sliver_beam_end_001",
            };

            //BULLET STATS
            Projectile projectile = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]);

            BasicBeamController beamComp = projectile.GenerateBeamPrefab(
                "Items/Resources/Beams/sliver_beam_mid_001",
                new Vector2(10, 4),
                new Vector2(0, 1),
                BeamAnimPaths,
                9,
                //Impact
                null,
                -1,
                null,
                null,
                //End
                BeamEndPaths,
                9,
                new Vector2(10, 3),
                new Vector2(0, 1),
                //Beginning
                null,
                -1,
                null,
                null
                );

            projectile.gameObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(projectile.gameObject);
            UnityEngine.Object.DontDestroyOnLoad(projectile);
            projectile.baseData.damage = 15f;
            projectile.baseData.force *= 0.1f;
            projectile.baseData.range  = float.MaxValue;
            projectile.baseData.speed *= 5f;

            beamComp.penetration = 10000;
            beamComp.boneType    = BasicBeamController.BeamBoneType.Straight;
            beamComp.interpolateStretchedBones = false;

            gun.DefaultModule.projectiles[0]     = projectile;
            gun.encounterTrackable.EncounterGuid = "FWOZZOOOOOMMMMM";
            gun.quality = PickupObject.ItemQuality.C; //D
            ETGMod.Databases.Items.Add(gun, null, "ANY");
        }