コード例 #1
0
        public static void ApplyDirectLockdown(GameActor target, float duration, Color tintColour, Color deathTintColour, EffectResistanceType resistanceType, string identifier, bool tintsEnemy, bool tintsCorpse)
        {
            GameActorSpeedEffect lockdownToApply = new GameActorSpeedEffect
            {
                duration         = duration,
                TintColor        = tintColour,
                DeathTintColor   = deathTintColour,
                effectIdentifier = identifier,
                AppliesTint      = tintsEnemy,
                AppliesDeathTint = tintsCorpse,
                resistanceType   = resistanceType,
                SpeedMultiplier  = 0f,

                //Eh
                OverheadVFX        = LockdownStatusEffect.lockdownVFXObject,
                AffectsEnemies     = true,
                AffectsPlayers     = false,
                AppliesOutlineTint = false,
                OutlineTintColor   = tintColour,
                PlaysVFXOnActor    = false,
            };

            if (target && target.aiActor && target.healthHaver && target.healthHaver.IsAlive)
            {
                target.ApplyEffect(lockdownToApply, 1f, null);
            }
        }
コード例 #2
0
        // Token: 0x06000180 RID: 384 RVA: 0x00013DB8 File Offset: 0x00011FB8
        public static GameActorSpeedEffect CopySpeedFrom(this GameActorSpeedEffect self, GameActorSpeedEffect other)
        {
            bool flag = self == null;

            if (flag)
            {
                self = new GameActorSpeedEffect();
            }
            bool flag2 = other == null;
            GameActorSpeedEffect result;

            if (flag2)
            {
                result = null;
            }
            else
            {
                self.CopyEffectFrom(other);
                self.SpeedMultiplier              = other.SpeedMultiplier;
                self.CooldownMultiplier           = other.CooldownMultiplier;
                self.OnlyAffectPlayerWhenGrounded = other.OnlyAffectPlayerWhenGrounded;
                result = self;
            }
            return(result);
        }
コード例 #3
0
        public static T GetCopyOf <T>(this GameActorSpeedEffect obj, T other) where T : GameActorSpeedEffect
        {
            Type type = obj.GetType();

            if (type != other.GetType())
            {
                return(null);                         // type mis-match
            }
            PropertyInfo[] pinfos = type.GetProperties();
            foreach (var pinfo in pinfos)
            {
                if (pinfo.CanWrite)
                {
                    try
                    {
                        var value = pinfo.GetValue(other, null);

                        // ETGModConsole.Log(pinfo.Name + value.ToString());

                        pinfo.SetValue(obj, pinfo.GetValue(other, null), null);
                    }
                    catch { } // In case of NotImplementedException being thrown. For some reason specifying that exception didn't seem to catch it, so I didn't catch anything specific.
                }
            }
            FieldInfo[] finfos = type.GetFields();
            foreach (var finfo in finfos)
            {
                var value = finfo.GetValue(other);
                //  ETGModConsole.Log(finfo.Name + value.ToString());
                finfo.SetValue(obj, finfo.GetValue(other));
            }
            return(obj as T);
        }
コード例 #4
0
        private void AddSlowEffect(Projectile arg1, SpeculativeRigidbody arg2, bool arg3)
        {
            Gun gun = ETGMod.Databases.Items["triple_crossbow"] as Gun;
            GameActorSpeedEffect gameActorSpeedEffect = gun.DefaultModule.projectiles[0].speedEffect;

            gameActorSpeedEffect.duration = 20f;
            arg2.aiActor.ApplyEffect(gameActorSpeedEffect, 1, null);
            arg2.gameActor.ApplyEffect(this.fireEffect, 1f, null);
            arg2.gameActor.ApplyEffect(this.charmEffect, 1f, null);
        }
コード例 #5
0
ファイル: Bitey.cs プロジェクト: blazeykat/prismatism
 public void SlowDown(Projectile projectile, SpeculativeRigidbody specrigbody, bool yes)
 {
     if (specrigbody && specrigbody.healthHaver && specrigbody.aiActor && specrigbody.healthHaver.IsAlive)
     {
         Gun gun = ETGMod.Databases.Items["triple_crossbow"] as Gun;
         GameActorSpeedEffect speedEffect = gun.DefaultModule.projectiles[0].speedEffect;
         speedEffect.duration = 5f;
         specrigbody.aiActor.ApplyEffect(speedEffect);
     }
 }
コード例 #6
0
 private void AddSlowEffect(Projectile arg1, SpeculativeRigidbody arg2, bool arg3)
 {
     if (arg2 != null && arg2.aiActor != null && Owner != null)
     {
         if (arg2 != null && arg2.healthHaver.IsAlive)
         {
             if (arg2.aiActor.EnemyGuid != "465da2bb086a4a88a803f79fe3a27677" && arg2.aiActor.EnemyGuid != "05b8afe0b6cc4fffa9dc6036fa24c8ec")
             {
                 Gun gun = ETGMod.Databases.Items["triple_crossbow"] as Gun;
                 GameActorSpeedEffect gameActorSpeedEffect = gun.DefaultModule.projectiles[0].speedEffect;
                 ApplyDirectStatusEffects.ApplyDirectSlow(arg2.gameActor, 20f, gameActorSpeedEffect.SpeedMultiplier, Color.white, Color.white, EffectResistanceType.None, "Snail Bullets", false, false);
             }
         }
     }
 }
コード例 #7
0
        public static void Init()
        {
            string itemName     = "Snare Bullets";
            string resourceName = "Items/Resources/snare_bullets.png";

            GameObject obj = new GameObject(itemName);

            var item = obj.AddComponent <SnareBullets>();

            ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);

            string shortDesc = "Catch and Keep";
            string longDesc  = "Shots may slow enemies.\n\n" +
                               "To capture something, you must lure it in with something familiar.";


            ItemBuilder.SetupItem(item, shortDesc, longDesc, "cel");



            item.chanceOfActivating      = .1f;
            item.chanceFromBeamPerSecond = .1f;
            item.sprite.IsPerpendicular  = true;

            Gun tripleCrossbow = ETGMod.Databases.Items["triple_crossbow"] as Gun;
            //   new Gun().GetCopyOf(tripleCrossbow);
            var myEffect = new GameActorSpeedEffect();

            foreach (var projmod in tripleCrossbow.RawSourceVolley.projectiles)
            {
                foreach (var proj in projmod.projectiles)
                {
                    if (proj != null)
                    {
                        myEffect.GetCopyOf(proj.speedEffect);
                        myEffect.duration = 10;
                    }
                }
            }



            item.AppliesSpeedModifier = true;
            item.SpeedModifierEffect  = myEffect;
            item.quality = PickupObject.ItemQuality.B;
        }
コード例 #8
0
ファイル: Television.cs プロジェクト: Lichton/Fallen-Items
 private void OnHitEnemy(Projectile arg1, SpeculativeRigidbody arg2, bool arg3)
 {
     if (bighead2 == 6)
     {
         base.StartCoroutine(this.HandleFear(gun.CurrentOwner as PlayerController, arg2));
     }
     if (bighead2 == 5)
     {
         GameActorHealthEffect irradiatedLeadEffect = PickupObjectDatabase.GetById(204).GetComponent <BulletStatusEffectItem>().HealthModifierEffect;
         arg2.aiActor.ApplyEffect(irradiatedLeadEffect, 2f, arg1);
     }
     if (bighead2 == 2)
     {
         GameActorFireEffect hotLeadEffect = PickupObjectDatabase.GetById(295).GetComponent <BulletStatusEffectItem>().FireModifierEffect;
         arg2.aiActor.ApplyEffect(hotLeadEffect, 2f, arg1);
     }
     if (bighead2 == 1)
     {
         arg2.aiActor.healthHaver.ApplyDamage(1f * (gun.CurrentOwner as PlayerController).stats.GetStatValue(PlayerStats.StatType.Damage), Vector2.zero, "Erasure", CoreDamageTypes.None, DamageCategory.Normal, true, null, false);
         GlobalSparksDoer.DoRadialParticleBurst(50, arg2.specRigidbody.HitboxPixelCollider.UnitCenter, arg2.specRigidbody.HitboxPixelCollider.UnitCenter, 90f, 2f, 0f, null, null, Color.red, GlobalSparksDoer.SparksType.BLOODY_BLOOD);
     }
     if (bighead2 == 3)
     {
         arg2.aiActor.ApplyEffect(this.cheeseEffect, 3f, null);
     }
     if (bighead2 == 7)
     {
         GameActorCharmEffect charmingRoundsEffect = PickupObjectDatabase.GetById(527).GetComponent <BulletStatusEffectItem>().CharmModifierEffect;
         arg2.aiActor.ApplyEffect(charmingRoundsEffect, 3f, null);
     }
     if (bighead2 == 4)
     {
         GameActorFreezeEffect frostBulletsEffect = PickupObjectDatabase.GetById(278).GetComponent <BulletStatusEffectItem>().FreezeModifierEffect;
         arg2.aiActor.ApplyEffect(frostBulletsEffect, 3f, null);
     }
     if (bighead2 == 8)
     {
         GameActorSpeedEffect tripleCrossbowSlowEffect = (PickupObjectDatabase.GetById(381) as Gun).DefaultModule.projectiles[0].speedEffect;
         arg2.aiActor.ApplyEffect(tripleCrossbowSlowEffect, 3f, null);
     }
 }
コード例 #9
0
        public void BlankModHook(Action <SilencerInstance, BlankModificationItem, Vector2, PlayerController> orig, SilencerInstance silencer, BlankModificationItem bmi, Vector2 centerPoint, PlayerController user)
        {
            orig(silencer, bmi, centerPoint, user);

            if (user.HasPickupID(AmmolockID))
            {
                GameActorSpeedEffect Lockdown      = StatusEffectHelper.GenerateLockdown(10);
                RoomHandler          currentRoom   = user.CurrentRoom;
                List <AIActor>       activeEnemies = currentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
                if (activeEnemies != null)
                {
                    for (int i = 0; i < activeEnemies.Count; i++)
                    {
                        AIActor aiactor = activeEnemies[i];
                        aiactor.gameActor.ApplyEffect(Lockdown, 1f, null);
                        if (user.PlayerHasActiveSynergy("Under Lock And Key") && aiactor.healthHaver)
                        {
                            aiactor.healthHaver.ApplyDamage(7 * user.carriedConsumables.KeyBullets, Vector2.zero, "Under Lock And Key");
                        }
                    }
                }
            }
        }
コード例 #10
0
        public static GameActorSpeedEffect GenerateLockdown(float duration = 4f)
        {
            GameActorSpeedEffect lockdownToApply = new GameActorSpeedEffect
            {
                duration         = duration,
                TintColor        = Color.grey,
                DeathTintColor   = Color.grey,
                effectIdentifier = "Lockdown",
                AppliesTint      = true,
                AppliesDeathTint = true,
                resistanceType   = EffectResistanceType.None,
                SpeedMultiplier  = 0f,

                //Eh
                OverheadVFX        = LockdownStatusEffect.lockdownVFXObject,
                AffectsEnemies     = true,
                AffectsPlayers     = false,
                AppliesOutlineTint = false,
                OutlineTintColor   = Color.grey,
                PlaysVFXOnActor    = false,
            };

            return(lockdownToApply);
        }
コード例 #11
0
        protected override void DoEffect(PlayerController user)
        {
            Exploder.DoDistortionWave(user.sprite.WorldCenter, 0.5f, 0.04f, 20f, 1.5f);
            List <AIActor> activeEnemies = this.LastOwner.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
            bool           flag          = activeEnemies != null;

            if (flag)
            {
                AkSoundEngine.PostEvent("Play_ENM_gorgun_gaze_01", base.gameObject);
                int count = activeEnemies.Count;
                for (int i = 0; i < count; i++)
                {
                    bool flag2 = activeEnemies[i] && activeEnemies[i].HasBeenEngaged && activeEnemies[i].healthHaver && activeEnemies[i].IsNormalEnemy && !activeEnemies[i].healthHaver.IsDead && !activeEnemies[i].healthHaver.IsBoss && !activeEnemies[i].IsTransmogrified;
                    if (flag2)
                    {
                        activeEnemies[i].CanTargetPlayers   = false;
                        activeEnemies[i].CanTargetEnemies   = false;
                        activeEnemies[i].MovementModifiers += this.NoMotionModifier;
                        activeEnemies[i].RegisterOverrideColor(Color.grey, this.gameObject.name);
                        if (activeEnemies[i].behaviorSpeculator)
                        {
                            activeEnemies[i].behaviorSpeculator.InterruptAndDisable(); //Uncomment this line if you want your item to disable ALL behaviors of the target enemy.
                        }
                        if (activeEnemies[i].spriteAnimator != null && activeEnemies[i].spriteAnimator.Library != null && activeEnemies[i].spriteAnimator.Library.clips != null)
                        {
                            foreach (tk2dSpriteAnimationClip clip in activeEnemies[i].spriteAnimator.Library.clips)
                            {
                                if (clip != null && clip.frames != null)
                                {
                                    foreach (tk2dSpriteAnimationFrame frame in clip.frames)
                                    {
                                        if (frame != null && frame.invulnerableFrame)
                                        {
                                            frame.invulnerableFrame = false;
                                        }
                                    }
                                }
                            }
                        }
                        activeEnemies[i].ReflectsProjectilesWhileInvulnerable = false;
                        activeEnemies[i].specRigidbody.ReflectProjectiles     = false;
                        activeEnemies[i].specRigidbody.ReflectBeams           = false;
                        activeEnemies[i].healthHaver.damageTypeModifiers.Clear();
                        activeEnemies[i].healthHaver.PreventAllDamage = false;
                    }
                    if (activeEnemies[i].healthHaver.IsBoss)
                    {
                        Gun gun = ETGMod.Databases.Items["triple_crossbow"] as Gun;
                        GameActorSpeedEffect speedEffect = gun.DefaultModule.projectiles[0].speedEffect;
                        speedEffect.duration = 15f;
                        activeEnemies[i].ApplyEffect(speedEffect, 1f, null);
                        base.StartCoroutine(this.TurnBossGrey(activeEnemies[i]));
                    }
                }
            }
            if (user.CurrentRoom.IsShop)
            {
                foreach (BaseShopController controller in user.CurrentRoom.GetComponentsInRoom <BaseShopController>())
                {
                    controller.SetCapableOfBeingStolenFrom(true, "AegisShield", new float?(15f));
                    this.TurnShopkeeperGrey(controller);
                }
            }
        }
コード例 #12
0
ファイル: Monogun.cs プロジェクト: UnstableStrafe/CelsItems
        private void F**K()
        {
            PlayerController player = this.gun.CurrentOwner as PlayerController;
            bool             flag   = !Assigned;

            if (flag)
            {
                Assigned = true;
                int T = T1;
                if (T == 0)
                {
                    gun.SetBaseMaxAmmo(450);
                    gun.ammo       = 450;
                    gun.reloadTime = 1.1f;
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(Types[T]).gameObject, player);
                    gun.DefaultModule.projectiles[0] = ((Gun)ETGMod.Databases.Items[341]).DefaultModule.projectiles[0];
                    PierceProjModifier orAddComponent = gun.DefaultModule.projectiles[0].gameObject.GetOrAddComponent <PierceProjModifier>();
                    orAddComponent.penetration = 1;
                    BounceProjModifier bounceProj = gun.DefaultModule.projectiles[0].gameObject.GetOrAddComponent <BounceProjModifier>();
                    bounceProj.numberOfBounces = 0;
                }
                if (T == 1)
                {
                    gun.SetBaseMaxAmmo(150);
                    gun.ammo       = 150;
                    gun.reloadTime = 1.8f;
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(Types[T]).gameObject, player);
                    gun.DefaultModule.projectiles[0] = ((Gun)ETGMod.Databases.Items[336]).DefaultModule.projectiles[0];
                    PierceProjModifier orAddComponent = gun.DefaultModule.projectiles[0].gameObject.GetOrAddComponent <PierceProjModifier>();
                    orAddComponent.penetration = 0;
                    gun.DefaultModule.projectiles[0].AppliesFire = false;
                    AIActor           Grenat    = EnemyDatabase.GetOrLoadByGuid("b4666cb6ef4f4b038ba8924fd8adf38f");
                    ExplosiveModifier GetFucked = gun.DefaultModule.projectiles[0].gameObject.AddComponent <ExplosiveModifier>();
                    ExplosionData     die       = new ExplosionData
                    {
                        damageRadius         = 1.5f,
                        damageToPlayer       = 0f,
                        doDamage             = true,
                        damage               = 20f,
                        doExplosionRing      = true,
                        doDestroyProjectiles = true,
                        doForce              = true,
                        debrisForce          = 5f,
                        pushRadius           = 1.6f,
                        force = 8f,
                        preventPlayerForce     = true,
                        explosionDelay         = 0f,
                        usesComprehensiveDelay = false,
                        doScreenShake          = false,
                        playDefaultSFX         = true,
                        effect = Grenat.GetComponent <ExplodeOnDeath>().explosionData.effect
                                 //VFX_Explosion_Tiny,  VFX_Explosion_Newtiny BOTH IN SHARED_AUTO
                    };

                    GetFucked.explosionData = die;
                }
                if (T == 2)
                {
                    gun.SetBaseMaxAmmo(600);
                    gun.ammo       = 600;
                    gun.reloadTime = 1.4f;
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(Types[T]).gameObject, player);
                    gun.DefaultModule.projectiles[0] = ((Gun)ETGMod.Databases.Items[229]).DefaultModule.projectiles[0];
                }
                if (T == 3)
                {
                    gun.SetBaseMaxAmmo(100);
                    gun.ammo       = 100;
                    gun.reloadTime = 1.25f;
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(Types[T]).gameObject, player);
                    gun.DefaultModule.projectiles[0] = ((Gun)ETGMod.Databases.Items[27]).DefaultModule.projectiles[0];
                    gun.DefaultModule.projectiles[0].baseData.damage *= 8.57142857143f;
                    PierceProjModifier orAddComponent = gun.DefaultModule.projectiles[0].gameObject.GetOrAddComponent <PierceProjModifier>();
                    orAddComponent.penetratesBreakables = true;
                    orAddComponent.penetration          = 10000;
                }
                if (T == 4)
                {
                    gun.SetBaseMaxAmmo(800);
                    gun.ammo       = 800;
                    gun.reloadTime = 0f;
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(Types[T]).gameObject, player);
                    gun.DefaultModule.projectiles[0] = ((Gun)ETGMod.Databases.Items[124]).DefaultModule.projectiles[0];
                    gun.DefaultModule.projectiles[0].baseData.damage *= 0.6f;
                }
                int K1 = 0;
                if (K1 == 0)
                {
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsUni[K1]).gameObject, player);
                    HomingModifier homingModifier = gun.DefaultModule.projectiles[0].gameObject.AddComponent <HomingModifier>();
                    homingModifier.HomingRadius    = 5f;
                    homingModifier.AngularVelocity = 50f;
                }
                if (K1 == 1)
                {
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsUni[K1]).gameObject, player);
                    gun.DefaultModule.projectiles[0].AdditionalScaleMultiplier *= 1.25f;
                }
                if (K1 == 2)
                {
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsUni[K1]).gameObject, player);
                    Gun tripleCrossbow = ETGMod.Databases.Items["triple_crossbow"] as Gun;
                    var myEffect       = new GameActorSpeedEffect();
                    foreach (var projmod in tripleCrossbow.RawSourceVolley.projectiles)
                    {
                        foreach (var proj in projmod.projectiles)
                        {
                            if (proj != null)
                            {
                                myEffect.GetCopyOf(proj.speedEffect);
                                myEffect.duration = 10;
                            }
                        }
                    }
                    gun.DefaultModule.projectiles[0].AppliesSpeedModifier = true;
                    gun.DefaultModule.projectiles[0].speedEffect          = myEffect;
                    gun.DefaultModule.projectiles[0].SpeedApplyChance     = .4f;
                }
                if (K1 == 3)
                {
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsUni[K1]).gameObject, player);
                    gun.SetBaseMaxAmmo(Convert.ToInt32((gun.GetBaseMaxAmmo() * 1.25f)));
                    gun.ammo = gun.GetBaseMaxAmmo();
                }
                int K2;
                if (T == 0)
                {
                    K2 = 1;
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsGunSaw[K2]).gameObject, player);
                        gun.DefaultModule.projectiles[0].baseData.damage *= 1.35f;
                        Mono.DefaultModule.cooldownTime *= 1.25f;
                    }
                    if (K2 == 1)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsGunSaw[K2]).gameObject, player);
                        BounceProjModifier bounceProj = gun.DefaultModule.projectiles[0].gameObject.GetOrAddComponent <BounceProjModifier>();
                        bounceProj.numberOfBounces += 2;
                    }
                    if (K2 == 2)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsGunSaw[K2]).gameObject, player);
                        Mono.DefaultModule.shootStyle        = ProjectileModule.ShootStyle.Burst;
                        Mono.DefaultModule.burstShotCount    = 5;
                        Mono.DefaultModule.burstCooldownTime = .05f;
                        Mono.DefaultModule.cooldownTime      = .4f;
                    }
                    if (K2 == 3)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsGunSaw[K2]).gameObject, player);
                        gun.DefaultModule.projectiles[0].AppliesPoison     = true;
                        gun.DefaultModule.projectiles[0].healthEffect      = (PickupObjectDatabase.GetById(204) as BulletStatusEffectItem).HealthModifierEffect;
                        gun.DefaultModule.projectiles[0].PoisonApplyChance = .25f;
                    }
                }
                if (T == 1)
                {
                    K2 = UnityEngine.Random.Range(0, 4);
                    //Blazing, toxic, flare, burst
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsFire[K2]).gameObject, player);
                        gun.DefaultModule.projectiles[0].OnDestruction += this.FirePool;
                    }
                    if (K2 == 1)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsFire[K2]).gameObject, player);
                        gun.DefaultModule.projectiles[0].OnDestruction   += this.VenomPool;
                        gun.DefaultModule.projectiles[0].DefaultTintColor = new Color(78 / 100f, 5 / 100f, 120 / 100f);
                        gun.DefaultModule.projectiles[0].HasDefaultTint   = true;
                    }
                    if (K2 == 2)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsFire[K2]).gameObject, player);
                        gun.DefaultModule.projectiles[0].OnDestruction += Flares;
                    }
                    if (K2 == 3)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsFire[K2]).gameObject, player);
                        Mono.DefaultModule.shootStyle        = ProjectileModule.ShootStyle.Burst;
                        Mono.DefaultModule.burstShotCount    = 5;
                        Mono.DefaultModule.burstCooldownTime = .2f;
                        Mono.DefaultModule.cooldownTime      = 1f;
                    }
                }
                if (T == 2)
                {
                    //High-caliber, ricochet, burst, poison
                    K2 = UnityEngine.Random.Range(0, 5);
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsGunSaw[K2]).gameObject, player);
                        gun.DefaultModule.projectiles[0].baseData.damage *= 3f;
                        Mono.DefaultModule.cooldownTime *= 2f;
                    }
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsGunSaw[K2]).gameObject, player);
                        BounceProjModifier bounceProj = gun.DefaultModule.projectiles[0].gameObject.GetOrAddComponent <BounceProjModifier>();
                        bounceProj.numberOfBounces += 2;
                    }
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsGunSaw[K2]).gameObject, player);
                        Mono.DefaultModule.shootStyle        = ProjectileModule.ShootStyle.Burst;
                        Mono.DefaultModule.burstShotCount    = 5;
                        Mono.DefaultModule.burstCooldownTime = .05f;
                        Mono.DefaultModule.cooldownTime      = .4f;
                    }
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsGunSaw[K2]).gameObject, player);
                        gun.DefaultModule.projectiles[0].AppliesPoison     = true;
                        gun.DefaultModule.projectiles[0].healthEffect      = (PickupObjectDatabase.GetById(204) as BulletStatusEffectItem).HealthModifierEffect;
                        gun.DefaultModule.projectiles[0].PoisonApplyChance = .25f;
                    }
                }
                if (T == 3)
                {
                    //Quick, power up, sidearm
                    K2 = UnityEngine.Random.Range(0, 4);
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsRail[K2]).gameObject, player);
                        Mono.reloadTime *= .6f;
                    }
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsRail[K2]).gameObject, player);
                        Mono.DefaultModule.projectiles[0].baseData.damage *= 1.25f;
                    }
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsRail[K2]).gameObject, player);
                        Mono.DefaultModule.numberOfShotsInClip             = 5;
                        Mono.DefaultModule.projectiles[0].baseData.damage *= .33f;
                    }
                }
                if (T == 4)
                {
                    //Critical, backshot, chain gun
                    K2 = UnityEngine.Random.Range(0, 4);
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsRapid[K2]).gameObject, player);
                        gun.PostProcessProjectile += Proj;
                    }
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsRapid[K2]).gameObject, player);
                        GunVolleyModificationItem.AddDuplicateOfBaseModule(gun.Volley, player, 1, 7.35f, 180);
                    }
                    if (K2 == 0)
                    {
                        LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(KeyWordsRapid[K2]).gameObject, player);
                        Mono.SetBaseMaxAmmo(Mono.GetBaseMaxAmmo() * 2);
                        Mono.ammo = Mono.GetBaseMaxAmmo();
                        Mono.DefaultModule.cooldownTime = .001f;
                    }
                }
            }
        }
コード例 #13
0
        public static void InitCustomEffects()
        {
            FriendlyWebGoopSpeedMod = new GameActorSpeedEffect
            {
                duration         = 1,
                TintColor        = tripleCrossbowSlowEffect.TintColor,
                DeathTintColor   = tripleCrossbowSlowEffect.DeathTintColor,
                effectIdentifier = "FriendlyWebSlow",
                AppliesTint      = false,
                AppliesDeathTint = false,
                resistanceType   = EffectResistanceType.None,
                SpeedMultiplier  = 0.40f,

                //Eh
                OverheadVFX        = null,
                AffectsEnemies     = true,
                AffectsPlayers     = false,
                AppliesOutlineTint = false,
                OutlineTintColor   = tripleCrossbowSlowEffect.OutlineTintColor,
                PlaysVFXOnActor    = false,
            };
            HoneySpeedMod = new GameActorSpeedEffect
            {
                duration         = 1,
                TintColor        = tripleCrossbowSlowEffect.TintColor,
                DeathTintColor   = tripleCrossbowSlowEffect.DeathTintColor,
                effectIdentifier = "HoneySlow",
                AppliesTint      = false,
                AppliesDeathTint = false,
                resistanceType   = EffectResistanceType.None,
                SpeedMultiplier  = 0.60f,

                //Eh
                OverheadVFX        = tripleCrossbowSlowEffect.OverheadVFX,
                AffectsEnemies     = true,
                AffectsPlayers     = true,
                AppliesOutlineTint = false,
                OutlineTintColor   = tripleCrossbowSlowEffect.OutlineTintColor,
                PlaysVFXOnActor    = false,
            };
            FriendlyHoneySpeedMod = new GameActorSpeedEffect
            {
                duration         = 1,
                TintColor        = tripleCrossbowSlowEffect.TintColor,
                DeathTintColor   = tripleCrossbowSlowEffect.DeathTintColor,
                effectIdentifier = "HoneySlow",
                AppliesTint      = false,
                AppliesDeathTint = false,
                resistanceType   = EffectResistanceType.None,
                SpeedMultiplier  = 0.60f,

                //Eh
                OverheadVFX        = tripleCrossbowSlowEffect.OverheadVFX,
                AffectsEnemies     = true,
                AffectsPlayers     = false,
                AppliesOutlineTint = false,
                OutlineTintColor   = tripleCrossbowSlowEffect.OutlineTintColor,
                PlaysVFXOnActor    = false,
            };
            PropulsionGoopSpeedMod = new GameActorSpeedEffect
            {
                duration         = 1,
                TintColor        = tripleCrossbowSlowEffect.TintColor,
                DeathTintColor   = tripleCrossbowSlowEffect.DeathTintColor,
                effectIdentifier = "PropulsionGoopSpeed",
                AppliesTint      = false,
                AppliesDeathTint = false,
                resistanceType   = EffectResistanceType.None,
                SpeedMultiplier  = 1.40f,

                //Eh
                OverheadVFX        = null,
                AffectsEnemies     = true,
                AffectsPlayers     = true,
                AppliesOutlineTint = false,
                OutlineTintColor   = tripleCrossbowSlowEffect.OutlineTintColor,
                PlaysVFXOnActor    = false,
            };
        }