Магическая защита. - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Aion

Важная информация

Aion
Всё о установке, настройке и администрировании серверов Aion. При поддержке: Aion-Top - Рейтинг сайтов Aion

Ответ
Опции темы
Непрочитано 09.08.2012, 13:56   #1
Пользователь

Автор темы (Топик Стартер) Магическая защита.

Столкнулся с проблемой в маг.защите.
Формула маг.защиты выглядит так
шанс отразить = (маг.защита - точность магии) / 10.
Код HTML:
	/**
	 * Calculates RESIST chance
	 * 
	 * @param attacker
	 * @param attacked
	 * @return int
	 */
	public static int calculateMagicalResistRate(Creature attacker, Creature attacked, int accMod) {
		if (attacked.getObserveController().checkAttackStatus(AttackStatus.RESIST))
			return 1000;
		
		int stat_res = attacked.getGameStats().getMResist().getCurrent();
		int stat_acc = attacker.getGameStats().getMAccuracy().getCurrent();

		int attackerLevel = attacker.getLevel();
		int targetLevel = attacked.getLevel();
		
		//add bonus from effecttemplate
		stat_acc += accMod;

		int resistRate = (stat_res - stat_acc) - accMod / 10;

		if ((targetLevel - attackerLevel) > 2)
			resistRate += (targetLevel - attackerLevel - 2) * 10;

		
		if(resistRate <= 0)// cant resist
			return 0;
		else if(resistRate > 90)// hardcap 95%
			return 90;
		else
			return resistRate;
     }
Как видно все форумулы написаны правильно...
При м.точности в 853,а при м.дефе 2091 шанс отразить стоствляет 123.8%, но всё-равно попадают как ни в чём не бывало.
Помогите или подскажите где можно подсмотреть,что не правильно..
Сборка AL 2.7.

Добавлено через 5 часов 30 минут
Нашёл ещё в одном файле расчёт

Код HTML:
	/**
	 * Every + 100 delta of (MR - MA) = + 10% to resist<br>
	 * if the difference is 1000 = 100% resist
	 */
	public static AttackStatus calculateMagicalStatus(Creature attacker, Creature attacked, boolean isSkill) {
		if (!isSkill) {
			if (Rnd.get(0, 1000) < StatFunctions.calculateMagicalResistRate(attacker, attacked, 0))
				return AttackStatus.RESIST;
		}

		if (StatFunctions.calculateMagicalCriticalRate(attacker, attacked)) {
			return AttackStatus.CRITICAL;
		}

		return AttackStatus.NORMALHIT;
	}
И теперь думаю,что нужно делить не на 10,а на 100 из-за вот этой строчки - Rnd.get(0, 1000)

Добавлено через 6 часов 53 минуты
Не помогло...

Последний раз редактировалось timki; 09.08.2012 в 20:49. Причина: Добавлено сообщение
timki вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защита vashka Perfect World 7 19.07.2012 10:40
Защита от Doss diadop Рынок / Marketplace 15 28.12.2011 05:45
Защита от DoS SunnyX Lineage II 26 26.11.2010 23:01
Защита для 5 апа MaxiMuM Сервер 4 15.07.2010 09:11
Защита ГМ Quttro Lineage II 0 22.04.2010 03:21


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 10:36. Часовой пояс GMT +3.

Вверх