Example #1
0
 public void Save(SerializableSkill serializable)
 {
     serializable.Name                = Name;
     serializable.Description         = Description;
     serializable.Icon                = Icon;
     serializable.BaseRequirement     = BaseRequirement.Value;
     serializable.RequirementPerLevel = RequirementPerLevel.Value;
     serializable.BasePrice           = BasePrice.Value;
     serializable.PricePerLevel       = PricePerLevel.Value;
     serializable.MaxLevel            = MaxLevel.Value;
 }
Example #2
0
 public Skill(SerializableSkill skill, Database database)
 {
     ItemId              = new ItemId <Skill>(skill.Id, skill.FileName);
     Name                = skill.Name;
     Description         = skill.Description;
     Icon                = skill.Icon;
     BaseRequirement     = new NumericValue <float>(skill.BaseRequirement, 0, 100);
     RequirementPerLevel = new NumericValue <float>(skill.RequirementPerLevel, 0, 100);
     BasePrice           = new NumericValue <float>(skill.BasePrice, 0, 100);
     PricePerLevel       = new NumericValue <float>(skill.PricePerLevel, 0, 100);
     MaxLevel            = new NumericValue <int>(skill.MaxLevel, 1, 1000);
 }
Example #3
0
 /// <summary>
 /// Deserialization constructor from datafiles.
 /// </summary>
 /// <param name="group"></param>
 /// <param name="src"></param>
 /// <param name="arrayIndex"></param>
 internal StaticSkill(StaticSkillGroup group, SerializableSkill src, int arrayIndex)
 {
     m_id                      = src.ID;
     m_cost                    = src.Cost;
     m_rank                    = src.Rank;
     m_public                  = src.Public;
     m_name                    = src.Name;
     m_description             = src.Description;
     m_descriptionNL           = null;
     m_primaryAttribute        = src.PrimaryAttribute;
     m_secondaryAttribute      = src.SecondaryAttribute;
     m_trainableOnTrialAccount = src.CanTrainOnTrial;
     m_arrayIndex              = arrayIndex;
     m_group                   = group;
 }
Example #4
0
 /// <summary>
 /// Deserialization constructor from datafiles.
 /// </summary>
 /// <param name="group"></param>
 /// <param name="src"></param>
 /// <param name="arrayIndex"></param>
 internal StaticSkill(StaticSkillGroup group, SerializableSkill src, int arrayIndex)
 {
     ID                 = src.ID;
     Cost               = src.Cost;
     Rank               = src.Rank;
     IsPublic           = src.Public;
     Name               = src.Name;
     Description        = src.Description;
     PrimaryAttribute   = src.PrimaryAttribute;
     SecondaryAttribute = src.SecondaryAttribute;
     ArrayIndex         = arrayIndex;
     Group              = group;
     Prerequisites      = new Collection <StaticSkillLevel>();
     FormattedCost      = Cost.ToNumericString(0);
     AlphaLimit         = src.AlphaLimit;
 }
Example #5
0
        /// <summary>
        /// Exports the skills in the skill group.
        /// </summary>
        /// <param name="group">The group.</param>
        /// <returns></returns>
        private static IEnumerable <SerializableSkill> ExportSkillsInGroup(IHasID group)
        {
            List <SerializableSkill> listOfSkillsInGroup = new List <SerializableSkill>();

            foreach (InvTypes skill in Database.InvTypesTable.Where(x => x.GroupID == group.ID))
            {
                Util.UpdatePercentDone(Database.SkillsTotalCount);

                SerializableSkill singleSkill = new SerializableSkill
                {
                    ID          = skill.ID,
                    Name        = skill.Name,
                    Description = skill.Description,
                    Public      = skill.Published,
                    Cost        = (long)skill.BasePrice,
                };

                // Export skill atributes
                Dictionary <int, Int64> skillAttributes = Database.DgmTypeAttributesTable.Where(
                    x => x.ItemID == skill.ID).ToDictionary(
                    attribute => attribute.AttributeID, attribute => attribute.GetInt64Value);

                singleSkill.Rank = skillAttributes.ContainsKey(DBConstants.SkillTimeConstantPropertyID) &&
                                   skillAttributes[DBConstants.SkillTimeConstantPropertyID] > 0
                    ? skillAttributes[DBConstants.SkillTimeConstantPropertyID]
                    : 1;

                singleSkill.PrimaryAttribute = skillAttributes.ContainsKey(DBConstants.PrimaryAttributePropertyID)
                    ? IntToEveAttribute(skillAttributes[DBConstants.PrimaryAttributePropertyID])
                    : EveAttribute.None;
                singleSkill.SecondaryAttribute = skillAttributes.ContainsKey(DBConstants.SecondaryAttributePropertyID)
                    ? IntToEveAttribute(
                    skillAttributes[DBConstants.SecondaryAttributePropertyID])
                    : EveAttribute.None;
                singleSkill.CanTrainOnTrial = !skillAttributes.ContainsKey(DBConstants.CanNotBeTrainedOnTrialPropertyID) ||
                                              skillAttributes[DBConstants.CanNotBeTrainedOnTrialPropertyID] == 0;

                // Export prerequesities
                List <SerializableSkillPrerequisite> listOfPrerequisites = new List <SerializableSkillPrerequisite>();

                for (int i = 0; i < DBConstants.RequiredSkillPropertyIDs.Count; i++)
                {
                    if (!skillAttributes.ContainsKey(DBConstants.RequiredSkillPropertyIDs[i]) ||
                        !skillAttributes.ContainsKey(DBConstants.RequiredSkillLevelPropertyIDs[i]))
                    {
                        continue;
                    }

                    InvTypes prereqSkill = Database.InvTypesTable[skillAttributes[DBConstants.RequiredSkillPropertyIDs[i]]];

                    SerializableSkillPrerequisite preReq = new SerializableSkillPrerequisite
                    {
                        ID    = prereqSkill.ID,
                        Level =
                            skillAttributes[DBConstants.RequiredSkillLevelPropertyIDs[i]],
                        Name = prereqSkill.Name
                    };

                    // Add prerequisites
                    listOfPrerequisites.Add(preReq);
                }

                // Add prerequesites to skill
                singleSkill.SkillPrerequisites.AddRange(listOfPrerequisites);

                // Add skill
                listOfSkillsInGroup.Add(singleSkill);
            }
            return(listOfSkillsInGroup);
        }
Example #6
0
 public void OnCastedSkill(SerializableSkill serializableSkill, int target)
 {
     Debug.Log("CAST on " + target + "dmg " + serializableSkill.HitRatio);
     fightController.DoActionOnId(target, (int)serializableSkill.HitRatio);
     fightController.TickFight();
 }
Example #7
0
        /// <summary>
        /// Exports the skills in the skill group.
        /// </summary>
        /// <param name="group">The group.</param>
        /// <returns></returns>
        private static IEnumerable <SerializableSkill> ExportSkillsInGroup(IHasID group)
        {
            List <SerializableSkill> listOfSkillsInGroup = new List <SerializableSkill>();

            var alphaLimit = HoboleaksAlphaSkills.GetAlphaSkillLimits();
            var l5         = new SerializableSkillPrerequisite()
            {
                ID    = 3348, // Leadership
                Level = 5,
                Name  = Database.InvTypesTable[3348].Name
            };

            foreach (InvTypes skill in Database.InvTypesTable.Where(x => x.GroupID == group.ID))
            {
                Util.UpdatePercentDone(Database.SkillsTotalCount);

                int skillID = skill.ID;
                SerializableSkill singleSkill = new SerializableSkill
                {
                    ID          = skillID,
                    Name        = skill.Name,
                    Description = skill.Description,
                    Public      = skill.Published,
                    Cost        = (long)skill.BasePrice,
                    AlphaLimit  = (alphaLimit.ContainsKey(skill.ID)) ? alphaLimit[skill.ID] : 0,
                };

                // Export skill atributes
                Dictionary <int, long> skillAttributes = Database.DgmTypeAttributesTable.Where(
                    x => x.ItemID == skill.ID).ToDictionary(
                    attribute => attribute.AttributeID, attribute => attribute.GetInt64Value);

                singleSkill.Rank = skillAttributes.ContainsKey(DBConstants.SkillTimeConstantPropertyID) &&
                                   skillAttributes[DBConstants.SkillTimeConstantPropertyID] > 0
                    ? skillAttributes[DBConstants.SkillTimeConstantPropertyID]
                    : 1;

                singleSkill.PrimaryAttribute = skillAttributes.ContainsKey(DBConstants.PrimaryAttributePropertyID)
                    ? IntToEveAttribute(skillAttributes[DBConstants.PrimaryAttributePropertyID])
                    : EveAttribute.None;
                singleSkill.SecondaryAttribute = skillAttributes.ContainsKey(DBConstants.SecondaryAttributePropertyID)
                    ? IntToEveAttribute(
                    skillAttributes[DBConstants.SecondaryAttributePropertyID])
                    : EveAttribute.None;

                // Export prerequisites
                List <SerializableSkillPrerequisite> listOfPrerequisites = new List <SerializableSkillPrerequisite>();

                for (int i = 0; i < DBConstants.RequiredSkillPropertyIDs.Count; i++)
                {
                    if (!skillAttributes.ContainsKey(DBConstants.RequiredSkillPropertyIDs[i]) ||
                        !skillAttributes.ContainsKey(DBConstants.RequiredSkillLevelPropertyIDs[i]))
                    {
                        continue;
                    }

                    InvTypes prereqSkill = Database.InvTypesTable[skillAttributes[DBConstants.RequiredSkillPropertyIDs[i]]];

                    SerializableSkillPrerequisite preReq = new SerializableSkillPrerequisite
                    {
                        ID    = prereqSkill.ID,
                        Level =
                            skillAttributes[DBConstants.RequiredSkillLevelPropertyIDs[i]],
                        Name = prereqSkill.Name
                    };

                    // Add prerequisites
                    listOfPrerequisites.Add(preReq);
                }

                // Add prerequesites to skill
                singleSkill.SkillPrerequisites.AddRange(listOfPrerequisites);

                // Hack: Fleet formation skills have all NULL attributes. CCPlease.
                if (skillID == DBConstants.FleetCoordinationSkillID)
                {
                    singleSkill.Description        = "Advanced fleet support skill allowing commanders to increase the size and spread of their fleet formations. Unlocks additional formation scaling options at each level of training.";
                    singleSkill.Rank               = 8;
                    singleSkill.Cost               = 40000000L;
                    singleSkill.PrimaryAttribute   = EveAttribute.Charisma;
                    singleSkill.SecondaryAttribute = EveAttribute.Willpower;
                    singleSkill.AlphaLimit         = 0;
                    singleSkill.SkillPrerequisites.Add(l5);
                    singleSkill.SkillPrerequisites.Add(new SerializableSkillPrerequisite()
                    {
                        ID    = DBConstants.FleetFormationsSkillID,
                        Level = 1,
                        Name  = Database.InvTypesTable[DBConstants.FleetFormationsSkillID].Name
                    });
                }
                else if (skillID == DBConstants.FleetFormationsSkillID)
                {
                    singleSkill.Description        = "Fleet support skill allowing commanders to organize and warp fleets in formation. Unlocks additional formation types at each level of training.";
                    singleSkill.Rank               = 5;
                    singleSkill.Cost               = 40000000L;
                    singleSkill.PrimaryAttribute   = EveAttribute.Charisma;
                    singleSkill.SecondaryAttribute = EveAttribute.Willpower;
                    singleSkill.AlphaLimit         = 0;
                    singleSkill.SkillPrerequisites.Add(l5);
                }

                // Add skill
                listOfSkillsInGroup.Add(singleSkill);
            }
            return(listOfSkillsInGroup);
        }
Example #8
0
 public void ReceiveSkill(SerializableSkill skill, int characterId)
 {
     CastedSkill?.Invoke(skill, characterId);
 }
Example #9
0
 public void SendSkillData(SerializableSkill skill, int characterId)
 {
     ReceiveSkill(skill, characterId);
 }
Example #10
0
        /// <summary>
        /// Deserialization constructor from datafiles.
        /// </summary>
        /// <param name="group"></param>
        /// <param name="src"></param>
        /// <param name="arrayIndex"></param>
        internal StaticSkill(StaticSkillGroup group, SerializableSkill src, int arrayIndex)
        {
            m_id                      = src.ID;
            m_cost                    = src.Cost;
            m_rank                    = src.Rank;
            m_public                  = src.Public;
            m_name                    = src.Name;
            m_description             = src.Description;
            m_descriptionNL           = null;
            m_primaryAttribute        = src.PrimaryAttribute;
            m_secondaryAttribute      = src.SecondaryAttribute;
            m_trainableOnTrialAccount = src.CanTrainOnTrial;
            m_arrayIndex              = arrayIndex;
            m_group                   = group;

            switch (m_name)
            {
            case "Analytical Mind":
                m_bonusAttribute = EveAttribute.Intelligence;
                m_learningClass  = LearningClass.LowerTierAttribute;
                break;

            case "Logic":
                m_bonusAttribute = EveAttribute.Intelligence;
                m_learningClass  = LearningClass.UpperTierAttribute;
                break;

            case "Empathy":
                m_bonusAttribute = EveAttribute.Charisma;
                m_learningClass  = LearningClass.LowerTierAttribute;
                break;

            case "Presence":
                m_bonusAttribute = EveAttribute.Charisma;
                m_learningClass  = LearningClass.UpperTierAttribute;
                break;

            case "Instant Recall":
                m_bonusAttribute = EveAttribute.Memory;
                m_learningClass  = LearningClass.LowerTierAttribute;
                break;

            case "Eidetic Memory":
                m_bonusAttribute = EveAttribute.Memory;
                m_learningClass  = LearningClass.UpperTierAttribute;
                break;

            case "Iron Will":
                m_bonusAttribute = EveAttribute.Willpower;
                m_learningClass  = LearningClass.LowerTierAttribute;
                break;

            case "Focus":
                m_bonusAttribute = EveAttribute.Willpower;
                m_learningClass  = LearningClass.UpperTierAttribute;
                break;

            case "Spatial Awareness":
                m_bonusAttribute = EveAttribute.Perception;
                m_learningClass  = LearningClass.LowerTierAttribute;
                break;

            case "Clarity":
                m_bonusAttribute = EveAttribute.Perception;
                m_learningClass  = LearningClass.UpperTierAttribute;
                break;

            case "Learning":
                m_bonusAttribute = EveAttribute.None;
                m_learningClass  = LearningClass.Learning;
                break;

            default:
                m_bonusAttribute = EveAttribute.None;
                m_learningClass  = LearningClass.None;
                break;
            }
        }