Supongo que esta es una pregunta de equilibrio del juego y no una pregunta de codificación, y hay muchas maneras de manejar esto. Desde su algoritmo existente, sospecho que lo está haciendo más complicado de lo que tiene que ser (tres atributos Y un número aleatorio crean un sistema extremadamente turbio desde la perspectiva del jugador). ¡Mi primer instinto es simplificar!
Favorezca los atributos que hacen múltiples cosas, en lugar de los resultados que están determinados por múltiples atributos. DEX funciona bien como el determinante principal de la probabilidad de golpear; La adición de todo lo demás solo sirve para dificultar el equilibrio. Piénselo de esta manera: el daño esperado de un jugador en cada golpe es su% de golpe multiplicado por su daño promedio cuando golpea. ¿Cómo planea calcular un% de golpe "esperado" o "típico" con tantas variables?
Veo otro problema, que es que su fórmula no escala, y esto es probablemente lo que está experimentando. Suponiendo que DEX, LUCK y SPEED tienden a aumentar en el transcurso del juego, las diferencias entre jugador y monstruo en esas estadísticas también tenderán a aumentar. Solo como ejemplo, si el DEX de inicio de juego de un jugador está en el rango de 4 a 6 y también lo son los monstruos, ese es un modificador de 10-20% para golpear. Si el rango es más como 10 a 20 en etapas posteriores del juego, eso es hasta un modificador de 100%.
Una forma de arreglar eso es mantener las estadísticas fijas. Los rangos de jugador y monstruo son los mismos en todo el juego, y obtener algo así como +1 DEX es algo enorme, extremadamente raro y tratado como tal (si es que existe). Entonces su fórmula funcionará bien para todo el juego, y verá un jugador con aproximadamente la misma probabilidad de golpear en todo momento.
Otra forma es cambiar ese "10" codificado para escalar con el nivel, por lo que tal vez sea "10 + nivel de monstruo" o "10 + nivel de mazmorra" o algo así, lo que provoca un ligero aumento en la dificultad a medida que el juego avanza a menos que el jugador suba de nivel sus estadísticas en consecuencia.
Una tercera forma, como han dicho otros, es establecer límites máximos en el% de golpe más alto y más bajo aceptable, y simplemente decir "si el valor calculado es menor que X, use X en su lugar".
En aras de la exhaustividad, señalaré que no hay una ley absoluta que DEBE incluir una tirada para golpear en primer lugar. Tomar una acción en un juego que no es efectivo no es particularmente divertido, y realmente no aumenta la experiencia, excepto en casos excepcionales. Una alternativa es dejar que los jugadores SIEMPRE golpeen, y simplemente meterse con el rango de daño para que a veces causen mucho menos daño que otros. Recuerde que los sistemas complejos son más divertidos para el diseñador que para el jugador.