Пример #1
0
    // Called 0th
    // Set references to itself
    private void Awake()
    {
        _mARef = this.GetComponent <MoveAttack>();
        if (_mARef == null)
        {
            Debug.Log("WARNING - There was no MoveAttack script attached to " + this.name);
        }
        GameObject gameContObj = GameObject.FindWithTag("GameController");

        if (gameContObj == null)
        {
            Debug.Log("WARNING - No GameObject with the tag GameController was found");
        }
        _skillHoldRef = gameContObj.GetComponent <SkillHolder>();
        if (_skillHoldRef == null)
        {
            Debug.Log("WARNING - There was no SkillHolder script attached to " + gameContObj.name);
        }

        // Initialize the list of skills
        _availableSkills = new List <Skill>();

        // Subscribe to the procedural gen event
        ProceduralGenerationController.OnFinishGenerationNoParam += Initialize;
    }
    public static void Load()
    {
        Util.PrintSection("Items");

        ITEMS.Clear();
        try
        {
            MySqlConnection con    = DatabaseManager.GetConnection();
            MySqlCommand    cmd    = new MySqlCommand(RESTORE_ITEMS, con);
            MySqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                int         itemId      = reader.GetInt32("item_id");
                int         skillId     = reader.GetInt32("skill_id");
                int         skillLevel  = reader.GetInt32("skill_level");
                SkillHolder skillHolder = SkillData.GetSkillHolder(skillId, skillLevel);
                if ((skillId > 0) && (skillHolder == null))
                {
                    LogManager.Log("ItemData: Could not find skill with id " + skillId + " and level " + skillLevel + " for item " + itemId + ".");
                }
                else
                {
                    ITEMS.Add(itemId, new ItemHolder(itemId, (ItemSlot)Enum.Parse(typeof(ItemSlot), reader.GetString("slot")), (ItemType)Enum.Parse(typeof(ItemType), reader.GetString("type")), reader.GetBoolean("stackable"), reader.GetBoolean("tradable"), reader.GetInt32("stamina"), reader.GetInt32("strength"), reader.GetInt32("dexterity"), reader.GetInt32("intelect"), skillHolder));
                }
            }
            con.Close();
        }
        catch (Exception e)
        {
            LogManager.Log(e.ToString());
        }

        LogManager.Log("ItemData: Loaded " + ITEMS.Count + " items.");
    }
Пример #3
0
        public ActionCharacter(BattleStatus status, GroupId groupId, GroupTag tag, Vector pos, float gravity, float runSpeed, SkillHolder skillHolder, EquipItemHolder equipItemHolder)
        {
            CurrentState     = new Idle();
            Executioner      = new Executioner();
            CurrentPosition  = pos;
            Gravity          = gravity;
            SkillHolder      = skillHolder;
            PickupItemHolder = new PickupItemHolder();
            PickupItemHolder.OnPickedItem += UpdateBattleStatus;
            PickupItemHolder.OnPickedItem += UpdateRunMaxSpeed;
            EquipItemHolder = equipItemHolder;
            BaseStatus      = status;
            BattleCharacter = new BattleCharacter(this, BattleStatusCalculator.calculate(status, this));

            BasicRunMaxSpeed = runSpeed;

            RunMaxSpeed = SpeedCalculator.Calculate(BasicRunMaxSpeed, this);

            GroupId = groupId;

            GroupTag = tag;

            Id = Guid.NewGuid();

            IsInvincible = false;

            CurrentFriction = 0.0f;
        }
Пример #4
0
 // Called before start
 private void Awake()
 {
     _skillHolderRef = this.GetComponent <SkillHolder>();
     if (_skillHolderRef == null)
     {
         Debug.Log("WARNING - No SkillHolder attached to " + this.name);
     }
 }
 public ItemTemplateHolder(int itemId, ItemSlot itemSlot, ItemType itemType, bool stackable, bool tradable, int stamina, int strength, int dexterity, int intelect, SkillHolder skillHolder)
 {
     _itemId = itemId;
     _itemSlot = itemSlot;
     _itemType = itemType;
     _stackable = stackable;
     _tradable = tradable;
     _stamina = stamina;
     _strength = strength;
     _dexterity = dexterity;
     _intelect = intelect;
     _skillHolder = skillHolder;
 }
Пример #6
0
 public ItemHolder(int itemId, ItemSlot itemSlot, ItemType itemType, bool stackable, bool tradable, int stamina, int strength, int dexterity, int intelect, SkillHolder skillHolder)
 {
     this.itemId      = itemId;
     this.itemSlot    = itemSlot;
     this.itemType    = itemType;
     this.stackable   = stackable;
     this.tradable    = tradable;
     this.stamina     = stamina;
     this.strength    = strength;
     this.dexterity   = dexterity;
     this.intelect    = intelect;
     this.skillHolder = skillHolder;
 }
Пример #7
0
 /// <summary>
 /// Refreshes the skill detailed menu about the last selected skill
 /// </summary>
 /// <param name="skillToCareAbout">The last selected skill</param>
 private void RefreshSkillDetails()
 {
     if (_lastSkill != null)
     {
         Skill skillToCareAbout = _lastSkill;
         // Set the display information to go with the skill
         _skillIcon.sprite      = SkillHolder.GetSkillImage(skillToCareAbout.GetSkillNum());
         _skillNameText.text    = " " + SkillHolder.GetSkillName(skillToCareAbout.GetSkillNum());
         _skillDescription.text = SkillHolder.GetSkillDescription(skillToCareAbout.GetSkillNum());
         _damageText.text       = skillToCareAbout.GetDamage().ToString();
         _rangeText.text        = skillToCareAbout.GetRange().ToString();
         _cooldownText.text     = skillToCareAbout.GetCoolDown().ToString();
     }
 }
Пример #8
0
    /// <summary>
    /// Display the preview menu with the ally's special skill
    /// </summary>
    /// <param name="allyStats">Reference to the ally who is parent of the skill</param>
    public void DisplayUpdatePreviewMenu(AllyStats allyStats)
    {
        // Update the skill preview
        string skillName        = " None";
        string skillDescription = "Upgrade magic to gain a skill";
        string skillDmg         = "0";
        string skillRange       = "0";
        string skillCooldown    = "0";
        Sprite skillIcon        = null;

        // Get the reference to the skill
        if (allyStats != null)
        {
            AllySkillController skillContRef = allyStats.GetComponent <AllySkillController>();
            if (skillContRef != null)
            {
                Skill activeSkill = skillContRef.SpecialSkill;
                if (activeSkill != null)
                {
                    skillName        = " " + SkillHolder.GetSkillName(activeSkill.GetSkillNum());
                    skillDescription = SkillHolder.GetSkillDescription(activeSkill.GetSkillNum());
                    skillDmg         = activeSkill.GetDamage().ToString();
                    skillRange       = activeSkill.GetRange().ToString();
                    skillCooldown    = activeSkill.GetCoolDown().ToString();
                    skillIcon        = SkillHolder.GetSkillImage(activeSkill.GetSkillNum());
                }
            }
        }
        // Set the values
        _skillNameText.text        = skillName;
        _skillDescriptionText.text = skillDescription;
        _skillDmgText.text         = skillDmg;
        _skillRangeText.text       = skillRange;
        _skillCooldownText.text    = skillCooldown;
        _skillIconImage.sprite     = skillIcon;
        if (skillIcon == null)
        {
            _skillIconImage.color = new Color(0, 0, 0, 0);
        }
        else
        {
            _skillIconImage.color = new Color(1, 1, 1, 1);
        }
        // Set their colors to default
        _skillNameText.color        = _defSkillTextCol;
        _skillDescriptionText.color = _defSkillTextCol;
        _skillDmgText.color         = _defSkillTextCol;
        _skillRangeText.color       = _defSkillTextCol;
        _skillCooldownText.color    = _defSkillTextCol;
    }
Пример #9
0
    /// <summary>
    /// Updates the skill skill buttons to reflect the selected character's skills
    /// </summary>
    private void UpdateSkillButtons(MoveAttack selChara)
    {
        // Get the current character's available skills
        List <Skill> availSkills = new List <Skill>();

        if (selChara != null)
        {
            availSkills = selChara.GetComponent <CharacterSkills>().GetAvailableSkills();
        }
        // Determine how many skills they have
        int amountSkills = availSkills.Count;

        if (amountSkills > _sideSkillObjs.Count)
        {
            Debug.LogError("The character has too many skills. Or there are too few side skill objects");
            amountSkills = _sideSkillObjs.Count;
        }

        // Turn on only as many side skills as needed
        for (int i = 0; i < amountSkills; ++i)
        {
            _sideSkillObjs[i].SetActive(true);
            _sideSkillIcons[i].sprite = SkillHolder.GetSkillImage(availSkills[i].GetSkillNum());
            if (availSkills[i].GetCooldownTimer() > 0)
            {
                _skillCoolTexts[i].text = availSkills[i].GetCooldownTimer().ToString();
            }
            else
            {
                _skillCoolTexts[i].text = "";
            }
            // If the skill is the active one, make it have the active color
            if (availSkills[i] == selChara.SkillRef)
            {
                _sideSkillIcons[i].color = _activeCol;
            }
            else
            {
                _sideSkillIcons[i].color = _inactiveCol;
            }
        }
        // Turn off the uneeded ones
        for (int i = amountSkills; i < _sideSkillObjs.Count; ++i)
        {
            _sideSkillObjs[i].SetActive(false);
        }
    }
    private void SetSkillModificator(SkillHolder skillHolder)
    {
        var sheet = characterSheetController.Character;

        var  skillCharacteristic = CharacterUtility.GetCharacteristicBySkill(skillHolder.type);
        int  characteristicValue = sheet[skillCharacteristic];
        bool isOwned             = (sheet.PersonalSkills & skillHolder.type) == skillHolder.type;
        int  modificator         = CharacterValuesUtility.GetCharacteristicModificator(characteristicValue);

        if (isOwned)
        {
            int level = CharacterValuesUtility.CalculateLevel(sheet.ExpiriencePoints);
            modificator += CharacterValuesUtility.GetMasteryBonus(level);
        }

        skillHolder.valueText.text    = TextUtility.GetSignedValueString(modificator);
        skillHolder.toggleButton.isOn = isOwned;
    }
Пример #11
0
    /// <summary>
    /// Changes the skill detailed menu about the skill
    /// </summary>
    /// <param name="skillIndex">Index of the button pressed</param>
    public void ChangeSkillDetails(int skillIndex)
    {
        // Get the current character's available skills
        MoveAttack   charMA      = _mAGUIContRef.RecentCharSelectedMA;
        List <Skill> availSkills = charMA.GetComponent <CharacterSkills>().GetAvailableSkills();
        // Get the skill coresponding to the clicked button
        Skill skillToCareAbout = availSkills[skillIndex];

        // Set the display information to go with the skill
        _skillIcon.sprite      = SkillHolder.GetSkillImage(skillToCareAbout.GetSkillNum());
        _skillNameText.text    = " " + SkillHolder.GetSkillName(skillToCareAbout.GetSkillNum());
        _skillDescription.text = SkillHolder.GetSkillDescription(skillToCareAbout.GetSkillNum());
        _damageText.text       = skillToCareAbout.GetDamage().ToString();
        _rangeText.text        = skillToCareAbout.GetRange().ToString();
        _cooldownText.text     = skillToCareAbout.GetCoolDown().ToString();

        _lastSkill = skillToCareAbout;
    }
Пример #12
0
 public MathSkillWorker(SkillHolder skillHolder) : base(skillHolder)
 {
 }
Пример #13
0
 void Awake()
 {
     instance = this;
 }
Пример #14
0
 public MemorySkillWorker(SkillHolder SkillHolder) : base(SkillHolder)
 {
 }
Пример #15
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var          mappedObj     = new List <ServantProfile>();
            var          activeSkills  = new List <ServantSkill>();
            var          passiveSkills = new List <ServantSkill>();
            var          traits        = new List <string>();
            var          tempProfile   = new ServantProfile();
            var          tempHolder    = new SkillHolder();
            PropertyInfo pi;
            var          objProps = typeof(ServantProfile).GetProperties().Select(p => p.Name.ToLower());

            while (reader.Read())
            {
                if (reader.TokenType == JsonToken.PropertyName)
                {
                    #region big switch
                    switch (reader.Value.ToString())
                    {
                    case nameof(SkillHolder.skill1):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.skill1 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.rank1):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.rank1 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.effect1):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.effect1 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.effect1RankUp):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.effect1RankUp = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.skill2):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.skill2 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.rank2):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.rank2 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.effect2):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.effect2 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.effect2RankUp):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.effect2RankUp = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.skill3):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.skill3 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.rank3):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.rank3 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.effect3):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.effect3 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.effect3RankUp):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.effect3RankUp = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveSkill1):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveSkill1 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveRank1):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveRank1 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveEffect1):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveEffect1 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveSkill2):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveSkill2 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveRank2):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveRank2 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveEffect2):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveEffect2 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveSkill3):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveSkill3 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveRank3):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveRank3 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveEffect3):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveEffect3 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveSkill4):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveSkill4 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveRank4):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveRank4 = reader.Value.ToString();
                        }
                        break;

                    case nameof(SkillHolder.passiveEffect4):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            tempHolder.passiveEffect4 = reader.Value.ToString();
                        }
                        break;

                    case nameof(traits):
                        if (reader.Read() && reader.TokenType == JsonToken.String)
                        {
                            traits = reader.Value.ToString().Split(',').ToList();
                        }
                        break;

                    default:
                        string readerValue = reader.Value.ToString().ToLower();
                        if (reader.Read())
                        {
                            if (objProps.Contains(readerValue))
                            {
                                pi = tempProfile.GetType().GetProperty(readerValue, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
                                var convertedValue = Convert.ChangeType(reader.Value, pi.PropertyType);
                                pi.SetValue(tempProfile, convertedValue, null);
                            }
                        }
                        break;
                    }
                    #endregion
                }
                else if (reader.TokenType == JsonToken.EndObject && reader.Depth == 1)
                {
                    activeSkills.AddRange(new[]
                    {
                        new ServantSkill {
                            SkillName = tempHolder.skill1, Rank = tempHolder.rank1, Effect = tempHolder.effect1, RankUpEffect = tempHolder.effect1RankUp
                        },
                        new ServantSkill {
                            SkillName = tempHolder.skill2, Rank = tempHolder.rank2, Effect = tempHolder.effect2, RankUpEffect = tempHolder.effect2RankUp
                        },
                        new ServantSkill {
                            SkillName = tempHolder.skill3, Rank = tempHolder.rank3, Effect = tempHolder.effect3, RankUpEffect = tempHolder.effect3RankUp
                        },
                    });
                    passiveSkills.AddRange(new[]
                    {
                        new ServantSkill {
                            SkillName = tempHolder.passiveSkill1, Rank = tempHolder.passiveRank1, Effect = tempHolder.passiveEffect1
                        },
                        new ServantSkill {
                            SkillName = tempHolder.passiveSkill2, Rank = tempHolder.passiveRank2, Effect = tempHolder.passiveEffect2
                        },
                        new ServantSkill {
                            SkillName = tempHolder.passiveSkill3, Rank = tempHolder.passiveRank3, Effect = tempHolder.passiveEffect3
                        },
                        new ServantSkill {
                            SkillName = tempHolder.passiveSkill4, Rank = tempHolder.passiveRank4, Effect = tempHolder.passiveEffect4
                        },
                    });

                    tempProfile.ActiveSkills  = activeSkills;
                    tempProfile.PassiveSkills = passiveSkills;
                    tempProfile.Traits        = traits;
                    mappedObj.Add(tempProfile);

                    activeSkills  = new List <ServantSkill>();
                    passiveSkills = new List <ServantSkill>();
                    traits        = new List <string>();
                    tempProfile   = new ServantProfile();
                    tempHolder    = new SkillHolder();
                }
            }

            return(mappedObj);
        }
Пример #16
0
    /// <summary>
    /// Replaces text and such with what would happen if the skill was upgraded
    /// </summary>
    /// <param name="allyGrim">Grimoire of the selected</param>
    /// <param name="previewMagicStat">The amount the magic will potentially increase</param>
    public void PreviewSkillUpgrade(AllyGrimoire allyGrim, int amountIncrease)
    {
        // Default values
        string skillName        = " None";
        string skillDescription = "Upgrade magic to gain a skill";
        int    skillDmg         = 0;
        int    skillRange       = 0;
        int    skillCooldown    = 0;
        Sprite skillIcon        = null;

        // For if the values were changed at all
        bool isSkillNameBuff     = false;
        bool isSkillDmgBuff      = false;
        bool isSkillRangeBuff    = false;
        bool isSkillCooldownBuff = false;

        // Get the starting values for the skill
        AllySkillController skillContRef = allyGrim.GetComponent <AllySkillController>();

        if (skillContRef != null)
        {
            Skill activeSkill = skillContRef.SpecialSkill;
            if (activeSkill != null)
            {
                skillName        = " " + SkillHolder.GetSkillName(activeSkill.GetSkillNum());
                skillDescription = SkillHolder.GetSkillDescription(activeSkill.GetSkillNum());
                skillIcon        = SkillHolder.GetSkillImage(activeSkill.GetSkillNum());
                skillDmg         = activeSkill.GetDamage();
                skillRange       = activeSkill.GetRange();
                skillCooldown    = activeSkill.GetCoolDown();
            }


            // Iterate over the buffs
            for (int i = 1; i <= amountIncrease; ++i)
            {
                // Get the next buff
                MagicBuff nextBuff = allyGrim.PeekForward(i);

                switch (nextBuff)
                {
                // If the next buff is to acquire a skill, get that skill and set the defaults
                case (MagicBuff.SKILLACQ):
                    // We are going to temporarily give this character the skill in question to get the starting values
                    Skill gainSkill = _skillHolderRef.GiveSkill(skillContRef, allyGrim.SkillToGain);

                    skillName        = " " + SkillHolder.GetSkillName(allyGrim.SkillToGain);
                    skillDescription = SkillHolder.GetSkillDescription(allyGrim.SkillToGain);
                    skillIcon        = SkillHolder.GetSkillImage(allyGrim.SkillToGain);
                    skillDmg         = gainSkill.GetDamage();
                    skillRange       = gainSkill.GetRange();
                    skillCooldown    = gainSkill.GetCoolDown();

                    isSkillNameBuff     = true;
                    isSkillDmgBuff      = true;
                    isSkillRangeBuff    = true;
                    isSkillCooldownBuff = true;

                    // Get rid of the temporary skill
                    Destroy(gainSkill);
                    break;

                // If the next buff is just an increment, increment them
                case (MagicBuff.DMGINC):
                    ++skillDmg;
                    isSkillDmgBuff = true;
                    break;

                case (MagicBuff.RANGEINC):
                    isSkillRangeBuff = true;
                    ++skillRange;
                    break;

                case (MagicBuff.COOLLWR):
                    isSkillCooldownBuff = true;
                    --skillCooldown;
                    break;

                default:
                    Debug.Log("Unhandled MagicBuff in SkillPreviewController");
                    break;
                }
            }
            // Set the values
            _skillNameText.text        = skillName;
            _skillDescriptionText.text = skillDescription;
            _skillIconImage.sprite     = skillIcon;
            if (skillIcon == null)
            {
                _skillIconImage.color = new Color(0, 0, 0, 0);
            }
            else
            {
                _skillIconImage.color = new Color(1, 1, 1, 1);
            }
            _skillDmgText.text      = skillDmg.ToString();
            _skillRangeText.text    = skillRange.ToString();
            _skillCooldownText.text = skillCooldown.ToString();
            // Set the ones that were buffed to green
            if (isSkillNameBuff)
            {
                _skillNameText.color = CharDetailedMenuController.UpgradeTextCol;
            }
            if (isSkillDmgBuff)
            {
                _skillDmgText.color = CharDetailedMenuController.UpgradeTextCol;
            }
            if (isSkillRangeBuff)
            {
                _skillRangeText.color = CharDetailedMenuController.UpgradeTextCol;
            }
            if (isSkillCooldownBuff)
            {
                _skillCooldownText.color = CharDetailedMenuController.UpgradeTextCol;
            }
        }
    }