Пример #1
0
        public override void GetData(object obj)
        {
            var ec = obj as EntityClass;

            if (ec == null)
            {
                return;
            }

            if (IsOption("filter"))
            {
                foreach (var f in StrFilter)
                {
                    switch (f)
                    {
                    case StrFilters.Id:
                        GetId(ec);
                        break;

                    case StrFilters.Name:
                        GetName(ec);
                        break;

                    default:
                        Log.Out($"{Config.ModPrefix} Unknown filter {f}");
                        break;
                    }
                }
            }
            else
            {
                GetId(ec);
                GetName(ec);

                Bin.Add("Class", Class                       = ec.classname?.ToString());
                Bin.Add("Skin", Skin                         = ec.skinTexture);
                Bin.Add("Parent", Parent                     = ec.parentGameObjectName);
                Bin.Add("UserInst", UserInst                 = ec.bAllowUserInstantiate);
                Bin.Add("IsEnemy", IsEnemy                   = ec.bIsEnemyEntity);
                Bin.Add("IsAnimal", IsAnimal                 = ec.bIsAnimalEntity);
                Bin.Add("Explosion", Explosion               = new BCMExplosionData(ec.explosionData));
                Bin.Add("Model", Model                       = ec.modelType);
                Bin.Add("ModelP1", ModelP1                   = ec.modelTypeParams1);
                Bin.Add("ModelP2", ModelP2                   = ec.modelTypeParams2);
                Bin.Add("RagdollChance", RagdollChance       = Math.Round(ec.RagdollOnDeathChance, 6));
                Bin.Add("HasRagdoll", HasRagdoll             = ec.HasRagdoll);
                Bin.Add("Colliders", Colliders               = ec.CollidersRagdollAsset);
                Bin.Add("CrouchY", CrouchY                   = Math.Round(ec.crouchYOffsetFP, 6));
                Bin.Add("CorpseId", CorpseId                 = ec.CorpseBlockId);
                Bin.Add("CorpseChance", CorpseChance         = Math.Round(ec.CorpseBlockChance, 6));
                Bin.Add("CorpseDen", CorpseDen               = ec.CorpseBlockDensity);
                Bin.Add("MaxTurn", MaxTurn                   = Math.Round(ec.MaxTurnSpeed, 6));
                Bin.Add("RootMotion", RootMotion             = ec.RootMotion);
                Bin.Add("HasDeathAnim", HasDeathAnim         = ec.HasDeathAnim);
                Bin.Add("IsMale", IsMale                     = ec.bIsMale);
                Bin.Add("IsObserver", IsObserver             = ec.bIsChunkObserver);
                Bin.Add("Experience", Experience             = ec.ExperienceValue);
                Bin.Add("Physics", Physics                   = ec.PhysicsBody?.Name);
                Bin.Add("DeadHP", DeadHP                     = ec.DeadBodyHitPoints);
                Bin.Add("LegCrippleTh", LegCrippleTh         = Math.Round(ec.LegCrippleThreshold, 6));
                Bin.Add("LegCrawlerTh", LegCrawlerTh         = Math.Round(ec.LegCrawlerThreshold, 6));
                Bin.Add("LowerLegDisTh", LowerLegDisTh       = Math.Round(ec.LowerLegDismemberThreshold, 6));
                Bin.Add("LowerLegDisBonus", LowerLegDisBonus = Math.Round(ec.LowerLegDismemberBonusChance, 6));
                Bin.Add("LowerLegDisBase", LowerLegDisBase   = Math.Round(ec.LowerLegDismemberBaseChance, 6));
                Bin.Add("UpperLegDisTh", UpperLegDisTh       = Math.Round(ec.UpperLegDismemberThreshold, 6));
                Bin.Add("UpperLegDisBonus", UpperLegDisBonus = Math.Round(ec.UpperLegDismemberBonusChance, 6));
                Bin.Add("UpperLegDisBase", UpperLegDisBase   = Math.Round(ec.UpperLegDismemberBaseChance, 6));
                Bin.Add("LowerArmDisTh", LowerArmDisTh       = Math.Round(ec.LowerArmDismemberThreshold, 6));
                Bin.Add("LowerArmDisBonus", LowerArmDisBonus = Math.Round(ec.LowerArmDismemberBonusChance, 6));
                Bin.Add("LowerArmDisBase", LowerArmDisBase   = Math.Round(ec.LowerArmDismemberBaseChance, 6));
                Bin.Add("UpperArmDisTh", UpperArmDisTh       = Math.Round(ec.UpperArmDismemberThreshold, 6));
                Bin.Add("UpperArmDisBonus", UpperArmDisBonus = Math.Round(ec.UpperArmDismemberBonusChance, 6));
                Bin.Add("UpperArmDisBase", UpperArmDisBase   = Math.Round(ec.UpperArmDismemberBaseChance, 6));
                Bin.Add("HeadDisTh", HeadDisTh               = Math.Round(ec.HeadDismemberThreshold, 6));
                Bin.Add("HeadDisBase", HeadDisBase           = Math.Round(ec.HeadDismemberBaseChance, 6));
                Bin.Add("HeadDisBonus", HeadDisBonus         = Math.Round(ec.HeadDismemberBonusChance, 6));
                Bin.Add("KDKneelDamTh", KDKneelDamTh         = Math.Round(ec.KnockdownKneelDamageThreshold, 6));
                Bin.Add("LegsExpMult", LegsExpMult           = Math.Round(ec.LegsExplosionDamageMultiplier, 6));
                Bin.Add("ArmsExpMult", ArmsExpMult           = Math.Round(ec.ArmsExplosionDamageMultiplier, 6));
                Bin.Add("ChestExpMult", ChestExpMult         = Math.Round(ec.ChestExplosionDamageMultiplier, 6));
                Bin.Add("HeadExpMult", HeadExpMult           = Math.Round(ec.HeadExplosionDamageMultiplier, 6));
                Bin.Add("SearchArea", SearchArea             = Math.Round(ec.SearchArea, 6));
                Bin.Add("SwimOffset", SwimOffset             = Math.Round(ec.SwimOffset, 6));
                Bin.Add("SightRange", SightRange             = Math.Round(ec.SightRange, 6));
                Bin.Add("GroanMin", GroanMin                 = new BCMVector2(ec.GroanMin));
                Bin.Add("GroanMax", GroanMax                 = new BCMVector2(ec.GroanMax));
                Bin.Add("WakeMin", WakeMin                   = new BCMVector2(ec.WakeMin));
                Bin.Add("WakeMax", WakeMax                   = new BCMVector2(ec.WakeMax));
                Bin.Add("SightScale", SightScale             = new BCMVector2(ec.SightScale));
                Bin.Add("SmellAlert", SmellAlert             = new BCMVector2(ec.SmellAlert));
                Bin.Add("NoiseAlert", NoiseAlert             = new BCMVector2(ec.NoiseAlert));
                Bin.Add("SmellWake", SmellWake               = new BCMVector2(ec.SmellWake));
                Bin.Add("SmellGroan", SmellGroan             = new BCMVector2(ec.SmellGroan));
                Bin.Add("NoiseWake", NoiseWake               = new BCMVector2(ec.NoiseWake));
                Bin.Add("NoiseGroan", NoiseGroan             = new BCMVector2(ec.NoiseGroan));
                Bin.Add("GroanChance", GroanChance           = Math.Round(ec.GroanChance, 6));
                Bin.Add("UMARace", UMARace                   = ec.UMARace);
                Bin.Add("UMAGenModel", UMAGenModel           = ec.UMAGeneratedModelName);
                Bin.Add("MatSwap", MatSwap                   = ec.MaterialSwap?.ToList());
                if (ec.tintColors != null)
                {
                    foreach (var tint in ec.tintColors.Values)
                    {
                        Tints.Add(new BCMVector3(tint));
                    }
                }
                Bin.Add("Tints", Tints);
                Bin.Add("SpawnParticle", SpawnParticle               = ec.particleOnSpawn);
                Bin.Add("KDKneelStunDur", KDKneelStunDur             = new BCMVector2(ec.KnockdownProneStunDuration));
                Bin.Add("KDProneDamTh", KDProneDamTh                 = Math.Round(ec.KnockdownProneDamageThreshold, 6));
                Bin.Add("KDProneStunDur", KDProneStunDur             = new BCMVector2(ec.KnockdownProneStunDuration));
                Bin.Add("KDProneRefillRate", KDProneRefillRate       = new BCMVector2(ec.KnockdownProneRefillRate));
                Bin.Add("KDKneelRefillRate", KDKneelRefillRate       = new BCMVector2(ec.KnockdownKneelRefillRate));
                Bin.Add("ModelTransformAdjust", ModelTransformAdjust = new BCMVector3(ec.ModelTransformAdjust));
                Bin.Add("Archetype", Archetype           = ec.ArchetypeName);
                Bin.Add("AIPackages", AIPackages         = ec.AIPackages?.ToList());
                Bin.Add("UseAIPackages", UseAIPackages   = ec.UseAIPackages);
                Bin.Add("PainStates", PainStates         = ec.MechanimPainStates);
                Bin.Add("PainTriggers", PainTriggers     = ec.MechanimPainTriggers);
                Bin.Add("Attacks", Attacks               = ec.MechanimAttacks);
                Bin.Add("AttackTriggers", AttackTriggers = ec.MechanimAttackTriggers);
                Bin.Add("SpecialAttacks", SpecialAttacks = ec.MechanimSpecialAttacks);
                Bin.Add("SpecialAttackTriggers", SpecialAttackTriggers = ec.MechanimSpecialAttackTriggers);
                Bin.Add("DeathStates", DeathStates = ec.MechanimDeathStates);
                Bin.Add("DeathStateTriggers", DeathStateTriggers = ec.MechanimDeathStateTriggers);
                Bin.Add("Buffs", Buffs = ec.Buffs);
            }
        }
Пример #2
0
 private void GetExplosionData(EntityClass ec) => Bin.Add("Explosion",
                                                          Explosion = !ec.Properties.Values.ContainsKey("Explosion.ParticleIndex") ?
                                                                      null : (int)Utils.ParseFloat(ec.Properties.Values["Explosion.ParticleIndex"]) <= 0 ? null : new BCMExplosionData(ec.Properties));