Esempio n. 1
0
        private void CheckExactDropRate(int totalWeight, MonsterDropTable table, Dictionary <long, float> expectedRate)
        {
            foreach (KeyValuePair <long, float> item in expectedRate)
            {
                int weigth     = GetWeight(item.Key, table);
                int baseChance = table.baseChance;

                float rate = ((float)weigth / (float)table.baseChance) * ((float)table.weight / (float)totalWeight);

                Assert.AreEqual(item.Value, rate, 0.00001);
            }
        }
Esempio n. 2
0
        private int GetWeight(long id, MonsterDropTable table)
        {
            foreach (MonsterDropTable.BasicLoot loot in table.basicLoots)
            {
                if (loot.id == id)
                {
                    return(loot.weight);
                }
            }

            return(0);
        }
Esempio n. 3
0
        public void RareDropTableTest()
        {
            MonsterDropTable monsterDropTable = JsonHandler.GetMonsterDropTable("rare_drop_table");
            int baseChance  = monsterDropTable.baseChance;
            int totalWeight = GetWeightSum(monsterDropTable.basicLoots);

            Assert.AreEqual(baseChance, totalWeight);
            Assert.Greater(baseChance, 0);

            foreach (MonsterDropTable.BasicLoot item in monsterDropTable.basicLoots)
            {
                Assert.Greater(item.id, 0);
            }
        }
Esempio n. 4
0
    public void GetDropTableHandler(string name)
    {
        monsterDropTableHandler = JsonHandler.GetMonsterDropTableHandler(name);

        if (monsterDropTableHandler.preMadeTables.Count != 0)
        {
            foreach (MonsterDropTableHandler.TableInfo tableInfo in monsterDropTableHandler.preMadeTables)
            {
                MonsterDropTable table = JsonHandler.GetMonsterDropTable(tableInfo.name);
                table.weight = tableInfo.weight;
                monsterDropTableHandler.monsterDropTables.Add(table);
            }
        }

        monsterDropTableHandler.SetTotalLootCount();
    }
Esempio n. 5
0
        public void PagesTableTest()
        {
            MonsterDropTable monsterDropTable = JsonHandler.GetMonsterDropTable("pages");
            int baseChance  = monsterDropTable.baseChance;
            int totalWeight = GetWeightSum(monsterDropTable.basicLoots);

            Assert.AreEqual(baseChance, totalWeight);
            Assert.Greater(baseChance, 0);

            foreach (MonsterDropTable.BasicLoot item in monsterDropTable.basicLoots)
            {
                Assert.Greater(item.id, 0);
                Assert.Greater(item.amountMin, 0);
                Assert.Greater(item.amountMax, 0);
            }
        }
Esempio n. 6
0
    private void CreateUniqueDropTable()
    {
        uniqueDropTable = new MonsterDropTable
        {
            name       = "Unique",
            weight     = 0,
            baseChance = 256 * 4,
        };

        MonsterDropTable.BasicLoot tanz = new MonsterDropTable.BasicLoot
        {
            id        = 12922,
            weight    = 1,
            amountMin = 1,
            amountMax = 1,
        };
        uniqueDropTable.basicLoots.Add(tanz);

        MonsterDropTable.BasicLoot magic = new MonsterDropTable.BasicLoot
        {
            id        = 12932,
            weight    = 1,
            amountMin = 1,
            amountMax = 1,
        };
        uniqueDropTable.basicLoots.Add(magic);

        MonsterDropTable.BasicLoot visage = new MonsterDropTable.BasicLoot
        {
            id        = 12927,
            weight    = 1,
            amountMin = 1,
            amountMax = 1,
        };
        uniqueDropTable.basicLoots.Add(visage);

        MonsterDropTable.BasicLoot onyx = new MonsterDropTable.BasicLoot
        {
            id        = 6571,
            weight    = 1,
            amountMin = 1,
            amountMax = 1,
        };
        uniqueDropTable.basicLoots.Add(onyx);
    }
    public override void OnInspectorGUI()
    {
        MonsterDropTableAdder monsterDropTableAdder = (MonsterDropTableAdder)target;

        if (GUILayout.Button("Load Bosses"))
        {
            Database.LoadBosses();
            allBosses = Database.bossesNames;
            allBosses.AddRange(Database.cluesNames);
        }

        monsterInd = EditorGUILayout.Popup("Select Boss:", monsterInd, allBosses.ToArray());
        if (Database.bossesNames.Count != 0)
        {
            monsterName = Database.bossesNames[monsterInd];
        }

        if (monsterInd != prevMonsterInd)
        {
            JSONLoaded = false;
        }

        if (GUILayout.Button("Load JSON"))
        {
            monsterDropTableAdder.monsterDropTableHandler = JsonHandler.GetMonsterDropTableHandler(monsterName);
            serializedObject.Update();
            prevMonsterInd = monsterInd;
            JSONLoaded     = true;
        }

        if (monsterName != null && JSONLoaded)
        {
            EditorGUILayout.LabelField("100% Drop and Tertiary", EditorStyles.boldLabel);
            if (GUILayout.Button("Add"))
            {
                monsterDropTableAdder.monsterDropTableHandler.generalDropTables.Add(new GeneralDropTable());
            }
            EditorGUI.indentLevel++;
            EditorGUILayout.PropertyField(generalDropTables, false);
            if (generalDropTables.isExpanded)
            {
                EditorGUI.indentLevel++;
                foreach (SerializedProperty table in generalDropTables)
                {
                    EditorGUILayout.PropertyField(table, false);
                    if (table.isExpanded)
                    {
                        EditorGUI.indentLevel++;
                        EditorGUILayout.PropertyField(table.FindPropertyRelative("name"));
                        EditorGUILayout.PropertyField(table.FindPropertyRelative("numRolls"));
                        EditorGUILayout.PropertyField(table.FindPropertyRelative("lootItems"));
                        EditorGUI.indentLevel--;
                    }
                }
                EditorGUI.indentLevel--;
            }
            EditorGUI.indentLevel--;

            EditorGUILayout.Space(10);

            EditorGUILayout.LabelField("General Info", EditorStyles.boldLabel);
            EditorGUILayout.PropertyField(monsterDropTableHandler.FindPropertyRelative("rolls"));

            EditorGUILayout.Space(10);

            EditorGUILayout.LabelField("General Loot", EditorStyles.boldLabel);
            EditorGUILayout.PropertyField(monsterDropTableHandler.FindPropertyRelative("baseChance"));

            if (GUILayout.Button("Add Loot from temp.json"))
            {
                tempDropTable = JsonHandler.GetMonsterDropTable("temp");
                monsterDropTableAdder.monsterDropTableHandler.basicLoots = tempDropTable.basicLoots;
                monsterDropTableAdder.monsterDropTableHandler.baseChance = tempDropTable.baseChance;
            }

            EditorGUI.indentLevel++;
            EditorGUILayout.PropertyField(monsterDropTableHandler.FindPropertyRelative("basicLoots"));
            EditorGUI.indentLevel--;

            EditorGUILayout.LabelField("Other tables", EditorStyles.boldLabel);
            EditorGUI.indentLevel++;
            if (GUILayout.Button("Add Rare Drop Table"))
            {
                monsterDropTableAdder.monsterDropTableHandler.preMadeTables.Add(new MonsterDropTableHandler.TableInfo("rare_drop_table", 0));
            }
            if (GUILayout.Button("Add Tree-Herb Seed Table"))
            {
                monsterDropTableAdder.monsterDropTableHandler.preMadeTables.Add(new MonsterDropTableHandler.TableInfo("tree_herb_seed", 0));
            }
            if (GUILayout.Button("Add Prayer Page Table"))
            {
                monsterDropTableAdder.monsterDropTableHandler.preMadeTables.Add(new MonsterDropTableHandler.TableInfo("pages", 0));
            }
            if (GUILayout.Button("Add Blessing Table"))
            {
                monsterDropTableAdder.monsterDropTableHandler.preMadeTables.Add(new MonsterDropTableHandler.TableInfo("blessing", 0));
            }
            if (GUILayout.Button("Add Teleport Table"))
            {
                monsterDropTableAdder.monsterDropTableHandler.preMadeTables.Add(new MonsterDropTableHandler.TableInfo("teleport", 0));
            }
            if (GUILayout.Button("Add Custom"))
            {
                monsterDropTableAdder.monsterDropTableHandler.monsterDropTables.Add(new MonsterDropTable());
            }
            if (GUILayout.Button("Add Loot from temp.json"))
            {
                tempDropTable = JsonHandler.GetMonsterDropTable("temp");
                monsterDropTableAdder.monsterDropTableHandler.monsterDropTables.Add(tempDropTable);
            }

            EditorGUILayout.PropertyField(monsterDropTableHandler.FindPropertyRelative("monsterDropTables"));

            SerializedProperty preMadeTables = monsterDropTableHandler.FindPropertyRelative("preMadeTables");
            EditorGUILayout.PropertyField(preMadeTables);

            EditorGUI.indentLevel--;

            EditorGUI.indentLevel--;
            serializedObject.ApplyModifiedProperties();

            if (GUILayout.Button("Apply"))
            {
                JsonHandler.SaveJsonFile(monsterDropTableAdder.monsterDropTableHandler, monsterName);
            }
        }
    }