Fehler in der AOQML-Engine: "worst" bei Talentproben

Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Varthac » Mo 15 Jun, 2020 22:18

Servus zusammen,

mir ist beim Korrigieren einer GZB folgender Sachverhalt aufgefallen:

Wenn man bei einer Talentprobe auf mehrere Helden den "worst"-Helden abfragt, wird nur dann ein Held zurückgegeben, wenn dieser die Probe nicht bestanden hat. Haben alle Helden die Probe bestanden wird nicht etwa der Held ausgegeben, der am schlechtes performed hat, sondern ein leerer String.

Hier der relevante Code:

Code: Alles auswählen
<challenge talent="Sinnenschärfe" mod="+3" id="Sinnenschaerfeprobe" hero-quantity="2">
    <success>
      <p>Als <hero output="name" by-challenge="Sinnenschaerfeprobe" select="best" /> kurz innehält, <hero output="name" by-challenge="Sinnenschaerfeprobe" select="worst" /> anstupst und auf einen Schatten in der Wüste deutet.

      <q>Was meinst du? Sieht aus, als würde uns jemand folgen!</q> Nickend stimmt <hero output="name" by-challenge="Sinnenschaerfeprobe" select="worst" /> zu.</p>
      [... mehr Code ... ]
    </success>
    [... mehr Code ... ]
</challenge>


Bei meiner Dreiergruppe, die ich testweise benutzt habe, habe ich folgende Outputs bekommen:

2 Helden bestanden, 1 Held nicht bestanden:
Als Eidrik der Entdecker kurz innehält, Dennis der Dieb anstupst und auf einen Schatten in der Wüste deutet." Was meinst du? Sieht aus, als würde uns jemand folgen!" Nickend stimmt Dennis der Dieb zu.


3 Helden bestanden, 0 Helden nicht bestanden:
Als Dennis der Dieb kurz innehält, anstupst und auf einen Schatten in der Wüste deutet." Was meinst du? Sieht aus, als würde uns jemand folgen!" Nickend stimmt zu.


Der Vollständigkeit halber der Link zur GZB.

Meinem Verständnis nach sollte "worst" ja dennoch den Helden zurückgeben, der am schlechtesten abgeschnitten hat, selbst wenn die Probe gelungen ist. Sollte die aktuelle Umsetzung explizit so gewollt sein, kann der Thread hier natürlich dicht gemacht werden.


Gruß,

Varthac
Varthac
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 56
Registriert: Mi 29 Apr, 2020 01:38
Heldenname: Galrok, Sohn des Dwain

Re: Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Kekse » Mo 15 Jun, 2020 22:25

Ah, Mist, mir ist nur mal umgekehrt aufgefallen, dass bei nem failure kein "best" funktioniert und habe dann über das Talent selbst die Auswahl getroffen.
Helfe gerne bei der Erstellung von ZB und hinterlasse noch viel lieber meine Unterschrift zur Abnahme im Wiki!
Kekse
Feldwebel
Feldwebel
 
Beiträge: 502
Registriert: Mi 02 Sep, 2015 01:03
Heldenname: Iain Macfarland

Re: Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Tommek » Mo 15 Jun, 2020 22:48

Code: Alles auswählen
/**
   * holt den schlechtesten Helden der Probe
   *
   * @return int $held_id
   */
  public function getWorstHeroId() {
    if( empty($this->helden_nicht_bestanden) )
      return 0;
     
    $worst_hero_id = 0;
    $worst_fep = 1;
    foreach( $this->helden_nicht_bestanden as $hero_id => $fep ) {
      if( $fep < $worst_fep ) {
        $worst_fep = $fep;
        $worst_hero_id = $hero_id;
      }
    }
    return $worst_hero_id;
  }


Stimmt, ist bisher genau so angelegt. Wenn alle bestehen wird "0" zurückgegeben. Wie erwartet man das als Questschreiber? Was machen wir bei Gleichstand?
Benutzeravatar
Tommek
Site Admin
Site Admin
 
Beiträge: 7142
Registriert: Mi 17 Mai, 2006 22:40
Wohnort: Eodatia
Heldenname: Alrik Dormwald
Mitglied bei: Orkwacht

Re: Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Kekse » Mo 15 Jun, 2020 23:01

Tommek hat geschrieben:
Code: Alles auswählen
/**
   * holt den schlechtesten Helden der Probe
   *
   * @return int $held_id
   */
  public function getWorstHeroId() {
    if( empty($this->helden_nicht_bestanden) )
      return 0;
     
    $worst_hero_id = 0;
    $worst_fep = 1;
    foreach( $this->helden_nicht_bestanden as $hero_id => $fep ) {
      if( $fep < $worst_fep ) {
        $worst_fep = $fep;
        $worst_hero_id = $hero_id;
      }
    }
    return $worst_hero_id;
  }


Stimmt, ist bisher genau so angelegt. Wenn alle bestehen wird "0" zurückgegeben. Wie erwartet man das als Questschreiber? Was machen wir bei Gleichstand?


Ich fände ehrlich gesagt für ZBs sehr praktisch, wenn da der Char ausgegeben würde, der am wenigsten Punkte über hat. Wie wird denn bei positiven Proben bei Gleichstand entschieden? Ansonsten hätte ich nach Leiteigenschaft gesagt.
Helfe gerne bei der Erstellung von ZB und hinterlasse noch viel lieber meine Unterschrift zur Abnahme im Wiki!
Kekse
Feldwebel
Feldwebel
 
Beiträge: 502
Registriert: Mi 02 Sep, 2015 01:03
Heldenname: Iain Macfarland

Re: Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Varthac » Mo 15 Jun, 2020 23:09

Ansonsten hätte ich nach Leiteigenschaft gesagt.


Ist mit Leiteigenschaft der höchste Talentwert jenseits der aktuellen Probe gemeint oder geht es um die Attribute MU, IQ etc.? Ersteres würde mir als Kriterium gut gefallen. Den Attributwert könnte man heranziehen, wenn auch dort Gleichstand herrscht.
Varthac
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 56
Registriert: Mi 29 Apr, 2020 01:38
Heldenname: Galrok, Sohn des Dwain

Re: Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Kekse » Di 16 Jun, 2020 18:30

Varthac hat geschrieben:Ist mit Leiteigenschaft der höchste Talentwert jenseits der aktuellen Probe gemeint oder geht es um die Attribute MU, IQ etc.? Ersteres würde mir als Kriterium gut gefallen. Den Attributwert könnte man heranziehen, wenn auch dort Gleichstand herrscht.

Ich meinte damit eigentlich den Eigenschafts/Attributwert der bei der Probe zuerst abgefragt wird, aber ich kann auch mit anderen Lösungen leben. ;) Würde es aber einfach so machen, wie bei "best", da kann es ja auch Gleichstand geben.
Helfe gerne bei der Erstellung von ZB und hinterlasse noch viel lieber meine Unterschrift zur Abnahme im Wiki!
Kekse
Feldwebel
Feldwebel
 
Beiträge: 502
Registriert: Mi 02 Sep, 2015 01:03
Heldenname: Iain Macfarland

Re: Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Tommek » Di 23 Jun, 2020 12:54

Bei den bestandenen Proben ist die Logik bisher genauso. Wenn kein Held besteht wird 0 zurückgegeben.
Finde ich auch in diesem Falle logisch.

Bei Gleichstand wird zufällig ein Held zurückgegeben.
Benutzeravatar
Tommek
Site Admin
Site Admin
 
Beiträge: 7142
Registriert: Mi 17 Mai, 2006 22:40
Wohnort: Eodatia
Heldenname: Alrik Dormwald
Mitglied bei: Orkwacht

Re: Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Tommek » Di 23 Jun, 2020 13:11

Ist jetzt live auf dem Testserver.

Alle Helden bestehen: der Held mit den wenigsten übrigen FEP wird zurückgegeben.
Benutzeravatar
Tommek
Site Admin
Site Admin
 
Beiträge: 7142
Registriert: Mi 17 Mai, 2006 22:40
Wohnort: Eodatia
Heldenname: Alrik Dormwald
Mitglied bei: Orkwacht

Re: Fehler in der AOQML-Engine: "worst" bei Talentproben

Beitragvon Varthac » Di 23 Jun, 2020 13:36

Tommek hat geschrieben:Ist jetzt live auf dem Testserver.

Alle Helden bestehen: der Held mit den wenigsten übrigen FEP wird zurückgegeben.


Eben getestet: ZB funktioniert jetzt einwandfrei, danke dir!
Varthac
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 56
Registriert: Mi 29 Apr, 2020 01:38
Heldenname: Galrok, Sohn des Dwain


Zurück zu Antamar®-Archiv



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste