示例#1
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var skill = item as Skill;

            Cooldown              = skill.Cooldown;
            StaminaCost           = skill.StaminaCost;
            ManaCost              = skill.ManaCost;
            DurabilityCost        = skill.DurabilityCost;
            DurabilityCostPercent = skill.DurabilityCostPercent;

            HealthCost    = skill.HealthCost;
            RequiredPType = skill.RequiredPType;

            if (skill.RequiredItems != null)
            {
                foreach (Skill.ItemRequired itemReq in skill.RequiredItems)
                {
                    if (itemReq.Item != null)
                    {
                        RequiredItems.Add(new SkillItemReq
                        {
                            ItemID   = itemReq.Item.ItemID,
                            Consume  = itemReq.Consume,
                            Quantity = itemReq.Quantity
                        });
                    }
                }
            }
        }
示例#2
0
        public static void Dump()
        {
            SL.LogWarning("[Dataminer] Starting full dump!");

            // setup tags
            for (int i = 1; i < 500; i++)
            {
                if (TagSourceManager.Instance.GetTag(i.ToString()) is Tag tag)
                {
                    ListManager.AddTagSource(tag, null);
                }
            }

            DM_Item.ParseAllItems();

            DM_StatusEffect.ParseAllEffects();

            DM_Recipe.ParseAllRecipes();

            DM_EnchantmentRecipe.ParseAllRecipes();

            SL.LogWarning("Saving early lists...");
            ListManager.SaveEarlyLists();

            SL.LogWarning("Finished prefab dumping.");
        }
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var comp = item as Throwable;

            DestroyDelay = comp.DestroyDelay;
        }
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var comp = item as Blueprint;

            DeployableItemID = comp.GetComponent <Deployable>()?.Item?.ItemID ?? -1;
            IsUpgrade        = comp.IsUpgrade;
        }
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var template   = holder as DM_RecipeItem;
            var recipeItem = item as RecipeItem;

            template.RecipeUID = recipeItem.Recipe.UID;
        }
示例#6
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var comp = item as Instrument;

            PeriodicTime = comp.PeriodicTime;
            PulseSpeed   = comp.PulseSpeed;
            StrikeTime   = comp.StrikeTime;
        }
示例#7
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var template = holder as DM_Armor;
            var armor    = item as Armor;

            template.Class               = armor.Class;
            template.GearSoundMaterial   = armor.GearSoundMaterial;
            template.ImpactSoundMaterial = armor.ImpactSoundMaterial;
        }
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var template = holder as DM_RangeAttackSkill;
            var skill    = item as RangeAttackSkill;

            template.AutoLoad          = skill.AutoLoad;
            template.FakeShoot         = skill.FakeShoot;
            template.OverrideAimOffset = skill.OverrideAimOffset;
            template.AimOffset         = skill.AimOffset;
        }
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var template  = holder as DM_Equipment;
            var equipment = item as Equipment;

            template.EquipSlot = equipment.EquipSlot;
            template.VisualDetectabilityAdd = equipment.VisualDetectabilityAdd;
            template.TwoHandType            = equipment.TwoHand;
            template.IKType = equipment.IKType;
        }
示例#10
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var template = holder as DM_TrinketSkill;
            var skill    = item as TrinketSkill;

            template.CompatibleItemIDs = new List <int>();
            foreach (var compatItem in skill.CompatibleItems)
            {
                template.CompatibleItemIDs.Add(compatItem.ItemID);
            }
        }
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var template = holder as DM_ThrowSkill;
            var skill    = item as ThrowSkill;

            template.ThrowableItemIDs = new List <int>();
            foreach (var throwable in skill.ThrowableItems)
            {
                template.ThrowableItemIDs.Add(throwable.ItemID);
            }
        }
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var template = holder as DM_CounterSkill;
            var skill    = item as CounterSkill;

            template.BlockMult          = skill.BlockMult;
            template.DamageMult         = skill.DamageMult;
            template.KnockbackMult      = skill.KnockbackMult;
            template.BlockDamageTypes   = skill.BlockTypes;
            template.CounterDamageTypes = skill.CounterTypes;
            template.MaxRange           = skill.MaxRange;
            template.TurnTowardsDealer  = skill.TurnTowardsDealer;
        }
示例#13
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var trap = item as DeployableTrap;

            var recipes = (TrapEffectRecipe[])At.GetField(trap, "m_trapRecipes");

            foreach (var recipe in recipes)
            {
                var dmRecipe = new DM_TrapRecipe();
                dmRecipe.Serialize(recipe, trap);
                TrapRecipeEffects.Add(dmRecipe);
            }
        }
示例#14
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var skill    = item as CounterAbsorbSkill;
            var template = holder as DM_CounterAbsorbSkill;

            template.Absorbs = new List <AbsorbType>();
            foreach (var absorb in skill.Absorbs)
            {
                template.Absorbs.Add(new AbsorbType()
                {
                    Condition   = absorb.Condition != null ? (DM_BooleanCondition)DM_EffectCondition.ParseCondition(absorb.Condition) : null,
                    DamageTypes = absorb.Types
                });
            }
        }
示例#15
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var skill = item as MeleeSkill;

            Blockable      = skill.Blockable;
            NoWeaponAtkTag = skill.NoWeaponAtkTag;

            if (skill.MeleeHitDetector is MeleeHitDetector detector)
            {
                Damage        = detector.Damage;
                Impact        = detector.Impact;
                LinecastCount = detector.LinecastCount;
                Radius        = detector.Radius;
                Unblockable   = detector.Unblockable;
            }
        }
示例#16
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var attackSkill = item as AttackSkill;

            AmmunitionTypes      = attackSkill.AmmunitionTypes;
            RequiredOffHandTypes = attackSkill.RequiredOffHandTypes;
            RequiredWeaponTypes  = attackSkill.RequiredWeaponTypes;
            RequireImbue         = attackSkill.RequireImbue;

            AmmunitionAmount = attackSkill.AmmunitionAmount;

            foreach (var tag in attackSkill.RequiredTags)
            {
                RequiredWeaponTags.Add(tag.Tag.TagName);
            }
        }
示例#17
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var bag      = item as Bag;
            var template = holder as DM_Bag;

            template.Capacity            = bag.BagCapacity;
            template.Restrict_Dodge      = bag.RestrictDodge;
            template.InventoryProtection = bag.InventoryProtection;

            if (bag.GetComponentInChildren <Preserver>() is Preserver p &&
                At.GetField(p, "m_preservedElements") is List <Preserver.PreservedElement> list &&
                list.Count > 0)
            {
                template.Preserver_Amount = list[0].Preservation;
                template.Nullify_Perish   = p.NullifyPerishing;
            }
        }
示例#18
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var building = item as Building;

            var constructionPhases = At.GetField(building, "m_constructionPhases") as Building.ConstructionPhase[];

            foreach (var phase in constructionPhases)
            {
                ConstructionPhases.Add(DM_ConstructionPhase.SerializePhase(phase));
            }

            var upgradePhases = At.GetField(building, "m_upgradePhases") as Building.ConstructionPhase[];

            foreach (var phase in upgradePhases)
            {
                UpgradePhases.Add(DM_ConstructionPhase.SerializePhase(phase));
            }
        }
示例#19
0
        public override void SerializeItem(Item item, DM_Item holder)
        {
            base.SerializeItem(item, holder);

            var weapon = item as Weapon;

            WeaponType         = weapon.Type;
            Unblockable        = weapon.Unblockable;
            SwingSound         = weapon.SwingSoundType;
            SpecialIsZoom      = weapon.SpecialIsZoom;
            MaxProjectileShots = -1;

            BaseHealthAbsorbRatio    = weapon.BaseHealthAbsorbRatio;
            BaseMaxHealthAbsorbRatio = weapon.BaseMaxHealthAbsorbRatio;

            IgnoreHalfResistances = weapon.IgnoreHalfResistances;

            if (weapon.GetComponent <WeaponLoadout>() is WeaponLoadout loadout)
            {
                MaxProjectileShots = loadout.MaxProjectileLoaded;
            }
        }
示例#20
0
        private static string GetFullSaveDir(Item item, DM_Item template)
        {
            string dir;

            if (item.GetType() != typeof(Item))
            {
                dir = GetFolderRecursive(item, "", item.GetType());
            }
            else
            {
                if (template.Tags.Contains("Consummable"))
                {
                    dir = "/Consumable";
                }
                else
                {
                    dir = "/_Unsorted";
                }
            }

            template.saveDir = dir;

            return(Serializer.Folders.Items + dir);
        }
示例#21
0
        public virtual void SerializeItem(Item item, DM_Item holder)
        {
            holder.gameObjectName = item.gameObject.name;

            holder.ItemID                 = item.ItemID;
            holder.Name                   = item.Name;
            holder.Description            = item.Description;
            holder.LegacyItemID           = item.LegacyItemID;
            holder.CastLocomotionEnabled  = item.CastLocomotionEnabled;
            holder.CastModifier           = item.CastModifier;
            holder.CastSheatheRequired    = item.CastSheathRequired;
            holder.GroupItemInDisplay     = item.GroupItemInDisplay;
            holder.HasPhysicsWhenWorld    = item.HasPhysicsWhenWorld;
            holder.IsPickable             = item.IsPickable;
            holder.IsUsable               = item.IsUsable;
            holder.QtyRemovedOnUse        = item.QtyRemovedOnUse;
            holder.MobileCastMovementMult = item.MobileCastMovementMult;
            holder.RepairedInRest         = item.RepairedInRest;
            holder.BehaviorOnNoDurability = item.BehaviorOnNoDurability;

            holder.OverrideSellModifier = (float)At.GetField(item, "m_overrideSellModifier");

            if (item.GetComponent <Perishable>() is Perishable perish)
            {
                float perishRate     = perish.DepletionRate * 0.03333333f;
                float perishModifier = 1 / perishRate;

                var      remainingTicks = item.MaxDurability * perishModifier; // each tick is 2 in-game minutes (~5 seconds irl)
                var      minutes        = remainingTicks * 2;
                TimeSpan t = TimeSpan.FromMinutes(minutes);

                holder.PerishTime = $"{t.Days} Days, {t.Hours} Hours, {t.Minutes} Minutes, {t.Seconds} Seconds";
            }

            holder.CastType = (Character.SpellCastType)At.GetField(item, "m_activateEffectAnimType");

            if (item.GetComponent <ItemStats>() is ItemStats stats)
            {
                holder.StatsHolder = DM_ItemStats.ParseItemStats(stats);
            }

            if (item.Tags != null)
            {
                foreach (Tag tag in item.Tags)
                {
                    holder.Tags.Add(tag.TagName);

                    ListManager.AddTagSource(tag, Serializer.SafeName(item.Name));
                }
            }

            foreach (Transform child in item.transform)
            {
                var effectsChild = DM_EffectTransform.ParseTransform(child);

                if (effectsChild.ChildEffects.Count > 0 || effectsChild.Effects.Count > 0 || effectsChild.EffectConditions.Count > 0)
                {
                    holder.EffectTransforms.Add(effectsChild);
                }
            }
        }