Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

259 connectés actuellement

30732101 visiteurs
depuis l'ouverture

2079 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Kingdom Ultimate

RPG Maker VX

Hellsoft

Zarok

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [RPG Maker VX Ace] Infliger des dégats de statuts fixes


Knighty - posté le 17/01/2023 à 22:47:10 (275 messages postés)

❤ 0

Domaine concerné: Script / Eventmaking
Logiciel utilisé: RPG Maker VX Ace

Bien le bonsoir !

Je suis en train, depuis quelques jours, de m'arracher les cheveux sur un problème de programmation et, un peu en désespoir de cause, je viens demander de l'aide.

Pour faire simple, je n'aime pas du tout le fonctionnement de l'altération d'état "Poison", sur RM, qui inflige des dégats basés sur le pourcentage de PVs max des ennemis, ce qui est fonctionnel sur les ennemis de base et les héros, mais qui ne fonctionne pas du tout contre les boss. Du coup, j'aimerai beaucoup avoir un fonctionnement alternatif, qui se baserait sur les dégats de celui qui a infligé l'altération poison.

(Dans l'idée, ça ne concerne qu'un seul de mes personnages, le seul à pouvoir infliger l'altération poison. Si c'est des ennemis qui utilisent le poison, je peux me contenter d'un système de pourcentage classique)

Mais bon, vu que RM, c'est bien quand tu restes dans les clous, mais ça devient un enfer quand tu essaies d'en sortir, ça fait plusieurs jours que je fais du bricolage pour essayer de faire fonctionner ça.

-> Le raisonnement de base sur lequel je suis parti, un peu brut de décoffrage, c'est que je pouvais déclencher un évènement commun à chaque tour de combat qui lui, vérifierai pour chaque ennemi si il a l'altération poison. Si c'est le cas, lancement d'une compétence visant cet ennemi et infligeant les dégats. Le souci principal, c'est qu'une compétence doit forcément avoir un lanceur, et que bah si le héros (ou l'ennemi, parce que j'ai essayé aussi une version ou l'ennemi se lance une compétence à lui-même et le calcul des dégats se fait à partir d'une variable) est incapacité d'une quelcoque manière (KO, Paralysie, etc.) ça ne fonctionne pas. Et l'option "Forcer" n'outrepasse pas les altérations empêchant complètement d'agir. Idem pour la commande "BattleManager.force_action()" avec laquelle j'ai un peu bricolé.

-> La deuxième idée sur laquelle je suis partie, c'est de retirer les dégats avec une variable (avec pareil, une vérification d'ennemi l'un après l'autre). Le problème ici, c'est que si les dégats sont bien calculés, mon script de combat n'affiche pas de popup de dégats quand on retire des PVs manuellement (c'est le Tankentai VX Ace, pour info).
Et bon, ayant essayé de déclencher manuellement le popup, j'ai un peu déchanté étant donné mes connaissances en script proche du néant doublé au fait que la fonction qui déclenchait l'apparition des popups demande plusieurs variables instanciées. Bref, j'ai vite déchanté devant la difficulté de la tâche.

-> J'ai essayé (dans la douleur) le script Lunatic Status de Yanfly (https://yanflychannel.wordpress.com/rmvxa/battle-scripts/lunatic-states/) pour déclencher les dégats directement depuis l'altération d'état (ce qui est beaucoup plus propre), mais j'ai essayé chacune des deux versions par ce script, les mêmes problèmes se posent (ne court-circuite pas les altérations blocantes ou pas de pop-up de dégats). Mais si il existe une solution par script, ça serait un bon endroit pour l'implémenter.

Bref, j'avoue être un peu en train de sécher, et d'essayer d'imaginer d'autres solutions de contournement foireuses (je commence à envisager l'idée d'avoir un ennemi caché dans chaque combat du jeu qui serait chargé de lancer la compétence pour être sûr qu'il ne soit pas incapacité... du pur bricolage complétement foireux, donc xD).

Est-ce qu'une âme charitable aurait une idée de comment je pourrai résoudre ce problème d'une façon ou d'une autre sans en arriver à ce genre d'extrémité ? Je lui en serait très reconnaissant.


Ephy - posté le 18/01/2023 à 06:47:50 (30100 messages postés) - honor

❤ 0

[BIG SHOT]

Si tu veux te débarrasser des pourcentages sur les boss tu peux utiliser la solution de la facilité du pauvre.
Tu crées autant d'état poison que de boss + un pour les ennemis lambdas et les héros et tu donne à la compétence poison de ton héros la possibilité d'infliger tous ces états à la fois.
Après, pour chaque boss, tu les immunise à tous les poisons sauf celui qui le concerne. Comme ça tu peux régler au dégât près les dégâts infligés par le poison sur chaque boss.
Pour les ennemis idem, tu les immunise à tous les poisons de boss sauf celui de base en pourcentage.
Et pour les héros, tu donne juste aux compétence poison ennemies le statut poison de base.

Ca fait pas exactement ce que tu veux avec des dégâts proportionnels à la puissance du héros mais c'est une façon simple pour contourner le problème des pourcentages.



Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Knighty - posté le 18/01/2023 à 08:10:47 (275 messages postés)

❤ 0

C'est marrant, parce que c'est la solution que j'utilise actuellement.

J'ai deux altérations : Poison et Toxine, l'une qui enlève 10% des PVs et qui n'est efficace que contre les ennemis classiques, et l'autre qui enlève 3% des PVs et qui n'est efficace que contre les boss. Mais c'est un peu une rustine, et j'aimerai bien que le joueur puisse avoir plus de contrôle sur les dégats qu'il infligera avec le poison.

En réfléchissant un peu hier soir, j'ai envisagé un système ou les ennemis ne peuvent avoir qu'une seule altération d'état à la fois sur eux, mais ça me paraît un peu limitant. Du coup, ça serait top si je pouvais faire fonctionner une de ces deux méthodes.


cortez - posté le 18/01/2023 à 18:35:52 (524 messages postés)

❤ 1

Voilà j'ai trouvé un contournement :

Il y a des restrictions cependant.
Le script est prévu pour avoir 4 personnages (tu peux en avoir plus je t'explique après) dans la base de donnée qui ont la capacité d'avoir des sorts de poison (ou des armes empoisonnées)
Cela suppose que tu ais 4 statuts de poison différent (1 attribué aux compétences propres a chaque personnage.
Astuce : Si 2 personnages ne peuvent pas être en même temps dans l'équipe (lié à l'histoire) ces 2 personnages peuvent avoir le même numéro de poison. (il ne faut pas qu'ils soient en même temps dans l'équipe)

Exemple : Basil est un personnage qui peux empoisonner l'ennemi il a donc le statut poison_1 réservé pour lui.
Si je décide que Alice dispose d'un sort de poison, elle sera le 2e personnage du jeu a avoir du poison, elle utilisera le statut poison_2
Attention aux objets et aux sort de bien attribuer le bon statut.

Les statuts aurons le texte suivant dans la boite "note"
Pour "poison_1" qui utilise l'attaque du lanceur pour infliger des dégats de poison (10% de l'attaque du lanceur en dommage sur la cible chaque tour.)
<apply effect: ATK store_1 10%>
<close effect: poison_1 >

Je stocke les valeurs des personnages au moment ou le statut poison est appliqué a la cible dans des variables (201 à 204)
Si tu as besoin de plus de 4 personnages different pouvant infliger du poison, il te suffit d'ajouter 2 status (copie colle les ligne de script des status 15 et 16 en changeant les valeurs

STORE_5 pour le 5e personnage

Portion de code : Tout sélectionner

1
when /(.*)[ ]STORE_4[ ](\d+)([%&#65285;])/i


variable 205 pour le 5e personnage

Portion de code : Tout sélectionner

1
$game_variables[204]=(dmg * $2.to_i * 0.01).to_i



POISON_5 pour le 5e personnage

Portion de code : Tout sélectionner

1
when /POISON_4/i


variable 205 pour le 5e personnage

Portion de code : Tout sélectionner

1
dmg = $game_variables[204]




Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
#==============================================================================
# 
# ▼ Yanfly Engine Ace - Lunatic States Package - Punishment v1.01
# -- Last Updated: 2011.12.15
# -- Level: Lunatic
# -- Requires: YEA - Lunatic States v1.00+
# 
#==============================================================================
 
$imported = {} if $imported.nil?
$imported["YEA-LSP-Punishment"] = true
 
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.31 - Bug Fixed: Error with battle popups not showing.
# 2011.12.15 - Started Script and Finished.
# 
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This is a script for Lunatic States Package Effects with punishment themed
# effects. Included in it are effects that make battlers undead (take damage
# whenever they are healed), make battlers whenever they execute physical or
# magical attacks, make battlers take damage based on the original caster of
# the state's stats, and an effect that heals the original caster of the state
# whenever the battler takes HP or MP damage.
# 
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
# 
# Install this script under YEA - Lunatic States. Then, proceed to use the
# proper effects notetags to apply the proper LSP Punishment item desired.
# Look within the script for more instructions on how to use each effect.
# 
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
# 
# This script requires YEA - Lunatic States v1.00+ to work. It must be placed
# under YEA - Lunatic States v1.00+ in the script listing.
# 
#==============================================================================
 
if $imported["YEA-LunaticStates"]
class Game_BattlerBase
  
  #--------------------------------------------------------------------------
  # ● Lunatic States Package Effects - Punishment
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  # These effects are centered around the theme of punishment. These effects
  # punish users for doing various aspects that may benefit them by harming
  # them in different ways.
  #--------------------------------------------------------------------------
  alias lunatic_state_extension_lsp1 lunatic_state_extension
  def lunatic_state_extension(effect, state, user, state_origin, log_window)
    case effect.upcase
    #----------------------------------------------------------------------
    # Punish Effect No.1: Undead HP
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Best used with react effect. This causes any HP healing done to become
    # reversed and deal HP damage to the healed target.
    # 
    # Recommended notetag:
    #   <react effect: undead hp>
    #----------------------------------------------------------------------
    when /UNDEAD HP/i
      return unless @result.hp_damage < 0
      @result.hp_damage *= -1
      @result.hp_drain *= -1
      
    #----------------------------------------------------------------------
    # Punish Effect No.2: Undead MP
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Best used with react effect. This causes any MP healing done to become
    # reversed and deal MP damage to the healed target.
    # 
    # Recommended notetag:
    #   <react effect: undead mp>
    #----------------------------------------------------------------------
    when /UNDEAD MP/i
      return unless @result.mp_damage < 0
      @result.mp_damage *= -1
      @result.mp_drain *= -1
      
    #----------------------------------------------------------------------
    # Punish Effect No.3: Physical Backfire
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Best used with while effect. Whenever the affected battler uses a
    # physical attack, that battler will take HP damage equal to its own
    # stats after finishing the current action. Battler cannot die from
    # this effect.
    # 
    # Recommended notetag:
    #   <while effect: physical backfire stat x%>
    # 
    # Replace "stat" with MAXHP, MAXMP, ATK, DEF, MAT, MDF, AGI, or LUK.
    # Replace x with the stat multiplier to affect damage dealt.
    #----------------------------------------------------------------------
    when /PHYSICAL BACKFIRE[ ](.*)[ ](\d+)([%%])/i
      return if user.current_action.nil?
      return unless user.current_action.item.physical?
      case $1.upcase
      when "MAXHP"; dmg = user.mhp
      when "MAXMP"; dmg = user.mmp
      when "ATK";   dmg = user.atk
      when "DEF";   dmg = user.def
      when "MAT";   dmg = user.mat
      when "MDF";   dmg = user.mdf
      when "AGI";   dmg = user.agi
      when "LUK";   dmg = user.luk
      else; return
      end
      dmg = (dmg * $2.to_i * 0.01).to_i
      if $imported["YEA-BattleEngine"] && dmg > 0
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_dmg], dmg.group)
        user.create_popup(text, "HP_DMG")
      end
      user.perform_damage_effect
      user.hp = [user.hp - dmg, 1].max
      
    #----------------------------------------------------------------------
    # Punish Effect No.4: Magical Backfire
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Best used with while effect. Whenever the affected battler uses a
    # magical attack, that battler will take HP damage equal to its own
    # stats after finishing the current action. Battler cannot die from
    # this effect.
    # 
    # Recommended notetag:
    #   <while effect: magical backfire stat x%>
    # 
    # Replace "stat" with MAXHP, MAXMP, ATK, DEF, MAT, MDF, AGI, or LUK.
    # Replace x with the stat multiplier to affect damage dealt.
    #----------------------------------------------------------------------
    when /MAGICAL BACKFIRE[ ](.*)[ ](\d+)([%%])/i
      return if user.current_action.nil?
      return unless user.current_action.item.magical?
      case $1.upcase
      when "MAXHP"; dmg = user.mhp
      when "MAXMP"; dmg = user.mmp
      when "ATK";   dmg = user.atk
      when "DEF";   dmg = user.def
      when "MAT";   dmg = user.mat
      when "MDF";   dmg = user.mdf
      when "AGI";   dmg = user.agi
      when "LUK";   dmg = user.luk
      else; return
      end
      dmg = (dmg * $2.to_i * 0.01).to_i
      if $imported["YEA-BattleEngine"] && dmg > 0
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_dmg], dmg.group)
        user.create_popup(text, "HP_DMG")
      end
      user.perform_damage_effect
      user.hp = [user.hp - dmg, 1].max
      
    #----------------------------------------------------------------------
    # Punish Effect No.5: Stat Slip Damage
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Best used with close effect. At the end of the turn, the affected
    # battler will take HP slip damage based on the stat of the of one who
    # casted the status effect onto the battler. Battler cannot die from
    # this effect.
    # 
    # Recommended notetag:
    #   <close effect: stat slip damage x%>
    # 
    # Replace "stat" with MAXHP, MAXMP, ATK, DEF, MAT, MDF, AGI, or LUK.
    # Replace x with the stat multiplier to affect damage dealt.
    #----------------------------------------------------------------------
    when /(.*)[ ]SLIP DAMAGE[ ](\d+)([%%])/i
      case $1.upcase
      when "MAXHP"; dmg = state_origin.mhp
      when "MAXMP"; dmg = state_origin.mmp
      when "ATK";   dmg = state_origin.atk
      when "DEF";   dmg = state_origin.def
      when "MAT";   dmg = state_origin.mat
      when "MDF";   dmg = state_origin.mdf
      when "AGI";   dmg = state_origin.agi
      when "LUK";   dmg = state_origin.luk
      else; return
      end
      dmg = (dmg * $2.to_i * 0.01).to_i
      if $imported["YEA-BattleEngine"] && dmg > 0
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_dmg], dmg.group)
        user.create_popup(text, "HP_DMG")
      end
      user.perform_damage_effect
      user.hp = [user.hp - dmg, 1].max
      
    #----------------------------------------------------------------------
    # Punish Effect No.6: Stat Slip Heal
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Best used with close effect. At the end of the turn, the affected
    # battler will heal HP  based on the stat of the of one who casted the
    # status effect onto the battler.
    # 
    # Recommended notetag:
    #   <close effect: stat slip heal x%>
    # 
    # Replace "stat" with MAXHP, MAXMP, ATK, DEF, MAT, MDF, AGI, or LUK.
    # Replace x with the stat multiplier to affect damage dealt.
    #----------------------------------------------------------------------
    when /(.*)[ ]SLIP HEAL[ ](\d+)([%%])/i
      case $1.upcase
      when "MAXHP"; dmg = state_origin.mhp
      when "MAXMP"; dmg = state_origin.mmp
      when "ATK";   dmg = state_origin.atk
      when "DEF";   dmg = state_origin.def
      when "MAT";   dmg = state_origin.mat
      when "MDF";   dmg = state_origin.mdf
      when "AGI";   dmg = state_origin.agi
      when "LUK";   dmg = state_origin.luk
      else; return
      end
      dmg = (dmg * $2.to_i * 0.01).to_i
      if $imported["YEA-BattleEngine"] && dmg > 0
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_heal], dmg.group)
        user.create_popup(text, "HP_HEAL")
      end
      user.perform_damage_effect
      user.hp += dmg
      
    #----------------------------------------------------------------------
    # Punish Effect No.7: Drain HP
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Best used with shock effect. Whenever user takes HP damage, the
    # original caster of the state will heal HP based on HP damage dealt.
    # 
    # Recommended notetag:
    #   <shock effect: drain hp x%>
    #----------------------------------------------------------------------
    when /DRAIN HP[ ](\d+)([%%])/i
      return unless @result.hp_damage > 0
      dmg = (@result.hp_damage * $1.to_i * 0.01).to_i
      if $imported["YEA-BattleEngine"] && dmg > 0
        Sound.play_recovery
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_heal], dmg.group)
        user.create_popup(text, "HP_HEAL")
      end
      state_origin.hp += dmg
      
    #----------------------------------------------------------------------
    # Punish Effect No.8: Drain MP
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Best used with shock effect. Whenever user takes MP damage, the
    # original caster of the state will heal MP based on MP damage dealt.
    # 
    # Recommended notetag:
    #   <shock effect: drain mp x%>
    #----------------------------------------------------------------------
    when /DRAIN MP[ ](\d+)([%%])/i
      return unless @result.mp_damage > 0
      dmg = (@result.mp_damage * $1.to_i * 0.01).to_i
      if $imported["YEA-BattleEngine"] && dmg > 0
        Sound.play_recovery
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:mp_heal], dmg.group)
        user.create_popup(text, "MP_HEAL")
      end
      state_origin.mp += dmg
      
    #----------------------------------------------------------------------
    # Punish Effect No.9: Conservation de la stat du personnage 1 ayant lancé
    #                     le statut
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Recommended notetag:
    #   <apply effect: stat store_1 x%>
    # Remplace "stat" par l'une des valeurs : MAXHP,MAXMP,ATK,...,LUK
    #----------------------------------------------------------------------
    when /(.*)[ ]STORE_1[ ](\d+)([%%])/i
      case $1.upcase
      when "MAXHP"; dmg = state_origin.mhp
      when "MAXMP"; dmg = state_origin.mmp
      when "ATK";   dmg = state_origin.atk
      when "DEF";   dmg = state_origin.def
      when "MAT";   dmg = state_origin.mat
      when "MDF";   dmg = state_origin.mdf
      when "AGI";   dmg = state_origin.agi
      when "LUK";   dmg = state_origin.luk
      else; return
      end
    $game_variables[201]=(dmg * $2.to_i * 0.01).to_i
 
    #----------------------------------------------------------------------
    # Punish Effect No.10: Applique les dégats en fonction de la variable stockée
    #                      par l'effet 9 (personnage 1)
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Recommended notetag:
    #   <close effect: poison_1 >
    #----------------------------------------------------------------------
    when /POISON_1/i
      dmg = $game_variables[201]
      if $imported["YEA-BattleEngine"] && dmg > 0
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_dmg], dmg.group)
        user.create_popup(text, "POISON")
      end
      user.perform_damage_effect
      user.hp -= dmg
 
    #----------------------------------------------------------------------
    # Punish Effect No.11: Conservation de la stat du personnage 2 ayant lancé
    #                     le statut
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Recommended notetag:
    #   <apply effect: stat store_2 x%>
    # Remplace "stat" par l'une des valeurs : MAXHP,MAXMP,ATK,...,LUK
    #----------------------------------------------------------------------
    when /(.*)[ ]STORE_2[ ](\d+)([%%])/i
      case $1.upcase
      when "MAXHP"; dmg = state_origin.mhp
      when "MAXMP"; dmg = state_origin.mmp
      when "ATK";   dmg = state_origin.atk
      when "DEF";   dmg = state_origin.def
      when "MAT";   dmg = state_origin.mat
      when "MDF";   dmg = state_origin.mdf
      when "AGI";   dmg = state_origin.agi
      when "LUK";   dmg = state_origin.luk
      else; return
      end
    $game_variables[202]=(dmg * $2.to_i * 0.01).to_i
 
    #----------------------------------------------------------------------
    # Punish Effect No.12: Applique les dégats en fonction de la variable stockée
    #                      par l'effet 11 (personnage 2)
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Recommended notetag:
    #   <close effect: poison_2 >
    #----------------------------------------------------------------------
    when /POISON_2/i
      dmg = $game_variables[202]
      if $imported["YEA-BattleEngine"] && dmg > 0
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_dmg], dmg.group)
        user.create_popup(text, "POISON")
      end
      user.perform_damage_effect
      user.hp -= dmg
    #----------------------------------------------------------------------
    # Punish Effect No.13: Conservation de la stat du personnage 3 ayant lancé
    #                     le statut
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Recommended notetag:
    #   <apply effect: stat store_3 x%>
    # Remplace "stat" par l'une des valeurs : MAXHP,MAXMP,ATK,...,LUK
    #----------------------------------------------------------------------
    when /(.*)[ ]STORE_3[ ](\d+)([%%])/i
      case $1.upcase
      when "MAXHP"; dmg = state_origin.mhp
      when "MAXMP"; dmg = state_origin.mmp
      when "ATK";   dmg = state_origin.atk
      when "DEF";   dmg = state_origin.def
      when "MAT";   dmg = state_origin.mat
      when "MDF";   dmg = state_origin.mdf
      when "AGI";   dmg = state_origin.agi
      when "LUK";   dmg = state_origin.luk
      else; return
      end
    $game_variables[203]=(dmg * $2.to_i * 0.01).to_i
    #----------------------------------------------------------------------
    # Punish Effect No.14: Applique les dégats en fonction de la variable stockée
    #                      par l'effet 13 (personnage 3)
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Recommended notetag:
    #   <close effect: poison_3 >
    #----------------------------------------------------------------------
    when /POISON_3/i
      dmg = $game_variables[203]
      if $imported["YEA-BattleEngine"] && dmg > 0
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_dmg], dmg.group)
        user.create_popup(text, "POISON")
      end
      user.perform_damage_effect
      user.hp -= dmg
    #----------------------------------------------------------------------
    # Punish Effect No.15: Conservation de la stat du personnage 4 ayant lancé
    #                     le statut
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Recommended notetag:
    #   <apply effect: stat store_4 x%>
    # Remplace "stat" par l'une des valeurs : MAXHP,MAXMP,ATK,...,LUK
    #----------------------------------------------------------------------
    when /(.*)[ ]STORE_4[ ](\d+)([%%])/i
      case $1.upcase
      when "MAXHP"; dmg = state_origin.mhp
      when "MAXMP"; dmg = state_origin.mmp
      when "ATK";   dmg = state_origin.atk
      when "DEF";   dmg = state_origin.def
      when "MAT";   dmg = state_origin.mat
      when "MDF";   dmg = state_origin.mdf
      when "AGI";   dmg = state_origin.agi
      when "LUK";   dmg = state_origin.luk
      else; return
      end
    $game_variables[204]=(dmg * $2.to_i * 0.01).to_i
    #----------------------------------------------------------------------
    # Punish Effect No.16: Applique les dégats en fonction de la variable stockée
    #                      par l'effet 15 (personnage 4)
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Recommended notetag:
    #   <close effect: poison_4 >
    #----------------------------------------------------------------------
    when /POISON_4/i
      dmg = $game_variables[204]
      if $imported["YEA-BattleEngine"] && dmg > 0
        text = sprintf(YEA::BATTLE::POPUP_SETTINGS[:hp_dmg], dmg.group)
        user.create_popup(text, "POISON")
      end
      user.perform_damage_effect
      user.hp -= dmg
    #----------------------------------------------------------------------
    # Stop editting past this point.
    #----------------------------------------------------------------------
    else
      so = state_origin
      lw = log_window
      lunatic_state_extension_lsp1(effect, state, user, so, lw)
    end
  end
  
end # Game_BattlerBase
end # $imported["YEA-LunaticStates"]
 
#==============================================================================
# 
# ▼ End of File
# 
#==============================================================================




Knighty - posté le 18/01/2023 à 23:45:27 (275 messages postés)

❤ 0

@cortez

Merci beaucoup pour ta tentative, mais malheureusement, j'ai testé et il y a exactement le même problème qu'avec ma tentative sur le Lunatic States de Yanfly. N'utilisant pas le YEA-BattleEngine pour afficher les dommages, les PVs sont bien réduits, mais il n'y a pas de popup de dégats qui s'affiche.

Cela dit, ça reste une manière beaucoup plus propre que ce que j'ai fait (ma version récupérait directement l'attaque du personnage avec : temp = 2*$game_actors[5].atk au moment du calcul de dégats ^^.

Mais ouais, il reste encore ce problème de l'affichage de dégats. Peut-être qu'il y a un moyen de le faire avec mon script de combat, mais je n'ai pas trouvé.

Je te joins le script en question si tu as le courage de te plonger dedans (il est trop massif pour passer dans un message, donc bloc note + Swisstransfer ^^ : https://www.swisstransfer.com/d/99255aa9-1c82-452f-9cde-2224a4b54411)

J'ai cherché un peu du côté de "def set_damage_pop(target)" (ligne 2754), mais à voir, ce qui est passé dedans, c'est tout l'objet "target", qui contient beeeeeaucoup de données, donc pas sûr que ce soit utilisable tel quel.


cortez - posté le 19/01/2023 à 17:19:08 (524 messages postés)

❤ 0

Bon j'ai pas réussi en 3h...
Le plus gros problème c'est que le script Tankentai VX Ace est très mal écrit.
C'est dur de trouver les infos. (et a mon niveau s'est déjà pas facile de base.)

Je laisse les autres tenter leur chance...


Knighty - posté le 16/02/2023 à 22:21:16 (275 messages postés)

❤ 1

Bon, et bien je suis définitivement un gros sac. Apparament, il y a un script du Victor Engine de Ace qui fait exactement ce dont j'avais besoin... en 10x plus simple et parfaitement compatible avec le Tankentai.

https://victorenginescripts.wordpress.com/rpg-maker-vx-ace/custom-slip-effect/

Du coup, problème résolu ^^

Encore merci pour ta tentative @cortez

Index du forum > Entraide > [RESOLU] [RPG Maker VX Ace] Infliger des dégats de statuts fixes

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers