Пример #1
0
        public BCMHubCell([NotNull] RWG2.HubCell hubCell, Vector2i gridPos)
        {
            GridPos        = new BCMVector2(gridPos);
            CellRule       = hubCell.CellRule.Name;
            HubRule        = hubCell.HubRule.Name;
            WildernessRule = hubCell.WildernessRule.Name;

            //WILDERNESS LOTS
            var wildLots = hubCell.lots;

            if (wildLots != null)
            {
                foreach (var wl in wildLots)
                {
                    Lots.Add(new BCMLot(wl, BCMLotType.Wilderness));
                }
            }

            //HUB LOTS
            var hubLots = new List <RWG2.HubCell.Lot>();

            if (hubCell.HubGenerator != null)
            {
                var lots = hubCell.HubGenerator.GetLots();
                if (lots != null)
                {
                    hubLots = lots;
                }
                Township = hubCell.HubGenerator.township.ToString();
            }
            foreach (var hl in hubLots)
            {
                Lots.Add(new BCMLot(hl, BCMLotType.Hub));
            }
        }
Пример #2
0
 public BCMWildernessRule([NotNull] WildernessRule wildernessRule)
 {
     Name        = wildernessRule.Name;
     MinMax      = new BCMVector2(wildernessRule.SpawnMinMax);
     PathType    = wildernessRule.PathMaterial.type;
     PathRadius  = wildernessRule.PathRadius;
     PrefabRules = wildernessRule.PrefabSpawnRules.ToDictionary(r => r.Key, r => (object)new { Prob = Math.Round(r.Value.Probability, 3) });
 }
Пример #3
0
 public BCMHubCell(BCMHubCell hubCell)
 {
     GridPos        = hubCell.GridPos;
     Township       = hubCell.Township;
     CellRule       = hubCell.CellRule;
     HubRule        = hubCell.HubRule;
     WildernessRule = hubCell.WildernessRule;
 }
Пример #4
0
 public BCMStreetInfo(HubLayout.StreetInfo streetInfo)
 {
     Name       = streetInfo.Name;
     StartPoint = new BCMVector2(streetInfo.StartPoint);
     EndPoint   = new BCMVector2(streetInfo.EndPoint);
     PathType   = streetInfo.PathMaterial.type;
     PathRadius = streetInfo.PathRadius;
 }
Пример #5
0
 public BCMHubCell(BCMHubCell hubCell)
 {
     GridPos        = hubCell.GridPos;
     Township       = hubCell.Township;
     CellRule       = hubCell.CellRule;
     HubRule        = hubCell.HubRule;
     WildernessRule = hubCell.WildernessRule;
     Lots           = new List <BCMLot>();
 }
Пример #6
0
 public BCMCellRule(CellRule cellRule)
 {
     Name            = cellRule.Name;
     CavesMinMax     = new BCMVector2(cellRule.CavesMinMax);
     PathType        = cellRule.PathMaterial.type;
     PathRadius      = cellRule.PathRadius;
     HubRules        = cellRule.HubRules.ToDictionary(f => f.Key, f => Math.Round(f.Value, 2));
     WildernessRules = cellRule.WildernessRules.ToDictionary(f => f.Key, f => Math.Round(f.Value, 2));
 }
Пример #7
0
        public BCMFilterData([NotNull] FilterData filterData)
        {
            Prob = Math.Round(filterData.Probability, 3);
            if (!filterData.HasGridPosition)
            {
                return;
            }

            Grid = new BCMVector2(filterData.GridPosition);
        }
Пример #8
0
 public BCMLotInfo(HubLayout.LotInfo lotInfo)
 {
     Name   = lotInfo.Name;
     Pos    = new BCMVector2(lotInfo.Position);;
     Size   = new BCMVector2(lotInfo.Size);;
     Rot    = lotInfo.RotationFromNorth;
     Prefab = lotInfo.PrefabName;
     Zoning = lotInfo.Zoning.ToString();
     Cond   = lotInfo.Condition;
     Age    = lotInfo.Age;
 }
Пример #9
0
 public BCMHubRule(HubRule hubRule)
 {
     DtZone      = Math.Round(hubRule.DowntownZoningPerc, 3);
     Name        = hubRule.Name;
     HubType     = hubRule.HubType.ToString();
     Width       = new BCMVector2(hubRule.WidthMinMax);
     Height      = new BCMVector2(hubRule.HeightMinMax);
     PathType    = hubRule.PathMaterial.type;
     PathRadius  = hubRule.PathRadius;
     Streets     = new BCMStreetGenerationData(hubRule.StreetGenData);
     Layout      = hubRule.HubLayoutName;
     PrefabRules = hubRule.PrefabSpawnRules.ToDictionary(r => r.Key, r => (object)new { Prob = Math.Round(r.Value.Probability, 3) });
 }
Пример #10
0
        public BCMTileEntityLootContainer(Vector3i pos, [NotNull] TileEntityLootContainer te) : base(pos, te)
        {
            LootList    = te.lootListIndex;
            Touched     = te.bWasTouched;
            TimeTouched = te.worldTimeTouched;
            Size        = new BCMVector2(te.GetContainerSize());
            OpenTime    = te.GetOpenTime();

            foreach (var itemStack in te.GetItems())
            {
                if (itemStack.itemValue.type == 0)
                {
                    continue;
                }

                Items.Add(new BCMItemStack(itemStack));
            }
        }
Пример #11
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);
            }
        }
Пример #12
0
 private void GetSize(LootContainer loot) => Bin.Add("Size", Size = new BCMVector2(loot.size));