Пруф? Исходный код eAthena. Если интересует подробнее - опишу принцип работы бонусов на дроп предметов от карт. Шанс выпадения легко проверить с помощью autoloot. Если при autoloot 0.89 Gift Box будет падать на землю, а при autoloot 0.9 - попадать в инвентарь, то шанс выпадения - 0.9. Аналогично будет и с Mimic Card.
не верю...если две карты - каждая добавит в дроп моба гифт бокс (их уже будет два в дропе, как крылышки у драника) и следовательно с одного моба при крайней везучести можно будет выбить две гифты... =) Или давай пруф, я сужу по строке: Код: { bonus2 bAddMonsterDropItem,644,30; },{},{} З.Ы.: дроп с муст кейса карты порезали дня три назад, нэ? Что-то очень редко с тех пор падают гифты....
К сожалению, нельзя, если только Gift Box не является обычным дропом с моба. Может расскажете, что вы под ней понимаете? Скрипт предмета, конечно, хорошо, но за ним стоит куда более глубокая логика. Было бы не лишним узнать, как работает функция bonus2 с параметром bAddMonsterDropItem. Источник - eAthena trunk rev. 14801. pc.c - строка 2789 Код: case SP_ADD_MONSTER_DROP_ITEM: if (sd->state.lr_flag != 2) pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, (1<<RC_BOSS)|(1<<RC_NONBOSS), val); break; pc.c - строка 1585 Код: static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short group, int race, int rate) { int i; //Apply config rate adjustment settings. if (rate >= 0) { //Absolute drop. if (battle_config.item_rate_adddrop != 100) rate = rate*battle_config.item_rate_adddrop/100; if (rate < battle_config.item_drop_adddrop_min) rate = battle_config.item_drop_adddrop_min; else if (rate > battle_config.item_drop_adddrop_max) rate = battle_config.item_drop_adddrop_max; } else { //Relative drop, max/min limits are applied at drop time. if (battle_config.item_rate_adddrop != 100) rate = rate*battle_config.item_rate_adddrop/100; if (rate > -1) rate = -1; } for(i = 0; i < max && (drop[i].id || drop[i].group); i++) { if( (id && drop[i].id == id) || (group && drop[i].group == group) ) { drop[i].race |= race; if(drop[i].rate > 0 && rate > 0) { //Both are absolute rates. if (drop[i].rate < rate) drop[i].rate = rate; } else if(drop[i].rate < 0 && rate < 0) { //Both are relative rates. if (drop[i].rate > rate) drop[i].rate = rate; } else if (rate < 0) //Give preference to relative rate. drop[i].rate = rate; return 1; } } if(i == max) { ShowWarning("pc_bonus: Reached max (%d) number of added drops per character!\n", max); return 0; } drop[i].id = id; drop[i].group = group; drop[i].race |= race; drop[i].rate = rate; return 1; } mob.c - строка 2261 Код: int itemid = 0; for (i = 0; i < ARRAYLENGTH(sd->add_drop) && (sd->add_drop[i].id || sd->add_drop[i].group); i++) { if (sd->add_drop[i].race & (1<<status->race) || sd->add_drop[i].race & 1<<(status->mode&MD_BOSS?RC_BOSS:RC_NONBOSS)) { //check if the bonus item drop rate should be multiplied with mob level/10 [Lupus] if(sd->add_drop[i].rate < 0) { //it's negative, then it should be multiplied. e.g. for Mimic,Myst Case Cards, etc // rate = base_rate * (mob_level/10) + 1 drop_rate = -sd->add_drop[i].rate*(md->level/10)+1; drop_rate = cap_value(drop_rate, battle_config.item_drop_adddrop_min, battle_config.item_drop_adddrop_max); if (drop_rate > 10000) drop_rate = 10000; } else //it's positive, then it goes as it is drop_rate = sd->add_drop[i].rate; if (rand()%10000 >= drop_rate) continue; itemid = (sd->add_drop[i].id > 0) ? sd->add_drop[i].id : itemdb_searchrandomid(sd->add_drop[i].group); mob_item_drop(md, dlist, mob_setdropitem(itemid,1), 0, drop_rate, homkillonly); } } Увы, подсветка синтаксиса здесь не работает. В коде разберетесь или я с вами не на том уровне абстракции разговариваю? Я и сам не сразу поверил, специально проверил на практике. Надел один мсткейс, убил ~3300 мобов - выпало 7 коробок. Надел 10 мисткейсов, убил ~2800 мобов - выпало 4 коробки. Результат на лицо. Дроп остался прежним - 0.9%.
Странно, а по-моему каждая карта срабатывает по очереди... Остается выяснить какая у нас версия стоит... Чтобы убедиться на 200%...
Ревизия сервера на это не влияет. В старинной 11981 (2007 год) код точно такой же. В последней на данный момент 14808 отличий также нет.