Exemple #1
0
        private void HealthbarEvent(float damageAmount, bool fatal, HealthHaver target)
        {
            int     num                    = Mathf.RoundToInt(damageAmount);
            Vector3 worldPosition          = target.transform.position;
            float   heightOffGround        = 1f;
            SpeculativeRigidbody component = target.GetComponent <SpeculativeRigidbody>();

            if (component)
            {
                worldPosition   = component.UnitCenter.ToVector3ZisY(0f);
                heightOffGround = worldPosition.y - component.UnitBottomCenter.y;
                if (component.healthHaver && !component.healthHaver.HasHealthBar && !component.healthHaver.HasRatchetHealthBar && !component.healthHaver.IsBoss)
                {
                    GameObject VFXHealthBarPrefab = PickupObjectDatabase.GetByName("scouter").GetComponent <RatchetScouterItem>().VFXHealthBar;
                    component.healthHaver.HasRatchetHealthBar = true;
                    GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(VFXHealthBarPrefab);
                    SimpleHealthBarController component2 = gameObject.GetComponent <SimpleHealthBarController>();
                    component2.Initialize(component, component.healthHaver);
                }
            }
            else
            {
                AIActor component3 = target.GetComponent <AIActor>();
                if (component3)
                {
                    worldPosition = component3.CenterPosition.ToVector3ZisY(0f);
                    if (component3.sprite)
                    {
                        heightOffGround = worldPosition.y - component3.sprite.WorldBottomCenter.y;
                    }
                }
            }
            num = Mathf.Max(num, 1);
            GameUIRoot.Instance.DoDamageNumber(worldPosition, heightOffGround, num);
        }
Exemple #2
0
        private void RerollItem(DebrisObject debris)
        {
            int          checkLimit   = 0;
            PickupObject targetedItem = debris.gameObject.GetComponent <PickupObject>();

            if (targetedItem != null)
            {
                ItemQuality  targetTier               = targetedItem.quality;
                int          chanceToDowngrade        = 10;
                int          chanceToUpgrade          = 80;
                ItemQuality  newItemQuality           = targetTier;
                PickupObject newItemObject            = PickupObjectDatabase.GetByName("cel:test_item");
                int          RollToCheckUpgradeStatus = UnityEngine.Random.Range(0, 101);
                if (RollToCheckUpgradeStatus <= chanceToDowngrade && targetTier != ItemQuality.D)
                {
                    newItemQuality = targetTier - 1;
                }
                else if (RollToCheckUpgradeStatus >= chanceToUpgrade && targetTier != ItemQuality.S)
                {
                    newItemQuality = targetTier + 1;
                }
                GenericLootTable lootTableItems = GameManager.Instance.RewardManager.ItemsLootTable;

                if (targetedItem is PassiveItem)
                {
                    do
                    {
                        newItemObject = LootEngine.GetItemOfTypeAndQuality <PassiveItem>(newItemQuality, lootTableItems);
                        checkLimit++;
                    } while (newItemObject.PickupObjectId == targetedItem.PickupObjectId && checkLimit < 10);
                }
                else if (targetedItem is PlayerItem)
                {
                    do
                    {
                        newItemObject = LootEngine.GetItemOfTypeAndQuality <PlayerItem>(newItemQuality, lootTableItems);
                        checkLimit++;
                    } while (newItemObject.PickupObjectId == targetedItem.PickupObjectId && checkLimit < 10);
                }

                if (UnityEngine.Random.Range(0, 101) <= 1)
                {
                    Chest rainbow_Chest = GameManager.Instance.RewardManager.Rainbow_Chest;
                    Chest chest2        = Chest.Spawn(rainbow_Chest, targetedItem.sprite.WorldCenter.ToIntVector2(VectorConversions.Round));
                    chest2.BecomeGlitchChest();
                    chest2.sprite.renderer.material.shader = ShaderCache.Acquire("Brave/Internal/RainbowChestShader");

                    chest2.RegisterChestOnMinimap(chest2.GetAbsoluteParentRoom());
                }
                else
                {
                    LootEngine.DoDefaultPurplePoof(targetedItem.sprite.WorldCenter);
                    LootEngine.SpawnItem(newItemObject.gameObject, targetedItem.sprite.WorldCenter, Vector2.zero, 0);
                }
                Destroy(targetedItem.gameObject);
            }
        }
Exemple #3
0
        private void EvaluateStats(PlayerController player, bool force = false)
        {
            this.currentKeys  = player.carriedConsumables.KeyBullets;
            this.hasInfiniKey = (base.Owner.HasPickupID(166));
            noKey             = (player.carriedConsumables.KeyBullets == 0 && !base.Owner.HasPickupID(166));
            oneKey            = (player.carriedConsumables.KeyBullets == 1 && !base.Owner.HasPickupID(166));
            twoKeys           = (player.carriedConsumables.KeyBullets == 2 && !base.Owner.HasPickupID(166));
            threeKeys         = (player.carriedConsumables.KeyBullets >= 3 && !base.Owner.HasPickupID(166));
            infiniKey         = (base.Owner.HasPickupID(166));
            this.shouldRestat = (this.currentKeys != this.lastKeys) | (this.hadInfiniKey != hasInfiniKey);
            bool flag = !this.shouldRestat && !force;

            if (!flag)
            {
                if (oneKey)
                {
                    RemoveStat(PlayerStats.StatType.Damage);
                    AddStat(PlayerStats.StatType.Damage, 1.1f, StatModifier.ModifyMethod.MULTIPLICATIVE);
                    this.lastKeys = this.currentKeys;
                    hadInfiniKey  = false;
                }

                if (twoKeys)
                {
                    RemoveStat(PlayerStats.StatType.Damage);
                    AddStat(PlayerStats.StatType.Damage, 1.2f, StatModifier.ModifyMethod.MULTIPLICATIVE);
                    this.lastKeys = this.currentKeys;
                    hadInfiniKey  = false;
                }

                if (threeKeys)
                {
                    RemoveStat(PlayerStats.StatType.Damage);
                    AddStat(PlayerStats.StatType.Damage, 1.3f, StatModifier.ModifyMethod.MULTIPLICATIVE);
                    this.lastKeys = this.currentKeys;
                    hadInfiniKey  = false;
                }

                if (infiniKey)
                {
                    AkSoundEngine.PostEvent("Play_OBJ_goldenlock_open_01", this.gameObject);
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetByName("Deadly Bullets").gameObject, player);
                    player.RemovePassiveItem(LockBulletsPickupID);
                    hadInfiniKey = true;
                }

                if (noKey)
                {
                    RemoveStat(PlayerStats.StatType.Damage);
                    this.lastKeys = this.currentKeys;
                    hadInfiniKey  = false;
                }

                player.stats.RecalculateStats(player, true, false);
            }
        }
Exemple #4
0
 protected override void DoEffect(PlayerController user)
 {
     if (user.HasPickupID(476))
     {
         LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetByName("Loot Capsule").gameObject, user);
     }
     user.carriedConsumables.Currency -= 25;
     AkSoundEngine.PostEvent("Play_OBJ_Chest_Synergy_Slots_01", base.gameObject);
     GameManager.Instance.StartCoroutine(this.GamblingTime());
 }
        private IEnumerator RecoverDisc2()
        {
            PlayerController player = this.Owner;

            yield return(new WaitForSeconds(0.15f));

            if (!player.inventory.AllGuns.Contains(PickupObjectDatabase.GetByName("Hyper Disc") as Gun) && player.CurrentGun != (PickupObjectDatabase.GetByName("Hyper Disc") as Gun))
            {
                player.inventory.AddGunToInventory(PickupObjectDatabase.GetByEncounterName("Hyper Disc") as Gun, true);
            }
            yield break;
        }
Exemple #6
0
        void DualWieldItem(string[] args)
        {
            if (!ArgCount(args, 1, 2))
            {
                return;
            }

            if (!GameManager.Instance.PrimaryPlayer)
            {
                ETGModConsole.Log("Couldn't access Player Controller");
                return;
            }

            string id = args[0];

            if (!Game.Items.ContainsID(id))
            {
                ETGModConsole.Log($"Invalid item ID {id}!");
                return;
            }

            ETGModConsole.Log("Attempting to force wield " + args[0] + " (numeric " + id + ")" + ", class " + Game.Items.Get(id).GetType());



            if (args.Length < 1)
            {
                throw new Exception("At least 1 argument required.");
            }

            var player = GameManager.Instance.PrimaryPlayer;
            var gun    = player.inventory.CurrentGun;
            int idNumber;

            int.TryParse(id, out idNumber);
            var test        = Game.Items[id];
            var partner_gun = PickupObjectDatabase.GetByName(test.name) as Gun;

            if (GameManager.Instance.PrimaryPlayer.inventory.AllGuns.Contains(partner_gun))
            {
                //GameManager.Instance.PrimaryPlayer.ForceDropGun(i);
                GameManager.Instance.PrimaryPlayer.ForceDropGun(partner_gun);
            }

            player.inventory.AddGunToInventory(partner_gun);
            var forcer = gun.gameObject.AddComponent <DualWieldForcer>();

            forcer.Gun          = gun;
            forcer.PartnerGunID = partner_gun.PickupObjectId;
            forcer.TargetPlayer = player;
        }
        public override void Pickup(PlayerController player)
        {
            if (m_hasBeenPickedUp)
            {
                return;
            }

            m_hasBeenPickedUp = true;
            player.gameObject.GetOrAddComponent <RiskStat>().RiskAMT++;
            foreach (Gun gun in player.inventory.AllGuns)
            {
                if (gun.CanGainAmmo && gun != null)
                {
                    if (gun != player.CurrentGun)
                    {
                        if (GameManager.Options.QuickSelectEnabled && player.IsQuickEquipGun(gun))
                        {
                            gun.GainAmmo(gun.AdjustedMaxAmmo);
                        }
                        else
                        {
                            gun.GainAmmo(Mathf.FloorToInt((float)gun.AdjustedMaxAmmo * .33f));
                        }
                    }
                    else
                    {
                        gun.GainAmmo(gun.AdjustedMaxAmmo);
                        gun.ForceImmediateReload(false);
                    }
                }
            }



            AkSoundEngine.PostEvent("Play_OBJ_ammo_pickup_01", base.gameObject);
            player.RemovePassiveItem(PickupObjectDatabase.GetByName("Risky Ammo Crate").PickupObjectId);

            player.BloopItemAboveHead(base.sprite, "Items/Resources/test_icon.png");

            UnityEngine.Object.Destroy(base.gameObject);
        }
        protected override void DoEffect(PlayerController user)
        {
            ScrapCount += 1;

            AkSoundEngine.PostEvent("Play_OBJ_chest_open_01", base.gameObject);

            user.CurrentGun.ammo = 0;
            user.inventory.DestroyCurrentGun();

            if (ScrapCount == 1)
            {
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(120).gameObject, user);
                //   LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(821).gameObject, user);
            }

            if (ScrapCount == 2)
            {
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(565).gameObject, user);
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(565).gameObject, user);
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(565).gameObject, user);
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(565).gameObject, user);
            }

            if (ScrapCount == 3)
            {
                PickupObject byId = PickupObjectDatabase.GetById(78);
                LootEngine.SpawnItem(byId.gameObject, user.specRigidbody.UnitCenter, Vector2.up, 1f, false, true, false);
                LootEngine.SpawnItem(byId.gameObject, user.specRigidbody.UnitCenter, Vector2.up, 1.5f, false, true, false);
            }

            if (ScrapCount == 4)
            {
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(120).gameObject, user);
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(120).gameObject, user);
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(120).gameObject, user);
            }

            if (ScrapCount == 5)
            {
                if (this.GunRando == FiGun.NONE)
                {
                    Gun fallout = PickupObjectDatabase.GetByName(this.falloutGun) as Gun;
                    Gun tesla   = PickupObjectDatabase.GetByName(this.teslaGun) as Gun;
                    Gun phazor  = PickupObjectDatabase.GetByName(this.phazorGun) as Gun;

                    this.GunRando = (DwarvenHammer.FiGun)UnityEngine.Random.Range(1, 4);

                    if (this.GunRando == FiGun.TESLA)
                    {
                        this.m_player.inventory.AddGunToInventory(tesla, true);
                    }
                    if (this.GunRando == FiGun.PHAZOR)
                    {
                        this.m_player.inventory.AddGunToInventory(phazor, true);
                    }
                    if (GunRando == FiGun.FALLOUT)
                    {
                        this.m_player.inventory.AddGunToInventory(fallout, true);
                    }
                }
            }
            if (ScrapCount >= 6)
            {
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(120).gameObject, user);
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(565).gameObject, user);
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(565).gameObject, user);
            }
        }