В этом испытании вы создадите Товарищество с целью победить все другие товарищества в бою.
Стипендия (команда) состоит из 3 персонажей . Каждый персонаж движется независимо от остальной части своей команды, но им нужно будет работать вместе, сражаясь с врагом. Команды будут лицом к лицу вращаться. Выигрыши стоят 3 балла, связи - 1 балл, проигрыши - 0 баллов.
У персонажей есть способности. Выбор способностей ваших персонажей - одна из самых важных (и забавных) частей в этом коте . Все они сильны и могут уничтожить врага.
У персонажей есть очки здоровья (HP), и когда их HP достигает (или падает ниже) 0, они умирают . Если все персонажи в команде вашего противника умрут, вы выиграете!
У персонажей есть мана. Для выполнения большинства действий требуется мана , а если вам не хватает, это действие вам недоступно.
У персонажей есть Задержка Поворота . Это определяет количество тиков между каждым ходом (начинается с 100). Ниже - лучше.
Персонажи имеют атрибуты . Каждый персонаж имеет 5 баллов в каждом атрибуте, и вам дается 20 дополнительных очков атрибута для разделения. После назначения точек атрибута ваш основной атрибут устанавливается как ваш самый высокий атрибут.
Доступные атрибуты:
- Сила: дает 10 макс. HP и .5 HP за ход
- Интеллект: дает 7 максимум маны и 0,1 маны за ход
- Ловкость: уменьшает задержку хода на 1
Движение, Видение, Диапазоны
Диапазона следующие (центрированы вокруг 0). Некоторые диапазоны являются основными , что означает, что они могут идти только вверх, влево, вправо или вниз.
444
43334
4322234
432111234
432101234
432111234
4322234
43334
444
У персонажей есть начальное видение 2. Видение между игроками одного сообщества является общим.
Как играть
Строительство
Игроки будут строить свое общение. Вам нужно сделать следующие шаги :
Дайте каждому персонажу атрибуты очков . Каждый персонаж начинается с 5 в каждой характеристике, с дополнительными 20, чтобы распределить между 3.
Дайте каждому персонажу способности . Каждый персонаж начинается с 4 слотов способностей, а способности по умолчанию занимают 1 слот. Некоторые способности повторяются и могут быть переданы персонажу несколько раз. Использование набора способностей другого представления без разрешения владельца не допускается.
Напишите некоторый код для ваших ботов. Код должен быть на Java, и будет использоваться для борьбы (следующий шаг)
действия
Все персонажи начинаются с 3 стандартных действий:
- Шаг : Переместите своего персонажа в кардинальном диапазоне 1
- Срез : Атакуйте врага за PrimaryAttribute в кардинальном диапазоне 1
- Улыбнись : ничего не делай
На ход персонажа, затем должны выбрать действие для выполнения. Действия могут иметь стоимость маны и время восстановления, которое определяет количество ходов, которые вам нужно подождать, прежде чем снова выполнить это действие.
Способности
Каждый персонаж имеет 4 слота способностей. Если способность выделена курсивом, это действие.
способности
Название Описание Mana Cooldown Mobility Мигает Переместитесь на квадрат, расстояние 4 2 2 Поменяйтесь местами Поменяйте местами с помощью цели 5 5 Телепортируйте Переместитесь куда угодно 20 5 Тире Увеличить диапазон шага на 1. Повторяется Mobile Step может двигаться в любом из 8 направлений нападающий Quick Slice дважды 3 0 Weave Разрезать всех видимых врагов один раз 15 10 Поглощение Каждый ломтик крадет 1 из основного атрибута вашей цели. Длится 20 ходов Расщеплять каждый кусочек наносит 1/2 урона соседним врагам Критический Добавляет 30% шанс, что Срез нанесет 200% урона. Повторяется Пир каждый кусочек увеличивает ваше здоровье на 3. Повторяется Гибкая банка может нарезать в любом из 8 направлений Мана украсть ломтик крадет 2 маны. Повторяется Рефлексивный срез при нарезке 0 3 Ranged Добавляет 1 к диапазону Slice Размах Каждый последующий срез одной и той же цели наносит на 3 больше урона, чем последний Статусы Dispel Удаляет все статусы из цели. Дальность 2. 20 10 Дуэль Замораживает вас и вашу цель, пока один из вас не умрет. Дальность действия 1 25 0 Нокаут Вы и цель оглушены на следующие 1000 тиков 10 10 Метеор Все враги оглушены на следующие 100 тиков 25 10 Поводок-поводок заморожен на 2 следующих хода 4 6 Яд Отравляет противника на 1 HP в течение 5 ходов 5 0 Тишина Цель замолкает на 5 ходов 5 7 Замедленная цель замедляется на 40 тиков за следующие 3 хода 10 5 Оглушение Цель оглушается на следующие 300 тактов 10 10 Холодная Все остальные персонажи в диапазоне 2 замедлены на 10 тиков Иммунный Статус не может быть применен к вам оборонительный Блок силового поля следующих 5 источников урона. Не складывается 15 5 Призрак За ход, все повреждения исцеляются 10 10 Целительная цель исцеления за 20 HP 10 3 Восстановление Все юниты возвращаются к полному здоровью 20 40 Щит Вы не можете быть разрезаны до следующего хода 3 0 Уклончивый 25% шанс, что Срез не ударит вас. Повторяется Только столб можно разрезать один раз за ход Воскресить Когда убито, вернись к жизни с полным HP (и без статусов) 0 40 Шипы При нанесении урона нанесите половину урона назад. видение Cloak Team становится невидимым на 5 ходов 20 20 Hide Вы невидимы на 5 ходов 4 7 Phase Становитесь невидимыми на 1 ход 0 0 Track Target не может стать невидимым и получает на 10% больше урона. Длится 10 ходов. 5 5 Дальность обзора противника тьмы уменьшена на 1. Суммируется, но не может опуститься ниже 1. Дальность обзора дальнего обзора увеличена на 2. Повторяется Невидимка Ты невидимка, если начинаешь свой ход из видения врага Истинное зрение Открывает все скрытые юниты в диапазоне 2 при старте хода Наносить ущерб Поглощение Наносит 5 урона цели и лечит себя на 5 HP, пока они остаются в 1 диапазоне. 10 5 Молния Наносит 15 урона всем врагам. 20 10 K / O Убивает цель, если цель ниже 20% HP. 20 0 Ловушка Разместите невидимую ловушку. Ловушка наносит 15 урона при наступлении. Стопки. 10 2 Zap Наносит 30 урона цели 30 5 Статический Наносит 5 урона каждый ход всем врагам в радиусе 1. Повторяется Статистика Оборотень Добавить 10 ко всем характеристикам за 5 ходов 30 25 Buff Удвойте свой запас HP. Повторяется У умных действий время восстановления на 20% меньше. Повторяется Сосредоточено Увеличивает уровень регенерации маны на Int / 10. Повторяется Регенерация Увеличивает скорость восстановления на Сила / 2. Повторяется Умные действия стоят на 2 маны меньше. Повторяется Сильный Вы получаете 10 очков атрибута. Повторяется Слабый Вы теряете 15 атрибутных очков. Вы получаете 2 слота способностей (для этого требуется один из них) Другие Медведь Вы можете вызвать медведя, у которого есть 5 в каждой характеристике. 8 10 Клонировать Клонировать себя. Занимает два слота способностей. 100 100 Steal Замените это действие на последнее действие, которое использовала вражеская цель. Длится 10 ходов 5 0 Стена Создайте непроходимую стену на целевом пустом квадрате, радиус действия 6 10 10
Статусы:
- Оглушение позволяет вашему персонажу выполнять только действие Smile и длится X тиков .
- Замораживание препятствует движению вашего персонажа и длится X ходов.
- Молчание не позволяет вашему персонажу выполнять что-либо, кроме Smile, Step или Slice, и длится X ходов.
- Яд наносит урон вашему персонажу за X урона за Y ходов. Если вы применяете другой яд, урон складывается, и продолжительность обновляется.
- Медленный добавляет X к числу тиков между вашими ходами. Это не влияет на ваш следующий ход, только после.
- Invisible делает это так, что ваш противник не может вас увидеть или повредить. Если вы выполняете какое-либо действие, кроме Step или Smile, оно удаляется. Если у вашего противника есть способность, которая дает ему видение вас, невидимость удаляется.
Все статусы (кроме Яда) действуют независимо друг от друга.
Примечания стороны:
- Если есть связь для основного атрибута, он разрешается как STR> AGI> INT.
- Вы играете на сетке 10х10. Команды будут размещены на противоположных сторонах.
- Проценты складываются мультипликативно, кроме умных.
Правила подачи
Вам нужно реализовать 2 функции:
// 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);
У вас также будет доступ к трем переменным (переменным-членам):
Set<ReadonlyCharacter> team;
Set<EnemyCharacter> enemies;
Map<Point2D, EnemyCharacter> visibleEnemies;
Вот и все. Ниже вы можете найти полный API в алфавитном порядке:
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
Выше приведены все функции, которые могут вам понадобиться для представления. Отражение не допускается. Если по какой-либо причине отправка недействительна, удалите ее или добавьте «Неверно» в заголовок. Ваша заявка не должна иметь декларации пакета. Ваша заявка должна содержаться в первом блоке многострочного кода, а первая строка должна содержать имя файла.
Как запустить проект:
Есть несколько способов:
- Загрузите файл JAR и запустите
java -jar Fellowship.jar
. Если вы хотите скачать другие материалы, пройдите-q 99744
.java
должен указывать на JDK, а не JRE. - Клонируйте git-репо и бегите
gradle run
. Вам нужно установить gradle, и если вы хотите передать аргументы, используйте-PappArgs="['arg1', 'args2']"
- Клонируйте репозиторий git и скомпилируйте его самостоятельно. Вам понадобятся следующие библиотеки:
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
Если вы клонируете, вы должны использовать --recursive
флаг, а когда вы извлекаете обновления, включите--recurse-submodules
Для любого из вышеперечисленных, ваш класс должен идти в submissions/java
папку. Если вы используете gradle или сами его компилируете, вы можете поместить класс в сам проект. Вам нужно будет раскомментировать некоторые строки в основной функции и обновить их, чтобы они указывали на ваш класс.
Табло:
+------+-------------------+-------+
| 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 |
+------+-------------------+-------+
Если у вас есть какие-либо вопросы или вам нужна помощь, прокомментируйте ниже или присоединяйтесь к чату ! Удачи и приятного времяпровождения
Deal 15 damage to all enemies
, но невидимые враги не подвержены воздействию молнии. Это ошибка? Иначе невидимость кажется мне довольно сильной ...