Привязка M.Atk к P.Atk [Essence Mobius]

Статус
В этой теме нельзя размещать новые ответы.

MoonWalks

Путник
Пользователь
Сообщения
30
Розыгрыши
0
Репутация
0
Реакции
0
Баллы
11
Хроники
  1. Salvation
Исходники
Отсутствуют
Сборка
L2J Mobius Essence
Кто-нибудь в курсе, как можно отвязать рост M.Atk персонажа от его P.Atk ? Столкнулся с даннойпроблемой в сборке Essence от Mobius. Буду очень признателен за информацию! )
 
Решение
Кто-нибудь в курсе, как можно отвязать рост M.Atk персонажа от его P.Atk ? Столкнулся с даннойпроблемой в сборке Essence от Mobius. Буду очень признателен за информацию! )
package org.l2jmobius.gameserver.model.stats.finalizers; MAttackFinalizer.java
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A...
Кто-нибудь в курсе, как можно отвязать рост M.Atk персонажа от его P.Atk ? Столкнулся с даннойпроблемой в сборке Essence от Mobius. Буду очень признателен за информацию! )
package org.l2jmobius.gameserver.model.stats.finalizers; MAttackFinalizer.java
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see < >.
*/
package org.l2jmobius.gameserver.model.stats.finalizers;

import java.util.OptionalDouble;

import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.items.Item;
import org.l2jmobius.gameserver.model.stats.BaseStat;
import org.l2jmobius.gameserver.model.stats.IStatFunction;
import org.l2jmobius.gameserver.model.stats.Stat;

/**
* @author UnAfraid
*/
public class MAttackFinalizer implements IStatFunction
{
@Override
public double calc(Creature creature, OptionalDouble base, Stat stat)
{
throwIfPresent(base);

double baseValue = calcWeaponBaseValue(creature, stat);
baseValue += calcEnchantedItemBonus(creature, stat);
if (creature.isPlayer())
{
// Enchanted chest bonus
baseValue += calcEnchantBodyPart(creature, Item.SLOT_CHEST, Item.SLOT_FULL_ARMOR);
}

if (Config.CHAMPION_ENABLE && creature.isChampion())
{
baseValue *= Config.CHAMPION_ATK;
}
if (creature.isRaid())
{
baseValue *= Config.RAID_MATTACK_MULTIPLIER;
}

// Calculate modifiers Magic Attack
final double physicalBonus = creature.getStat().getMul(Stat.MAGIC_ATTACK_BY_PHYSICAL_ATTACK, 0) * creature.getPAtk();
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue + physicalBonus), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
}

@Override
public double calcEnchantBodyPartBonus(int enchantLevel, boolean isBlessed)
{
if (isBlessed)
{
return (2 * Math.max(enchantLevel - 3, 0)) + (2 * Math.max(enchantLevel - 6, 0));
}
return (1.4 * Math.max(enchantLevel - 3, 0)) + (1.4 * Math.max(enchantLevel - 6, 0));
}
}
 
Решение
package org.l2jmobius.gameserver.model.stats.finalizers; MAttackFinalizer.java
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see < >.
*/
package org.l2jmobius.gameserver.model.stats.finalizers;

import java.util.OptionalDouble;

import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.items.Item;
import org.l2jmobius.gameserver.model.stats.BaseStat;
import org.l2jmobius.gameserver.model.stats.IStatFunction;
import org.l2jmobius.gameserver.model.stats.Stat;

/**
* @author UnAfraid
*/
public class MAttackFinalizer implements IStatFunction
{
@Override
public double calc(Creature creature, OptionalDouble base, Stat stat)
{
throwIfPresent(base);

double baseValue = calcWeaponBaseValue(creature, stat);
baseValue += calcEnchantedItemBonus(creature, stat);
if (creature.isPlayer())
{
// Enchanted chest bonus
baseValue += calcEnchantBodyPart(creature, Item.SLOT_CHEST, Item.SLOT_FULL_ARMOR);
}

if (Config.CHAMPION_ENABLE && creature.isChampion())
{
baseValue *= Config.CHAMPION_ATK;
}
if (creature.isRaid())
{
baseValue *= Config.RAID_MATTACK_MULTIPLIER;
}

// Calculate modifiers Magic Attack
final double physicalBonus = creature.getStat().getMul(Stat.MAGIC_ATTACK_BY_PHYSICAL_ATTACK, 0) * creature.getPAtk();
baseValue *= Math.pow(BaseStat.INT.calcBonus(creature) * creature.getLevelMod(), 2.2072);
return validateValue(creature, Stat.defaultValue(creature, stat, baseValue + physicalBonus), 0, creature.isPlayer() ? Config.MAX_MATK : Double.MAX_VALUE);
}

@Override
public double calcEnchantBodyPartBonus(int enchantLevel, boolean isBlessed)
{
if (isBlessed)
{
return (2 * Math.max(enchantLevel - 3, 0)) + (2 * Math.max(enchantLevel - 6, 0));
}
return (1.4 * Math.max(enchantLevel - 3, 0)) + (1.4 * Math.max(enchantLevel - 6, 0));
}
}
Это в исходниках правится ?
 
само собой, практически в любой сборке все формулы и расчеты основаны там :)
если нет исходов можно попробовать декомпилом
Исходники есть. Только что потом делать с этим скомпилированным файлом ? )
 
Исходники есть. Только что потом делать с этим скомпилированным файлом ? )
Тебе же даже путь дали)

package org.l2jmobius.gameserver.model.stats.finalizers; MAttackFinalizer.java

Лучше всего целиком компилить ядро с уже с фиксом.

А еще лучше сделать на эту шнягу-конфиг переключатель, чтобы если вдруг снова потребуется не нужно было еще раз компилить, а просто поставить false.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу