• Anmelden

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

1

Montag, 4. Juli 2011, 21:59

HP/MP- Regeneration bei Angriffen

Guten Abend zusammen,

Ich suche einen Skript, bei dem ein Held bei erfolgreichen normalen Angriffen (keine Skills also)
einen bestimmten Prozentsatz seiner HP oder MP regeneriert.
Ich habe bereits in der Suche geforscht, bin aber nicht fündig geworden.

Ich hatte mir das in etwa so vorgestellt:
Ich erstelle zwei neue Elemente (in meinem Projekt wären es dann die Elemente #013 und #014).
#013 = HP Regeneration
#014 = MP Regeneration
Ich statte eine Waffe mit einem der beiden Elementen aus und, wenn der Träger erfolgreich Schaden
mit der Waffe anrichtet, wird ein bestimmter Prozentsatz HP bzw. MP regeneriert (dachte da so an 2-4%).

Wenn es möglich wäre würde ich auch gerne die HP und MP Regeneration verknüpfen wollen, sprich
das eine Waffe beide Elemente besitzen kann und dadurch HP und MP regeneriert werden.
Außerdem wäre es schön, wenn man das ganze nicht so langweilig gestaltet.
Sprich, dass die Change 4% zu regenerieren kleiner ist als 2% zu regenerieren.
Etwa in diesem Verhältnis:
2% = 3/8
3% = 3/8
4% = 1/4

Vielleicht kennt jemand solch einen Skript oder kann mir den skripten.
Wäre dem Autor unendlich dankbar :)
Ich benutze folgenden Kampfskript:
RTAB-New Battle Script | RPG Studio

MfG
Mitsch93

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

2

Dienstag, 5. Juli 2011, 14:45

Huhu,

hab mich mal daran versucht, hoffe es ist so in Ordnung:
Anmerkungen:
- Das Script sollte unter dem Kampfsystemscript eingefügt werden, es ist auf das RTAB ausgelegt und funktioniert nicht mit dem Standardkampfsystem.
- Das Script wurde um 2 Punkte ergänzt, die nicht angesprochen waren, ich allerdings auch nicht sicher war ob ich sie herausnehmen sollte...
Spoiler: Änderungen

- Die Wirkung hat eine Varianz von 15%. 85% bzw. 115% sollten dabei deutlich seltener auftreten als 100%.

- Zusätzlich hängt die regenerierte Menge von der Affinität des getroffenen Ziels gegenüber diesem Element ab: Die Schadensveränderung verhält sich dabei genauso wie bei einem entsprechenden Angriffszauber. (C) sollte demnach der normalen Wirkung entsprechen, (E) die Wirkung annullieren oder (F) diese ins Gegenteil umkehren.

- Des weiteren werden im Script die beiden "Regenerations-Elemente" aus der Schadensberechnung ausgeschlossen. Gegner und Actors werden also keinen doppelten Schaden durch Angriffe erleiden weil sie als "anfällig" gegenüber einem der Regenerationselemente definiert wurden. Dies gilt auch für Skills und Items, die ansich nichts mit dem Regenerationseffekt zu tun haben.
zum Lesen den Text mit der Maus markieren

Spoiler: Script

Ruby Quellcode

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
class Game_Battler
 
  HP_DRAW_ELEMENT = 13
  SP_DRAW_ELEMENT = 14
 
  #--------------------------------------------------------------------------
  # * Calculating Element Correction
  #     element_set : element
  #--------------------------------------------------------------------------
  unless method_defined?(:elements_correct_ILC05072011)
    alias_method(:elements_correct_ILC05072011, :elements_correct) 
  end
  def elements_correct(element_set)
    # HP-/SP-Regenerationseffekte betreffen nicht mehr den verursachten Schaden:
    element_set = element_set.dup
    element_set.delete(HP_DRAW_ELEMENT)
    element_set.delete(SP_DRAW_ELEMENT)
    return elements_correct_ILC05072011(element_set)
  end
 
 
  #--------------------------------------------------------------------------
  # * HP-/SP-Wiederherstellung:
  #--------------------------------------------------------------------------  
  def hp_restoration_effect(attack_target)
    # Berechnung der HP-Regeneration
    case rand(8)
    when 0..1 then base = 4
    when 2..4 then base = 3
    when 5..7 then base = 2
    end
    variance = 85 + rand(16) + rand(16)
    effect = base * self.maxhp * variance
    effect *= attack_target.elements_correct_ILC05072011([HP_DRAW_ELEMENT])
    effect /= 1000000
    # Setze Regeneration fest:
    self.hp -= -effect
    self.damage["restoration_effect"] = -effect
  end
 
  def sp_restoration_effect(attack_target)
    # Berechnung der SP-Regeneration
    case rand(8)
    when 0..1 then base = 4
    when 2..4 then base = 3
    when 5..7 then base = 2
    end
    variance = 85 + rand(16) + rand(16) 
    effect = base * self.maxsp * variance
    effect *= attack_target.elements_correct_ILC05072011([SP_DRAW_ELEMENT])
    effect /= 1000000
    # Setze Regeneration fest:
    self.sp -= -effect
    self.damage_sp["restoration_effect"] = -effect
  end
 
 
  #--------------------------------------------------------------------------
  # * Applying Normal Attack Effects
  #     attacker : battler
  #--------------------------------------------------------------------------
  unless method_defined?(:attack_effect_ILC05072011)
    alias_method(:attack_effect_ILC05072011, :attack_effect) 
  end
  def attack_effect(attacker)
    attack_effect_ILC05072011(attacker)
    # Löse Regenerationseffekte aus wenn Schaden verursacht wurde:
    damage = self.damage[attacker]
    if damage.is_a?(Integer) and damage > 0
      if attacker.element_set.include?(HP_DRAW_ELEMENT)
        attacker.hp_restoration_effect(self)
      end
      if attacker.element_set.include?(SP_DRAW_ELEMENT)
        attacker.sp_restoration_effect(self)
      end
    end
  end
end
 
 
class Scene_Battle
 
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 5 : damage display)
  #--------------------------------------------------------------------------
  unless method_defined?(:update_phase4_step5_ILC05072011)
    alias_method(:update_phase4_step5_ILC05072011, :update_phase4_step5) 
  end
  def update_phase4_step5(battler)
    if battler.damage.has_key?("restoration_effect") or
       battler.damage_sp.has_key?("restoration_effect")
      battler.damage_pop["restoration_effect"] = true
    end
    update_phase4_step5_ILC05072011(battler)
  end
end
zum Lesen den Text mit der Maus markieren

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Irrlicht« (5. Juli 2011, 21:19)


Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

3

Dienstag, 5. Juli 2011, 16:53

Danke für die schnelle Antwort :)

Hab es gerade mal getestet, allerdings gibts da noch eine kleine Macke:
Die Regeneration wird nur bei Angriffen, die verfehlen aktiviert.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

4

Dienstag, 5. Juli 2011, 21:19

Ups, kleiner Fehler beim Umbau^^
Ist korrigiert.

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

Social Bookmarks