O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Cálculos de dano de habilidades, e "buff's"

Iniciado por Magnus, 17/05/2015 às 15:58

Olá a todos! Primeiramente vou explicar a situação para vocês entenderem melhor. Estou criando algumas classes para um futuro projeto e me deparei com um problema um pouco chato. Eu conheço a lógica do comando para calcular o dano de habilidades que seria (condição) ? (true) : (false) , mas não sei como aplica-la corretamente em algumas fórmulas, por exemplo:

alquimistas tem a habilidade de lanças potes de ácidos em seus oponentes, então pensei em seguir a fórmula citada (Dado => variável(x) = n° de ácidos que o usuário possui no inventário) : se a variável(x) for maior ou igual a 1, o dano será Y, mas se a variável(x) for igual a zero a habilidade não acontecerá.
O maior problema seria interromper a habilidade caso o jogador não possua o Frasco com Ácido.

Outro problema também é em outra habilidade do alquimista, porém não mexe só com a habilidade mas também com sua animação=>

A habilidade tem como função alterar o elemento de ataque do alvo, e as escolhas são: Fogo, Água, Terra e Vento. Percebam que eu digitei "escolhas" e não "chances". Isso a torna difícil de se fazer(para mim) porque a animação seria alterada, como por exemplo: Habilidade ativada > escolha do elemento > Fogo > animação com um círculo vermelho. Entenderam? Se o usuário escolher, Água, a animação será um círculo azul, e assim por diante.

Espero que possam me ajudar! Muito Obrigado! :ok:

17/05/2015 às 16:43 #1 Última edição: 17/05/2015 às 16:45 por Shiroyasha
Se você guarda o número de frascos numa variável então na fórmula de dano você só precisa fazer:

Código: text
v[n] >= 1 ? (fórmula do dano) : 0


Onde n refere-se ao id da variável que guarda o número de frascos.

Note que você precisará deixar a variação de dano em 0 e caso queira utilizá-la deverá inserir isto diretamente na fórmula de dano.
Sobre a segunda questão não entendi bem, mas parece ser o caso de utilizar mais de uma habilidade. Isto é, você cria uma habilidade distinta para cada efeito e na habilidade que altera o elemento você chama um evento comum que força o uso de uma das habilidades que foi escolhida. Note que o personagem não precisa, necessariamente, ter aprendido a habilidade que ele escolheu usar deste modo.

Hmm, acho que entendi! Vou testar aqui. Obrigado!

Mais uma dúvida! Em uma nova habilidade, eu quero utilizar os itens Frasco Ácido e Líquido Volátil, então quero saber como utilizo uma variável para estes 2 itens?

17/05/2015 às 18:54 #4 Última edição: 17/05/2015 às 18:56 por Shiroyasha
Nesse caso você usaria duas variáveis em duas condições. Por exemplo:

Código: txt
(v[n] >= 1 && v[n2] >=1) ? (fórmula do dano) : 0


Onde v[n] é a variável de id n que armazena o número de frascos ácidos e v[n2] é a variável de id n2 que armazena o número de frascos do líquido volátil. Essa condição só é verdadeira se ambas as condições são cumpridas, ou seja o personagem deve ter pelo menos 1 frasco de cada para que possa causar dano.

"Se v[n] maior ou igual a 1 e v[n2] maior ou igual a 1, então <fórmula de dano> senão 0."


Muitíssimo obrigado, você agora é meu consultor de fórmulas de dano particular  :*-*:

Mais uma dúvida surgiu! Criei uma classe que suas habilidades consomem HP. Como faço para criar uma habilidade de tire uma quantidade X de HP do usuário para tirar uma quantidade X de HP do alvo? E como crio uma habilidade que tira X de HP do usuário para recuperar X de HP de um aliado?

Aproveitando me maleficamente do tópico o que significa "&&" geralmente e nesta forma em particular?
Clique e conheça o meu canal - Canal RPG Maker Zone

Citação de: Akiyoshi online 08/06/2015 às 12:05
Aproveitando me maleficamente do tópico o que significa "&&" geralmente e nesta forma em particular?
Esse && seria o nosso "e", como se fosse uma frase assim: se a condição A for verdadeira e se a condição B também for verdadeira: (true) : (false). Note que o "e" foi usado para adicionar outra condição na fórmula do dano.

Citação de: Magnus online 11/06/2015 às 21:26
Citação de: Akiyoshi online 08/06/2015 às 12:05
Aproveitando me maleficamente do tópico o que significa "&&" geralmente e nesta forma em particular?
Esse && seria o nosso "e", como se fosse uma frase assim: se a condição A for verdadeira e se a condição B também for verdadeira: (true) : (false). Note que o "e" foi usado para adicionar outra condição na fórmula do dano.
Ok, obrigado, ainda não entendi completamente, então isso quer dizer que tem que cumprir as duas condições ara retornar o retultado true ou pode cumprir pelo menos uma das duas e o resultado true é recebido?.
Clique e conheça o meu canal - Canal RPG Maker Zone

Não tinha visto a nova pergunta. )o)
Tem pouco tempo que o Akiyoshi teve uma dúvida semelhante aqui. Talvez lhe ajude.

1) Como faço para criar uma habilidade de tire uma quantidade X de HP do usuário para tirar uma quantidade X de HP do alvo?

A ideia é parecida com a do dano colateral. Só que a habilidade causa um dano X no usuário primeiro e salva o valor desse dano numa variável. Um evento comum é chamado e este evento comum força o uso de uma outra habilidade que causará dano no inimigo usando o valor armazenado na variável.

2) E como crio uma habilidade que tira X de HP do usuário para recuperar X de HP de um aliado?

Se o usuário tiver HP suficiente então você cura o aliado primeiro e através de um evento comum força o uso de uma outra habilidade que cause dano no usuário igual ao valor recuperado.




@Akiyoshi: Sim, é necessário que sejam cumpridas as duas condições. É equivalente a usar uma condição dentro de outra. Se você quer que pelo menos uma condição seja válida então use o operador lógico || (or).

Citação de: Shiroyasha online 12/06/2015 às 08:41
Não tinha visto a nova pergunta. )o)
Tem pouco tempo que o Akiyoshi teve uma dúvida semelhante aqui. Talvez lhe ajude.

1) Como faço para criar uma habilidade de tire uma quantidade X de HP do usuário para tirar uma quantidade X de HP do alvo?

A ideia é parecida com a do dano colateral. Só que a habilidade causa um dano X no usuário primeiro e salva o valor desse dano numa variável. Um evento comum é chamado e este evento comum força o uso de uma outra habilidade que causará dano no inimigo usando o valor armazenado na variável.

2) E como crio uma habilidade que tira X de HP do usuário para recuperar X de HP de um aliado?

Se o usuário tiver HP suficiente então você cura o aliado primeiro e através de um evento comum força o uso de uma outra habilidade que cause dano no usuário igual ao valor recuperado.




@Akiyoshi: Sim, é necessário que sejam cumpridas as duas condições. É equivalente a usar uma condição dentro de outra. Se você quer que pelo menos uma condição seja válida então use o operador lógico || (or).

Primeiramente, obrigado por responder a minha pergunta. Andei dando uma olhada no tópico do dano colateral e pensei um pouco. Como gosto de trabalhar com classes, o meu projeto possui um script que permite que o jogador possa mudar a classe de determinado heroi. Para isso pensei em fazer a classe Vinculador, que é a causadora da dúvida, com uma habilidade a mais. Esta habilidade tiraria 15% do seu HP e armazenaria na variável X. Então, no próximo turno seria necessário usar outra habilidade que causaria o dano ou recuperaria o dano e levaria o valor da variável X a 0. Foi basicamente isso que consegui compreender das respostas. Obrigado novamente!

Na verdade as instruções lá eram para ambas as habilidades fossem executadas no mesmo turno uma após a outra.
Sobre tirar 15% do HP e armazenar na variável X basta usar como fórmula:

Se são 15% do hp atual
v[x] = (a.hp / 100 ) * 15


Se são 15% do hp máximo do usuário
v[x] = (a.mhp / 100 ) * 15


Onde x é o id da variável que guardará este valor.

Daí basta ir em "Efeitos ao Usar" e chamar um evento comum que execute a outra skill. Não entendi bem sua colocação de esperar outro turno e sobre a outra habilidade que ou causaria dano ou o recuperaria.

13/06/2015 às 14:04 #13 Última edição: 14/06/2015 às 16:46 por Magnus
Eu entendi a parte de guardar o dano baseado no HP em uma variável, mas não entendi COMO chamar uma skill através de um evento comum. Já sei que tenho que usar "Forçar Ação em Batalha", mas isso só se aplicaria em herois específicos. Há como fazer isso com classes?

Edit: Esqueça esta dúvida, consegui fazer com 2 habilidades e um estado. Mas outra dúvida surgiu. Como faço uma habilidade que o usuário ataque o alvo, e depois, o usuário receba um estado?
EX:Habilidade : Lâmina do Trovão
fórmula do dano : a.atk * 3 + a.mat * 2 - b.def - b.mdf
Após o uso: O usuário tem 100% de chance de receber o estado Lâmina do Trovão(ID:042) que modifica o elemento do ataque para Vento. Enquanto o alvo tem 35% de chance de receber o estado Atordoado(ID:008).

Espero que possa me ajuda, novamente! :=p:  Muito obrigado!

21/02/2017 às 21:27 #14 Última edição: 21/02/2017 às 21:29 por Vander
Para o esquema de perder Hp tenho essa fórmula aqui.
(r = a.hp*0.3;a.hp -= (a.hp*0.1).round;r - b.def/2)

Peguei num link que eu tinha, mas foi desativado, lá tinha a explicação melhor. E tbm tem a de debuff  (b.state?(3) ? r = a.atk * 8 : r = a.atk * 4 ; r - b.def * 1)  não me lembro direito como funciona mais tá ai...