Перейти к содержанию
Авторизация  
Temen

Treasure Chest Hf Overlord

Рекомендуемые сообщения

Добрый день , хотел попросить помощи в изменении или за разумную плату переписывания скриптов для Сундуков в исходниках Overlord HF. Суть проблемы в том что имеется скрипт где указано что при разнице в лвл >6(между персонажем и сундуком) шанс открытия сундука 0% , но при этом сундуки открываются скиллом Unlock и собственно ключем при любой разнице лвл (т.е. 40 лвл может открывать 84 сундуки) . 

Собсно сам скрипт TreasureChestinstance.java

@SuppressWarnings("serial")
public class TreasureChestInstance extends ChestInstance
{
	private static final int TREASURE_BOMB_ID = 4143;

	public TreasureChestInstance(int objectId, NpcTemplate template)
	{
		super(objectId, template);
	}

	public void tryOpen(Player opener, Skill skill)
	{
		double chance = calcChance(opener, skill);
		if(Rnd.chance(chance))
		{
			getAggroList().addDamageHate(opener, 10000, 0);
			doDie(opener);
		}
		else
		{
			fakeOpen(opener);
		}
	}

	public double calcChance(Player opener, Skill skill)
	{
		double chance = skill.getActivateRate();
		int npcLvl = getLevel();
		if(!isCommonTreasureChest())
		{
			double levelmod = (double) skill.getMagicLevel() - npcLvl;
			chance += levelmod * skill.getLevelModifier();
		}
		else
		{
			int openerLvl = opener.getLevel();
			int lvlDiff = Math.max(openerLvl - npcLvl, 0);
			if((openerLvl <= 77 && lvlDiff >= 6) || (openerLvl >= 78 && lvlDiff >= 5))
			{
				chance = 0;
			}
		}
		if(chance < 0)
		{
			chance = 1;
		}
		return chance;
	}

	private void fakeOpen(Creature opener)
	{
		Skill bomb = SkillTable.getInstance().getInfo(TREASURE_BOMB_ID, getBombLvl());
		if(bomb != null)
		{
			doCast(bomb, opener, false);
		}
		onDecay();
	}

	private int getBombLvl()
	{
		int npcLvl = getLevel();
		int lvl = 1;
		if(npcLvl >= 78)
		{
			lvl = 10;
		}
		else if(npcLvl >= 72)
		{
			lvl = 9;
		}
		else if(npcLvl >= 66)
		{
			lvl = 8;
		}
		else if(npcLvl >= 60)
		{
			lvl = 7;
		}
		else if(npcLvl >= 54)
		{
			lvl = 6;
		}
		else if(npcLvl >= 48)
		{
			lvl = 5;
		}
		else if(npcLvl >= 42)
		{
			lvl = 4;
		}
		else if(npcLvl >= 36)
		{
			lvl = 3;
		}
		else if(npcLvl >= 30)
		{
			lvl = 2;
		}
		return lvl;
	}

	private boolean isCommonTreasureChest()
	{
		int npcId = getNpcId();
		if(npcId >= 18265 && npcId <= 18286)
			return true;
		return false;
	}

	@Override
	public void onReduceCurrentHp(final double damage, final Creature attacker, Skill skill, final boolean awake, final boolean standUp, boolean directHp)
	{
		if(!isCommonTreasureChest())
			fakeOpen(attacker);
	}
}
Изменено пользователем Temen

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так тебе надо что бы он не открывался вообще? просто тут шанс то на дроп а не на открытие само

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так тебе надо что бы он не открывался вообще? просто тут шанс то на дроп а не на открытие само

Можно в любом виде , просто дроп тоже падает с 100% шансом с них и с разницей в уровнях, вполне устроит если будет открыватся но дропа не будет при разнице в лвл >6 . Шанс открытия насколько я понимаю в datapack в скиллах , там стоит 100 но опять же никакого дополнение касаемо разницы в уровнях

<skill id="27" levels="14" name="Unlock">
		<table name="#itemConsumeCount">2 2 3 3 4 5 6 7 8 10 11 13 15 17</table>
		<table name="#unlockPower">30 50 75 105 130 175 205 230 275 300 300 300 300 300</table>
		<table name="#mpConsume2">19 22 25 28 31 35 39 43 47 51 55 59 63 67</table>
		<table name="#magicLevel">20 24 28 32 36 40 44 48 52 56 60 64 68 72</table>
		<set name="icon" val="icon.skill0027" />
		<set name="reuseDelay" val="30000" />
		<set name="magicLevel" val="#magicLevel" />
		<set name="hitTime" val="2500" />
		<set name="hitCancelTime" val="500" />
		<set name="mpConsume2" val="#mpConsume2" />
		<set name="activateRate" val="100" />
		<set name="unlockPower" val="#unlockPower" />
		<set name="itemConsumeId" val="1661" />
		<set name="itemConsumeCount" val="#itemConsumeCount" />
		<set name="target" val="TARGET_UNLOCKABLE" />
		<set name="skillType" val="UNLOCK" />
		<set name="operateType" val="OP_ACTIVE" />
	</skill>

И скилл самого ключика

<skill id="22271" levels="1" name="Maestro's Key">
		<set name="icon" val="icon.skill0000" />
		<set name="reuseDelay" val="3000" />
		<set name="hitTime" val="500" />
		<set name="hitCancelTime" val="500" />
		<set name="activateRate" val="25" />
		<set name="itemConsumeId" val="21746" />
		<set name="itemConsumeCount" val="1" />
		<set name="isHandler" val="true" />
		<set name="target" val="TARGET_CHEST" />
		<set name="skillType" val="UNLOCK" />
		<set name="operateType" val="OP_ACTIVE" />
		<cond msgId="109">
			<or>
				<target mobId="18265" />
				<target mobId="18266" />
				<target mobId="18267" />
				<target mobId="18268" />
				<target mobId="18269" />
				<target mobId="18270" />
				<target mobId="18271" />
				<target mobId="18272" />
				<target mobId="18273" />
				<target mobId="18274" />
				<target mobId="18275" />
				<target mobId="18276" />
				<target mobId="18277" />
				<target mobId="18278" />
				<target mobId="18279" />
				<target mobId="18280" />
				<target mobId="18281" />
				<target mobId="18282" />
				<target mobId="18283" />
				<target mobId="18284" />
				<target mobId="18285" />
				<target mobId="18286" />
			</or>
		</cond>
	</skill>
Изменено пользователем Temen

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

int lvlDiff = Math.max(npcLvl - openerLvl, 0);
Изменено пользователем Gaikotsu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
int lvlDiff = Math.max(npcLvl - openerLvl, 0);

Спасибо , помогло . Тему можно закрывать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...