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)));
        }
Ejemplo n.º 2
0
 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");
 }
Ejemplo n.º 3
0
 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)]);
    }
Ejemplo n.º 5
0
        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);
    }
Ejemplo n.º 7
0
    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);
    }
Ejemplo n.º 8
0
        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;
        }
Ejemplo n.º 9
0
 public void AddItem(ArtifactTier tier, float weight)
 {
     rates.Add(new Tuple <ArtifactTier, float>(tier, weight));
     totalWeight += weight;
 }