public GachaResult JZ_GachaMaterial()
        {
            //概率1命中通用进化材料 装备经验 金币
            Random      rd    = new Random(GetRandomSeed());
            double      pro_0 = Probablity_JZ装备经验 + Probablity_JZ通用进化材料 + Probablity_JZGold;
            double      pro_1 = rd.Next(0, Convert.ToInt32(pro_0 * 100)) / (double)100;
            GachaResult gr    = new GachaResult();

            if (pro_1 < Probablity_JZ通用进化材料)
            {
                gr.name  = "镜面";
                gr.count = 1;
                gr.type  = TypeS.Material.ToString();
                gr.value = 1200;
                return(gr);
            }
            else if (pro_1 < Probablity_JZ装备经验 + Probablity_JZ通用进化材料)
            {
                double db = rd.NextDouble();
                gr.name  = (db <= 0.5) ? "紫色经验材料" : "蓝色经验材料";
                gr.count = 1;
                gr.type  = TypeS.Material.ToString();
                gr.value = (db <= 0.5) ? 1100 : 1000;
                return(gr);
            }
            else
            {
                rd = new Random(GetRandomSeed());
                double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_JZGold) * 1000)) / (double)1000;
                if (pro_2 < Probablity_Material吼咪宝藏)
                {
                    gr.name  = "吼咪宝藏";
                    gr.value = 700;
                    gr.count = 1;
                    gr.type  = TypeS.Material.ToString();
                    return(gr);
                }
                else if (pro_2 < Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏)
                {
                    gr.name  = "吼美宝藏";
                    gr.value = 600;
                    gr.count = 1;
                    gr.type  = TypeS.Material.ToString();
                    return(gr);
                }
                else
                {
                    gr.name  = "吼姆宝藏";
                    gr.value = 500;
                    gr.count = 1;
                    gr.type  = TypeS.Material.ToString();
                    return(gr);
                }
            }
        }
Beispiel #2
0
        public static void PrintGachaResult(GachaResult result, ViewModel viewModel)
        {
            string history = "";

            foreach (var item in result.list)
            {
                if ("item".Equals(item.type))
                {
                    history += String.Format("{0} x {1}", item.name, item.value) + Environment.NewLine;
                }
                else if ("card".Equals(item.type))
                {
                    string rare = "";
                    switch (item.rare)
                    {
                    case 4:
                        rare = "[欧皇]";
                        break;

                    case 3:
                        rare = "[脸帝]";
                        break;

                    case 2:
                        rare = "[狗粮]";
                        break;

                    case 1:
                        rare = "[渣渣]";
                        break;

                    default:
                        rare = "[????]";
                        break;
                    }

                    history += String.Format("{0}{1} x {2}", rare, item.name, item.value) + Environment.NewLine;
                }
            }
            viewModel.History = history;
        }
    private int CalcNumRarityData(RARITY_TYPE targetRarityType, bool isCheckOnlyLast = false, bool isCheck10 = false)
    {
        int num = 0;

        if (!MonoBehaviourSingleton <GachaManager> .IsValid())
        {
            Log.Error("Invalid GachaManager!!");
            return(num);
        }
        GachaResult gachaResult = MonoBehaviourSingleton <GachaManager> .I.gachaResult;

        if (gachaResult == null)
        {
            Log.Error("gachaResult is null!!");
            return(num);
        }
        int num2 = gachaResult.reward.Count;
        List <GachaResult.GachaReward> list = gachaResult.reward;

        if (isCheckOnlyLast)
        {
            SkillItemTable.SkillItemData skillItemData = Singleton <SkillItemTable> .I.GetSkillItemData((uint)list[num2 - 1].itemId);

            return((skillItemData.rarity == targetRarityType) ? 1 : 0);
        }
        if (isCheck10 && isReam)
        {
            num2--;
        }
        for (int i = 0; i < num2; i++)
        {
            SkillItemTable.SkillItemData skillItemData2 = Singleton <SkillItemTable> .I.GetSkillItemData((uint)list[i].itemId);

            if (skillItemData2 != null && skillItemData2.rarity == targetRarityType)
            {
                num++;
            }
        }
        return(num);
    }
Beispiel #4
0
        public GachaResult JZ_GachaMaterial()
        {
            Random      rd    = new Random(GetRandomSeed());
            double      pro_0 = Probablity_JZ装备经验 + Probablity_JZ通用进化材料 + Probablity_JZGold;
            double      pro_1 = rd.Next(0, Convert.ToInt32(pro_0 * 100)) / (double)100;
            GachaResult gr    = new GachaResult();

            if (pro_1 < Probablity_JZ通用进化材料)
            {
                gr.name       = "相转移镜面";
                gr.count      = 1;
                gr.type       = TypeS.Material.ToString();
                gr.value      = 1200;
                gr.quality    = 2;
                gr.evaluation = 4;

                return(gr);
            }
            else if (pro_1 < Probablity_JZ装备经验 + Probablity_JZ通用进化材料)
            {
                double db = rd.NextDouble();
                gr.name       = (db <= 0.5) ? "双子灵魂结晶" : "灵魂结晶";
                gr.count      = 1;
                gr.type       = TypeS.Material.ToString();
                gr.value      = (db <= 0.5) ? 1100 : 1000;
                gr.quality    = (db <= 0.5) ? 2 : 1;
                gr.evaluation = (db <= 0.5) ? 4 : 3;
                return(gr);
            }
            else
            {
                double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_JZGold) * 1000)) / (double)1000;
                if (pro_2 < Probablity_Material吼咪宝藏)
                {
                    gr.name       = "吼咪宝藏";
                    gr.value      = 700;
                    gr.count      = 1;
                    gr.type       = TypeS.Material.ToString();
                    gr.quality    = 2;
                    gr.evaluation = 4;

                    return(gr);
                }
                else if (pro_2 < Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏)
                {
                    gr.name       = "吼美宝藏";
                    gr.value      = 600;
                    gr.count      = 1;
                    gr.type       = TypeS.Material.ToString();
                    gr.quality    = 2;
                    gr.evaluation = 4;

                    return(gr);
                }
                else
                {
                    gr.name       = "吼里宝藏";
                    gr.value      = 500;
                    gr.count      = 1;
                    gr.type       = TypeS.Material.ToString();
                    gr.quality    = 1;
                    gr.evaluation = 3;

                    return(gr);
                }
            }
        }
Beispiel #5
0
        public GachaResult JZ_GachaMain()
        {
            Random rd    = new Random(GetRandomSeed());
            double pro_1 = rd.Next(0, 10000000) / (double)100000;

            Count_JZ++;
            GachaResult gr = new GachaResult();

            if (Count_JZ < 10)
            {
                if (pro_1 < Probablity_Weapon4Total)
                {
                    GetTargetItem = true;
                    Count_JZ      = 0;
                    double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total) * 100000)) / (double)100000;
                    if (pro_2 < Probablity_JZUpWeapon4)
                    {
                        gr.name       = Text_UpWeapon;;
                        gr.value      = 28000;
                        gr.count      = 1;
                        gr.level      = 10;
                        gr.type       = TypeS.Weapon.ToString();
                        gr.quality    = 2;
                        gr.evaluation = 4;
                        return(gr);
                    }
                    else
                    {
                        double pro_3 = rd.Next(0, 6);
                        gr.value      = 27000;
                        gr.count      = 1;
                        gr.level      = 1;
                        gr.type       = TypeS.Weapon.ToString();
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        switch (pro_3)
                        {
                        case 0:
                            gr.name = Text_Weapon1;
                            break;

                        case 1:
                            gr.name = Text_Weapon2;
                            break;

                        case 2:
                            gr.name = Text_Weapon3;
                            break;

                        case 3:
                            gr.name = Text_Weapon4;
                            break;

                        case 4:
                            gr.name = Text_Weapon5;
                            break;

                        case 5:
                            gr.name = Text_Weapon6;
                            break;
                        }
                        return(gr);
                    }
                }
                else if (pro_1 < Probablity_Stigmata4Total + Probablity_Weapon4Total)
                {
                    GetTargetItem = true;
                    Count_JZ      = 0;
                    rd            = new Random(GetRandomSeed());
                    double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_JZUpStigmata4 + Probablity_JZStigmata4) * 100000)) / (double)100000;
                    if (pro_2 < Probablity_JZUpStigmata4)
                    {
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name = Text_UpStigmata + "上";
                            break;

                        case 1:
                            gr.name = Text_UpStigmata + "中";
                            break;

                        case 2:
                            gr.name = Text_UpStigmata + "下";
                            break;
                        }
                        gr.value      = 2800;
                        gr.count      = 1;
                        gr.type       = TypeS.Stigmata.ToString();
                        gr.level      = 10;
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        return(gr);
                    }
                    else
                    {
                        string temp = "";
                        switch (rd.Next(0, 4))
                        {
                        case 0:
                            temp = Text_Stigmata1;
                            break;

                        case 1:
                            temp = Text_Stigmata2;
                            break;

                        case 2:
                            temp = Text_Stigmata3;
                            break;

                        case 3:
                            temp = Text_Stigmata4;
                            break;
                        }
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name = temp + "上";
                            break;

                        case 1:
                            gr.name = temp + "中";
                            break;

                        case 2:
                            gr.name = temp + "下";
                            break;
                        }
                        gr.value      = 2700;
                        gr.count      = 1;
                        gr.type       = TypeS.Stigmata.ToString();
                        gr.level      = 1;
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        return(gr);
                    }
                }
                else if (pro_1 < Probablity_Weapon3Total + Probablity_Weapon4Total + Probablity_Stigmata4Total)
                {
                    int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Weapon3", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"));
                    gr.name       = INIhelper.IniRead("详情", $"Weapon3_Item{rd.Next(0, count)}", "3星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                    gr.count      = 1;
                    gr.type       = TypeS.Weapon.ToString();
                    gr.value      = 26000;
                    gr.level      = 1;
                    gr.quality    = 1;
                    gr.evaluation = 3;

                    return(gr);
                }
                else if (pro_1 < Probablity_Stigmata3Total + Probablity_Weapon3Total + Probablity_Weapon4Total + Probablity_Stigmata4Total)
                {
                    int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Stigmata3", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"));
                    gr.name = INIhelper.IniRead("详情", $"Stigmata3_Item{rd.Next(0, count)}", "3星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                    switch (rd.Next(0, 3))
                    {
                    case 0:
                        gr.name += "上";
                        break;

                    case 1:
                        gr.name += "中";
                        break;

                    case 2:
                        gr.name += "下";
                        break;
                    }
                    gr.count      = 1;
                    gr.type       = TypeS.Stigmata.ToString();
                    gr.value      = 2600;
                    gr.level      = 1;
                    gr.quality    = 1;
                    gr.evaluation = 3;

                    return(gr);
                }
                else
                {
                    double pro_0 = rd.Next(0, 10000) / (double)100;
                    if (pro_0 <= 50)
                    {
                        int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Weapon2", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"));
                        gr.name       = INIhelper.IniRead("详情", $"Weapon2_Item{rd.Next(0, count)}", "2星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                        gr.value      = 25000;
                        gr.count      = 1;
                        gr.type       = TypeS.Weapon.ToString();
                        gr.level      = 1;
                        gr.quality    = 1;
                        gr.evaluation = 2;

                        return(gr);
                    }
                    else
                    {
                        int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Stigmata2", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"));
                        gr.name = INIhelper.IniRead("详情", $"Stigmata2_Item{rd.Next(0, count)}", "2星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name += "上";
                            break;

                        case 1:
                            gr.name += "中";
                            break;

                        case 2:
                            gr.name += "下";
                            break;
                        }
                        gr.value      = 2500;
                        gr.count      = 1;
                        gr.type       = TypeS.Stigmata.ToString();
                        gr.level      = 1;
                        gr.quality    = 1;
                        gr.evaluation = 2;

                        return(gr);
                    }
                }
            }
            else
            {
                Count_JZ      = 0;
                GetTargetItem = false;
                double pro_0 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total + Probablity_Stigmata4Total) * 1000000)) / (double)1000000;
                if (pro_0 < Probablity_Weapon4Total)
                {
                    double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total) * 1000000)) / (double)1000000;
                    if (pro_2 < Probablity_JZUpWeapon4)
                    {
                        gr.name       = Text_UpWeapon;;
                        gr.value      = 28000;
                        gr.count      = 1;
                        gr.type       = TypeS.Weapon.ToString();
                        gr.level      = 10;
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        return(gr);
                    }
                    else
                    {
                        double pro_3 = rd.Next(0, 6);
                        gr.value      = 27000;
                        gr.count      = 1;
                        gr.type       = TypeS.Weapon.ToString();
                        gr.level      = 1;
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        switch (pro_3)
                        {
                        case 0:
                            gr.name = Text_Weapon1;
                            break;

                        case 1:
                            gr.name = Text_Weapon2;
                            break;

                        case 2:
                            gr.name = Text_Weapon3;
                            break;

                        case 3:
                            gr.name = Text_Weapon4;
                            break;

                        case 4:
                            gr.name = Text_Weapon5;
                            break;

                        case 5:
                            gr.name = Text_Weapon6;
                            break;
                        }
                        return(gr);
                    }
                }
                else
                {
                    if (rd.Next(0, Convert.ToInt32((Probablity_Stigmata4Total) * 1000000)) / (double)1000000 < Probablity_JZUpWeapon4)
                    {
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name = Text_UpStigmata + "上";
                            break;

                        case 1:
                            gr.name = Text_UpStigmata + "中";
                            break;

                        case 2:
                            gr.name = Text_UpStigmata + "下";
                            break;
                        }
                        gr.value      = 20000;
                        gr.count      = 1;
                        gr.type       = TypeS.Stigmata.ToString();
                        gr.level      = 10;
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        return(gr);
                    }
                    else
                    {
                        string temp = "";
                        switch (rd.Next(0, 4))
                        {
                        case 0:
                            temp = Text_Stigmata1;
                            break;

                        case 1:
                            temp = Text_Stigmata2;
                            break;

                        case 2:
                            temp = Text_Stigmata3;
                            break;

                        case 3:
                            temp = Text_Stigmata4;
                            break;
                        }
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name = temp + "上";
                            break;

                        case 1:
                            gr.name = temp + "中";
                            break;

                        case 2:
                            gr.name = temp + "下";
                            break;
                        }
                        gr.value      = 19000;
                        gr.count      = 1;
                        gr.type       = TypeS.Stigmata.ToString();
                        gr.level      = 1;
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        return(gr);
                    }
                }
            }
        }
Beispiel #6
0
        public GachaResult KC_GachaSub()
        {
            GachaResult gr    = new GachaResult();
            Random      rd    = new Random(GetRandomSeed());
            double      pro_2 = rd.Next(0, 100000) / (double)1000;

            if (pro_2 < Probablity_Material技能材料)
            {
                gr.name       = "高级技能材料";
                gr.value      = 1000;
                gr.count      = rd.Next(2, 4);
                gr.type       = TypeS.Material.ToString();
                gr.quality    = 2;
                gr.evaluation = 4;
                return(gr);
            }
            else if (pro_2 < Probablity_Material反应炉 + Probablity_Material技能材料)
            {
                gr.name       = "超小型反应炉";
                gr.value      = 800;
                gr.count      = rd.Next(2, 4);
                gr.type       = TypeS.Material.ToString();
                gr.quality    = 1;
                gr.evaluation = 3;

                return(gr);
            }
            else if (pro_2 < Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料)
            {
                double pro_4 = rd.NextDouble();
                if (pro_4 <= 0.33)
                {
                    gr.name       = "特级学习材料";
                    gr.value      = 900;
                    gr.count      = rd.Next(3, 6);
                    gr.type       = TypeS.Material.ToString();
                    gr.quality    = 2;
                    gr.evaluation = 4;

                    return(gr);
                }
                else
                {
                    gr.name       = "高级学习材料";
                    gr.value      = 800;
                    gr.count      = rd.Next(3, 6);
                    gr.type       = TypeS.Material.ToString();
                    gr.quality    = 1;
                    gr.evaluation = 3;

                    return(gr);
                }
            }
            else if (pro_2 < Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料)
            {
                gr.name       = "吼咪宝藏";
                gr.value      = 700;
                gr.count      = 1;
                gr.type       = TypeS.Material.ToString();
                gr.quality    = 2;
                gr.evaluation = 4;

                return(gr);
            }
            else if (pro_2 < Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料)
            {
                gr.name       = "吼美宝藏";
                gr.value      = 600;
                gr.count      = 1;
                gr.type       = TypeS.Material.ToString();
                gr.quality    = 2;
                gr.evaluation = 4;

                return(gr);
            }
            else if (pro_2 < Probablity_Material吼姆宝藏 + Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料)
            {
                gr.name       = "吼里宝藏";
                gr.value      = 500;
                gr.count      = 1;
                gr.type       = TypeS.Material.ToString();
                gr.quality    = 1;
                gr.evaluation = 3;
                return(gr);
            }
            else
            {
                double pro_0 = rd.Next(0, 10000) / (double)100;
                if (pro_0 <= 50)
                {
                    int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Weapon2", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"));
                    gr.name       = INIhelper.IniRead("详情", $"Weapon2_Item{rd.Next(0, count)}", "2星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                    gr.value      = 2500;
                    gr.count      = 1;
                    gr.type       = TypeS.Weapon.ToString();
                    gr.level      = 1;
                    gr.quality    = 1;
                    gr.evaluation = 2;

                    return(gr);
                }
                else
                {
                    int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Stigmata2", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"));
                    gr.name = INIhelper.IniRead("详情", $"Stigmata2_Item{rd.Next(0, count)}", "2星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                    switch (rd.Next(0, 3))
                    {
                    case 0:
                        gr.name += "上";
                        break;

                    case 1:
                        gr.name += "中";
                        break;

                    case 2:
                        gr.name += "下";
                        break;
                    }
                    gr.value      = 2400;
                    gr.count      = 1;
                    gr.type       = TypeS.Stigmata.ToString();
                    gr.level      = 1;
                    gr.quality    = 1;
                    gr.evaluation = 2;

                    return(gr);
                }
            }
        }
Beispiel #7
0
        public GachaResult KC_Gacha()
        {
            Random rd    = new Random(GetRandomSeed());
            double pro_1 = rd.Next(0, 1000000) / (double)10000;

            Count++;
            GachaResult gr = new GachaResult();

            //
            if (Count < 10)
            {
                if (pro_1 < Probablity_KC角色卡)
                {
                    GetTargetItem = true;
                    Count         = 0;
                    double pro_0 = rd.Next(0, Convert.ToInt32((Probablity_KC角色卡) * 1000)) / (double)1000;
                    if (pro_0 < Probablity_UpS)
                    {
                        gr.name    = Text_UpS;
                        gr.value   = 28000;
                        gr.count   = 1;
                        gr.type    = TypeS.Chararcter.ToString();
                        gr.class_  = "S";
                        gr.quality = 2;
                        return(gr);
                    }
                    else if (pro_0 < Probablity_UpA + Probablity_UpS)
                    {
                        gr.name    = Text_UpA;;
                        gr.value   = 2800;
                        gr.count   = 1;
                        gr.type    = TypeS.Chararcter.ToString();
                        gr.class_  = "A";
                        gr.quality = 2;

                        return(gr);
                    }
                    else
                    {
                        gr.value   = 2800;
                        gr.count   = 1;
                        gr.type    = TypeS.Chararcter.ToString();
                        gr.class_  = "A";
                        gr.quality = 2;

                        int temp = rd.Next(3);
                        if (temp == 0)
                        {
                            gr.name = Text_A1;;
                            return(gr);
                        }
                        if (temp == 1)
                        {
                            gr.name = Text_A2;
                            return(gr);
                        }
                        gr.name = Text_A3;;
                        return(gr);
                    }
                }
                else if (pro_1 < Probablity_KC角色卡 + Probablity_KC角色碎片)
                {
                    if (rd.Next(0, Convert.ToInt32((Probablity_KC角色碎片) * 1000)) / (double)1000 < Probablity_Sdebris)
                    {
                        gr.name    = Text_UpS + "碎片";
                        gr.value   = 2700;
                        gr.count   = rd.Next(7, 10);
                        gr.type    = TypeS.debri.ToString();
                        gr.quality = 2;

                        return(gr);
                    }
                    else
                    {
                        gr.value = 2600;
                        gr.count = rd.Next(4, 9);
                        gr.type  = TypeS.debri.ToString();
                        int temp = rd.Next(4);
                        if (temp == 0)
                        {
                            gr.name = Text_UpA + "碎片"; return(gr);
                        }
                        if (temp == 1)
                        {
                            gr.name = Text_A1 + "碎片"; return(gr);
                        }
                        if (temp == 2)
                        {
                            gr.name = Text_A2 + "碎片"; return(gr);
                        }
                        gr.name    = Text_A3 + "碎片";
                        gr.quality = 2;

                        return(gr);
                    }
                }
                else
                {
                    double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_KC材料) * 1000)) / (double)1000;
                    if (pro_2 < Probablity_Material技能材料)
                    {
                        gr.name       = "高级技能材料";
                        gr.value      = 1000;
                        gr.count      = rd.Next(4, 7);
                        gr.type       = TypeS.Material.ToString();
                        gr.quality    = 2;
                        gr.evaluation = 4;
                        return(gr);
                    }
                    else if (pro_2 < Probablity_Material反应炉 + Probablity_Material技能材料)
                    {
                        gr.name       = "超小型反应炉";
                        gr.value      = 800;
                        gr.count      = rd.Next(4, 7);
                        gr.type       = TypeS.Material.ToString();
                        gr.quality    = 1;
                        gr.evaluation = 3;

                        return(gr);
                    }
                    else if (pro_2 < Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料)
                    {
                        double pro_4 = rd.NextDouble();
                        if (pro_4 <= 0.33)
                        {
                            gr.name       = "特级学习材料";
                            gr.value      = 900;
                            gr.count      = rd.Next(5, 9);
                            gr.type       = TypeS.Material.ToString();
                            gr.quality    = 2;
                            gr.evaluation = 4;

                            return(gr);
                        }
                        else
                        {
                            gr.name       = "高级学习材料";
                            gr.value      = 800;
                            gr.count      = rd.Next(5, 9);
                            gr.type       = TypeS.Material.ToString();
                            gr.quality    = 1;
                            gr.evaluation = 3;

                            return(gr);
                        }
                    }
                    else if (pro_2 < Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料)
                    {
                        gr.name       = "吼咪宝藏";
                        gr.value      = 700;
                        gr.count      = 1;
                        gr.type       = TypeS.Material.ToString();
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        return(gr);
                    }
                    else if (pro_2 < Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料)
                    {
                        gr.name       = "吼美宝藏";
                        gr.value      = 600;
                        gr.count      = 1;
                        gr.type       = TypeS.Material.ToString();
                        gr.quality    = 2;
                        gr.evaluation = 4;

                        return(gr);
                    }
                    else
                    {
                        gr.name       = "吼里宝藏";
                        gr.value      = 500;
                        gr.count      = 1;
                        gr.type       = TypeS.Material.ToString();
                        gr.quality    = 1;
                        gr.evaluation = 3;

                        return(gr);
                    }
                }
            }
            else
            {
                Count         = 0;
                GetTargetItem = false;
                double pro_0 = rd.Next(0, Convert.ToInt32((Probablity_KC角色卡) * 1000)) / (double)1000;
                if (pro_0 < Probablity_UpS)
                {
                    gr.name    = Text_UpS;;
                    gr.value   = 28000;
                    gr.count   = 1;
                    gr.class_  = "S";
                    gr.quality = 2;

                    gr.type = TypeS.Chararcter.ToString();
                    return(gr);
                }
                else if (pro_0 < Probablity_UpA + Probablity_UpS)
                {
                    gr.name    = Text_UpA;;
                    gr.value   = 2800;
                    gr.count   = 1;
                    gr.class_  = "A";
                    gr.quality = 2;

                    gr.type = TypeS.Chararcter.ToString();
                    return(gr);
                }
                else
                {
                    gr.value   = 2800;
                    gr.count   = 1;
                    gr.class_  = "A";
                    gr.quality = 2;

                    gr.type = TypeS.Chararcter.ToString();
                    int temp = rd.Next(3);
                    if (temp == 0)
                    {
                        gr.name = Text_A1;;
                        return(gr);
                    }
                    if (temp == 1)
                    {
                        gr.name = Text_A2;
                        return(gr);
                    }
                    gr.name = Text_A3;;
                    return(gr);
                }
            }
        }
Beispiel #8
0
 public static void UpdateGachaResult(GachaResult result, MainWindowViewModel viewModel)
 {
     viewModel.CardQuantity = result.card.value;
     viewModel.CardMax      = result.card.max;
 }
        public GachaResult JZ_GachaMain()
        {
            Random rd = new Random(GetRandomSeed());
            //初始概率1 初始值0-100.00000
            double pro_1 = rd.Next(0, 10000000) / (double)100000;

            Count_JZ++;
            GachaResult gr = new GachaResult();

            //保底标志为false且保底次数小于10
            if (Count_JZ < 10)
            {
                //概率1命中四星武器
                if (pro_1 < Probablity_Weapon4Total)
                {
                    //保底标志为真 保底次数归零
                    GetTargetItem = true;
                    Count_JZ      = 0;
                    rd            = new Random(GetRandomSeed());
                    //初始概率2 初始值0-四星武器概率(4.95800)
                    double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total) * 100000)) / (double)100000;
                    //概率2命中up武器(2.479)
                    if (pro_2 < Probablity_JZUpWeapon4)
                    {
                        gr.name  = Text_UpWeapon;;
                        gr.value = 28000;
                        gr.count = 1;
                        gr.type  = TypeS.Weapon.ToString();
                        return(gr);
                    }
                    //概率2命中up外武器4.958-2.479=2.479 2.479/6=0.413
                    else
                    {
                        //概率3初始化
                        double pro_3 = rd.Next(0, 6);
                        gr.value = 27000;
                        gr.count = 1;
                        gr.type  = TypeS.Weapon.ToString();
                        switch (pro_3)
                        {
                        case 0:
                            gr.name = Text_Weapon1;
                            break;

                        case 1:
                            gr.name = Text_Weapon2;
                            break;

                        case 2:
                            gr.name = Text_Weapon3;
                            break;

                        case 3:
                            gr.name = Text_Weapon4;
                            break;

                        case 4:
                            gr.name = Text_Weapon5;
                            break;

                        case 5:
                            gr.name = Text_Weapon6;
                            break;
                        }
                        return(gr);
                    }
                }
                //概率1命中四星圣痕 7.437+4.958=12.395   4.958-12.395
                else if (pro_1 < Probablity_Stigmata4Total + Probablity_Weapon4Total)
                {
                    //保底标志为真 保底次数归零
                    GetTargetItem = true;
                    Count_JZ      = 0;
                    rd            = new Random(GetRandomSeed());
                    //概率2初始化 0-(1.24000+0.31000=1.55000)
                    double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_JZUpStigmata4 + Probablity_JZStigmata4) * 100000)) / (double)100000;
                    //概率2命中Up圣痕单件(1.240) 1.240*3=3.72 7.437-3.72=3.717 3.717/12=0.30975
                    //与乘以三应该相同
                    if (pro_2 < Probablity_JZUpStigmata4)
                    {
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name = Text_UpStigmata + " 上";
                            break;

                        case 1:
                            gr.name = Text_UpStigmata + " 中";
                            break;

                        case 2:
                            gr.name = Text_UpStigmata + " 下";
                            break;
                        }
                        gr.value = 2800;
                        gr.count = 1;
                        gr.type  = TypeS.Stigmata.ToString();
                        return(gr);
                    }
                    //概率2命中普通圣痕单件(0.310)
                    else
                    {
                        string temp = "";
                        switch (rd.Next(0, 4))
                        {
                        case 0:
                            temp = Text_Stigmata1;
                            break;

                        case 1:
                            temp = Text_Stigmata2;
                            break;

                        case 2:
                            temp = Text_Stigmata3;
                            break;

                        case 3:
                            temp = Text_Stigmata4;
                            break;
                        }
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name = temp + " 上";
                            break;

                        case 1:
                            gr.name = temp + " 中";
                            break;

                        case 2:
                            gr.name = temp + " 下";
                            break;
                        }
                        gr.value = 2700;
                        gr.count = 1;
                        gr.type  = TypeS.Stigmata.ToString();
                        return(gr);
                    }
                }
                //概率1命中三星武器 4.958+7.437+11.231=23.626 12.395-23.626
                else if (pro_1 < Probablity_Weapon3Total + Probablity_Weapon4Total + Probablity_Stigmata4Total)
                {
                    gr.name  = INIhelper.IniRead("详情", $"Weapon3_Item{rd.Next(0, 18)}", "3星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                    gr.count = 1;
                    gr.type  = TypeS.Weapon.ToString();
                    gr.value = 26000;
                    return(gr);
                }
                //概率1命中三星圣痕 4.958+7.437+11.231+33.694=57.32 23.626-57.32
                else if (pro_1 < Probablity_Stigmata3Total + Probablity_Weapon3Total + Probablity_Weapon4Total + Probablity_Stigmata4Total)
                {
                    gr.name = INIhelper.IniRead("详情", $"Stigmata3_Item{rd.Next(0, 12)}", "3星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                    switch (rd.Next(0, 3))
                    {
                    case 0:
                        gr.name += "上";
                        break;

                    case 1:
                        gr.name += "中";
                        break;

                    case 2:
                        gr.name += "下";
                        break;
                    }
                    gr.count = 1;
                    gr.type  = TypeS.Stigmata.ToString();
                    gr.value = 2600;
                    return(gr);
                }
                //逻辑1命中二星装备与二星圣痕 4.958+7.437+11.231+33.694+17.072+17.072+8.536=100
                //感觉逻辑上没什么问题……
                else
                {
                    rd = new Random(GetRandomSeed());
                    double pro_0 = rd.Next(0, 10000) / (double)100;
                    if (pro_0 <= 50)
                    {
                        gr.name  = INIhelper.IniRead("详情", $"Weapon2_Item{rd.Next(0, 20)}", "2星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                        gr.value = 25000;
                        gr.count = 1;
                        gr.type  = TypeS.Weapon.ToString();
                        return(gr);
                    }
                    else
                    {
                        gr.name = INIhelper.IniRead("详情", $"Stigmata2_Item{rd.Next(0, 5)}", "2星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt");
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name += "上";
                            break;

                        case 1:
                            gr.name += "中";
                            break;

                        case 2:
                            gr.name += "下";
                            break;
                        }
                        gr.value = 2500;
                        gr.count = 1;
                        gr.type  = TypeS.Stigmata.ToString();
                        return(gr);
                    }
                }
            }
            //
            else
            {
                //保底
                Count_JZ      = 0;
                GetTargetItem = false;
                rd            = new Random(GetRandomSeed());
                //概率0初始化 0-(4星武器+4星圣痕)
                double pro_0 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total + Probablity_Stigmata4Total) * 1000000)) / (double)1000000;
                //概率0命中四星武器
                if (pro_0 < Probablity_Weapon4Total)
                {
                    double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total) * 1000000)) / (double)1000000;
                    if (pro_2 < Probablity_JZUpWeapon4)
                    {
                        gr.name  = Text_UpWeapon;;
                        gr.value = 28000;
                        gr.count = 1;
                        gr.type  = TypeS.Weapon.ToString();
                        return(gr);
                    }
                    else
                    {
                        double pro_3 = rd.Next(0, 6);
                        gr.value = 27000;
                        gr.count = 1;
                        gr.type  = TypeS.Chararcter.ToString();
                        switch (pro_3)
                        {
                        case 0:
                            gr.name = Text_Weapon1;
                            break;

                        case 1:
                            gr.name = Text_Weapon2;
                            break;

                        case 2:
                            gr.name = Text_Weapon3;
                            break;

                        case 3:
                            gr.name = Text_Weapon4;
                            break;

                        case 4:
                            gr.name = Text_Weapon5;
                            break;

                        case 5:
                            gr.name = Text_Weapon6;
                            break;
                        }
                        return(gr);
                    }
                }
                else
                {
                    rd = new Random(GetRandomSeed());
                    if (rd.Next(0, Convert.ToInt32((Probablity_Stigmata4Total) * 1000000)) / (double)1000000 < Probablity_JZUpWeapon4 * 3)
                    {
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name = Text_UpStigmata + " 上";
                            break;

                        case 1:
                            gr.name = Text_UpStigmata + " 中";
                            break;

                        case 2:
                            gr.name = Text_UpStigmata + " 下";
                            break;
                        }
                        gr.value = 20000;
                        gr.count = 1;
                        gr.type  = TypeS.Stigmata.ToString();
                        return(gr);
                    }
                    else
                    {
                        string temp = "";
                        switch (rd.Next(0, 4))
                        {
                        case 0:
                            temp = Text_Stigmata1;
                            break;

                        case 1:
                            temp = Text_Stigmata2;
                            break;

                        case 2:
                            temp = Text_Stigmata3;
                            break;

                        case 3:
                            temp = Text_Stigmata4;
                            break;
                        }
                        switch (rd.Next(0, 3))
                        {
                        case 0:
                            gr.name = temp + " 上";
                            break;

                        case 1:
                            gr.name = temp + " 中";
                            break;

                        case 2:
                            gr.name = temp + " 下";
                            break;
                        }
                        gr.value = 19000;
                        gr.count = 1;
                        gr.type  = TypeS.Stigmata.ToString();
                        return(gr);
                    }
                }
            }
        }
Beispiel #10
0
    public void Update()
    {
        if (Input.GetMouseButton(0))
        {
            nowPos = (Input.touchCount == 0) ? (Vector2)Input.mousePosition : Input.GetTouch(0).position;

            if (Input.GetMouseButtonDown(0))
            {
                touchPos = nowPos;
            }
        }

        if (Input.GetMouseButtonUp(0))          //터치 끝
        {
            if (end == true)
            {
            }
            else if (requestGacha == -1)
            {
                Vector2 diff = touchPos - nowPos;
                if ((mTouchSlice[randomCnt] == 0 && diff.x > 100) ||
                    (mTouchSlice[randomCnt] == 1 && diff.y > 100) ||
                    (mTouchSlice[randomCnt] == 2 && diff.x < -100) ||
                    (mTouchSlice[randomCnt] == 3 && diff.y < -100)
                    )
                {
                    mAnimator.SetBool("isPlay", true);
                    gachaButtion.gameObject.SetActive(false);
                    requestGacha = remainGacha;
                    var scriptRequest = new ExecuteCloudScriptRequest()
                    {
                        FunctionName      = "Gacha",
                        FunctionParameter = new { page = StaticManager.instance.GachaPage, num = requestGacha },
                    };

                    PlayFabClientAPI.ExecuteCloudScript(scriptRequest, (result) =>
                    {
                        Debug.Log(PlayFab.Json.PlayFabSimpleJson.SerializeObject(result));


                        JsonObject jsonResult = (JsonObject)result.FunctionResult;

                        Debug.Log(jsonResult.ToString());

                        GachaResult result_ = JsonUtility.FromJson <GachaResult>(jsonResult.ToString());

                        foreach (string key in result_.ItemId)
                        {
                            pickList.Add(key);
                        }
                        //KeyValuePair<string, JsonObject> entry = new KeyValuePair<string, JsonObject>((string)ItemId, CustomObj);
                        //pickList.Add(entry);
                        StaticManager.instance.mCharacterLocalDataChanged = true;
                        requestGacha = 0;
                    }, (error) =>
                    {
                        requestGacha = 0;
                        end          = true;
                        Debug.Log(error.GenerateErrorReport());
                    });
                    UiManager.instance.Crystal -= requestGacha * 100;
                }
            }
            else if (requestGacha == 0 && resultWindow == true)
            {
                remainGacha--;
                if (remainGacha == 0)
                {
                    for (int i = 0; i < pickList.Count; i++)
                    {
                        AddIcon(i, pickList[i]);
                        end = true;
                    }
                    gachaWindow.gameObject.SetActive(true);
                }
                else
                {
                    StaticManager.instance.SettingIconImg(pickList[pickList.Count - remainGacha], tempGachaPick);
                    tempGachaPick.gameObject.SetActive(true);
                    tempGachaPick.GetComponent <ScaleChangeEffect>().StartAnimation();

                    var paticle = Resources.Load <GameObject>("Prefabs/Effect/GachaPaticle");
                    var patiObj = Instantiate(paticle, new Vector2(), Quaternion.identity) as GameObject;
                }
            }
        }

        if (start == false && mAnimator.GetCurrentAnimatorStateInfo(0).IsName("gacha") &&
            mAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime > 1 &&
            !mAnimator.IsInTransition(0) &&
            mAnimator.GetCurrentAnimatorStateInfo(0).length >
            mAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime)
        {
            mAnimator.speed = 0.0f;
            start           = true;
        }
        if (start == true && resultWindow == false && requestGacha == 0)
        {
            resultWindow = true;

            StaticManager.instance.SettingIconImg(pickList[0], tempGachaPick);
            tempGachaPick.gameObject.SetActive(true);
            tempGachaPick.GetComponent <ScaleChangeEffect>().StartAnimation();

            var paticle = Resources.Load <GameObject>("Prefabs/GachaPaticle");
            var patiObj = Instantiate(paticle, new Vector2(), Quaternion.identity) as GameObject;
        }
    }