Некорректная работа скилла Steal
-
Описание скилла в игре:
"..... The formula for stealing is: DropRatio*(10 + 3*SkillLV + DEX - MonsterDEX)/100 where DropRatio is the percent chance of a particular item being dropped......"
Реальное положение дел:
для рассчета шанса украсть используется не базовый шанс дропа, а округленный вниз до целого числа процентов.Местоположение ошибки в jAthena 1735:
map\pc.c
Функция:
int pc_steal_item(struct map_session_data sd,struct block_list bl)
строка:
rate = (mob_db[md->class].dropitem.p /battle_config.item_rate * 100 * skill)/100;
**
Суть ошибки:
**
целочисленный шанс дропа ( dropitem.p, единица соответствует дропу 0.01%) сначала делится на целочисленный параметр battle_config.item_rate, по умолчанию равный 100, потом уже умножается на 100. Так как операция проводится над целочисленными параметрами, промежуточные результаты также являются целочисленными, поэтому после первого деления на 100 мы теряем ту часть dropitem.p, которая меньше 100.
**
**Вариант исправления:
**
Переставить "/battle_config.item_rate" и " * 100 ":
**
rate = (mob_db[md->class].dropitem.p * 100 /battle_config.item_rate * skill)/100; -
Ничего не понял..
в чем баг то? -
YourCat, вроде как получается, что украсть что-либо, имеющее дроп меньше 1%, нельзя
-
Именно так. А также, например, шанс украсть что-то с дропом в 1.5% в 1.5 раза ниже нормы
-
Сколько помню меньше 1% нельзя было стилить и не кто не страдал по этому поводу.
-
Странно это все. Но помниться мне, успешно украл че-то с шансом меньше 1%. Даже сам помоему тогда удивился. Это вроде была Роза из Вайлд Роуз.
-
Ухаха... Учите матчасть и не лезть куда не надо и где ничего не понимаете.