private IEnumerator Win(Monster.Meta meta) { dungeon_move.touch_input.block_count++; dungeon.data.current_room.monster = null; GameManager.Instance.player.enemy_slain_count++; int prevPlayerLevel = GameManager.Instance.player.level; Stat stat = GameManager.Instance.player.stats; int rewardCoin = meta.reward.coin + (int)Random.Range(-meta.reward.coin * 0.1f, meta.reward.coin * 0.1f); rewardCoin += (int)(rewardCoin * 0.1f * dungeon.level); int bonusCoin = (int)(rewardCoin * stat.GetStat(StatType.CoinBonus) / 100.0f); int rewardExp = meta.reward.exp + (int)Random.Range(-meta.reward.exp * 0.1f, meta.reward.exp * 0.1f); rewardExp += (int)(rewardExp * 0.1f * dungeon.level); int bonusExp = (int)(rewardExp * stat.GetStat(StatType.ExpBonus) / 100.0f); GameManager.Instance.player.ChangeCoin(rewardCoin + bonusCoin, false); GameManager.Instance.player.AddExp(rewardExp + bonusExp); GameManager.Instance.player.collect_coin_count += rewardCoin + bonusCoin; GameManager.Instance.player.total_exp += rewardExp + bonusExp; if (meta.reward_item_chance > Random.Range(0.0f, 100.0f)) { if ("" == meta.reward.item_id) { dungeon.data.current_room.item = EquipItemManager.Instance.GetRandomMeta(); } else { dungeon.data.current_room.item = ItemManager.Instance.FindMeta <Item.Meta>(meta.reward.item_id); } } Database.Execute(Database.Type.UserData, "UPDATE user_data SET player_coin=" + GameManager.Instance.player.coin); ProgressManager.Instance.Update(ProgressType.EnemiesSlain, meta.id, 1); CreateCoins(rewardCoin + bonusCoin); for (int i = prevPlayerLevel; i < GameManager.Instance.player.level; i++) { yield return(player_exp.SetCurrent(player_exp.max, 0.3f)); player_exp.max = GameManager.Instance.player.meta.GetMaxExp(i); yield return(player_exp.SetCurrent(0.0f, 0.0f)); } player_exp.max = GameManager.Instance.player.meta.GetMaxExp(GameManager.Instance.player.level); player_exp.current = GameManager.Instance.player.exp; player_health.max = GameManager.Instance.player.max_health; player_health.current = GameManager.Instance.player.cur_health; string battleResult = ""; battleResult += GameText.GetText("DUNGEON/BATTLE/DEFEATED", "You", meta.name) + "\n"; battleResult += "Coins : +" + rewardCoin + (0 < bonusCoin ? "(" + bonusCoin + " bonus)" : "") + "\n"; battleResult += "Exp : +" + rewardExp + (0 < bonusExp ? "(" + bonusExp + " bonus)" : "") + "\n"; if (prevPlayerLevel < GameManager.Instance.player.level) { battleResult += "Level : " + prevPlayerLevel + " -> " + GameManager.Instance.player.level + "\n"; } yield return(GameManager.Instance.ui_textbox.Write(battleResult, false)); mini_map.CurrentPosition(dungeon.data.current_room.id); dungeon_move.touch_input.block_count--; }