Kampfsystem - Bastelschublade/trinity GitHub Wiki

Für den Anfang, sollen die stats, so wie das gesamte Kampfsystem erstmal sehr einfach gehalten werden. Nichts desto trotz, sollten einige Werte veränderbar sein, sonst würde jeder Kampf gleich verlaufen. Um flexibel zu bleiben und die Werte von überall aus dem Spiel dynamisch zu verändern (Items, Buffs, Umwelt etc.. ) wurde die Stats Klasse eingeführt (TODO: link zu Stats.gd), von der jede Kreatur eine Instanz in .stats hältrt. Jede Stats Instanz enthält zwei Dictionaries:

  • stats.base enthält die Basiswerte, die vor Spielbeginn statisch definiert werden
  • stats.current enthält die aktuellen Werte, die sich aus den basiswerten und der summe der stats von equip buffs etc. ergeben. stats.update() wird aufgerufen, wenn buffs equpip oder umwelteinflüsse sich ändern und stats.current wird neu berechnet.

Bisher implementierte Stats:

  • health in diesem context max health nicht aktuelles leben (player.stats.current.health != player.current_health)
  • power max power (wie bei health)
  • speed Angriffsgeschwindigkeit: Zeit zwischen angriffen = 1/speed (in s)
  • attack Hit chance: 0 bis 1 (100%)
  • shoot Hit chance für range angriffe
  • block Chance einen angriff zu blocken/ausweichen/parrieren, während block aktiv ist
  • armor Wert wird vom eingehenden schaden abgezogen

Nicht implementiert

  • Schaden wird direkt in der Waffe berechnet
  • Range wird ebenfalls von der waffe bezogen