コード例 #1
0
        public override IEnumerable <CraftingRecipe> GetProceduralCraftingRecipes()
        {
            int isDead = 0;

            while (isDead <= 1)
            {
                int num;
                for (int rot = 0; rot <= 1; rot = num)
                {
                    CraftingRecipe craftingRecipe = new CraftingRecipe
                    {
                        ResultCount       = 1,
                        ResultValue       = 251,
                        RequiredHeatLevel = 1f,
                        Description       = "еКБ©до╧ожЮ"
                    };
                    int data  = BasePumpkinBlock.SetIsDead(BasePumpkinBlock.SetSize(0, 7), isDead != 0);
                    int value = SetDamage(Terrain.MakeBlockValue(131, 0, data), rot);
                    craftingRecipe.Ingredients[0] = "pumpkin:" + Terrain.ExtractData(value).ToString(CultureInfo.InvariantCulture);
                    craftingRecipe.Ingredients[1] = "waterbucket";
                    yield return(craftingRecipe);

                    num = rot + 1;
                }
                num    = isDead + 1;
                isDead = num;
            }
        }
コード例 #2
0
ファイル: SeedsBlock.cs プロジェクト: 1144822034/sc2.2mobile
        public override BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain, ComponentMiner componentMiner, int value, TerrainRaycastResult raycastResult)
        {
            BlockPlacementData result = default(BlockPlacementData);

            result.CellFace = raycastResult.CellFace;
            if (raycastResult.CellFace.Face == 4)
            {
                switch (Terrain.ExtractData(value))
                {
                case 0:
                    result.Value = Terrain.MakeBlockValue(19, 0, TallGrassBlock.SetIsSmall(0, isSmall: true));
                    break;

                case 1:
                    result.Value = Terrain.MakeBlockValue(20, 0, FlowerBlock.SetIsSmall(0, isSmall: true));
                    break;

                case 2:
                    result.Value = Terrain.MakeBlockValue(24, 0, FlowerBlock.SetIsSmall(0, isSmall: true));
                    break;

                case 3:
                    result.Value = Terrain.MakeBlockValue(25, 0, FlowerBlock.SetIsSmall(0, isSmall: true));
                    break;

                case 4:
                    result.Value = Terrain.MakeBlockValue(174, 0, RyeBlock.SetSize(RyeBlock.SetIsWild(0, isWild: false), 0));
                    break;

                case 5:
                    result.Value = Terrain.MakeBlockValue(174, 0, RyeBlock.SetSize(RyeBlock.SetIsWild(0, isWild: false), 0));
                    break;

                case 6:
                    result.Value = Terrain.MakeBlockValue(204, 0, CottonBlock.SetSize(CottonBlock.SetIsWild(0, isWild: false), 0));
                    break;

                case 7:
                    result.Value = Terrain.MakeBlockValue(131, 0, BasePumpkinBlock.SetSize(BasePumpkinBlock.SetIsDead(0, isDead: false), 0));
                    break;
                }
            }
            return(result);
        }
コード例 #3
0
        public void GrowPumpkin(int value, int x, int y, int z, int pollPass)
        {
            if (Terrain.ExtractLight(base.SubsystemTerrain.Terrain.GetCellValueFast(x, y + 1, z)) < 9)
            {
                return;
            }
            int data = Terrain.ExtractData(value);
            int size = BasePumpkinBlock.GetSize(data);

            if (BasePumpkinBlock.GetIsDead(data) || size >= 7)
            {
                return;
            }
            int   cellValueFast = base.SubsystemTerrain.Terrain.GetCellValueFast(x, y - 1, z);
            int   num           = Terrain.ExtractContents(cellValueFast);
            int   data2         = Terrain.ExtractData(cellValueFast);
            bool  flag          = num == 168 && SoilBlock.GetHydration(data2);
            int   num2          = (num == 168) ? SoilBlock.GetNitrogen(data2) : 0;
            int   num3          = 4;
            float num4          = 0.15f;

            if (num == 168)
            {
                num3--;
                num4 -= 0.05f;
            }
            if (num2 > 0)
            {
                num3--;
                num4 -= 0.05f;
            }
            if (flag)
            {
                num3--;
                num4 -= 0.05f;
            }
            if (pollPass % MathUtils.Max(num3, 1) == 0)
            {
                int data3 = BasePumpkinBlock.SetSize(data, MathUtils.Min(size + 1, 7));
                if (m_random.Float(0f, 1f) < num4)
                {
                    data3 = BasePumpkinBlock.SetIsDead(data3, isDead: true);
                }
                int         value2 = Terrain.ReplaceData(value, data3);
                Replacement value3 = m_toReplace[new Point3(x, y, z)] = new Replacement
                {
                    Value         = value2,
                    RequiredValue = value
                };
                if (num == 168 && size + 1 == 7)
                {
                    int data4  = SoilBlock.SetNitrogen(data2, MathUtils.Max(num2 - 3, 0));
                    int value4 = Terrain.ReplaceData(cellValueFast, data4);
                    Dictionary <Point3, Replacement> toReplace = m_toReplace;
                    Point3 key = new Point3(x, y - 1, z);
                    value3 = new Replacement
                    {
                        Value         = value4,
                        RequiredValue = cellValueFast
                    };
                    toReplace[key] = value3;
                }
            }
        }