UltimateFenix, я честно говоря не понимаю многих запретов на способности.
Вот к примеру , ранее я предлагал способность, блокирующую урон (тоже щит из крови) в % от потраченного здоровья.
Она полностью блокировала урон, тратя мнимое здоровье (прочность щита крови).
Неужели ее так трудно сделать, что такой тип заклинаний запрещен? (по крайней мере мне тогда так объяснили).
Или стаки (то есть способность которая набирает силу, при повторном применении) заклинаний, той же пассивки?
Немного подумаю и напишу следующим постом героя со способностями которые я бы хотел у него на самом деле видеть.
А ты скажешь (если конечно не лень) почему та или иная способность невыполнима (про баланс отдельный вопрос, константные данные можно изменить)Добавлено (13.05.2016, 20:59)
---------------------------------------------
Написал пока только 2 способности, остальные допишу позже, если конечно лавочку мою не прикроют)
Щит из Крови (Активный) (Требуется уровень 1) (Уровней 30 , пропуск уровней 1)
Иконка
Использует свою кровь, для создания щита поглощающего 100% получаемого урона.
Прочность щита = (Уровень способности * 0.15 * Затраченное здоровье).
Варианты работы заклинания:
Вариант (1)
Использование локальной (или глобальной переменной с массивом) в качестве счетчика, для восстановления полученного урона сразу после его получения, с уменьшением значения переменной.
Плюсы - Легкая реализация
Минусы - В случае получения урона, который убьет героя щит уже ничего восстанавливать не будет (Хотя как вариант можно поставить костыль на мгновенное воскрешение героя).
Вариант (2)
Использование дополнительного здоровья - в момент перед получением урона , увеличивать макс запас здоровья и текущее здоровье героя на фиксированную величину (для примера 1 000 000).
Записывать текущее количество здоровья до получения урона - 1 000 000 (бонус здоровье).
После получения урона, вычитать из 1 000 000 + здоровье до получения урона , текущее здоровье после получения урона.
Таким образом высчитывая полученный урон.
После чего вычитать полученный урон из переменной "прочности щита" , и если там достаточно (то есть в переменой больше здоровья) восстанавливать здоровье до уровня 1 000 000 + здоровье до удара.
Если недостаточно, но за вычетом "здоровья" из переменной герой выживет , просто снижать его здоровье до нужного уровня.
Уменьшать макс здоровье прежнего уровня, до получения "триггерного здоровья" (за выч.
Плюсы - щит защитит от любого урона , даже смертельного для основного здоровья.
Минусы - трудная реализация , особенно для урона от заклинаний, в том числе и триггерных.
Затраты маны 25 * уровень способности
Затраты здоровья = 33% от текущего.
Время действия 14 секунд
Перезарядка 22 секунд.
Душа вампира (Пассивный) (Требуется уровень 20) (Уровней 30 , пропуск уровней 2)
Иконка
Если герой умирает, он перерождается.
Перезарядка 240 - (3 * Уровень способности)
Герой воскресает со здоровьем (35 + (1 * Уровень способности здоровья))%
Повышение защиты на 2 за каждые 17 ед силы
Повышение урона способностей на 1.7 % за каждые 30 ед разума
Повышение силы на 16% * уровень способности * Уровень героя / 30 (С учетом силы от предметов)
Повышение разума на 16% * уровень способности * Уровень героя / 30 (С учетом разума от предметов)
Сила и разум даются следующим образом, только полные целые значения.
Допустим герой имеет 100 уровень.
Имеет 406 своей силы (базовой) и 560 зеленой силы (от предметов)
Тут можно воспользоваться разными способами.
Самый простой из которых - цикл с проверкой текущего значения силы у героя (понадобится 2 переменных с массивом на N ячеек - количество слотов для игроков).
Str_Hero_Blood_Stats[] - сюда будет вестись запись силы, для подсчетов...
Str_Hero_Blood_Stats_Lvl[] - сюда будет записываться уровень способности дающую бонус силы
Начало карты, пикнут герой красного игрока - проверка.
При старте карты во все переменные (для этой способности) нужно занести значение 0.
Цикл, скажем раз в 0.01 сек.
Проверяем героя на наличие бонус способности - дающую силу уровня Str_Hero_Blood_Stats_Lvl[0]
Если ее нет (идем дальше), если есть (проверяем* и идем дальше).
// я там всюду нули пишу, на самом деле там зависимость от цвета игрока, которому принадлежит выбранный юнит
Запись в Str_Hero_Blood_Stats[0] = реальная сила Hero[0] (Думаю все герои у тебя занесены в переменные) (Если герой есть, ну проверку сам поставишь) включая бонусы
При первой записи получим нужное значение (то есть общее количество силы у героя, с предметами)
Ну тут уж сам решай какую способность приплести , многоуровневую (конечно лучше) или 1 из 1000 копированных, которая будет давать силу.
По формуле находим множитель для силы , что бы после высчитать уровень способности 0.16 * уровень способности Душа вампира у Hero[0] * Уровень героя Hero[0] / 30.
При 100 уровне героя и макс уровне способности, получится такая вот вещь : 0.16 * 30 * 100 / 30 = 8 (это процент бонус силы).
Того способность будет иметь следующий уровень Str_Hero_Blood_Stats[0] * 0.16 (или 16%, как угодно) = 966 * 0.16 = 154(дробную часть отбрасываем).
И того, способность должна иметь 154 уровень (если она дает 1 силу за уровень).
Даем герою эту способность , нужного уровня.
*Проверяем - имеется ввиду берется та же функция подсчета уровня способности бонус силы, и если она будет отличатся по уровню от "нового подсчета" удаляем старую способность, после чего заново записываем ее лвл в переменную, таким образом спасемся от выдачи кучи способностей разного уровня, от которых можно настакать пачку силы.
Если же не отличается, то просто ничего не делаем.
С разумом та же история, хотя придется еще 2 переменных запилить.