Ir para conteúdo
  • Cadastre-se

Guia completo sobre itens


Kelvin

Posts recomendados

  • L2JBr ADM

Localização: Gameserver/data/items/
Formato: XML

Vamos usar de exemplo o Infinity Bow é um item do tipo Weapon e tem o seu ID 6619.

<weapon id="6619" name="Infinity Bow">
    <!-- [the_infinity_bow] -->
    <set name="price" value="48800000"/>
    <set name="crystal_count" value="2850"/>
    <set name="enchantable" value="false"/>
    <set name="atk_reuse" value="1398"/>
    <set name="crystal_type" value="S"/>
    <set name="destroyable" value="false"/>
    <set name="dropable" value="false"/>
    <set name="icon" value="icon.weapon_the_bow_of_hero_i00"/>
    <set name="mp_consume" value="21"/>
    <set name="rnd_dam" value="5"/>
    <set name="sellable" value="false"/>
    <set name="soulshots" value="1"/>
    <set name="spiritshots" value="1"/>
    <set name="tradeable" value="false"/>
    <set name="storeable" value="false"/>
    <set name="type" value="BOW"/>
    <set name="weight" value="1300"/>
    <equip>
      <slot id="LEFT_RIGHT_HAND"/>
    </equip>
    <triggers>
      <trigger id="3594" level="1" type="CRIT" chance="7"/>
    </triggers>
    <skills>
      <skill id="3593" level="1"/>
    </skills>
    <cond msgId="1518">
      <player is_hero="true"/>
    </cond>
    <cond msgId="1507">
      <not>
        <player olympiad="true"/>
      </not>
    </cond>
    <for>
      <add stat="pAtk" order="0x10" value="614"/>
      <add stat="mAtk" order="0x10" value="137"/>
      <set stat="baseCrit" order="0x08" value="120"/>
      <set stat="atkBaseSpeed" order="0x08" value="293"/>
      <add stat="accCombat" order="0x10" value="-4.0000"/>
      <enchant stat="pAtk" order="0x0C" value="0"/>
      <enchant stat="mAtk" order="0x0C" value="0"/>
    </for>
  </weapon>

 

1. Todos os campos da XML.

Os itens possuem 3 categorias de itens que são divididas em:

Weapons - Arma, tudo que é usado na mão.
Armor - Armaduras, tudo que é usado no corpo do personasgens como recipes, 
Etcitem - São os itens que ficam na bag e não visualmente no personagens como: pieces, recipes, quest items, etc.

Então a XML já inicia com a tag <Weapon para que o sistema saiba que aquele item se trata de uma arma.

"id" - identificador de item.
"name" - é o identificador na XML, usado principalmente para serviços personalizados como sites, sistemas de gerenciamento.
"price" - o preço do item. No momento da entrega na loja, é dividido por 2 por padrão, o preço também é utilizado para validação nas lojas pessoais para que não seja inferior ao preço à venda na loja.
"crystal_count" - o número de cristais que você receberá ao quebrar um item,
"enchantable" - True / False você pode torna-lo enchantando ou não. (O padrão é True, mesmo se você não tiver adicionado este parâmetro) a xml.
"atk_reuse" - Usado apenas para Bow. Este é um atraso para um segundo tiro, essa faixa é necessária para esse tipo de arma.
"destroyable" - True/ False ativa e desativa se pode ser destruido, jogado na lixeira. (O padrão é true, mesmo se você não tiver adicionado este parâmetro).
"dropable" - True / False se pode ser deixado cair no chão. (O padrão é true, mesmo se você não tiver adicionado este parâmetro)
"sellable" - True/ False se o item pode ser vendido para a loja. (O padrão é true mesmo se você não tiver adicionado este parâmetro)
"tradeable" - True / Falso se o item pode ser vendido a outro jogador. (O padrão é true mesmo se você não tiver
"storeable" - True / False se um item pode ser colocado em WH / CWH (banco e banco de clan). (O padrão é true mesmo se você não tiver adicionado este parâmetro)
"icon" - a textura do ícone. Encontrado no cliente do jogo por padrão. Usado para exibir para serviços que mostram-nos.
"mp_consume" - usado para arcos, quanto MP será tirado ao atirar.
"rnd_dam" - Propagação de danos. Dano base +0 a + valor.
"weight" - Peso do item.

 

2. Tipos de itens para cada categoria de armor, weapon etcitem.

No nosso exemplo: <set name = "type" value = "BOW" />

Armor:
NONE - sem tipo
LIGHT - armadura light
HEAVY - armadura heavy
MAGIC - armadura robe
PET - armadura para pets
SIGIL - Escudos sigil (apenas classic)

Weapon:
NONE - no type. For example, fists
SWORD - sword
BLUNT - blunt
DAGGER - dagger
BOW - bow
POLE - lance (pole)
ETC - geralmente para armas de monstros
FIST - brass knuckles (for cursed weapons)
DUAL - 2 swords
DUALFIST - two-handed knuckles
BIGSWORD - two-handed sword
PET - pet weapon (muzzle for a wolf as an example)
ROD - fishing rod
BIGBLUNT - two-handed club
DUALDAGGER - two-handed dagger (Classic only)

Etcitem:
ARROW - (flechas) arrows for bow
MATERIAL - materials for crafting
PET_COLLAR - colar para pet
POTION - potions e buffs
RECIPE - recipes para crafting
SCROLL - scrolls (enchants, escapes, teleport, etc.)
QUEST - quest items
MONEY - Adena e qualquer outra moeda de liquidação do servidor
OTHER - Se você não tem certeza do tipo de item use esse.
SPELLBOOK - Livros de Skills
SEED - Manor Seeds
BAIT - Anzol para vara de pescar
SHOT - the type for Spiritshot
BOLT - bolt (Classic only)
RUNE - Para ruas que podem ser estocadas no inventário e podem dar skills. Elas não podem ser equipadas.
HERB - herbs
MERCENARY_TICKET - Tickets de Loteria
ARROW_QUIVER - Arrow Quiver (Apenas Classic)

 

3. Tipos de slots para equipamentos <equip> </equip> .

No bow o slot é assumido como LEFT_RIGHT_HAND porque é um equipamento que ocupa o espaço da mão direita e esquerda dos campos para armas (e escudo, flechas, etc).

<equip>
<slot id = "LEFT_RIGHT_HAND" />
</equip>

Todos os tipos de slots:

NONE - Sem tipo (geralmente usado para monstros).
HEAD - Parte da cabeça, onde fica o helmo.
CHEST - Parte de cima do Peito.
LEGS - Calças.
FULL_ARMOR - Armadura completa, peito e calças.
FEET - Botas.
GLOVES - Luvas.
HAIR - Slot para acessórios como mascaras, esquerdo.
FACE - Slot para acessórios como mascaras, direito.
HAIR_ALL - Slot para acessórios como mascaras, ocupa 2 slots.
UNDERWEAR - Slot para Tattoo.
NECKLACE - Colar.
RIGHT_HAND - Mão direita.
LEFT_HAND - Mão esquerda.
LEFT_RIGHT_HAND - Ambas as mãos. 
RIGHT_EAR - Brinco esquerdo.
LEFT_EAR - Brinco direito.
RIGHT_FINGER - Anel direito.
LEFT_FINGER - Anel esquerdo.
FORMAL_WEAR - Ocupa todos os espaços de armaduras. Exemplo, roupas de casamento.
BELT - Belt (Classic)
RIGHT_BRACELET - Bracelete direito. (Classic)
LEFT_BRACELET - Bracelete esquerdo. (Classic)
BROOCH - Broche (Classic)
BACK - Capas (Classic)
TALISMAN - Talisman slot (Classic)
BROOCH_JEWEL - Brooch Jewelry Slot (Classic)
AGATHION_CHARMRM - Agathion slot (Classic)

 

4. Blocos de skills.

No exemplo abaixo quando é equipado o Infinity Bow uma skill passiva de ID 3593 no level 1 será entregue ao personagem. A skill pode ser passiva ou ativa.

A skill e level:

<skills>
<skill id = "3593" level = "1" />
</skills>

Chance de skills:
Aqui podemos criar um gatilho que a skill de ID 3594 no level 1 poderá desencadear um aumento de critical attack com 7% de chance.

<triggers>
<trigger id = "3594" level = "1" type = "CRIT" chance = "7" />
</triggers>

Valores que pode sem inclusos:

ADD - a habilidade é acionada quando adicionada à lista
ATTACK - a habilidade é desencadeada por um ataque normal
RECEIVE_DAMAGE - a habilidade é ativada ao receber dano
CRIT - a habilidade é acionada com um critico
OFFENSIVE_PHYSICAL_SKILL_USE - a habilidade é acionada quando você recebe dano de habilidades físicas
OFFENSIVE_MAGICAL_SKILL_USE - a habilidade é acionada quando você recebe dano de habilidades físicas
SUPPORT_MAGICAL_SKILL_USE - ta habilidade é acionada quando você usa dano de habilidades físicas
UNDER_MISSED_ATTACK - a habilidade é acionada ao evasão funcionar (dogge)
DIE - habilidade desencadeia na morte

 

5. Condições 

Apenas para herois:
<cond msgId = "1518">
<player is_hero = "true" />
</cond>


Proibir o uso nas olimpiadas:
<cond msgId = "1507">
<not>
<player olympiad = "true" />
</not>
</cond>


Proibir o uso em eventos de PvP:
<cond>
<not>
<player on_pvp_event = "true" />
</not>
</cond>


Está é a lista de todas as condições disponíveis, você pode comparar com itens que já conhece para ter exemplos.

classId - ID da classe
forbiddenClassId - Proibir certas classes
olympiad - Olimpiadas
min_pledge_rank - Ranking em um clan
is_hero - Ser ou não heroi
on_pvp_event - Usar ou não em eventos de PVP
class_is_mage - Classes de Magos (True / False)
instance_zone - Zona que é instancia
minLevel - Level mínimo exigido
maxLevel - Level máximo exigido
race - Raça (Elf, Dwarf etc)
gender - Genero (Male ou Female)
maxPK - Quantidade de PKs
damage - Quantidade de dano.

 

5. Blocos sobre status

Você pode adicionar ou retirar status de determinados itens, veja como:


<for>
<add stat = "pAtk" order = "0x10" value = "614" /> - Adiciona valores de P. Atk.
<add stat = "mAtk" order = "0x10" value = "137" /> - Adiciona valores de M. Atk.
<set stat = "baseCrit" order = "0x08" value = "120" /> - Adiciona valores de crítico.
<set stat = "atkBaseSpeed" order = "0x08" value = "293" /> - Adiciona valores de Atk Speed.
<add stat = "accCombat" order = "0x10" value = "- 4.0000" /> - Adiciona valores de Accuracy.
<enchant stat = "pAtk" order = "0x0C" value = "0" /> - Bloco que adiciona uma determinada caracteristica quando enchantando. No caso o valor pAtk, mas pode ser usado mAtk, atkBaseSpeed etc.
</for>

Link para o comentário
Compartilhar em outros sites

  • Kelvin changed the title to Guia completo sobre itens
  • Kelvin pinned this Tópico

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.





  • Patrocinadores

  • Quem Está Navegando

    • Nenhum usuário registrado visualizando esta página.
  • Posts

    • Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?    
    • muchas gracias muy lindos NPC 🙂
    • relaxa jovem gafanhoto, testa as quests. e posTa os erros indesejaveis.  
    • Se alguém pudesse me ensinar como codificar as missões, eu ficaria feliz em fazer isso sozinho ou pelo menos ajudar. Eu realmente quero jogar em um servidor onde todas as quests funcionem bem e melhor ainda se você puder fazer quests customizadas!
    • mas no interlude, nem todas as quests de class,  vai mostrar onde tem que ir, ate o reborn nao mostrava quando era interlude, só mostrou depois que eles colocaram client classic pra rodar, e ficou melhor ainda quando virou hellbound em diante, mas ha sim alguma chance de modificar isso direto no script para fazer igualmente, só basta te um pouco de paciencia e persistencia exato
    • 408_PathToElvenwizard dá Orion eu tive que mexer tbm, até modifiquei e consegui deixar ela igual do Classic, com a seta e a marcação no mapa. (não retail IL) Dá pra importar py de várias revs, o foda é que não da regular as quest py através do debug em tempo real, pelo menos eu não consegui rsrs
    • Hasta el momento todas las QUESTS son completables si te guias con un tutorial de youtube. El problema es que tienen bugs de locacion y de subquests que no avanzan o no te marcan correctamente a donde ir en el mapa, cosa que en Retail si se ve como corresponde.
    • estranho, mas pelo menos a galera nunca reclamo das quests quando tinha aberto 5x, geral fez class primeira e segunda job, poucos que compraram a class
    • en RUSaCis-3.5 data pack, las Quests estan en formato .java y son diferentes a como estan redactadas en jOrion y jFrozen 1.5 (ProyectX) package net.sf.l2j.gameserver.scripting.quest; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.enums.Paperdoll; import net.sf.l2j.gameserver.enums.QuestStatus; import net.sf.l2j.gameserver.enums.actors.ClassId; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.scripting.QuestState; public class Q224_TestOfSagittarius extends SecondClassQuest { private static final String QUEST_NAME = "Q224_TestOfSagittarius"; // Items private static final int BERNARD_INTRODUCTION = 3294; private static final int HAMIL_LETTER_1 = 3295; private static final int HAMIL_LETTER_2 = 3296; private static final int HAMIL_LETTER_3 = 3297; private static final int HUNTER_RUNE_1 = 3298; private static final int HUNTER_RUNE_2 = 3299; private static final int TALISMAN_OF_KADESH = 3300; private static final int TALISMAN_OF_SNAKE = 3301; private static final int MITHRIL_CLIP = 3302; private static final int STAKATO_CHITIN = 3303; private static final int REINFORCED_BOWSTRING = 3304; private static final int MANASHEN_HORN = 3305; private static final int BLOOD_OF_LIZARDMAN = 3306; private static final int CRESCENT_MOON_BOW = 3028; private static final int WOODEN_ARROW = 17; // Rewards private static final int MARK_OF_SAGITTARIUS = 3293; // NPCs private static final int BERNARD = 30702; private static final int HAMIL = 30626; private static final int SIR_ARON_TANFORD = 30653; private static final int VOKIAN = 30514; private static final int GAUEN = 30717; // Monsters private static final int ANT = 20079; private static final int ANT_CAPTAIN = 20080; private static final int ANT_OVERSEER = 20081; private static final int ANT_RECRUIT = 20082; private static final int ANT_PATROL = 20084; private static final int ANT_GUARD = 20086; private static final int NOBLE_ANT = 20089; private static final int NOBLE_ANT_LEADER = 20090; private static final int BREKA_ORC_SHAMAN = 20269; private static final int BREKA_ORC_OVERLORD = 20270; private static final int MARSH_STAKATO_WORKER = 20230; private static final int MARSH_STAKATO_SOLDIER = 20232; private static final int MARSH_STAKATO_DRONE = 20234; private static final int MARSH_SPIDER = 20233; private static final int ROAD_SCAVENGER = 20551; private static final int MANASHEN_GARGOYLE = 20563; private static final int LETO_LIZARDMAN = 20577; private static final int LETO_LIZARDMAN_ARCHER = 20578; private static final int LETO_LIZARDMAN_SOLDIER = 20579; private static final int LETO_LIZARDMAN_WARRIOR = 20580; private static final int LETO_LIZARDMAN_SHAMAN = 20581; private static final int LETO_LIZARDMAN_OVERLORD = 20582; private static final int SERPENT_DEMON_KADESH = 27090; public Q224_TestOfSagittarius() { super(224, "Test Of Sagittarius"); setItemsIds(BERNARD_INTRODUCTION, HAMIL_LETTER_1, HAMIL_LETTER_2, HAMIL_LETTER_3, HUNTER_RUNE_1, HUNTER_RUNE_2, TALISMAN_OF_KADESH, TALISMAN_OF_SNAKE, MITHRIL_CLIP, STAKATO_CHITIN, REINFORCED_BOWSTRING, MANASHEN_HORN, BLOOD_OF_LIZARDMAN, CRESCENT_MOON_BOW); addQuestStart(BERNARD); addTalkId(BERNARD, HAMIL, SIR_ARON_TANFORD, VOKIAN, GAUEN); addMyDying(ANT, ANT_CAPTAIN, ANT_OVERSEER, ANT_RECRUIT, ANT_PATROL, ANT_GUARD, NOBLE_ANT, NOBLE_ANT_LEADER, BREKA_ORC_SHAMAN, BREKA_ORC_OVERLORD, MARSH_STAKATO_WORKER, MARSH_STAKATO_SOLDIER, MARSH_STAKATO_DRONE, MARSH_SPIDER, ROAD_SCAVENGER, MANASHEN_GARGOYLE, LETO_LIZARDMAN, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_WARRIOR, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, SERPENT_DEMON_KADESH); } @Override public String onAdvEvent(String event, Npc npc, Player player) { String htmltext = event; QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; // BERNARD if (event.equalsIgnoreCase("30702-04.htm")) { st.setState(QuestStatus.STARTED); st.setCond(1); playSound(player, SOUND_ACCEPT); giveItems(player, BERNARD_INTRODUCTION, 1); if (giveDimensionalDiamonds39(player)) htmltext = "30702-04a.htm"; } // HAMIL else if (event.equalsIgnoreCase("30626-03.htm")) { st.setCond(2); playSound(player, SOUND_MIDDLE); takeItems(player, BERNARD_INTRODUCTION, 1); giveItems(player, HAMIL_LETTER_1, 1); } else if (event.equalsIgnoreCase("30626-07.htm")) { st.setCond(5); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_1, 10); giveItems(player, HAMIL_LETTER_2, 1); } // SIR_ARON_TANFORD else if (event.equalsIgnoreCase("30653-02.htm")) { st.setCond(3); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_1, 1); } // VOKIAN else if (event.equalsIgnoreCase("30514-02.htm")) { st.setCond(6); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_2, 1); } return htmltext; } @Override public String onTalk(Npc npc, Player player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; switch (st.getState()) { case CREATED: if (player.getClassId() != ClassId.ROGUE && player.getClassId() != ClassId.ELVEN_SCOUT && player.getClassId() != ClassId.ASSASSIN) htmltext = "30702-02.htm"; else if (player.getStatus().getLevel() < 39) htmltext = "30702-01.htm"; else htmltext = "30702-03.htm"; break; case STARTED: int cond = st.getCond(); switch (npc.getNpcId()) { case BERNARD: htmltext = "30702-05.htm"; break; case HAMIL: if (cond == 1) htmltext = "30626-01.htm"; else if (cond == 2 || cond == 3) htmltext = "30626-04.htm"; else if (cond == 4) htmltext = "30626-05.htm"; else if (cond > 4 && cond < 8) htmltext = "30626-08.htm"; else if (cond == 8) { htmltext = "30626-09.htm"; st.setCond(9); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_2, 10); giveItems(player, HAMIL_LETTER_3, 1); } else if (cond > 8 && cond < 12) htmltext = "30626-10.htm"; else if (cond == 12) { htmltext = "30626-11.htm"; st.setCond(13); playSound(player, SOUND_MIDDLE); } else if (cond == 13) htmltext = "30626-12.htm"; else if (cond == 14) { htmltext = "30626-13.htm"; takeItems(player, BLOOD_OF_LIZARDMAN, -1); takeItems(player, CRESCENT_MOON_BOW, 1); takeItems(player, TALISMAN_OF_KADESH, 1); giveItems(player, MARK_OF_SAGITTARIUS, 1); rewardExpAndSp(player, 54726, 20250); player.broadcastPacket(new SocialAction(player, 3)); playSound(player, SOUND_FINISH); st.exitQuest(false); } break; case SIR_ARON_TANFORD: if (cond == 2) htmltext = "30653-01.htm"; else if (cond > 2) htmltext = "30653-03.htm"; break; case VOKIAN: if (cond == 5) htmltext = "30514-01.htm"; else if (cond == 6) htmltext = "30514-03.htm"; else if (cond == 7) { htmltext = "30514-04.htm"; st.setCond(8); playSound(player, SOUND_MIDDLE); takeItems(player, TALISMAN_OF_SNAKE, 1); } else if (cond > 7) htmltext = "30514-05.htm"; break; case GAUEN: if (cond == 9) { htmltext = "30717-01.htm"; st.setCond(10); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_3, 1); } else if (cond == 10) htmltext = "30717-03.htm"; else if (cond == 11) { htmltext = "30717-02.htm"; st.setCond(12); playSound(player, SOUND_MIDDLE); takeItems(player, MANASHEN_HORN, 1); takeItems(player, MITHRIL_CLIP, 1); takeItems(player, REINFORCED_BOWSTRING, 1); takeItems(player, STAKATO_CHITIN, 1); giveItems(player, CRESCENT_MOON_BOW, 1); giveItems(player, WOODEN_ARROW, 10); } else if (cond > 11) htmltext = "30717-04.htm"; break; } break; case COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; } @Override public void onMyDying(Npc npc, Creature killer) { final Player player = killer.getActingPlayer(); final QuestState st = checkPlayerState(player, npc, QuestStatus.STARTED); if (st == null) return; switch (npc.getNpcId()) { case ANT: case ANT_CAPTAIN: case ANT_OVERSEER: case ANT_RECRUIT: case ANT_PATROL: case ANT_GUARD: case NOBLE_ANT: case NOBLE_ANT_LEADER: if (st.getCond() == 3 && dropItems(player, HUNTER_RUNE_1, 1, 10, 500000)) st.setCond(4); break; case BREKA_ORC_SHAMAN: case BREKA_ORC_OVERLORD: if (st.getCond() == 6 && dropItems(player, HUNTER_RUNE_2, 1, 10, 500000)) { st.setCond(7); giveItems(player, TALISMAN_OF_SNAKE, 1); } break; case MARSH_STAKATO_WORKER: case MARSH_STAKATO_SOLDIER: case MARSH_STAKATO_DRONE: if (st.getCond() == 10 && dropItems(player, STAKATO_CHITIN, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, REINFORCED_BOWSTRING)) st.setCond(11); break; case MARSH_SPIDER: if (st.getCond() == 10 && dropItems(player, REINFORCED_BOWSTRING, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case ROAD_SCAVENGER: if (st.getCond() == 10 && dropItems(player, MITHRIL_CLIP, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, REINFORCED_BOWSTRING, STAKATO_CHITIN)) st.setCond(11); break; case MANASHEN_GARGOYLE: if (st.getCond() == 10 && dropItems(player, MANASHEN_HORN, 1, 1, 100000) && player.getInventory().hasItems(REINFORCED_BOWSTRING, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case LETO_LIZARDMAN: case LETO_LIZARDMAN_ARCHER: case LETO_LIZARDMAN_SOLDIER: case LETO_LIZARDMAN_WARRIOR: case LETO_LIZARDMAN_SHAMAN: case LETO_LIZARDMAN_OVERLORD: if (st.getCond() == 13) { if (((player.getInventory().getItemCount(BLOOD_OF_LIZARDMAN) - 120) * 5) > Rnd.get(100)) { playSound(player, SOUND_BEFORE_BATTLE); takeItems(player, BLOOD_OF_LIZARDMAN, -1); addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } else dropItemsAlways(player, BLOOD_OF_LIZARDMAN, 1, 0); } break; case SERPENT_DEMON_KADESH: if (st.getCond() == 13) { if (player.getInventory().getItemIdFrom(Paperdoll.RHAND) == CRESCENT_MOON_BOW) { st.setCond(14); playSound(player, SOUND_MIDDLE); giveItems(player, TALISMAN_OF_KADESH, 1); } else addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } break; } } }  
×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.