public void OnDropMoney(GameObject Obj, int amount)
        {
            Debug.Log(amount);
            int minCoinNum   = 6;
            int coinTenNum   = amount / 10;
            int coinThreeNum = (amount % 10) / 3;
            int coinOneNum   = ((amount % 10) % 3) / 1;
            int curCoinNum   = coinTenNum + coinThreeNum + coinOneNum;

            if ((curCoinNum < minCoinNum) && (amount > 6))
            {
                if (coinTenNum > 0)
                {
                    // 10 → 3 + 3 + 3 + 1
                    coinTenNum--;
                    coinThreeNum += 3;
                    coinOneNum++;
                    curCoinNum = coinTenNum + coinThreeNum + coinOneNum;
                }

                while (curCoinNum < minCoinNum)
                {
                    if (coinThreeNum < 1)
                    {
                        break;
                    }
                    // 3 → 1 + 1 + 1
                    coinThreeNum--;
                    coinOneNum += 3;
                    curCoinNum  = coinTenNum + coinThreeNum + coinOneNum;
                }
            }
            Debug.Log(amount);
            Debug.Log(coinTenNum);
            Debug.Log(coinThreeNum);
            Debug.Log(coinOneNum);

            for (int i = 0; i < coinTenNum; i++)
            {
                GameObject coin10 = GameObject.Instantiate(LootData.GetPrefabFromName("CoinTen"), Obj.transform.position, Quaternion.identity);
            }

            for (int i = 0; i < coinThreeNum; i++)
            {
                GameObject coin3 = GameObject.Instantiate(LootData.GetPrefabFromName("CoinThree"), Obj.transform.position, Quaternion.identity);
            }

            for (int i = 0; i < coinOneNum; i++)
            {
                GameObject coin1 = GameObject.Instantiate(LootData.GetPrefabFromName("CoinOne"), Obj.transform.position, Quaternion.identity);
            }
        }
Exemple #2
0
        private void m_OnEnemyDied(PlayerKillEnemy ev)
        {
            foreach (var monster in m_DB.MonsterDB.GetAll())
            {
                if (ev.Enemy.name.ToLower().Contains(monster.id.ToLower()))
                {
                    for (int i = 0; i < monster.DropsList.Count; i++)
                    {
                        float roll = Random.Range(0f, 1f);

                        if (roll < monster.DropsList[i].Weight)
                        {
                            string dropName = monster.DropsList[i].Item.id;
                            if (dropName.ToLower() == "money")
                            {
                                Services.CoinManager.OnDropMoney(ev.Enemy, monster.DropsList[i].Quantity);
                            }
                            else
                            {
                                // Drop other stuff
                                GameObject theLoot = m_LootData.GetPrefabFromName(dropName);
                                Debug.Assert(theLoot != null, "Loot: " + dropName + " is not in loot data");
                                GameObject lootInstance = GameObject.Instantiate <GameObject>(theLoot, ev.Enemy.transform.position, Quaternion.identity);
                                lootInstance.GetComponent <SpeedManager>().SelfSpeed = new Vector2(Random.Range(-1.5f, 1.5f), Random.Range(1f, 3f));
                                if (dropName.ToLower().Contains("abilityobject"))
                                {
                                    lootInstance.GetComponent <AbilityObject>().PriceType = AbilityObjectPriceType.Drop;
                                }
                            }
                        }
                    }
                    break;
                }
            }
        }