En este desafío, vas a crear una Comunidad con el objetivo de derrotar a todas las demás comunidades en la batalla.
Una comunidad (equipo) consta de 3 personajes . Cada personaje se mueve independientemente del resto de su equipo, pero deberán trabajar juntos cuando luchen contra tu enemigo. Los equipos se enfrentarán cara a cara de manera rotativa. Las ganancias valen 3 puntos, los empates valen 1 punto y las pérdidas valen 0 puntos.
Los personajes tienen habilidades. La elección de las habilidades que tienen tus personajes es una de las partes más cruciales (y divertidas) en este KotH . Todos son fuertes y tienen el potencial de acabar con tu enemigo.
Los personajes tienen puntos de vida (HP), y cuando su HP golpea (o cae por debajo) 0, mueren . Si todos los personajes del equipo de tu oponente mueren, ¡tú ganas!
Los personajes tienen maná. La mayoría de las acciones requieren que se realice Mana , y si no tienes suficiente, esa acción no está disponible para ti.
Los personajes tienen un retraso de giro . Esto determina el número de ticks entre cada turno (comienza en 100). Más bajo es mejor.
Los personajes tienen atributos . Cada personaje tiene una base de 5 en cada atributo, y se le otorgan 20 puntos de atributo adicionales para dividir. Después de asignar puntos de atributo, su atributo principal se establece como su atributo más alto.
Los atributos disponibles son:
- Fuerza: Da 10 HP máximos y .5 HP por turno
- Inteligencia: Da 7 de maná máximo y .1 de maná por turno
- Agilidad: reduce el retraso de giro en 1
Los
rangos de movimiento, visión y rango son los siguientes (centrados alrededor del 0). Algunos rangos son cardinales , lo que significa que solo pueden ir directamente hacia arriba, hacia la izquierda, hacia la derecha o hacia abajo.
444
43334
4322234
432111234
432101234
432111234
4322234
43334
444
Los personajes tienen una visión inicial de 2. Se comparte la visión entre jugadores de la misma comunidad.
Cómo jugar
Los
jugadores de construcción construirán su comunidad. Debe seguir los siguientes pasos :
Dale a cada personaje puntos de atributo . Cada personaje comienza con 5 en cada estadística, con 20 adicionales para distribuir entre los 3.
Dale a cada personaje habilidades . Cada personaje comienza con 4 espacios de habilidad, y las habilidades toman 1 espacio por defecto. Algunas habilidades son repetibles y se pueden dar a un personaje varias veces. No se permite el uso de un conjunto de habilidades de otro envío sin el permiso del propietario.
Escribe un código para tus bots. El código debe estar en Java y se usará para luchar (el siguiente paso)
Comportamiento
Todos los personajes comienzan con las 3 acciones estándar:
- Paso : mueve a tu personaje en un rango cardinal de 1
- Rebanada : ataca a un enemigo con atributo primario en un rango cardinal de 1
- Sonrisa : no hagas nada
En el turno de un personaje, debe elegir una acción para realizar. Las acciones pueden tener un coste de maná, y pueden tener un tiempo de reutilización, que define el número de turnos que tienes que esperar antes de volver a realizar esa acción.
Habilidades
Cada personaje tiene 4 espacios de habilidad. Si una habilidad está en cursiva, es una acción.
Habilidades
Nombre Descripción Movilidad de enfriamiento de maná Parpadeo Moverse a un cuadrado, rango 4 2 2 Intercambiar Cambiar ubicaciones con Target 5 5 Teletransportarse Moverse a cualquier lugar 20 5 Dash Aumenta el rango de paso en 1. Repetible Mobile Step puede moverse en cualquiera de las 8 direcciones Agresor Corte rápido dos veces 3 0 Tejido Corta todos los enemigos visibles una vez 15 10 Absorber cada rebanada roba 1 del atributo principal de tu objetivo. Dura 20 turnos Cortar cada corte inflige 1/2 de daño a los enemigos adyacentes Crítico Añade un 30% de probabilidad de que Slice inflija un 200% de daño. Repetible Fiesta Cada rebanada aumenta tu HP en 3. Repetible Flexible Can Slice en cualquiera de las 8 direcciones Robo de maná Slice roba 2 de maná. Repetible Rebanada reflexiva cuando se corta 0 3 A distancia Agrega 1 al rango de Slice Deslizar Cada rebanada consecutiva en el mismo objetivo inflige 3 daños más que la última. Estados Disipar Elimina todos los estados de un objetivo. Rango 2. 20 10 Duelo Te congela a ti y a tu objetivo hasta que uno de ustedes muera. Alcance 1 25 0 Knockout Usted y el objetivo quedan aturdidos durante los siguientes 1000 ticks 10 10 Meteor Todos los enemigos quedan aturdidos durante los siguientes 100 ticks 25 10 Leash El objetivo se congela durante sus 2 próximos turnos 4 6 Veneno envenena al enemigo por 1 HP durante 5 turnos 5 0 Silencio El objetivo se silencia durante 5 turnos 5 7 Lento El objetivo se ralentiza 40 ticks durante sus próximos 3 turnos 10 5 Aturdir El objetivo se aturde durante los siguientes 300 ticks 10 10 Cold Todos los demás personajes dentro del rango 2 se ralentizan en 10 ticks Inmune No se le puede aplicar ningún estado Defensivo Force Field Block siguientes 5 fuentes de daño. No se acumula 15 5 Fantasma Por un turno, todo el daño cura 10 10 Curar Sanar Objetivo por 20 HP 10 3 Restaurar Todas las unidades vuelven a su estado de salud 20 40 Escudo No puedes ser cortado hasta tu próximo turno 3 0 Evasiva 25% de probabilidad de que un Slice no te golpee. Repetible Solo pilar se puede cortar una vez por turno Resucitar Cuando mueras, vuelve a la vida con HP completo (y sin estados) 0 40 Picos Cuando infliges daño, reparte la mitad del daño Visión Cloak Team se vuelve invisible por 5 turnos 20 20 Hide Eres invisible por 5 turnos 4 7 Fase Hazte invisible por 1 turno 0 3 Track Target no puede volverse invisible y recibe un 10% más de daño. Dura 10 turnos. 5 5 El rango de visión del enemigo de la oscuridad disminuyó en 1. Se acumula, pero no puede ir por debajo de 1. Vista lejana El alcance de la vista aumentó en 2. Repetible Invisible Eres invisible si comienzas a salir de la visión enemiga Visión verdadera Revela todas las unidades ocultas dentro del rango 2 al inicio del turno Dañar Drenar Inflige 5 daños al objetivo y se cura a sí mismo durante 5 HP mientras permanecen en 1 rango 10 5 Rayo Inflige 15 daños a todos los enemigos 20 10 K / O Mata al objetivo si el objetivo está por debajo del 20% HP 20 0 Trampa Coloca una trampa invisible. La trampa causa 15 daños cuando se pisa. Pilas 10 2 Zap Inflige 30 de daño al objetivo 30 5 Estático Inflige 5 de daño cada turno a todos los enemigos dentro de 1 rango. Repetible Estadísticas Hombre lobo Agrega 10 a todas las estadísticas durante 5 turnos 30 25 Buff Duplica tu grupo de HP. Repetible Las acciones inteligentes tienen un tiempo de reutilización 20% más corto. Repetible Enfocado Aumenta tu tasa de regeración de maná en Int / 10. Repetible Regenerar Aumenta tu tasa de regeneración en Fuerza / 2. Repetible Las acciones inteligentes cuestan 2 menos maná. Repetible Fuerte Ganas 10 puntos de atributo. Repetible Débil Pierdes 15 puntos de atributo. Ganas 2 espacios de habilidad (esto requiere uno de ellos) Otro Oso Puede invocar a un oso que tiene 5 en cada estadística 8 10 Clonar Clonar usted mismo. Toma dos espacios de habilidad. 100 100 Steal Reemplace esta acción con la última acción del enemigo utilizado. Dura 10 turnos 5 0 Muro Crea un muro impasible en el cuadrado vacío objetivo, rango 6 10 10
Estados:
- Aturdir permite que tu personaje solo realice la acción Sonrisa y dura X ticks .
- Congelar evita que tu personaje se mueva y dura X turnos.
- El silencio evita que tu personaje realice algo más que Sonrisa, Paso o Rebanada, y dura X turnos.
- El veneno daña a tu personaje por daño X por turnos Y. Si aplicas otro veneno, el daño se suma y la duración se actualiza.
- Slow agrega X a la cantidad de ticks entre tus turnos. No afecta tu próximo turno, solo turnos después.
- Invisible hace que tu oponente no pueda verte ni dañarte. Si realiza alguna acción además de Paso o Sonrisa, se elimina. Si tu oponente tiene una habilidad que le da visión de ti, se elimina la invisibilidad.
Todos los estados (excepto Veneno) actúan independientemente uno del otro.
Notas al margen:
- Si hay un vínculo para el atributo primario, se resuelve como STR> AGI> INT.
- Juegas en una cuadrícula de 10x10. Los equipos se colocarán en lados opuestos.
- Los porcentajes se acumulan multiplicativamente, a excepción de Clever.
Reglas de envío
Necesita implementar 2 funciones:
// Create *exactly* 3 Character templates. You must return the same templates every time
public List<CharacterTemplate> createCharacters();
// Choose an action for a character. If the action requires a target or location, it must be set.
public ReadonlyAction choose(Set<ReadonlyAction> actions, ReadonlyCharacter character);
También tendrá acceso a tres variables (variables miembro):
Set<ReadonlyCharacter> team;
Set<EnemyCharacter> enemies;
Map<Point2D, EnemyCharacter> visibleEnemies;
Eso es. A continuación puede encontrar una API completa, en orden alfabético:
class Ability and ReadonlyAbility
int getNumSlots() returns the number of slots it takes up
boolean repeatable() returns true if the ability can be repeated
String name()
class Action and ReadonlyAction
Set<Point2D> availableLocations()
Set<ReadonlyCharacter> availableTargets()
boolean basicAction() returns true if the action is Smile, Step, or Slice
boolean breaksInvisibiliby()
int getCooldown() returns the cooldown cost (not the cooldown remaining)
int getManaCost()
String getName()
int getRemainingCooldown()
boolean isAvailable() returns true if the action can be performed
boolean movementAction() returns true if the action is prevented when Frozen
boolean needsLocation()
boolean needsTarget()
void setTarget(ReadonlyCharacter target)
void setLocation(Point2D location)
class CharacterTemplate
void addAbility(Ability)
boolean canAddAbility(Ability)
List<Ability> currentAbilities()
Map<Stat, Integer> currentAttributes()
int getRemainingPoints() returns the total number of ability points you have left to assign
int getRemainingSlots() returns the total number of slots you have to assign
int getStat(Stat stat)
boolean isValid() returns true if your character template is complete and valid
class Point2D
getX()
getY()
class Range
boolean isCardinal() returns true if the range only extends in the 4 cardinal directions
int getRange() returns the distance of the range
class ReadonlyCharacter and EnemyCharacter
Class characterClass()
int cleverness()
List<ReadonlyAbility> getAbilities()
Point2D getLocation() Not on EnemyCharacter
double getHealth()
double getMana()
int getMaxHealth()
int getMaxMana()
Range getSightRange()
Range getSliceRange()
int getStat(Stat stat)
Range getStepRange()
ReadonlyAction getLastAction()
boolean isFrozen()
boolean isStunned()
boolean isPoisoned()
int getPoisonAmount()
boolean isSilenced()
boolean isInvisible()
boolean isDead()
Stat primaryStat()
int smartness()
enum Stat
INT, STR, AGI
Lo anterior es todas las funciones que posiblemente pueda necesitar para su envío. La reflexión no está permitida. Si un envío no es válido por alguna razón, elimínelo o agregue "Inválido" al encabezado. Su envío no debe tener una declaración de paquete. Su envío debe estar contenido en el primer bloque de código de varias líneas, y la primera línea debe tener el nombre del archivo.
Cómo ejecutar el proyecto:
Hay varias formas:
- Descargue el archivo JAR y ejecútelo
java -jar Fellowship.jar
. Si desea descargar otras presentaciones, pase-q 99744
.java
debe apuntar al JDK, no al JRE. - Clona el repositorio de git y corre
gradle run
. Debe tener instalado Gradle, y si desea pasar argumentos, use-PappArgs="['arg1', 'args2']"
- Clone el repositorio de git y compílelo usted mismo. Necesitará las siguientes bibliotecas:
org.eclipse.collections:eclipse-collections-api:8.0.0
,org.eclipse.collections:eclipse-collections:8.0.0
,com.beust:jcommander:1.48
,com.google.code.gson:gson:2.7
,org.jsoup:jsoup:1.9.2
Si clona debe usar la --recursive
bandera, y cuando obtenga actualizaciones, incluya--recurse-submodules
Para cualquiera de los anteriores, su clase debe ir a la submissions/java
carpeta. Si está utilizando gradle, o lo está compilando usted mismo, puede incluir la clase en el proyecto mismo. Deberá descomentar algunas líneas en la función principal y actualizarlas para que apunten a su clase.
Marcador:
+------+-------------------+-------+
| Rank | Name | Score |
+------+-------------------+-------+
| 1 | TheWalkingDead | 738.0 |
| 2 | RogueSquad | 686.0 |
| 3 | Spiky | 641.0 |
| 4 | Invulnerables | 609.0 |
| 5 | Noob | 581.0 |
| 6 | Railbender | 561.0 |
| 7 | Vampire | 524.0 |
| 8 | LongSword | 508.0 |
| 9 | SniperSquad | 456.0 |
| 10 | BearCavalry | 430.0 |
| 11 | StaticCloud | 429.0 |
| 12 | PlayerWerewolf | 388.0 |
| 13 | LongSwordv2 | 347.0 |
| 14 | Derailer | 304.0 |
| 15 | Sorcerer | 266.0 |
| 16 | CowardlySniperMk2 | 262.0 |
| 17 | TemplatePlayer | 59.0 |
+------+-------------------+-------+
Si tiene alguna pregunta o necesita ayuda, ¡comente a continuación o únase a la sala de chat ! Buena suerte y diviertete
Deal 15 damage to all enemies
, pero los enemigos invisibles no se ven afectados por los relámpagos. ¿Es esto un error? De lo contrario, la invisibilidad me parece bastante fuerte ...