Kebap / krrrcks-mudlet

Mudlet Skripte für MorgenGrauen
http://mg.mud.de
4 stars 4 forks source link

Falscher Report, wenn Quests fehlen #58

Open Kebap opened 4 years ago

Kebap commented 4 years ago

Wenn man Konzentration verbraucht, wird das nicht aktualisiert! Das ist auch so erwartet, denn man braucht dazu einige Quests.

Das bewirkt aber die falsche Anzeige von immer voller Konzentration! Diesen falschen Eindruck wollen wir doch lieber verhindern!

Siehe auch:

Folgende Reports werden derzeit eingeschränkt:

  1. Aktuelle und maximale Lebenspunkte - immer möglich
  2. Aktuelle Konzentrationspunkte - durch Quest: Hilf den Gnarfen
  3. Vergiftung - durch Quest: Katzenjammer
  4. Vorsicht - durch Quest: Schrat kann nicht einschlafen
  5. Fluchtrichtung - erst als Seher

Problematisch scheinen 3 und 5 nicht, da sie in der GUI leer bleiben können und nicht erwartet werden. Gleiches gilt für 4, wobei dies zusätzlich durch das Spielerkommando ausgewertet werden könnte. Kann aber auch vom Spiel verändert werden, dann wäre die GUI falsch. Bleibt Punkt 2, der Report der aktuellen Konzentration, der quasi durchgehend falsche Werte anzeigt, außer man braucht ihn nicht.

GMCP liefert derzeit auch für neue Spieler folgende Daten:

lua gmcp.MG.char
{
  vitals = {
    poison = 0,
    hp = 66,
    sp = 50
  },
  maxvitals = {
    max_poison = 10,
    max_hp = 66,
    max_sp = 50
  }, 
  wimpy = {
    wimpy_dir = 0,
    wimpy = 20
  },
}

Eine mögliche Lösung wäre, vom Spiel Konzentration als -1 zu senden. Das bedeutet: Der aktuelle Wert ist unbekannt, bitte erst die Quest lösen. Könnte dann in GUI entsprechend angezeigt oder ausgeblendet werden. Bestenfalls mit Hinweis auf die zu lösenden Quests.

Hinweis: Die Übertragung der maximalen Konzentrationspunkte per GMCP erfolgt derzeit auch vor Abschluss der richtigen Quest. Das bewirkt, dass nach Erhöhung des Maximums dieses aktualisiert wird. Dadurch fällt nun plötzlich die Anzeige unter 100% (und aktualisiert sich weiterhin nicht), nämlich auf "Aktuell: alter Wert" von "Maximum: neuer Wert"... Ob das so geplant war?

Kebap commented 4 years ago

Workaround für Punkt 2: Beim ersten Empfang nur Max in GUI einblenden. Erst ab zweiten Empfang auf Aktuelle Punkte und Maximale Punkte ausweiten.

Kebap commented 3 years ago

So könnte der Workaround aussehen..

function zeigeVitaldaten()

  -- GMCP Vitaldaten merken

  ME.lp = gmcp.MG.char.vitals.hp
  ME.lp_max = gmcp.MG.char.maxvitals.max_hp
  ME.kp = gmcp.MG.char.vitals.sp
  ME.kp_max = gmcp.MG.char.maxvitals.max_sp

  -- Werte der Konzentration aktualisieren

  -- Haben wir ueberhaupt Report fuer Konzentration?
  if ME.kp_report then
      -- OK, dann kann man den aktuellen Wert anzeigen
      GUI.kp_anzeige:setValue(ME.kp, ME.kp_max, 
          "<b> " .. ME.kp .. "/" .. ME.kp_max .. "</b> ")
  elseif ME.kp_alt then
    -- Immerhin kennen wir einen alten Wert 
    if ME.kp_alt ~= ME.kp then
      -- Der neue Wert hat sich verändert, also haben wir Report
      ME.kp_report = true
      GUI.kp_anzeige:setValue(ME.kp, ME.kp_max, 
          "<b> " .. ME.kp .. "/" .. ME.kp_max .. "</b> ")
    else
      -- Kein Report und kein neuer Wert, also keine Anzeige möglich
      GUI.kp_anzeige:setValue(ME.kp_max, ME.kp_max, 
          "<b> " .. ME.kp_max .. " max.</b> ")
    end
  else
    -- Beim ersten Mal gibt es nicht mal einen alten Wert
    ME.kp_alt = ME.kp
    GUI.kp_anzeige:setValue(ME.kp_max, ME.kp_max, 
        "<b> " .. ME.kp_max .. " max.</b> ")
  end

  -- Werte des Lebensbalken aktualisieren
Kebap commented 3 years ago

@zesstra hatte vorgeschlagen, Report aus MG anders auszugestalten, damit eindeutig klar wird, wann Report fehlt. Unklar, ob/wann dieser Fix eingespielt wird, und o.g. Workaround überflüssig machen würde.

zesstra commented 3 years ago

Wenn ich mich richtig erinnere, war der Plan, den Maximalwert auch nur zu senden, wenn die Questvoraussetzungen existieren. Das muss ich mir noch anschauen, da war noch was nicht richtig an dem Patch.

Kebap commented 3 years ago

OK, das hatte ich bisher anders erinnert. Da ging es immer nur um den aktuellen Wert. MPA Archiv seit 2019 erfolglos durchsucht mit Stichworten GMCP, Report, Konzentration...

Aber ok, dann wird die Lösung tatsächlich noch leichter: Einfach gar keinen Konzentrationsbalken anzeigen, solange der Report fehlt. Nur Lebenspunkte.

Kebap commented 3 years ago

Hier finden sich einige Details: https://mg.mud.de/gerrit/c/mudlib-public/+/856

Ergebnis: Es soll gar kein MG.char.vitals.sp (und MG.char.vitals.max_sp) gesendet werden, solange Quests fehlen

zesstra commented 3 years ago

An sich ist es konsequent, keines von beiden zu senden, aber wenns die Sache spürbar erleichern sollte, können wir MG.char.vitals.max_sp auch senden.

Kebap commented 3 years ago

die Sache spürbar erleichern

Wäre es möglich, einfach ein MG.char.reports zu füllen mit hp, sp, wimpy, poison, etc. je nachdem, was der Charakter schon freigeschaltet hat?