У цьому виклику ви збираєтесь створити Стипендію з метою перемогти всі інші товариства в бою.
Товариство (команда) складається з 3 персонажів . Кожен персонаж рухається незалежно від решти своєї команди, але їм потрібно буде працювати разом, бореться з вашим ворогом. Команди будуть обертатися один до одного головою до голови. Виграші коштують 3 бали, краватки - 1 бал, а втрати - 0 балів.
Персонажі мають здібності. Вибір того, які здібності мають ваші персонажі, є однією з найважливіших (і найцікавіших) частин цього коту . Всі вони сильні і мають потенціал знищити ворога.
Персонажі мають бали здоров'я (HP), і коли їх HP потрапляє (або опускається нижче) 0, вони гинуть . Якщо всі персонажі в команді опонента загинуть, то ви виграєте!
Персонажі мають Мана. Більшість дій вимагає виконання Маною , а якщо вас недостатньо, ця дія недоступна для вас.
Персонажі мають затримку повороту . Це визначає кількість кліщів між кожним витком (починається з 100). Нижній краще.
Персонажі мають атрибути . Кожен символ має 5 базів у кожному атрибуті, і вам надається 20 додаткових атрибутивних балів, які потрібно розділити. Після призначення точок атрибутів ваш основний атрибут встановлюється як ваш найвищий атрибут.
Доступними атрибутами є:
- Міцність: дає 10 макс. HP і .5 HP за оборот
- Інтелект: дає 7 Макс Мана та .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 Моргання Перемістити в квадрат, діапазон 4 2 + 2 Змінний своп місця з цільовими 5 5 Телепорт Переміщення в будь-якому місці 20 5 Тире Збільшити діапазон кроків на 1. Повторюваний Мобільний крок може рухатися в будь-якому з 8 напрямків Напади Швидкий зріз двічі 3 0 Плетіть Зріжте всіх видимих ворогів раз 15 10 Поглинайте кожен шматочок вкраде 1 основний атрибут вашої цілі. Триває 20 витків Cleave Every Slice завдає 1/2 ураження суміжним ворогам Critital Додає 30% шансу Slice завдати 200% шкоди. Повторний Святковий кожен шматочок збільшує ваш HP на 3. Повторюваний Гнучка банка може нарізати будь-який із 8 напрямків Мана вкраде Сріз краде 2 мани. Повторний Рефлексивний зріз при нарізанні 0 3 Діапазон Додає 1 до діапазону "Зріз" Проведіть пальцем Кожен наступний фрагмент на одній цілі наносить на 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 Шипи При нанесенні шкоди поверніть половину збитку назад Зір Команда плащів стає невидимою на 5 оборотів 20 20 Сховати Ви невидимі на 5 оборотів 4 7 Фаза Станьте невидимою за 1 виток 0 3 Ціль треку не може залишитися невидимою і завдає 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 Зап. Нанесіть 30 ушкоджень, щоб нанести ціль 30 5 Статичні угоди 5 завдають шкоди кожній черзі всім ворогам у межах 1 діапазону. Повторний Статистика Перевертень Додайте 10 до всіх статистичних даних за 5 витків 30 25 Buff Подвойте свій пул HP. Повторний Розумні дії мають 20% коротше вимкнення. Повторний Цілеспрямовано збільшує ваш рівень регенерації Мани на Int / 10. Повторний Відновити Збільшує ваш рівень реєстрації на силу / 2. Повторний Розумні дії коштують на 2 менше мани. Повторний Сильний Ви отримуєте 10 балів за атрибути. Повторний Слабкий Ви втрачаєте 15 атрибутивних балів. Ви отримуєте 2 слоти для здібностей (для цього потрібен один) Інший Ведмідь Може викликати ведмідь , який має 5 в кожному стате-10 Клон Клона себе. Займає два слоти для здібностей. 100 100 Вкрасти Замініть цю дію на використану ціль противника останньої дії. Триває 10 витків 5 0 Стіна Створіть непрохідну стіну на націленому порожньому квадраті, діапазон 6 10 10
Статуси:
- Оглушення дозволяє вашому персонажу виконувати тільки дію "Усмішка", і триває X тиків .
- Заморожування не дозволяє вашому персонажу рухатися, і триває X поворотів.
- Мовчання заважає вашому персонажу виконувати що-небудь, крім усмішки, кроку чи фрагмента, і триває Х поворотів.
- Отрута шкодить вашому персонажу за X пошкодження на Y поворотах. Якщо ви застосуєте іншу отруту, шкода додається, а тривалість оновиться.
- Повільний додає X до кількості кліщів між вашими поворотами. Це не впливає на вашу майбутню чергу, лише повертається після.
- Невидимий робить це, щоб ваш опонент не міг бачити чи пошкоджувати. Якщо ви виконаєте будь-яку дію, окрім кроку або посмішки, вона буде видалена. Якщо ваш опонент має здатність, яка дає їм бачення вас, невидимість видаляється.
Усі статуси (крім Отрути) діють незалежно один від одного.
Бічні примітки:
- Якщо є основний атрибут, він вирішується як 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 repo і біжіть
gradle run
. Потрібно встановити gradle, і якщо ви хочете передати аргументи, використовуйте-PappArgs="['arg1', 'args2']"
- Клоніруйте git repo і складіть його самостійно. Вам знадобляться наступні бібліотеки:
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
, але блискавки на невидимих ворогів не впливають. Це помилка? Інакше невидимість здається мені досить сильною ...