Bom.. vamos começar por partes.
Vou dar um ctrl c + ctrl v em algumas partes e vou explicando passo a passo, vale lembrar que eu não manjo 100% pois nunca me preocupei com algumas coisas.. então o que eu tiver certeza vou deixar explicito, o que for uma hipotese para mim vou falar EU ACHO.
Vamos lá.
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000">
Auto-explicativo. Utilize para mudar o nome do monstro.
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000">
Serve para você escolher o que vai apareçer quanto você der look num monstro.. por exemplo você da look num demon.. vai apareçer "You se a demon".. ai se você quiser alterar isso, a vontade
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000">
Raça propriamente dita, essa parte é simples de entender porém eu nunca parie para prestar atenção no que isso influencia, mas provavelmente deve influenciar em algo.
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000">
Altere a experiencia do monstro aqui.. por exemplo, seu ot server é exp de 10x
Nesse caso um demon irá lhe dar 6000 de exp * 10, ficando então 60,000 de exp, se você alterar para 7000 a exp, irá dar 70,000 de exp o demon, você tem que levar em conta a exp como 1x elevado a rate do seu server, se você quer que um monstro de 10k de exp, você vai lá e põe 10k, e por seu server ser 10x ele vai dar 100k, algo que você não quer.. nesse caso utilize 1k de exp
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000">
Velocidade propriamente dita do monstro, altere isso para faze-lo andar mais rapido/devagar, ou deixe em zero para o monstro ficar parado
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000">
Provavelmente deve ser a mana necessária para sumonar o demon, mas calma lá.. ja vamos chegar num ponto onde definimos se o monstro é sumonavel ou não.
-----------------------------
<health now="8200" max="8200"/>
Aqui você define a health do monstro.. por exemplo
<health now="500" max="8200"/>
Se você fizer isso, o monstro vai ter um TOTAL de 8200 de HP, mas quando ele nascer, ele vai nascer com 500 de HP, ou seja, a barrinha de life dele vai estar no vermelho praticamente
-----------------------------
<look type="35" corpse="5995"/>
Aqui você define o sprite do seu monstro
Não lembro de cabeça.. mas vamos fingir que o citizen outfit é look type 100, você tem o looktype 35, e quer fazer um demon com outfit de citizen, você muda para 100, ou qualquer outro valor referente ao outfit que você procura.
<look type="35" corpse="5995"/>
Aqui você define qual será o sprite do seu monstro quando ele morrer.
Agora, vamos fazer algo mais divertido?
Vamos alterar o seguinte código:
" <look type="35" corpse="5995"/>"
Suponha-se que você quer utilizar o outfit citizen, mas dessa maneira você não pode definir as cores, e nem fazer um monstro com addon, então agora vou te ensinar como fazer isso
Insira no código as seguintes informações destacadas:
<look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/>
Agora vamos as explicações:
<look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/>
Define a cor do cabelo do seu monstro, porém você tem que definir com numeros, ja te ensino o macete para descobrir como conseguir esses valores
No caso, 114 representa o preto, então seu monsto terá cabelo preto, se você definir como 0, será cabelo branco.
<look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/>
Mesma coisa do caso acima, porém para o peitoral do corpo.. e assim por diante
Basta você imaginar na ordem do Set outfit do próprio Tibia, quando você vai em ser outfit, temos as seguintes coisas:
Head = Head
Primary = Body
Secondary = Legs
Detail = feet
Entendeu?
Para definir os addons do seu monstro você editará a seguinte parte:
<look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/>
Se você quiser que ele tenha APENAS o addon 1, deixe dessa maneira:
addons="1"
Para o addon 2:
addons="2"
Agora, você quer saber a melhor maneira de deixar o monstro como você quer? Simples, coloque seu ot server online, e pegue um char de teste, selecione nele o outfit com as cores e addons que você quer, e depois deslogue do char, feito isso abra o MYSQL (a versão que você utilizar), lá vá em editar players, se você utilizar o SQLite Studio assim como eu, logo a frente do nome do seu char de teste, vai ter as informações com o numero da cor e outfit que você selecionou
<targetchange interval="5000" chance="8"/>
Nessa parte você coloca um valor para definir a cada QUANTO TEMPO ele irá sorteiar baseado no valor ao lado (chance) se o monstro irá mudar seu alvo de um jogador para outro.
Na parte a seguir vamos definir algumas coisas utilizando o padrão Binário, mas ai você me pergunta o que é binário?
Simples, definição de verdadeiro e falso a partir de 0 e 1.
Para verdadeiro utilizaremos 1, para falso 0.
<flag summonable="0"/>
Define se é possivel um player normal sumonar o monstro através da magia "utevo res".. no caso está definido como não, não é possivel.
<flag attackable="1"/>
Define se é possivel UM JOGADOR atacar o monstro, por exemplo, se você definir como 0, ao tentar atacar o monstro vai ser impossivel.
<flag hostile="1"/>
Define se é um monstro hostil, ou simplificando, se estiver como 1 ele te ataca, mas se estiver como 0 ele seria um rabbit da vida, pode ser atacado mas não ataca de volta.
<flag illusionable="0"/>
Define se é possivel utilizar a magia "utevo res ina" no monstro.. ou seja, um player comum (mage) se transformar no monstro por um determinado tempo
<flag convinceable="0"/>
Mesma coisa do summonable PRATICAMENTE, porém é através de uma runa que existe no jogo, se você utilizar ela num monstro ele irá virar seu summon.
<flag pushable="0"/>
No caso, demons não são possiveis de arrastar, mas se você alterar para 1, será possivel arrastar seu demon.
<flag canpushitems="1"/>
Define se o monstro em si irá arrastar itens, no caso você tacou uma parcel na frente do bixo e saiu correndo, ele arrasta ela tirando-a do seu caminho.
<flag canpushcreatures="1"/>
Mesma coisa do item anterior, porém com criaturas, se uma criatura entrar na frente do seu monstro, ele irá arrasta-lá para chegar até você.
<flag targetdistance="1"/>
A distancia que você quer que o monstro fique do jogador, exemplo: Você quer que o demon ataque o jogador a 2 sqm's de distancia, basta alterar para 2 o valor.
<flag staticattack="90"/>
Não sei dizer o que fazer, se alguem souber, peço que poste.
<flag runonhealth="0"/>
Define a vida em que o monstro irá fugir de você (porém não sei dizer se funciona como a vida mesmo ou em % da vida, se alguem puder deixar mais claro isso)
---------------------------
</flags> <attacks>
<attack name="melee" interval="2000" skill="100" attack="110"/>
<attack name="manadrain" interval="2000" chance="13" range="7" min="0" max="-120"/>
<attack name="fire" interval="2000" chance="30" range="7" radius="7" target="1" min="-150" max="-250">
<attribute key="shootEffect" value="fire"/>
<attribute key="areaEffect" value="firearea"/> </attack>
Nessa parte iremos trabalhar as spells do monstro.
A parte destacada em negrito, é onde você coloca os ataques, ou seja, todo ataque novo que você quiser fazer OU TIRAR, terá que ser assim, e sempre terá de ser dentro do padrão, no caso eu retirar todos os ataques e deixar apenas um novo.
<attacks>
<attack name="melee" interval="2000" skill="100" attack="110"/>
</attack>
Dessa maneira o demon irá utilizar APENAS o melee skill, com um intervalo de 2000 milésimos, a parte e skill e attack basta pensar que ele é um player, vamos utilizar um exemplo.
<attack name="melee" interval="2000" skill="100" attack="25"/>
Isso equivale a um jogador com skill 100 utilizando uma arma com attack 25. (Por exemplo um paladino com spear)
<defenses armor="55" defense="55">
<defense name="healing" interval="2000" chance="15" min="130" max="240">
<attribute key="areaEffect" value="blueshimmer"/>
</defense>
<defense name="speed" interval="1000" chance="8" speedchange="290" duration="5000">
<attribute key="areaEffect" value="redshimmer"/>
</defense>
</defenses>
O critério utilizado acima nos ataques, também servem para buffs do monstro, por exemplo aqui em defense, você pode ver que ele tem uma chamada speed, que é um haste que o monstro usa para correr mais rapido. Mas esse não é o foco que irei abordar aqui.
A parte em negrito aborda a defesa do monstro, mesmo criterio utilizado acima no ataque, porém para defesa.
Agora, você queria adicionar uma spell de healing, correto?
então vamos lá
Peguei como exemplo a linha de código de um monstro do meu servidor, basta você inserir isso no seu código que estará tudo perfeito.
<defense name="healing" interval="1000" chance="25" min="500000" max="50000000">
Interval define o intervalo do chance, ou seja, a cada 1000 milésimos será sortiado com uma chance de 25 de o monstro healar (detalhe, se não for sortiado dentro da chance o monsto não irá healar) entre o valor min e max, e a próposito, estou falando sortiar, mas o mais correto seria dizer:
"Sortear um valor random", pois não há como definir o valor a ser sortiado (se não nem sequer seria um sorteio né?"
-------------------------------------
<elements>
<element physicalPercent="30"/>
<element energyPercent="50"/>
<element earthPercent="20"/>
<element icePercent="-15"/>
<element holyPercent="-15"/>
<element deathPercent="20"/>
</elements>
Essa parte é BEM SIMPLES, é a % de defesa do monstro contra danos magicos/fisicos:
Levando em conta os dados acima vamos lá:
<element physicalPercent="30"/>
O monstro tem uma defesa de 30% contra physical, ou seja, se você iria hitar 100 nele, o valor 100 será diminuido para 70, que será o seu hit final
<element icePercent="-15"/>
Aqui ja fica diferente.. DESTAQUE para o sinal de -, isso significa que o monstro É FRACO ao elemento ice, ou seja, você iria hitar 100?
Seu hit final vai ser 100 + 15% = 115 de dano
É essa formula para qualquer valor, por exemplo:
300 de dano (15% do valor é igual a 45), ou seja, 345 de dano de ice
-----------------------------
<immunities>
<immunity fire="1"/>
<immunity drown="1"/>
<immunity paralyze="1"/>
<immunity invisible="1"/>
</immunities>
Aqui são as imunidades do monstro, vamos lá, 1 por 1:
<immunity fire="1"/>
Significa que o monsto tem 100% de proteção a fogo, então não importa o que ele não toma dano de fogo.
<immunity drown="1"/>
Não me lembro o que é drown, se não me engano é andar embaixo da água, se for 0 o monstro iria perder vida (SE NÃO ME ENGANO)
<immunity paralyze="1"/>
Ao utilizar a paralise rune no monstro, isso define se ele será afetado ou não
<immunity invisible="1"/>
Define se o monstro irá ver invisbilidade (utana vid ou stealth ring)
Caso essa opção esteja marcado como 0, se você utilizar utana vid, o demon não irá lhe atacar por não te ver.
-----------------------
<summons maxSummons="1">
<summon name="fire elemental" interval="1000" chance="12"/>
</summons>
O demon é um monsto que sumona bixos, no caso aqui você define em MAXSUMMONS qual o limite de bixos que ele poderá sumonar, e em baixo qual o bixo propriamente dito que será sumonado, no caso você pode alterar o fire elemental para um rat se quiser.
------------------------
<voices interval="5000" chance="10"> <voice sentence="MUHAHAHAHA!" yell="1"/>
<voice sentence="Your soul will be mine!" yell="0"/>
</voices>
Deixei apenas as 2 opções para uma explicação mais objetiva, o primeiro em negrito é uma fala do monstro, porém está como yell=1, isso significa que quando ele falar, ele irá gritar na verdade, então será possivel ver essa fala dele de fora da tela.
A fala de baixo no caso, ja representa uma simples fala qualquer que só se pode ser vista estando na mesma tela do monstro em si.
-----------
~
Enfim..
Só restou explicar a ultima parte de loot, mas com tudo que ja expliquei acima, creio que você pegou uma base e isso não será necessário né?
hehe, espero que esse post tenha lhe ajudado, qualquer dúvida, basta perguntar, ajudarei no que for possivel.