Курс молодого бойца

KOCTa

Dedywkо |Co100
Команда форуму
Супер Модератор
Відповідь: Курс молодого бойца

Вже писав десь, але знову питають стосовно темного папані. Викладую розрахунок на отримання арту і залежність від вдачи.
Спочатки вираховується стандартний шанс з вашою вдачею LootPack.GetLuckChanceForKiller( boss ). Формула там складна, тому лише результати. Ліворуч вдача, праворуч результат:
1200 - 5136,
1000 - 4641,
800 - 4100,
600 - 3494,
400 - 2789,
200 - 1898,
100 - 1291,
0 - 0.
Це таке значення буде мати перемінна luck. При загибелі потвори дивиться хто більш завдав її утрати і luck вираховуєтсья по його вдачи.
Далі таке, якщо страчена потвора це босс, то шанс = 1500 + (luck / 5), якщо охонець = 750 + (luck / 10). Далі порівнюється значення шансу з випадковим числом до 10000, я якщо шанс більше, то випадає арт. У скріпті скорочено це виглядає так:
if ( boss is DemonKnight )
chance = 1500 + (luck / 5);
else
chance = 750 + (luck / 10);

якщо chance > Utility.Random( 10000 )
то випадає арт.
 

KOCTa

Dedywkо |Co100
Команда форуму
Супер Модератор
Відповідь: Курс молодого бойца

Регенерация рейтов: стамины, хп, маны.
Скорость роста ХП: минимум 1 ед. за 11 сек
считаются бонусные очки с одетых вещей
int points = AosAttributes.GetValue( from, AosAttribute.RegenHits );
если это монстр и он не поднятый труп +4
if ( from is BaseCreature && !((BaseCreature)from).IsAnimatedDead )
points += 4;
если это монстр и он парагон или левиофан +40
if ( (from is BaseCreature && ((BaseCreature)from).IsParagon) || from is Leviathan )
points += 40;
если в форме HorrificBeast + 20
if ( CheckTransform( from, typeof( HorrificBeastSpell ) ) )
points += 20;
если под заклинанием AnimalForm и в форме собаки или кота + Ninjitsu/30
if ( CheckAnimal( from, typeof( Dog ) ) || CheckAnimal( from, typeof( Cat ) ) )
points += from.Skills[SkillName.Ninjitsu].Fixed / 300;
если раса человек +2
if( Core.ML && from.Race == Race.Human ) points += 2;
если игрок, и бонусов больше 18, ставится 18
if( Core.ML && from is PlayerMobile )
points = Math.Min ( points, 18 );
- когда будет готова классовая система, последнее ограничение будет изменено и я тут отредактирую как.
определяется время за которое будет добавляться 1 единица хп:
TimeSpan.FromSeconds( 1.0 / (0.1 * (1 + points)) );
в общем для игрока максимум это 1 единица хп за 0,53 сек

Скорость роста Стамины: минимум 1 ед. за 7 сек
начальное значение Focus / 10
int points =(int)(from.Skills[SkillName.Focus].Value * 0.1);
если это монстр и он парагон или левиофан +40
if ( (from is BaseCreature && ((BaseCreature)from).IsParagon) || from is Leviathan )
points += 40;
отдельно считаются бонусные очки с надетых вещей
int cappedPoints = AosAttributes.GetValue( from, AosAttribute.RegenStam );
если в форме вампира к бонусным очкам + 15
if ( CheckTransform( from, typeof( VampiricEmbraceSpell ) ) )
points += 15;
если под заклинанием AnimalForm и в форме Kirinа к бонусным очкам + 20
if ( CheckAnimal( from, typeof( Kirin ) ) )
cappedPoints += 20;
если игрок, и бонусных очков больше 24, ставится 24
if( Core.ML && from is PlayerMobile )
cappedPoints = Math.Min( cappedPoints, 24 );
- когда будет готова классовая система, последнее ограничение будет изменено и я тут отредактирую как.
к начальным очкам добавляются бонусные
points += cappedPoints;
если результат меньше -1, ставится -1
if ( points < -1 )
points = -1;
определяется время за которое будет добавляться 1 единица стамины:
TimeSpan.FromSeconds( 1.0 / (0.1 * (2 + points)) );
в общем для игрока максимум это 1 единица хп за 0,26 сек


Скорость роста Маны: без бонусов 1 ед. за 7 сек
вначале считается штраф за надетые вещи, посмотреть его можно командой MyArmorRating и для каждого предмета командой ArmorRating. Зависит от типа брони. У борони магов будет 0, у кожаной будет 0 или маленький, у пластинчатой и из чешуи драконов будет большим.
Считается бонус от навыка фокус Focus / 20
double focusPoints = (from.Skills[SkillName.Focus].Value * 0.05);
считаются очки медитации и инты:
medPoints = from.Int + (from.Skills[SkillName.Meditation].Value * 3);
если медитация мельше 100, умножаются на 0.025, если больше или равны на 0.0275
medPoints *= ( from.Skills[SkillName.Meditation].Value < 100.0 ) ? 0.025 : 0.0275;
отнимается удвоеный штраф брони
medPoints -= armorPenalty*2;
если получился 0, то будет 0
if ( medPoints < 0 )
medPoints = 0;
считаются общие очки, при этом если игрок или моб медитирует, ещё раз добавляются очки медитации, но если они больше 13, то добавляется только 13
double totalPoints = focusPoints + medPoints + (from.Meditating ? (medPoints > 13.0 ? 13.0 : medPoints) : 0.0);
парагонам и левиофанам к очкам +40
if( (from is BaseCreature && ((BaseCreature)from).IsParagon) || from is Leviathan )
totalPoints += 40;
считаются бонусные очки отнадетых предметов
int cappedPoints = AosAttributes.GetValue( from, AosAttribute.RegenMana );
к ним добавляется +3, если в форме вампира (VampiricEmbrace)
if ( CheckTransform( from, typeof( VampiricEmbraceSpell ) ) )
cappedPoints += 3;
или +13, если в форме лича (LichForm)
else if ( CheckTransform( from, typeof( LichFormSpell ) ) )
cappedPoints += 13;
если сумма бонусных очком получилась больше 18, ставится 18
if( Core.ML && from is PlayerMobile )
cappedPoints = Math.Min( cappedPoints, 18 );
дальше, временно, до введения классовой системы, эльфам +4 к бонусным очкам
if( Core.ML && from.Race == Race.Elf )
cappedPoints += 4;
очки от навыков суммируются с бонусными
totalPoints += cappedPoints;
если получилось меньше -1, ставится -1
if ( totalPoints < -1 )
totalPoints = -1;
if ( Core.ML )
totalPoints = Math.Floor( totalPoints );
и наконец считается время в секундах:
rate = 1.0 / (0.1 * (2 + totalPoints));
без штрафа брони, с Int = 100 и максимальными навыками, не медитируя, в форме вампира, с 15 бонусами к регенерации маны на надетых вещах у эльфов получится такое:
armorPenalty = 0
focusPoints = 100*0.05 = 5
medPoints = 100 + 100 * 3 = 400
medPoints = 400 * 0.0275 = 11
medPoints = 11 - 0*2 = 11
totalPoints = 5 + 11 + 0 = 16
cappedPoints = 15
cappedPoints = 15 + 3 = 18
cappedPoints = Math.Min( 18, 18 ) = 18
cappedPoints = 18 + 4 = 22
totalPoints = 16 + 22 = 38
rate = 1.0 / (0.1 * (2 + 38)) = 0.25
получаем регенерацию 1 единицы маны за 0.25 сек
 

KOCTa

Dedywkо |Co100
Команда форуму
Супер Модератор
Картография и кладокопание.

В луте монстров иногда встречаются карты сокровищ. Чтобы расшифровать и затем выкопать такой клад необходимо знание навыка картографии. Клад может выкопать только тот, кто расшифровал карту или тот у кого достаточно навыка картографии на её расшифровку.
Навык картография ростёт при написании карт и расшифровке карт сокровищь.
Для написания карт необходим такой навык и навык на картография на этом типе будет рости:
Месная карта: 10.0 - 70.0
Городская карта: 25.0 - 85.0
Морской график: 35.0 - 95.0
Мировая карта: 39.5 - 99.5
Карты можно рисовать в Фелюке и Трамеле. В остальных мирах тоже можно рисовать, но они будут нечитаемы.

Перед именем нерасшифрованой карты будет написано "разорваная"
Карты сокровищ бывают такие ( минимальный/максимальный навык на их расшифровку):
1-й уровень: ясно нарисованная карта сокровищ ( -3.0 / 57.0 )
2-й уровень: искусно нарисованная карта сокровищ ( 41.0 / 101.0 )
3-й уровень: опытно нарисованная карта сокровищ ( 51.0 / 111.0 )
4-й уровень: умно нарисованная карта сокровищ ( 61.0 / 121.0 )
5-й уровень: отдалённо нарисованная карта сокровищ ( 70.0 / 130.0 )
6-й уровень: гениально нарисованная карта сокровищ ( 70.0 / 130.0 )
Под названием карты указывается в каком мире зарыто сокровище.

Расшифровав карту отправляйтесь на указаное на ней место. Чтобы выкопать сундук сокровищ нужно использовать лопату, указать вначале целью на расшифрованую карту, а затем на землю рядом с собой, где будете рыть. Если Вы копаете не в том мире, где находится сокровище, Вам напишут:
"Похоже, вы на правильном месте, но, возможно, не в том мире!"
Если указаное место далеко от места, где зарыт клад, Вам напишут сообщение:
"Вы копали и копали, но не смогли найти никакого сокровища."
Если место, где зарыт клад находится в пределах 8 тайлов, напишут:
"Вы копали и копали, но никакого сокровища здесь нет."
Если в месте где зарыт сундук кто-то стоит или ещё что-то мешает Вас напишет:
"Вы нашли сундук с сокровищами, но что-то не даёт его выкопать."
Если Вы стоите прямо на том месте где находится клад, Вы тоже не сможите его выкопать, при этом напишет:
"Вы не можете выкопать сундук, так как стоите над ним."
Выкопать сундук поможет навык рудокопства. При навыке рудокопства больше или равном 100.0, сундук может быть выкопан в пределах 4 тайлов от места, где Вы начали копать. При рудокопстве >= 81.0 : 3 тайлов, >= 51.0 : 2 тайлов. При меньшем навыке Вы сможете выкопать сокровище только копая в пределах 1 тайла от него.

Если Ваша попытка выкопать сундук сокровищь оказалась успешной, в месте где он зарыт вначале начнёт появляться вырытая земля.
Прервав копание сундука, Вам прийдётся начинать сначала.
Когда сундук будет вырыт может появиться охрана сундука:
1-й уровень: Mongbat, Ratman, Headless One, Skeleton, Zombie
2-й уровень: OrcishMage, Gargoyle, Gazer, Hell Hound, Earth Elemental
3-й уровень: Lich, OgreLord, DreadSpider, Air Elemental, Fire Elemental
4-й уровень: Dread Spider, Lich Lord, Daemon, Elder Gazer, OgreLord
5-й уровень: Lich Lord, Daemon, Elder Gazer, Poison Elemental, Blood Elemental
6-й уровень: Ancient Wyrm, Balron, Blood Elemental, Poison Elemental, Titan

Сундук будет закрыт. Минимальный навык взлома замков, чтобы открыть сундук Вам потребуется такой:
1-й уровень: 36
2-й уровень: 76
3-й уровень: 84
4-й уровень: 92
5-й уровень: 100
6-й уровень: 100

В сундуке будет ловушка, силой зависящая от уровня сундука.
Количество вещей в сундуке зависит от его уровня. Качество пока не зависит, в будущем планирую внести тут коррективы, чтобы в сундуках высокого уровня попадались нормальные вещи. В сундуках 6-го уровня будет один из следующих артефактов:
Candelabra Of Souls, Gold Bricks, Phillips Wooden Steed, Arctic Death Dealer, Blaze Of Death, Burglars Bandana, Cavorting Club, Dread Pirate Hat, Enchanted Titan Leg Bone, Gwennos Harp, Iolos Lute, Luna Lance, Nights Kiss, Nox Rangers Heavy Crossbow, Polar Bear Mask, Violet Courage, Heart Of The Lion, Cold Blood, Alchemists Bauble.
Карту сокровищь с сундуком 6-го уровня можно встретить в парагонском сундуке.
Если Вы будете брать вещи из сундука, также есть шанс на появление ещё одного охранника.

После выкапывания сундук сокровищь будет стоять в течении 3-х часов, после чего исчезнет. Убрать его можно и использовав контекстное меню на нём.
 
Зверху