public InventoryParams(XElement element, CharacterParams character) : base(element, character)
 {
     foreach (var itemElement in element.GetChildElements("item"))
     {
         var item = new InventoryItem(itemElement, character);
         SubParams.Add(item);
         Items.Add(item);
     }
 }
 public AIParams(XElement element, CharacterParams character) : base(element, character)
 {
     if (element == null)
     {
         return;
     }
     element.GetChildElements("target").ForEach(t => TryAddTarget(t, out _));
     element.GetChildElements("targetpriority").ForEach(t => TryAddTarget(t, out _));
 }
Exemplo n.º 3
0
        public MonsterMission(MissionPrefab prefab, Location[] locations)
            : base(prefab, locations)
        {
            string speciesName = prefab.ConfigElement.GetAttributeString("monsterfile", null);

            if (!string.IsNullOrEmpty(speciesName))
            {
                var characterPrefab = CharacterPrefab.FindBySpeciesName(speciesName);
                if (characterPrefab != null)
                {
                    int monsterCount = Math.Min(prefab.ConfigElement.GetAttributeInt("monstercount", 1), 255);
                    monsterPrefabs.Add(new Tuple <CharacterPrefab, Point>(characterPrefab, new Point(monsterCount)));
                }
                else
                {
                    DebugConsole.ThrowError($"Error in monster mission \"{prefab.Identifier}\". Could not find a character prefab with the name \"{speciesName}\".");
                }
            }

            maxSonarMarkerDistance = prefab.ConfigElement.GetAttributeFloat("maxsonarmarkerdistance", 10000.0f);

            foreach (var monsterElement in prefab.ConfigElement.GetChildElements("monster"))
            {
                speciesName = monsterElement.GetAttributeString("character", string.Empty);
                int defaultCount = monsterElement.GetAttributeInt("count", -1);
                if (defaultCount < 0)
                {
                    defaultCount = monsterElement.GetAttributeInt("amount", 1);
                }
                int min             = Math.Min(monsterElement.GetAttributeInt("min", defaultCount), 255);
                int max             = Math.Min(Math.Max(min, monsterElement.GetAttributeInt("max", defaultCount)), 255);
                var characterPrefab = CharacterPrefab.FindBySpeciesName(speciesName);
                if (characterPrefab != null)
                {
                    monsterPrefabs.Add(new Tuple <CharacterPrefab, Point>(characterPrefab, new Point(min, max)));
                }
                else
                {
                    DebugConsole.ThrowError($"Error in monster mission \"{prefab.Identifier}\". Could not find a character prefab with the name \"{speciesName}\".");
                }
            }

            if (monsterPrefabs.Any())
            {
                var characterParams = new CharacterParams(monsterPrefabs.First().Item1.FilePath);
                description = description.Replace("[monster]",
                                                  TextManager.Get("character." + characterParams.SpeciesTranslationOverride, returnNull: true) ??
                                                  TextManager.Get("character." + characterParams.SpeciesName));
            }
        }
 public SubParam(XElement element, CharacterParams character)
 {
     Element   = element;
     Character = character;
     SerializableProperties = SerializableProperty.DeserializeProperties(this, element);
 }
 public TargetParams(string tag, AIState state, float priority, CharacterParams character) : base(CreateNewElement(tag, state, priority), character)
 {
 }
 public TargetParams(XElement element, CharacterParams character) : base(element, character)
 {
 }
 public InventoryItem(XElement element, CharacterParams character) : base(element, character)
 {
 }
            // TODO: limbhealths, sprite?

            public HealthParams(XElement element, CharacterParams character) : base(element, character)
            {
            }
 public ParticleParams(XElement element, CharacterParams character) : base(element, character)
 {
 }
 public SoundParams(XElement element, CharacterParams character) : base(element, character)
 {
 }