internal ArtifactImmigration() { Instance = this; carePackages = new List <CarePackageInfo>(); var tiers = new ArtifactTier[] { TIER0, TIER1, TIER2, TIER3, TIER4, TIER5 }; int a = ArtifactCarePackageOptions.Instance.CyclesUntilTier0; int b = ArtifactCarePackageOptions.Instance.CyclesUntilTierNext; DropTableSlots = ArtifactCarePackageOptions.Instance.RandomArtifactDropTableSlots; var artifactItems = new List <string>(); foreach (var artifactType in ArtifactConfig.artifactItems.Keys) { artifactItems.AddRange(ArtifactConfig.artifactItems[artifactType]); } artifactItems = artifactItems.Distinct().ToList(); foreach (string artifactID in artifactItems) { var artifactTier = Assets.GetPrefab(artifactID.ToTag()).GetComponent <SpaceArtifact>().GetArtifactTier(); int tier = -1; for (int i = 0; i < tiers.Length; i++) { if (artifactTier == tiers[i]) { tier = i; break; } } if (tier >= 0) // пропускаем добавленные модами артифакты с нестандартной ArtifactTier { carePackages.Add(new CarePackageInfo(artifactID, 1, () => CycleCondition(a + b * tier))); } } carePackages.Add(new CarePackageInfo(GeneShufflerRechargeConfig.ID, 1, () => CycleCondition(a + b * tiers.Length))); }
public ArtifactGround(int depthlevel, int toughNess, GameObject groundObject, bool mineable, ArtifactTier artifactTier, GameObject artifactObject, Vector2Int position, Item artifactItem) : base(depthlevel, toughNess, groundObject, mineable, position, GroundType.artifactGround) { this.artifactTier = artifactTier; this.artifactSprite = artifactObject; this.artifactPiece = artifactItem; Debug.Log("Constructor with args"); }
internal ArtifactStatic(int id, string name, string[] aliases, Uri url, ArtifactTier tier) { Id = id; Name = name; Alias = aliases; ImageUrl = url; Tier = tier; }
public string SearchForArtifact(StoredMinionIdentity minionID, SpaceDestination destination) { ArtifactTier artifactDropTier = GetArtifactDropTier(minionID, destination); if (artifactDropTier == DECOR.SPACEARTIFACT.TIER_NONE) { return(null); } List <string> artifactsOfTier = GetArtifactsOfTier(artifactDropTier); return(artifactsOfTier[Random.Range(0, artifactsOfTier.Count - 1)]); }
public float GetTierWeight(ArtifactTier tier) { float result = 0f; foreach (Tuple <ArtifactTier, float> rate in rates) { if (rate.first == tier) { result = rate.second; } } return(result); }
public List <string> GetArtifactsOfTier(ArtifactTier tier) { List <string> list = new List <string>(); foreach (string artifactItem in ArtifactConfig.artifactItems) { GameObject prefab = Assets.GetPrefab(artifactItem.ToTag()); ArtifactTier artifactTier = prefab.GetComponent <SpaceArtifact>().GetArtifactTier(); if (artifactTier == tier) { list.Add(artifactItem); } } return(list); }
public static GameObject CreateArtifact(string id, string name, string desc, string initial_anim, string ui_anim, ArtifactTier artifact_tier, PostInitFn postInitFn = null, SimHashes element = SimHashes.Creature) { GameObject gameObject = EntityTemplates.CreateLooseEntity("artifact_" + id.ToLower(), name, desc, 25f, true, Assets.GetAnim("artifacts_kanim"), initial_anim, Grid.SceneLayer.Ore, EntityTemplates.CollisionShape.RECTANGLE, 1f, 1f, true, SORTORDER.BUILDINGELEMENTS, element, new List <Tag> { GameTags.MiscPickupable }); OccupyArea occupyArea = gameObject.AddOrGet <OccupyArea>(); occupyArea.OccupiedCellsOffsets = EntityTemplates.GenerateOffsets(1, 1); DecorProvider decorProvider = gameObject.AddOrGet <DecorProvider>(); decorProvider.SetValues(artifact_tier.decorValues); decorProvider.overrideName = gameObject.name; SpaceArtifact spaceArtifact = gameObject.AddOrGet <SpaceArtifact>(); spaceArtifact.SetUIAnim(ui_anim); spaceArtifact.SetArtifactTier(artifact_tier); gameObject.AddOrGet <KSelectable>(); gameObject.GetComponent <KBatchedAnimController>().initialMode = KAnim.PlayMode.Loop; postInitFn?.Invoke(gameObject); KPrefabID component = gameObject.GetComponent <KPrefabID>(); component.AddTag(GameTags.PedestalDisplayable, false); component.AddTag(GameTags.Artifact, false); return(gameObject); }
private static void CloneArtifactDropRateTable(SpaceDestinationType destination, ArtifactTier tier, float weight_percent) { var result = new ArtifactDropRate(); float weight = destination.artifactDropTable.totalWeight * weight_percent; foreach (var rate in destination.artifactDropTable.rates) { if (rate.first == DECOR.SPACEARTIFACT.TIER_NONE) { result.AddItem(rate.first, rate.second - weight); } else { result.AddItem(rate.first, rate.second); } } result.AddItem(tier, weight); destination.artifactDropTable = result; }
public void AddItem(ArtifactTier tier, float weight) { rates.Add(new Tuple <ArtifactTier, float>(tier, weight)); totalWeight += weight; }