private static void ThrowDamageThing(PlayerStats player) { if (MapManager.map[Targeting.Position.x, Targeting.Position.y].item == null && MapManager.map[Targeting.Position.x, Targeting.Position.y].isWalkable && MapManager.map[Targeting.Position.x, Targeting.Position.y].enemy == null && MapManager.map[Targeting.Position.x, Targeting.Position.y].type != "Door") { MapManager.map[Targeting.Position.x, Targeting.Position.y].item = Info.CurrentItem.gameObject; MapManager.map[Targeting.Position.x, Targeting.Position.y].baseChar = Info.CurrentItem.iso.I_symbol; if (ColorUtility.TryParseHtmlString(Info.CurrentItem.iso.I_color, out Color color)) { MapManager.map[Targeting.Position.x, Targeting.Position.y].exploredColor = color; } } else { foreach (var p in MapUtility.GetSimpleNeighbours(Targeting.Position)) { if (MapManager.map[p.x, p.y].item == null && MapManager.map[p.x, p.y].isWalkable && MapManager.map[p.x, p.y].enemy == null && MapManager.map[p.x, p.y].type != "Door") { MapManager.map[p.x, p.y].item = Info.CurrentItem.gameObject; MapManager.map[Targeting.Position.x, Targeting.Position.y].baseChar = Info.CurrentItem.iso.I_symbol; if (ColorUtility.TryParseHtmlString(Info.CurrentItem.iso.I_color, out Color color)) { MapManager.map[Targeting.Position.x, Targeting.Position.y].exploredColor = color; } break; } } } if (MapManager.map[Targeting.Position.x, Targeting.Position.y].enemy == null) { return; } var enemy = MapManager.map[Targeting.Position.x, Targeting.Position.y].enemy; var npc = enemy.GetComponent <RoamingNPC>(); int roll = UnityEngine.Random.Range(1, 101); int calcRoll; calcRoll = (roll + player.__dexterity - npc.dex - npc.AC) - Mathf.Max(Mathf.Abs(PlayerMovement.playerMovement.position.x - Targeting.Position.x), Mathf.Abs(PlayerMovement.playerMovement.position.x - Targeting.Position.x)); if (roll <= 20) { MissEnemyWakeUp(npc); return; } int damage = 0; if (calcRoll > 50 || roll >= 80) //Do we hit? { damage = Info.GetDamage(); DealDamageToEnemy(npc, damage); } else //WE MISSED BUT WE WAKE UP ENEMY { MissEnemyWakeUp(npc); } }