In questa sfida, creerai una Fellowship con l'obiettivo di sconfiggere tutte le altre compagnie in battaglia.
Una compagnia (squadra) è composta da 3 personaggi . Ogni personaggio si muove indipendentemente dal resto della propria squadra, ma dovranno lavorare insieme per combattere il nemico. Le squadre si affronteranno testa a testa in modo rotante. Le vittorie valgono 3 punti, le cravatte valgono 1 punto e le perdite valgono 0 punti.
I personaggi hanno abilità. La scelta di quali abilità hanno i tuoi personaggi è una delle parti più cruciali (e divertenti) in questo KotH . Sono tutti forti e hanno il potenziale per spazzare via il tuo nemico.
I personaggi hanno punti vita (HP) e quando i loro HP colpiscono (o scendono sotto) 0, muoiono . Se tutti i personaggi della squadra del tuo avversario muoiono, allora vinci!
I personaggi hanno Mana. La maggior parte delle azioni richiede l'esecuzione di Mana e, se non ne hai abbastanza, quell'azione non è disponibile per te.
I personaggi hanno un ritardo di turno . Questo determina il numero di tick tra ogni turno (inizia da 100). È meglio più basso.
I personaggi hanno attributi . Ogni personaggio ha una base di 5 in ciascun attributo e ti vengono dati 20 punti di attributo aggiuntivi da dividere. Dopo aver assegnato i punti dell'attributo, l' attributo principale viene impostato come l'attributo più alto.
Gli attributi disponibili sono:
- Forza: dà 10 HP massimi e 0,5 HP per turno
- Intelligenza: dà 7 Mana massimo e .1 Mana per turno
- Agilità: riduce il ritardo di virata di 1
Movimento, Visione, Range
Range sono i seguenti (centrati attorno allo 0). Alcuni intervalli sono cardinali , il che significa che possono solo andare direttamente verso l'alto, a sinistra, a destra o verso il basso.
444
43334
4322234
432111234
432101234
432111234
4322234
43334
444
I personaggi hanno una visione iniziale di 2. La visione tra giocatori della stessa compagnia è condivisa.
Come giocare
Costruzione
I giocatori costruiranno la loro compagnia. Devi fare i seguenti passi :
Dai a ogni personaggio punti attributo . Ogni personaggio inizia con 5 in ogni stat, con altri 20 da distribuire tra i 3.
Dai a ogni personaggio abilità . Ogni personaggio inizia con 4 slot abilità e le abilità prendono 1 slot di default. Alcune abilità sono ripetibili e possono essere assegnate a un personaggio più volte. L'uso di una serie di abilità di un'altra sottomissione senza l'autorizzazione del proprietario non è consentito.
Scrivi del codice per i tuoi robot. Il codice deve essere in Java e verrà utilizzato per il combattimento (il passaggio successivo)
Azioni
Tutti i personaggi iniziano con le 3 azioni standard:
- Passaggio : sposta il tuo personaggio in un intervallo cardinale di 1
- Slice : attacca un nemico per PrimaryAttribute in un raggio cardinale di 1
- Sorriso : non fare nulla
Al turno di un personaggio, allora deve scegliere un'azione da eseguire. Le azioni possono avere un costo in Mana e possono avere un tempo di recupero, che definisce il numero di turni che devi attendere prima di eseguire di nuovo quell'azione.
Abilità
Ogni personaggio ha 4 slot abilità. Se un'abilità è in corsivo, è un'azione.
Capacità
Nome Descrizione Mana Cooldown Mobility Lampeggia Sposta in un quadrato, distanza 4 2 2 Scambia Scambia posizioni con Target 5 5 Teletrasporto Sposta ovunque 20 5 Dash Aumenta l'intervallo di step di 1. Ripetibile Mobile Step può spostarsi in una delle 8 direzioni attaccare Quick Slice due volte 3 0 Tesse Slice tutti i nemici visibili una volta 15 10 Assorbi ogni Slice ruba 1 dell'attributo principale del tuo bersaglio. Dura 20 turni Cleave Ogni Slice infligge 1/2 danno ai nemici adiacenti Critico Aggiunge una probabilità del 30% per Slice di infliggere il 200% di danno. Ripetibile Festa Ogni fetta aumenta i tuoi HP di 3. Ripetibile Slice flessibile in una delle 8 direzioni Mana ruba Slice ruba 2 mana. Ripetibile Slice riflessiva se affettata 0 3 A distanza Aggiunge 1 all'intervallo di Slice Swipe Ogni Slice consecutiva sullo stesso bersaglio infligge 3 danni in più rispetto all'ultimo Gli stati Dispel Rimuove tutti gli stati da una destinazione. Gamma 2. 20 10 Duello Congela te e il tuo bersaglio fino a quando uno di voi muore. Portata 1 25 0 Knockout Tu e il bersaglio siete storditi per i successivi 1000 tick 10 10 Meteor Tutti i nemici sono storditi per i prossimi 100 tick 25 10 Leash Il bersaglio è congelato per i suoi 2 turni successivi 4 6 Veleno Avvelena il nemico per 1 HP per 5 turni 5 0 Silenzio Il bersaglio viene messo a tacere per 5 turni 5 7 Rallenta Il bersaglio viene rallentato di 40 tick per i successivi 3 turni 10 5 Stordimento Il bersaglio viene stordito per i successivi 300 tick 10 10 Freddo Tutti gli altri personaggi nel raggio di 2 sono rallentati di 10 tick Immune Nessuno stato può essere applicato a te Difensiva Force Field Blocca le prossime 5 fonti di danno. Non accumula 15 5 Fantasma Per un turno, tutti i danni guariscono 10 10 Guarisci Guarisci Bersaglio per 20 HP 10 3 Ripristino Tutte le unità vengono ripristinate in piena salute 20 40 Scudo Non puoi essere affettato fino al tuo prossimo turno 3 0 Evasiva probabilità del 25% che una Slice non ti colpisca. Ripetibile Solo il pilastro può essere tagliato una volta al turno Resurrect Una volta ucciso, torna in vita con HP completi (e senza status) 0 40 Picchi Quando viene inflitto un danno, riduci la metà del danno Visione Cloak Team diventa invisibile per 5 turni 20 20 Nascondi Sei invisibile per 5 turni 4 7 Fase Diventa invisibile per 1 turno 0 3 Traccia Il bersaglio non può diventare invisibile e subisce il 10% di danno in più. Dura 10 turni. 5 5 Oscurità Il raggio visivo del nemico è diminuito di 1. Pile, ma non può scendere al di sotto di 1. Vista lontana Portata della vista aumentata di 2. Ripetibile Invisibile Sei invisibile se inizi a uscire dalla visione nemica Vista reale Rivela tutte le unità nascoste nel raggio di 2 all'inizio del turno Danno Drenaggio Infligge 5 danni al bersaglio e guarisce se stesso per 5 PS mentre rimangono in 1 raggio 10 5 Fulmine Infligge 15 danni a tutti i nemici 20 10 K / O Uccide il bersaglio se il bersaglio è inferiore al 20% HP 20 0 Trappola Posiziona una trappola invisibile. La trappola infligge 15 danni quando viene calpestata. Stacks. 10 2 Zap Infligge 30 danni al bersaglio 30 5 Infligge 5 danni ogni turno a tutti i nemici entro 1 raggio. Ripetibile Statistiche Lupo mannaro Aggiungi 10 a tutte le statistiche per 5 turni 30 25 Buff Raddoppia il tuo pool HP. Ripetibile Le azioni intelligenti hanno un tempo di recupero più breve del 20%. Ripetibile Concentrato Aumenta la velocità di rigenerazione del mana di Int / 10. Ripetibile Rigenera Aumenta il tuo tasso di rigenerazione di Forza / 2. Ripetibile Le azioni intelligenti costano 2 in meno di mana. Ripetibile Forte Ottieni 10 punti attributo. Ripetibile Debole Perdi 15 punti attributo. Ottieni 2 slot abilità (ne prende uno) Altro Orso Può evocare un orso che ha 5 in ogni stat 8 10 Clone Clone. Prende due slot abilità. 100 100 Ruba Sostituisci questa azione con l'ultima azione nemica bersaglio usato. Dura 10 turni 5 0 Muro Crea un muro invalicabile su un quadrato vuoto bersagliato, intervallo 6 10 10
status:
- Stordimento consente al tuo personaggio di eseguire solo l'azione Sorriso e dura X tick .
- Il congelamento impedisce al tuo personaggio di muoversi e dura X turni.
- Il silenzio impedisce al tuo personaggio di eseguire qualsiasi cosa oltre a Sorriso, Passaggio o Slice e dura X turni.
- Il veleno danneggia il tuo personaggio per X danni per Y turni. Se si applica un altro veleno, il danno si somma e la durata viene aggiornata.
- Lento aggiunge X al numero di tick tra i tuoi turni. Non influisce sul tuo prossimo turno, ma solo dopo.
- Invisible lo rende in modo da non poter essere visto o danneggiato dal tuo avversario. Se esegui un'azione diversa da Step o Smile, viene rimossa. Se il tuo avversario ha un'abilità che dà loro la visione di te, l'invisibilità viene rimossa.
Tutti gli stati (tranne Veleno) agiscono indipendentemente l'uno dall'altro.
Note laterali:
- Se esiste un legame per l'attributo primario, viene risolto come STR> AGI> INT.
- Giochi su una griglia 10x10. Le squadre saranno posizionate su lati opposti.
- Le percentuali si accumulano in modo moltiplicativo, ad eccezione di Clever.
Regole di presentazione
Devi implementare 2 funzioni:
// 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);
Avrai anche accesso a tre variabili (variabili membro):
Set<ReadonlyCharacter> team;
Set<EnemyCharacter> enemies;
Map<Point2D, EnemyCharacter> visibleEnemies;
Questo è tutto. Di seguito puoi trovare un'API completa, in ordine alfabetico:
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
Quanto sopra è tutte le funzioni che potresti eventualmente avere bisogno per la tua presentazione. La riflessione non è consentita. Se un invio non è valido per qualsiasi motivo, rimuoverlo o aggiungere "Non valido" all'intestazione. La tua presentazione non dovrebbe avere una dichiarazione del pacchetto. L'invio deve essere contenuto nel primo blocco di codice multilinea e la prima riga deve avere il nome del file.
Come eseguire il progetto:
Esistono diversi modi:
- Scarica il file JAR ed esegui
java -jar Fellowship.jar
. Se si desidera scaricare altri invii, passare-q 99744
.java
deve puntare al JDK, non al JRE. - Clona il repository git ed esegui
gradle run
. È necessario disporre di Gradle installato e, se si desidera passare argomenti, utilizzare-PappArgs="['arg1', 'args2']"
- Clonare il repository git e compilarlo da soli. Avrete bisogno dei seguenti librerie:
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
Se cloni devi usare il --recursive
flag, e quando tiri gli aggiornamenti, includi--recurse-submodules
Per uno dei precedenti, la tua classe deve andare nella submissions/java
cartella. Se stai usando il gradle o lo compili da solo, puoi inserire la classe nel progetto stesso. Dovrai decommentare alcune righe nella funzione principale e aggiornarle per puntare alla tua classe.
Pagelle:
+------+-------------------+-------+
| 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 |
+------+-------------------+-------+
Se hai domande o hai bisogno di aiuto, commenta qui sotto o unisciti alla chatroom ! Buona fortuna e buon divertimento
Deal 15 damage to all enemies
, ma i nemici invisibili non sono influenzati dai fulmini. è un insetto? Altrimenti, l'invisibilità mi sembra piuttosto forte ...