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

Ganhar ação adicional quando acerta um critico(RESOLVIDO)

Iniciado por eros2, 12/12/2015 às 01:24

12/12/2015 às 01:24 Última edição: 11/01/2016 às 20:34 por Skyloftian
Bem, estou tentando fazer um um sistema simples por eventos onde o jogador/inimigo pode realizar uma ação adicional ao acertar um critico no inimigo( estilo os jogos da série SMT), mas não obtive sucesso. Alguém tem alguma ideia de como posso fazer isso por eventos? existe a opção de fazer por scripts, claro, mas se for possível por eventos já pouparia bastante trabalho.

vlw!

 Bom, logo que você está fazendo por eventos você pode colocar uma condição:
<Condição: Se acertar um crítico>
-voltar as opções de ataque e habilidades-
<Exceção>
-Passar o turno-

Tente isso, espero que funcione.  :XD:

Citação de: Speed online 12/12/2015 às 09:41
Bom, logo que você está fazendo por eventos você pode colocar uma condição:
<Condição: Se acertar um crítico>
-voltar as opções de ataque e habilidades-
<Exceção>
-Passar o turno-

Tente isso, espero que funcione.  :XD:

kkkkk Hã? Não entendi bem, não tem uma condição no RPG Maker que diga "Se acertar Critico", ou tem? kkkk nao entendi
"A nossa maior ilusão é acreditar que somos o que pensamos ser"

Até dá pra obter uma flag do crítico pra determinar se uma ação secundária poderá ocorrer usando eventos comuns, mas no caso essa ação secundária seria pré-definida como o uso de uma habilidade adicional forçada, ou mesmo a aplicação de um Status. É isso mesmo o que você procura?

10/01/2016 às 18:21 #4 Última edição: 10/01/2016 às 18:23 por eros2
Eu acabei esquecendo totalmente desse tópico, peço até desculpa aos que responderam x_x no meio tempo eu não consegui criar esse sistema, no lugar fiz um onde sempre que você acerta a fraqueza do inimigo você aplica um determinado estado negativo(parece simples, mas precisou de um pouco de criatividade pra fazer por eventos XD). Mas ficaria feliz se alguem conseguisse me dizer como fazer essa ideia inicial que tive por eventos!

@speed

não existe essa opção euheuhuheuhe

@shiro

quanto tempo<3
Então, a ideia era: sempre que você acertasse um crítico no inimigo você ganhasse um turno adicional. então seria isso mesmo.
---- edit

Se entendi bem oq disse, então na verdade não seria uma habilidade predefinida não. Você simplesmente ganharia uma ação adicional para fazer oq quisesse(usar itens, habilidades, atacar etc)

Bom, eu cheguei a um resultado que talvez sirva, ou ao menos possa ser um caminho para chegares
onde quer. Tu pode adicionar esse scriptzinho (que é só uma pequena modificação em um método do
Game_Battler):


class Game_Battler < Game_BattlerBase
  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables)
    value *= item_element_rate(user, item)
    value *= pdr if item.physical?
    value *= mdr if item.magical?
    value *= rec if item.damage.recover?
    if @result.critical
      value = apply_critical(value)
      user.add_state(n)
    end
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
    @result.make_damage(value.to_i, item)
  end
end


Onde o n na linha "user.add_state(n)" é o ID de um estado que será adicionado ao personagem quando ele
causar um ataque crítico. No estado, configure-o assim:


Spoiler
[close]

O que vai acontecer é que, ao acertar um dano crítico, o personagem ganhará esse estado. Por sua vez
esse estado vai aumentar em 100% (ou seja, duplicar) a quantidade de ações desse personagem por
turno. Porém, esse buff só fará efeito no próximo turno. E ao fim do próximo turno, esse estado será
removido caso não acerte crítico novamente.
Talvez seja melhor do que acrescentar uma nova ação instantaneamente, vez que se o cara acertar
um crítico na segunda ação ele teria direito a uma terceira. Talvez ficaria meio overpower em uma
build focada em porcentagem de crítico (se essa build for possível em seu projeto).

10/01/2016 às 20:06 #6 Última edição: 10/01/2016 às 20:08 por eros2
Obrigado gerar! Irei testá-lo. Apesar de já ter feito o projeto com outras mecânicas em mente, já que não tinha conseguido fazer essa nesse meio tempo, posso pensar na possibilidade de adicionar essa ideia novamente com esse seu script, mas mesmo que eu ainda não use, pode servir pra uma outra pessoa que queira explorar um sistema parecido! Novamente, muito obrigado!

- edit

"Talvez seja melhor do que acrescentar uma nova ação instantaneamente, vez que se o cara acertar
um crítico na segunda ação ele teria direito a uma terceira."

O ideal era que ela fosse acrescentada instantaneamente, mas não pudesse ser repetida no mesmo turno pelo mesmo personagem. Em outras palavras, se vc acertasse o critico uma vez, ganharia uma ação adicional, mas se durante essa ação adicional vc acertasse outro critico nada aconteceria além do dano.

Eu mesmo achei bem interessante essa ideia de uma nova ação por turno, me lembro um certo
personagem de Fire Emblem que tinha essa habilidade e nunca consegui matá-lo pois ele fazia
quatro, cinco ações ;-;
Enfim, olhando mais um pouco aqui, acho que tem como fazer exatamente o que tu quer, só
que tem um problema: na batalha padrão, os danos são executados após você finalizar todas
as ações, logo não teria como adicionar uma ação no mesmo turno, a menos que você usasse
um script... do Yanfly acho, que faz com que as ações ocorram assim que você escolha-as.

De qualquer forma, boa sorte. Anseio a demo do projeto teu lá!
  :wow:

Eu uso esse sistema do yanfly, free turn o nome XD ehuuehuehhueuheeuheuh Obrigado gerar! Eu tinha lançado uma demo inicial só pra recolher logo uns feedbacks, mas ja tirei ela. Espero lançar a definitiva em breve!

vlw!

Tem algum tempo mesmo que não apareço por aqui, perdi muita coisa será?  :XD:

Com uma fórmula de dano modificada você consegue obter o flag de crítico quase que ao mesmo tempo em que o dano é calculado.

Ex:
(a.atk * 4 - b.def * 2) if (v[1] = b.result.critical) || true


A ideia é basicamente se valer do fato de que a flag de crítico é definida antes do cálculo do dano e usar uma condição que sempre será verdadeira para obter seu valor em uma variável (no exemplo é 1) dentro da própria condição.
A seguir você pode adicionar um evento comum chamado por esta habilidade. Sempre que a variável escolhida for diferente de zero (ela poderá assumir 0 ou true) o crítico no inimigo ocorreu.

Um tempo atrás alguém pediu a mesma coisa lá na MRM por sinal.

o/

Muito obrigado Shiro! É incrível como um pouquinho de conhecimento em programação pode fazer a diferença! Sinto que não precisaria fazer tantas gambiarras se estudasse um pouco mais de scripts! Muito obrigado!

Also, podem trancar o tópico! A dúvida foi resolvida ^^