public static Job Random(Rand.RandSync randSync = Rand.RandSync.Unsynced)
        {
            var prefab  = JobPrefab.Random(randSync);
            var variant = Rand.Range(0, prefab.Variants, randSync);

            return(new Job(prefab, variant));
        }
        public Job(XElement element)
        {
            string    identifier = element.GetAttributeString("identifier", "").ToLowerInvariant();
            JobPrefab p;

            if (!JobPrefab.Prefabs.ContainsKey(identifier))
            {
                DebugConsole.ThrowError($"Could not find the job {identifier}. Giving the character a random job.");
                p = JobPrefab.Random();
            }
            else
            {
                p = JobPrefab.Prefabs[identifier];
            }
            prefab = p;
            skills = new Dictionary <string, Skill>();
            foreach (XElement subElement in element.Elements())
            {
                if (!subElement.Name.ToString().Equals("skill", System.StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }
                string skillIdentifier = subElement.GetAttributeString("identifier", "");
                if (string.IsNullOrEmpty(skillIdentifier))
                {
                    continue;
                }
                var skill = new Skill(skillIdentifier, subElement.GetAttributeFloat("level", 0));
                skills.Add(skillIdentifier, skill);
                if (skillIdentifier == prefab.PrimarySkill?.Identifier)
                {
                    PrimarySkill = skill;
                }
            }
        }
예제 #3
0
        public Job(XElement element)
        {
            string identifier = element.GetAttributeString("identifier", "").ToLowerInvariant();

            if (!JobPrefab.List.TryGetValue(identifier, out JobPrefab p))
            {
                DebugConsole.ThrowError($"Could not find the job {identifier}. Giving the character a random job.");
                p = JobPrefab.Random();
            }
            prefab = p;
            skills = new Dictionary <string, Skill>();
            foreach (XElement subElement in element.Elements())
            {
                if (subElement.Name.ToString().ToLowerInvariant() != "skill")
                {
                    continue;
                }
                string skillIdentifier = subElement.GetAttributeString("identifier", "");
                if (string.IsNullOrEmpty(skillIdentifier))
                {
                    continue;
                }
                skills.Add(
                    skillIdentifier,
                    new Skill(skillIdentifier, subElement.GetAttributeFloat("level", 0)));
            }
        }
예제 #4
0
 public static Job Random(Rand.RandSync randSync = Rand.RandSync.Unsynced) => new Job(JobPrefab.Random(randSync));