Beispiel #1
0
 public int getRunestoneSkillGroupIndex(string runestoneId)
 {
     ConfigRunestones.SharedData runestoneData = ConfigRunestones.GetRunestoneData(runestoneId);
     ConfigPerks.SharedData      data2         = ConfigPerks.SHARED_DATA[runestoneData.PerkInstance.Type];
     ConfigSkills.SharedData     data3         = ConfigSkills.SHARED_DATA[data2.LinkedToSkill];
     return(data3.Group);
 }
Beispiel #2
0
 public bool ownsAllRunestonesWithRarity(int rarity)
 {
     for (int i = 0; i < ConfigRunestones.RUNESTONES.Length; i++)
     {
         ConfigRunestones.SharedData data = ConfigRunestones.RUNESTONES[i];
         if ((data.Rarity == rarity) && !this.ownsRunestone(data.Id))
         {
             return(false);
         }
     }
     return(true);
 }
        private void reconstructContent()
        {
            Player player = GameLogic.Binder.GameState.Player;

            base.m_contentMenu.refreshTitle("SKILL RUNES", string.Empty, string.Empty);
            this.cleanupCells();
            int       num      = 0;
            int       rowIdx   = 0;
            Transform parentTm = null;
            int       index    = 0;

            while (index < ConfigRunestones.RUNESTONES.Length)
            {
                if (num == 0)
                {
                    parentTm = this.addGridRowCellToVerticalGroup(rowIdx).GridRoot.transform;
                    this.addSkillTitleCellToGrid(rowIdx, parentTm);
                    rowIdx++;
                }
                else
                {
                    Card.Content content2;
                    ConfigRunestones.SharedData data = ConfigRunestones.RUNESTONES[index];
                    string       id      = data.Id;
                    Card.Content content = null;
                    if (player.Runestones.ownsRunestone(id))
                    {
                        content2              = new Card.Content();
                        content2.Id           = id;
                        content2.Sprite       = data.Sprite;
                        content2.Rarity       = data.Rarity;
                        content2.Interactable = true;
                        content = content2;
                    }
                    else
                    {
                        content2              = new Card.Content();
                        content2.Id           = id;
                        content2.Sprite       = data.Sprite;
                        content2.Rarity       = data.Rarity;
                        content2.Interactable = true;
                        content2.Grayscale    = true;
                        content = content2;
                    }
                    this.addRunestoneToGrid(content, parentTm);
                    index++;
                }
                num = (num + 1) % 4;
            }
        }
Beispiel #4
0
 public void getPerkInstancesOfType(PerkType perkType, IBuffIconProvider iconProvider, ref List <KeyValuePair <PerkInstance, BuffSource> > outPerkInstances)
 {
     for (int i = 0; i < this.SelectedRunestones.Count; i++)
     {
         if (this.SelectedRunestones[i].Source == RunestoneSelectionSource.Player)
         {
             string    id = this.SelectedRunestones[i].Id;
             SkillType skillTypeForRunestone = ConfigRunestones.GetSkillTypeForRunestone(id);
             if ((skillTypeForRunestone != SkillType.NONE) && this.Player.ActiveCharacter.isSkillActive(skillTypeForRunestone))
             {
                 ConfigRunestones.SharedData runestoneData = ConfigRunestones.GetRunestoneData(id);
                 if (runestoneData.PerkInstance != null)
                 {
                     runestoneData.PerkInstance.getPerkInstancesOfType(perkType, runestoneData, ref outPerkInstances);
                 }
             }
         }
     }
 }
Beispiel #5
0
 public bool hasSkillInvulnerability(SkillType skillType)
 {
     for (int i = 0; i < this.SelectedRunestones.Count; i++)
     {
         if (this.SelectedRunestones[i].Source == RunestoneSelectionSource.Player)
         {
             string    id = this.SelectedRunestones[i].Id;
             SkillType skillTypeForRunestone = ConfigRunestones.GetSkillTypeForRunestone(id);
             if ((skillTypeForRunestone != SkillType.NONE) && this.Player.ActiveCharacter.isSkillActive(skillTypeForRunestone))
             {
                 ConfigRunestones.SharedData runestoneData = ConfigRunestones.GetRunestoneData(id);
                 if ((runestoneData.PerkInstance != null) && runestoneData.PerkInstance.hasSkillInvulnerability(skillType))
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
Beispiel #6
0
        public float getGenericModifierForPerkType(PerkType perkType)
        {
            float num = 0f;

            for (int i = 0; i < this.SelectedRunestones.Count; i++)
            {
                if (this.SelectedRunestones[i].Source == RunestoneSelectionSource.Player)
                {
                    string    id = this.SelectedRunestones[i].Id;
                    SkillType skillTypeForRunestone = ConfigRunestones.GetSkillTypeForRunestone(id);
                    if ((skillTypeForRunestone != SkillType.NONE) && this.Player.ActiveCharacter.isSkillActive(skillTypeForRunestone))
                    {
                        ConfigRunestones.SharedData runestoneData = ConfigRunestones.GetRunestoneData(id);
                        if (runestoneData.PerkInstance != null)
                        {
                            num += runestoneData.PerkInstance.getGenericModifierForPerkType(perkType);
                        }
                    }
                }
            }
            return(num);
        }
Beispiel #7
0
        public int getSkillExtraCharges(SkillType skillType)
        {
            int num = 0;

            for (int i = 0; i < this.SelectedRunestones.Count; i++)
            {
                if (this.SelectedRunestones[i].Source == RunestoneSelectionSource.Player)
                {
                    string    id = this.SelectedRunestones[i].Id;
                    SkillType skillTypeForRunestone = ConfigRunestones.GetSkillTypeForRunestone(id);
                    if ((skillTypeForRunestone != SkillType.NONE) && this.Player.ActiveCharacter.isSkillActive(skillTypeForRunestone))
                    {
                        ConfigRunestones.SharedData runestoneData = ConfigRunestones.GetRunestoneData(id);
                        if (runestoneData.PerkInstance != null)
                        {
                            PerkInstance perkInstance = runestoneData.PerkInstance;
                            num += perkInstance.getSkillExtraCharges(skillType);
                        }
                    }
                }
            }
            return(num);
        }
Beispiel #8
0
        public static CharacterInstance ExecuteStatic(SpawningData data)
        {
            CharacterInstance character = GameLogic.Binder.CharacterPool.getObject();

            if (data.CharacterInstancePrototype != null)
            {
                character.copyFrom(data.CharacterInstancePrototype);
            }
            else
            {
                character.CharacterId = data.CharacterPrototype.Id;
            }
            character.postDeserializeInitialization();
            GameLogic.Binder.EventBus.CharacterSpawnStarted(character);
            if (data.BossPerks != null)
            {
                character.BossPerks.PerkInstances.AddRange(data.BossPerks);
            }
            if (data.SupportRunestonePerkSnapshotSource != null)
            {
                Player supportRunestonePerkSnapshotSource = data.SupportRunestonePerkSnapshotSource;
                for (int i = 0; i < supportRunestonePerkSnapshotSource.Runestones.SelectedRunestones.Count; i++)
                {
                    string    id = supportRunestonePerkSnapshotSource.Runestones.SelectedRunestones[i].Id;
                    SkillType skillTypeForRunestone           = ConfigRunestones.GetSkillTypeForRunestone(id);
                    ConfigRunestones.SharedData runestoneData = ConfigRunestones.GetRunestoneData(id);
                    if (((skillTypeForRunestone != SkillType.NONE) && supportRunestonePerkSnapshotSource.ActiveCharacter.isSkillActive(skillTypeForRunestone)) && (runestoneData.PerkInstance != null))
                    {
                        character.SupportPerks.PerkInstances.Add(runestoneData.PerkInstance);
                    }
                }
            }
            character.Rank              = data.Rank;
            character.OwningPlayer      = !data.IsPlayerCharacter ? null : GameLogic.Binder.GameState.Player;
            character.IsDead            = false;
            character.IsPlayerCharacter = data.IsPlayerCharacter;
            character.IsSupport         = data.IsPlayerSupportCharacter;
            character.IsPet             = data.IsPet;
            if (character.IsPet)
            {
                character.IsSupport = true;
            }
            character.IsBoss      = data.IsBoss;
            character.IsEliteBoss = data.IsEliteBoss;
            if (character.IsEliteBoss)
            {
                character.IsBoss = true;
            }
            character.IsWildBoss = data.IsWildBoss;
            if (character.IsWildBoss)
            {
                character.IsBoss = true;
            }
            character.IsBossClone = data.IsBossClone;
            if (data.IsBossClone)
            {
                character.IsBoss = true;
            }
            character.Id = !character.IsPlayerCharacter ? ("Enemy_" + sm_spawnCounter++) : ("Player_" + sm_spawnCounter++);
            if (data.NormalizedStartingHp > 0f)
            {
                character.CurrentHp = character.MaxLife(true) * data.NormalizedStartingHp;
            }
            else
            {
                character.CurrentHp = character.MaxLife(true);
            }
            character.PhysicsBody.name = "CharacterBody_" + character.Id;
            if (character.IsBoss)
            {
                character.PhysicsBody.CharacterController.radius = character.Radius * 1.5f;
            }
            else
            {
                character.PhysicsBody.CharacterController.radius = character.Radius;
            }
            character.PhysicsBody.CharacterController.height  = 4f;
            character.PhysicsBody.CharacterController.enabled = true;
            character.assignToDefaultLayer();
            character.PhysicsBody.transform.position = data.SpawnWorldPos;
            character.PhysicsBody.transform.rotation = data.SpawnWorlRot;
            if (character.IsSupport)
            {
                character.PhysicsBody.tag = Tags.SUPPORT_CHARACTER;
            }
            else if (character.IsPlayerCharacter)
            {
                character.PhysicsBody.tag = Tags.HERO_CHARACTER;
            }
            else
            {
                character.PhysicsBody.tag = Tags.MONSTER_CHARACTER;
            }
            if (character.IsSupport)
            {
                character.PhysicsBody.Seeker.traversableTags = 0x20000001;
            }
            else if (character.IsPlayerCharacter)
            {
                character.PhysicsBody.Seeker.traversableTags = -536870911;
            }
            else
            {
                character.PhysicsBody.Seeker.traversableTags = -1073741823;
            }
            character.IsPersistent = data.IsPersistent;
            if (data.IsPersistent)
            {
                GameLogic.Binder.GameState.PersistentCharacters.Add(character);
                character.PhysicsBody.gameObject.SetActive(false);
            }
            else
            {
                GameLogic.Binder.GameState.ActiveDungeon.ActiveRoom.ActiveCharacters.Add(character);
                character.PhysicsBody.gameObject.SetActive(true);
            }
            if (data.LimitedLifetimeSeconds > 0f)
            {
                character.FutureTimeOfDeath = Time.fixedTime + data.LimitedLifetimeSeconds;
            }
            else
            {
                character.FutureTimeOfDeath = 0f;
            }
            character.Source = data.Source;
            character.resetAttackTimer();
            character.completeAttackTimer();
            GameLogic.Binder.EventBus.CharacterSpawned(character);
            return(character);
        }
Beispiel #9
0
        private static void PlayerMigrate_v3_to_v4(Player player)
        {
            for (int i = 0; i < player.CumulativeRetiredHeroStats.EncounteredChestTypes.Count; i++)
            {
                if (player.CumulativeRetiredHeroStats.EncounteredChestTypes[i] == ChestType.Wooden001.ToString())
                {
                    player.CumulativeRetiredHeroStats.EncounteredChestTypes[i] = ChestType.Basic001.ToString();
                }
            }
            for (int j = 0; j < player.UnclaimedRewards.Count; j++)
            {
                if (player.UnclaimedRewards[j].ChestType == ChestType.Wooden001)
                {
                    player.UnclaimedRewards[j].ChestType = ChestType.Basic001;
                }
            }
            for (int k = 0; k < player.CharacterInstances.Count; k++)
            {
                CharacterInstance instance = player.CharacterInstances[k];
                for (int num4 = 0; num4 < instance.HeroStats.EncounteredChestTypes.Count; num4++)
                {
                    if (instance.HeroStats.EncounteredChestTypes[num4] == ChestType.Wooden001.ToString())
                    {
                        instance.HeroStats.EncounteredChestTypes[num4] = ChestType.Basic001.ToString();
                    }
                }
            }
            for (int m = 0; m < player.Vendor.Inventory.Count; m++)
            {
                if (player.Vendor.Inventory[m].PrerolledChestType == ChestType.Wooden001)
                {
                    player.Vendor.Inventory[m].PrerolledChestType = ChestType.Basic001;
                }
            }
            if (player.CompletedTutorials.Contains("CTUT001"))
            {
                player.SocialData.HeroNamingCount = 1;
            }
            int num6 = 0;

            for (int n = player.Runestones.RunestoneInstances.Count - 1; n >= 0; n--)
            {
                RunestoneInstance           instance2     = player.Runestones.RunestoneInstances[n];
                ConfigRunestones.SharedData runestoneData = ConfigRunestones.GetRunestoneData(instance2.Id);
                num6 += ConfigRunestones.RUNESTONE_UPDATE_V3_RARITY_TO_V4_GEM_REWARD[runestoneData.Rarity];
                if (runestoneData.LinkedToSkill == SkillType.NONE)
                {
                    player.Runestones.RunestoneInstances.RemoveAt(n);
                }
                else
                {
                    instance2.InspectedByPlayer = false;
                }
            }
            if (num6 > 0)
            {
                Reward item = new Reward();
                item.ChestType = ChestType.RunestoneUpdateReward;
                item.addResourceDrop(ResourceType.Diamond, (double)num6);
                player.UnclaimedUpdateRewards.Add(item);
            }
            player.ActiveCharacter.Inventory.FrenzyPotions = player.UnusedFrenzyPotions;
            player.ActiveCharacter.Inventory.RevivePotions = player.UnusedFreeRevives;
        }