При отображении в окне свойств стека берётся максимальная атака из атаки в ближнем бою и атаки (в смысле ближняя или стрелковая), которую можно провести сейчас. Т. е. бонус жажды крови отображается всегда, а бонус точности - только при возможности стрельбы.
Насчёт волшебного зеркала.
Волшебное зеркало работает только с заклинаниями, наколдованными героями человека. Заклинания, наколдованные стеками или героями ИИ не подлежат перенаправлению волшебным зеркалом. Однако ИИ при расчёте ценности колдовства героем (но не стеками) учитывает волшебное зеркало на цели, и желание колдовать на стек, защищённый волшебным зеркалом, у него значительно падает (в частности, если шанс отражения заклинания равен 50%, то ценность колдовтсва на такой стек ИИ приравнивает к 0), несмотря на то, что при колдовстве героя ИИ зеркало никогда не сработает.
Сказочные драконы имеют эффект волшебного зеркала такой же, как и заклинание, наколдованное без навыка стихии (т. е. 20%). Если на сказочного дракона наложить волшебное зеркало, то будет браться максимальный из эффектов (т. е. фактически эффект заклинания всегда будет перекрывать врождённое зеркало, которое в этом случае перестанет давать какой-либо эффект). Если на сказочных драконов извне не наложено волшебное зеркало, ИИ никак не учитывает их врождённое зеркало при расчёте ценности колдовства героем (двойной баг даёт положительный эффект

).
Стек, в который заклинание будет отражено, выбирается случайно из всех не убитых и не являющихся стрелковыми башнями стеков колдующей стороны. Если колдовство этого заклинания на этот стек невозможно, оно не нанесёт эффекта.
Berserker
29 Jul 2012, 18:10
Цитата
Стек
Отряд
Стек всё-таки лучше, чем подразделение, из-за чего я к нему привык.

А на отряд обратил внимание не так давно.
Axolotl
29 Jul 2012, 18:57
Кстати, замечал как-то, что в Воге, какие-то из способностей даваемые опытом, "отражались" от Magic Mirror - например накладывание Берсерка при атаке дьяволами. Но может там просто исполняется тот же код, что и при чтении закла героем, незнаю.
Перенаправление волшебного зеркала рассчитывается не при колловстве заклинания, а непосредственно при выборе цели человеком, а гекс, на который заклинание должно быть перенаправлено, передаётся в функцию колдовства заклинания в качестве параметра. А при колдовстве отрядов этот параметр однозначно задаётся как -1 (отсутсвие перенаправления). Возможно. в Воге ту функцию как-то хитро использовали или, скорее, вручную дописали действие волшебного зеркала на эти заклинания. Забавно, что иммунитеты к магии при этом способностями опыта не учитываются.
hippocamus
29 Jul 2012, 19:13
А слово "слот" как произносить? Ячейка?
А "гекс" - наверное "сота"

)
Да, гексу точно нет хорошего перевода.
feanor
29 Jul 2012, 19:20
Ну а чо, сота - прикольно. Мне нравится.
Berserker
29 Jul 2012, 20:36
Отряд.
Клетка.
Слот/Ячейка
tolich
29 Jul 2012, 20:47
Цитата(Berserker @ 29 Jul 2012, 20:36)

Слот/Ячейка
Гнездо.
Клетки в H5-6, а шестиугольные единицы так называть неправильно.
Berserker
29 Jul 2012, 21:16
tolich, гнездо/разъём, угу.
Клетки могут быть хоть круглые. С точки зрения игрока это клетки, или, если угодно, ячейки.
Нет, клетки именно квадратные. Например, когда речь идёт о листе бумаги в клетку или клетчатом пиджаке, то всегда имеется ввиду конкретный узор, состоящий из квадратных элементов.
Ячейка поля боя звучит диковато. Всё-таки в ячейке слышится что-то изолированное, отдельное, а гексы поля боя, хоть и являются таковыми технически, идейно являются неразделимыми и сливающимися (с расплывчатой границей) частями одного целого.
Etoprostoya
29 Jul 2012, 21:43
Есть клетка - мельчайшая жизнеспособная часть организма, редко квадратной формы; есть клетка - ринг круглой формы; есть клетка - загон для животных, там форма вообще не имеет значения.
А есть клетка - единица узора разметки, она квадратной формы. Какое из этих значений имеет хоть какой-то смысл рассматривать применительно к единицам разметки геройского поля боя, мне кажется, очевидно.
hippocamus
29 Jul 2012, 21:48
Гнездо для отряда?

Казарма тогда! Берлога, во!
Слотом я называю то, чего у героя 7 для армий, а также под каждый артефакт тоже слот.
Axolotl
29 Jul 2012, 22:17
Вот-Вот...про такое я и говорил, точнее цитировал - "главное без фанатизма".

Про Гекс - на сколько я понимаю, правильный перевод - это просто (Правильный) Шестиугольник, но это длинно, во первых, а во вторых, могу предположить, что это чисто историческая случайность, что Шестиугольник у нас называется Шестиугольником (а не Гексагоном), а Квадрат - Квадратом (а не четырехугольником)
А что касается отрядов, подразделений, - то это только внесет путаницу, ведь всех под одну гребенку одним взмахом не причешешь, и даже если все начнут говорить вместо - стек - какой-то русский аналог, то наверняка все начнут говорить свой более понравившийся, кто-то отряд, кто-то - группа и.т.п. И "Вавилон" только усилится.
Да и гекс - слово уже укрепившееся не только в героях - оно применяется и в "настольных" ролевых играх, и в настольных играх вообще. И у настольников - когда говорится "Гекс" - подразумевается клетка именно
не квадратной, а шестиугольной формы.
P.S. Ну а для порядку и любителей оффициальности, хотя это не так уж важно -
http://ru.wiktionary.org/wiki/гексагон
Цитата
а Квадрат - Квадратом (а не четырехугольником)
А вот это ерунда) четырехугольники это совсем другие фигуры и они тоже есть)
Axolotl
30 Jul 2012, 09:36
Цитата(packa @ 30 Jul 2012, 08:57)

Цитата
а Квадрат - Квадратом (а не четырехугольником)
А вот это ерунда) четырехугольники это совсем другие фигуры и они тоже есть)
Никакой ерунды - все нормально, добавлять слово "Правильный" по всему тексту мне показалось лишним - и так все это знают, один раз я написал это в скобках и хватит, мне кажется.
Ну назывался бы он у нас также как и Гексагон называется Правильным Шестиугольником, также и квадрат мог бы называться правильным четырехугольником. И также и в случае с Правильным Шестиугольником - как прижлиось слово "Квадрат" могло легко прижиться слово Гексагон.
tolich
30 Jul 2012, 12:21
Hexagon это любой шестиугольник, необязательно правильный, даже необязательно выпуклый.
Berserker
30 Jul 2012, 12:31
В играх монстры ходят по клеткам и точка.
Гениальный аргумент.

Ну, сам-то называй как хочешь, кто тебе мешает, но по существу ничего в пользу этого названия нет. Для меня оно выглядит таким же коверканьем языка, каким в большинстве случаев выглядит транслит.
tolich
30 Jul 2012, 12:56
Цитата(Berserker @ 30 Jul 2012, 12:31)

В играх монстры ходят по клеткам и точка.
Не, в клетках монстры сидят, тогда они несколько менее опасны.
Axolotl
30 Jul 2012, 13:45
Цитата(Berserker @ 30 Jul 2012, 16:31)

В играх монстры ходят по клеткам и точка.
Не монстры, а чудовища
Ну да, без обид, я в общем-то во многом с твоей общей позицией согласен - но как уже говорил, что главное не переусердствовать, и если какие-то слова прижились и уже уверенно сидят в нашем языке - то нет смысла форсировать и пытаться установить "свои порядки", ну и что касается узких терминов с узким значением и в узком круге общения, которые сами по себе подразумевают эту "узкость", когда говорящий хочет быть уверенн, что его точно поймут правильно - а это основное назначение "языка" как такового. Это я о слове - стек, например. Т.е. говоря просто о Героях - легко можно сказать "отряд" и тебя поймут, а когда человек говорит конкретно касаемо скриптов или правил, хочет дать точное определение - то лучше уж употребить термин с которым точно недопониманий и неоднозначностей не будет (а они в данном случае есть)
Цитата(tolich @ 30 Jul 2012, 16:56)

Цитата(Berserker @ 30 Jul 2012, 12:31)

В играх монстры ходят по клеткам и точка.
Не, в клетках монстры сидят, тогда они несколько менее опасны.
И в клетках сидят монстры, и сверху по этим клеткам ходят другие монстры, и еще важно прохаживается упомянутая точка
Docent Picolan
30 Jul 2012, 14:08
вообще, конечно, разницы как называть никакой нету. но если о модостроении говорить (не только геройском, а вообще), то обычно уживаются какие-то единые варианты, и как правило - это как раз-таки транслит.
то бишь, медицина в своё время тоже была на разных языках - разная, когда стало понятно что англичанин в писанину испанца не врубается, перешли все на единые наименования. тут та же песня, гораздо удобней для понимания использовать английский транслит, чем полноценный русский перевод.
Berserker
30 Jul 2012, 15:27
"Переместить отряд сюда" - догадайтесь с трёх раз, из каких игр эта подсказка.
Про клетки вообще несерьёзно. Кто делал игры и играл в настольные игры, то знает, какие они бывают. К счастью, стеков и хексов в советской литературе не было.
Отряд - хороший перевод, но его можно спутать с отрядом на карте приключений. Гекс официально я назвал бы позицией, но в повседневной речи это звучит криво. В конце концов, наиболее часто я употребляю это слово в комментариях к коду, а в них важна краткость и ясность. Клетка - просто неверный перевод. Это именно квадратная единица и по словообразовательным ассоциациям, и по толковому словарю (Ожегов), и вот, в конце концов:
http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%...BD%D0%BE%D0%BA). Названные клетками гексы для меня звучат так же, как названные армиями отрядами.
Shurup
30 Jul 2012, 19:31
Вбил вот тут прямо в браузере слово "гексагон" - подчеркивает красной линией.
Вбил "гексагональный" - не подчеркивает. Проверил по словарям. Есть в русском языке такое слово (то есть имеющий форму или сечение в форме правильного шестиугольника). Заимствованное, но оно ЕСТЬ.
То есть можно называть hexagon гексагональной единицей площади поля битвы. И называть это "Гексом", настолько же нормально, как и называть гигабайт "гигом", кубический миллиметр - "кубиком" и т.д.
Главное, что несколько страниц реально очень полезной темы отведены под обсуждение замены нормального короткого слова, в то же время, как в других местах форума постоянные "резуректы", "резисты", "дефенсы", "фаерболы", "бафы и дебафы", "Абпгрейднуть", "кастануть", "спеллпоинты" и т.п. слова, которые точно либо имеют русскоязычный аналог, либо заслуживают его.
Berserker
30 Jul 2012, 19:37
Отряд и на карте приключений бывает, в гарнизоне или армии героя. И этот же отряд участвует в битвах.
Переводы бывают более и менее удачливые. А вот англицизмы для чужой речи всегда остаются уродливыми. Ты, наверное, первый игрок, кому не ясно, что такое клетка на поле боя и что такое отряд на поле боя.
Цитата(Berserker)
Переводы бывают более и менее удачливые. А вот англицизмы для чужой речи всегда остаются уродливыми.
Это твоё мнение. А моё - плохой перевод хуже хорошего англицизма. Так как в первом случае искажается смысл, ради которого, собственно, слово и произносится, а во втором лишь фонетика и написание.
Цитата(Berserker)
Ты, наверное, первый игрок, кому не ясно, что такое клетка на поле боя и что такое отряд на поле боя.
Отряд - хорошее название, но тут всё-таки справочник, который по идее должен требовать предельной точности вне зависимости от того, действительно ли это необходимо для понимания каждого. А читать "клетка" в смысле "гекс" мне ~ так же неприятно, как тебе "Фордж" в смысле соответствующего города для H3, только чуть-чуть по другой причине и всего.
Ладно, теперь по теме.

Штрафа за препятствия (городские стены) не имеют не только маги, архимаги и снайперы, но и чародеи.
SAG19330184
31 Jul 2012, 09:35
Цитата(Sav @ 30 Jul 2012, 21:27)

, но и чародеи.
AlexSpl
31 Jul 2012, 12:41
Штрафа могут не иметь и другие стрелки в определённых ситуациях
Вот они все:
Код
char __thiscall A0_Battle_Stack_Has_ShotObstacklePenalty_sub_4670F0(_BattleMgr_ *this, _BattleStack_ *stack, signed int head_hex_ix, signed int target_hex_ix)
{
_BattleMgr_ *this_v4; // ebx@1
int controller_v5; // esi@2
int cr_type_v6; // eax@4
_Hero_ *controller_hero_v7; // ecx@11
bool res; // eax@14
this_v4 = this;
if ( stack->Spells_Lengths_adword198[60] ) // Гипноз
controller_v5 = 1 - stack->Owner_dwordF4;
else
controller_v5 = stack->Owner_dwordF4;
cr_type_v6 = stack->CreatureType_dword34;
if ( cr_type_v6 == 34 // Маг
|| cr_type_v6 == 35 // Архимаг
|| cr_type_v6 == 136 // Чародей
|| cr_type_v6 == 137 // Снайпер
|| cr_type_v6 == 149 // Стрелковая башня
|| head_hex_ix >= (unsigned __int8)A0_Battle_CastleTower_Hexes_byte_63BD00[head_hex_ix / 17]// Стреляющий в замке
|| target_hex_ix < (unsigned __int8)A0_Battle_CastleTower_Hexes_byte_63BD00[target_hex_ix / 17]// Цель вне замка
|| (controller_hero_v7 = this->hero[controller_v5]) != 0
&& (A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(controller_hero_v7, 91)// Золотой лук
|| A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(this_v4->hero[controller_v5], 137)) )// Лук снайпера
LOBYTE(res) = 0;
else
res = A0_Battle_IsStraightWayForShot_sub_467420(this_v4, head_hex_ix, target_hex_ix) == 0;
return res;
}
AlexSpl
31 Jul 2012, 13:44
Я имел в виду своё исследование "брешей" в стенах

Т.е. существует конечное множество пар гексов {A, B}, состоящих из атакующего стрелка A и защищающегося отряда B, таких что стрелок A не имеет штрафа при стрельбе по отряду B, даже если крепостная стена неразрушена.
Понятно, что если гексы A и B находятся по одну сторону стены, то существование таких пар очевидно

Однако есть и такие пары, когда гексы A и B находятся по разные стороны крепостной стены.
См.
тут и
тут (картинки потерялись, но я их могу найти).
Делал аналогичную сетку и для Тройки:

Если мне не изменяет память, дискретная линия атаки в Тройке строится с шагом 0,017 по большему измерению.
Упс, ошибка... Шаг 1/17, а не 0, 017!Цитата
О штрафах при осаде...
В двойке сломанная стрела говорит о том, что есть штраф за стрельбу через стены. В тройке об этом виде штрафа стрелка уже ничего не скажет. На скриншоте - сетка для тройки (теория здесь). Две линии - пример позиций, откуда можно бить без штрафа даже при целых стенах. Почувствуйте разницу. Против человека в большинстве случаев не прокатит: стрелков нужно беречь, а вот против компа - да. Тратим первый ход на перестановку стрелков в выгодную позицию (или не тратим с Тактикой) и, начиная со второго, стреляем без штрафа!
Цитата
Единственное отличие методов в двойке и тройке заключается в способе построения "дискретной" линии атаки. В двойке линия строится с шагом 1/10 по большему измерению, а в тройке - 1/17! Число 1/10 = 0,1 спокойно чувствует себя в четырёх байтах, т.е. реальная дробь 0,1 равна машинной, а вот 1/17, как ни крути, не помещается и округляется, т.е. реальная дробь 1/17 НЕ равна машинной! Т.о. накопление погрешности в тройке идёт как по Х, так и по Y (в отличие от двойки, где оно идёт только по Y), что проявляет себя, когда линия атаки проходит через одну из вершин окрестности секции.
Поэтому, в случае если линия атаки проходит через одну из вершин окрестности секции, в отсутствии или наличии штрафа можно убедиться только практически.
Теоретически, конечно, тоже можно, но нужно учитывать особенности арифметических операций с четырёхбайтовыми дробями.
Во всех остальных случаях погрешности роли не играют.
AlexSpl
31 Jul 2012, 14:23
Картинку нашёл

Теория по ссылкам - это графическая интерпретация работы алгоритма по определению штрафов при осаде. Там есть также и аналитические условия отсутствия штрафов.
Спасибо.
Если что, всё это в этой функции, правда на самостоятельный полный разбор её у меня сил не хватило (тем более, что это уже и не нужно

):
Код
char __thiscall A0_Battle_IsStraightWayForShot_sub_467420(_BattleMgr_ *this, signed int head_hex_ix, signed int target_hex_ix)
{
int coloumn_r_v3; // ecx@2
int row_r_v4; // esi@2
char target_row_is_head_row_v5; // zf@2
int v6; // ebx@3
signed int coloumn_distance_v8; // eax@6
signed int row_distance_v9; // edi@6
float v10; // ST1C_4@9
float row_dist_v11; // ST1C_4@12
int v12; // edi@13
int v13; // esi@14
signed int v14; // ecx@17
int v15; // eax@18
int head_row_v16; // [sp+Ch] [bp-1Ch]@2
int head_coloumn_v17; // [sp+10h] [bp-18h]@2
_BattleMgr_ *this_v18; // [sp+14h] [bp-14h]@1
double v19; // [sp+18h] [bp-10h]@10
float v20; // [sp+1Ch] [bp-Ch]@13
double v21; // [sp+20h] [bp-8h]@7
float v22; // [sp+24h] [bp-4h]@13
int coloumn_r_v23; // [sp+30h] [bp+8h]@2
float v24; // [sp+30h] [bp+8h]@9
float coloumn_r_v25; // [sp+30h] [bp+8h]@12
float v26; // [sp+30h] [bp+8h]@13
int row_r_v27; // [sp+34h] [bp+Ch]@2
float v28; // [sp+34h] [bp+Ch]@9
float v29; // [sp+34h] [bp+Ch]@9
float v30; // [sp+34h] [bp+Ch]@13
this_v18 = this;
if ( !this->town_fort_type )
return 1; // Нет форта - выстрел по прямой
head_coloumn_v17 = head_hex_ix % 17;
head_row_v16 = head_hex_ix / 17;
coloumn_r_v3 = target_hex_ix % 17 - head_hex_ix % 17;
coloumn_r_v23 = target_hex_ix % 17 - head_hex_ix % 17;
row_r_v4 = target_hex_ix / 17 - head_row_v16;
target_row_is_head_row_v5 = target_hex_ix / 17 == head_row_v16;
row_r_v27 = target_hex_ix / 17 - head_row_v16;
if ( target_row_is_head_row_v5 )
{
v6 = 0;
if ( !coloumn_r_v3 ) // Один и тот же гекс - прямо
return 1;
}
else
{
v6 = 0;
}
row_distance_v9 = abs(row_r_v4);
coloumn_distance_v8 = abs(coloumn_r_v3);
if ( coloumn_distance_v8 <= row_distance_v9 ) // Расстояние по-вертикали больше
{
coloumn_distance_v8 = row_distance_v9;
LODWORD(v19) = v6;
HIDWORD(v19) = 0x3FF00000u;
if ( row_r_v4 <= v6 )
HIDWORD(v19) = 0xBFF00000u;
v28 = v19;
coloumn_r_v25 = (double)coloumn_r_v23;
row_dist_v11 = (double)row_distance_v9;
v24 = coloumn_r_v25 / row_dist_v11;
}
else
{
LODWORD(v21) = v6;
HIDWORD(v21) = 0x3FF00000u;
if ( coloumn_r_v3 <= v6 )
HIDWORD(v21) = 0xBFF00000u;
v24 = v21;
v29 = (double)row_r_v27;
v10 = (double)coloumn_distance_v8;
v28 = v29 / v10;
}
v12 = 17 * coloumn_distance_v8;
v26 = v24 / 17.0;
v30 = v28 / 17.0;
v20 = (double)head_coloumn_v17;
v22 = (double)head_row_v16;
if ( 17 * coloumn_distance_v8 <= 0 )
return 1;
while ( 1 )
{
v20 = v20 + v26;
v22 = v22 + v30;
v13 = (signed __int64)v20 + 17 * (signed __int64)v22;
if ( v13 != 96 )
break;
if ( *(_DWORD *)&this_v18->field_5394[16] == 3 )
return 0;
LABEL_21:
++v6;
if ( v6 >= v12 )
return 1;
}
v14 = 0;
while ( 1 )
{
v15 = (unsigned __int8)A0_Battle_CastleTower_Hexes_byte_63BD00[v14];
if ( v13 == v15 )
{
if ( this_v18->hex[v15].Flags & 2 )
return 0;
}
++v14;
if ( v14 >= 11 )
goto LABEL_21;
}
}
Да, кстати, в ФизМиге этого, оказывается нет: у стеков на рву действительно -3 к защите, причём это верно отображается по ПКМ и т. п. А стрелковая башня просто бажная и атаку и защиту не учитывает вовсе.
AlexSpl
31 Jul 2012, 14:26
Цитата
Да, кстати, в ФизМиге этого, оказывается нет: у стеков на рву действительно -3 к защите
Точно минус к защите, а не плюс к атаке отряда, который атакует отряд во рву? В Двойке - бонус.
Да.
Код
int __thiscall A0_Battle_Stack_Enemy_get_Defense_sub_4422B0(_BattleStack_ *this, _BattleStack_ *Enemy, char Calculated_NotFor_FrenzySpell_Bonus)
{
int Defense_v5; // ebx@4
int EnemyType_v6; // eax@5
double Defense_less_v7; // st7@6
int SecondGexNum_v8; // esi@12
int Defense_v9; // [sp+10h] [bp+Ch]@4
float doubleType_Defense_v10; // [sp+10h] [bp+Ch]@6
if ( Calculated_NotFor_FrenzySpell_Bonus && this->Spells_Lengths_adword198[56] )// Бешенство
return 0;
Defense_v5 = this->Creature_29dword74.Defense_dword58;
Defense_v9 = this->Creature_29dword74.Defense_dword58;
if ( Enemy )
{
EnemyType_v6 = Enemy->CreatureType_dword34;
if ( EnemyType_v6 == 96 ) // Чудище
{
doubleType_Defense_v10 = (double)Defense_v9;
Defense_less_v7 = doubleType_Defense_v10 * 0.4000000059604645;// Отнимается 40% защиты
LABEL_9:
Defense_v5 = (signed __int64)(doubleType_Defense_v10 - Defense_less_v7);
goto LABEL_10;
}
if ( EnemyType_v6 == 97 ) // Древнее чудище
{
doubleType_Defense_v10 = (double)Defense_v9;
Defense_less_v7 = doubleType_Defense_v10 * 0.800000011920929;// Отнимается 80% защиты
goto LABEL_9;
}
}
LABEL_10:
if ( A0_BattleMgr_dword_699420->field_5394[20] )// Осада города
{
if ( this->Creature_29dword74.Flags_dword10 & 1 )
SecondGexNum_v8 = this->GexNum_dword38 + (this->Orientation_dword44 != 0 ? 2 : 0) - 1;
else
SecondGexNum_v8 = -1;
if ( sub_4699A0((int)A0_BattleMgr_dword_699420, this->GexNum_dword38, 0)// Находится ли гекс на рву
|| sub_4699A0((int)A0_BattleMgr_dword_699420, SecondGexNum_v8, 0) )// Находится ли гекс на рву
Defense_v5 -= 3; // Находится - отнимаем 3 защиты
}
return Defense_v5;
}
AlexSpl
31 Jul 2012, 15:07
Сравните, например:


На первом скриншоте позиции стрелков и рогов соответствуют красной линии на сетке в сообщении выше, а поэтому стрелки бьют без штрафа за стрельбу через крепостную стену.
На втором скриншоте линия атаки стрелков блокирована седьмой секцией крепостной стены.
AmberSoler
07 Aug 2012, 23:25
Цитата(Sav @ 31 Jul 2012, 15:25)

А стрелковая башня просто бажная и атаку и защиту не учитывает вовсе.
Логический вывод - урон стрелковых башен имеет магическую природу (а не физическую), так что защита юнита не при чем... Тем более, что заклинание Защита от Воздуха имеет явное действие на уровень защиты юнита именно в этом случае... ))))
На урон от стрелковых башен действуют только 3 фактора: заклинание воздушный щит на цели, окаменение на цели и наличие вторичного навыка или специализации брони у героя цели. Все эти факторы очевидным образом должны понижать урон, но они его повышают - известный баг. Защита от воздуха эффекта не имеет, никаких магических функций для урона не вызывается.
Более того, у башни в описании указана атака 10 и реально у отряда она устанавливается, но при расчёте урона не учитывается (как и бонусы за вторичный навык и специализацию стрельбы владельца) - тоже указание на баг.
S.Drake
14 Aug 2012, 05:37
Полная таблица случаев, когда у стрелков отсутствует штраф при выстреле по цели, находящейся за крепостными стенами:
Таблица
AlexSpl
14 Aug 2012, 10:21
Огромное спасибо за проверку всех возможных комбинаций. Надеюсь, эта информация найдёт своё место на страницах справочника.
Цитата
Белые клетки со знаком "Х" - теоретические комбинации, которые на практике почему-то не работают. В остальных случаях (белые клетки) штраф у стрелков есть.
Не работают из-за машинных погрешностей и дискретной природы линии атаки, т.е. реальная линия атаки для комбинаций, отмеченных "Х", всё-таки "задевает" одну (или даже несколько) окрестностей секций хотя бы одной своей точкой.
SAG19330184
14 Aug 2012, 10:45
когда я тестил пару лет назад этот баг, то вроде наблюдал следующее - урон, который показывался в строке до выстрела, в 2 раза мог отличаться от реального. например показывалось Урон 100-200, а выстрел был на 65.
AlexSpl
14 Aug 2012, 11:38
Рассмотрим, как машинные погрешности влияют на траекторию полёта стрелы, на примере одной комбинации (А1 - Ж11), для которой теоретическая линия атаки не пересекается ни с одной окрестностью секций, но, тем не менее, штраф есть. Дело в том, что реальная дискретная линия атаки как раз таки пересекает одну из окрестностей, а именно - окрестность ворот.
Вот логи полёта стрел с комментариями:
X = 10.941185895353555679
Y = 5.9647007621824741364
Здесь стрелы находятся над клеткой (10, 5) или Е10.
X = 11.000009480863809586
Y = 5.9999948181211948395
Добавили 1/17 к большему измерению, координата X стала равна уже 11, в то время как координата Y ещё только 5 (берётся целая часть). Это означает, что реальная дискретная линия атаки пересекла окрестность (11, 5) или Е11, т.е. линия атаки была блокирована окрестностью ворот.
AlexSpl
14 Aug 2012, 13:03
Цитата
когда я тестил пару лет назад этот баг, то вроде наблюдал следующее - урон, который показывался в строке до выстрела, в 2 раза мог отличаться от реального. например показывалось Урон 100-200, а выстрел был на 65.
Может случайно на дефенс нажал? Сейчас потестил - урон такой, какой показывается в логах (даже для двухклеточных отрядов).
SAG19330184
15 Aug 2012, 09:24
Цитата(AlexSpl @ 14 Aug 2012, 14:03)

Сейчас потестил - урон такой, какой показывается в логах (даже для двухклеточных отрядов).
вот как раз для 2-клеточных кажется и были расхождения. возможно, если 2-клеточный стоит на одной клетке со штрафом, а второй клетке - без штрафа?
утверждать на 100% не берусь, проверял давно. не тесты времени нет.
AlexSpl
15 Aug 2012, 09:27
Цитата
вот как раз для 2-клеточных кажется и были расхождения. возможно, если 2-клеточный стоит на одной клетке со штрафом, а второй клетке - без штрафа?
утверждать на 100% не берусь, проверял давно. не тесты времени нет.
Для двухклеточных отрядов штраф считается для той клетки, на которой находится "хвост" существа. По какой бы из двух клеток отряда мы ни стреляли.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.