Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002175EresseaMagieöffentlich2017-12-05 19:50
ReporterEnno Bearbeitung durchEnno  
PrioritätnormalSchweregradkleinerer FehlerReproduzierbarnicht getestet
Status geschlossenLösungerledigt 
Produktversion3.7.4 
Zielversion3.8.1Behoben in Version3.8.1 
Zusammenfassung0002175: Unstimmigheiten in Zauber "Fluch brechen"
Beschreibung

In der XML-Datei der Zauber steht für break_curse (sp_destroy_magic): parameters="kcc?"

Das heisst, die korrekte Syntax sollte sein KEYWORD []. Aber in der Beschreibung ist von einem optionalen zweiten Parameter keine Rede mehr?

Aus dem Report der Partei 7:

                             Fluch brechen

Beschreibung: Dieser Zauber ermöglicht dem Magier, gezielt eine bestimmte Verzauberung einer Einheit, eines Schiffes, Gebäudes oder auch der Region aufzulösen. Art: Normaler Zauber Stufe: 7 Rang: 3 Komponenten:

  • 3 Aura * Stufe Modifikationen: Fernzauber, Schiffszauber Syntax: ZAUBERE [REGION x y] [STUFE n] "Fluch brechen"
Zusätzliche Informationen

Interessant auch, dass nur syntax="spellid" in den Daten steht, d.h. für einen eventuellen zweiten Parameter ist hier überhaupt kein Name angegeben.

TagsKeine Tags zugeordnet.
Partei7
SpielE2
Report957

Notizen / Dateien

Enno

Enno

2015-12-06 13:00

Administrator   ~0006381

Ich fürchte, dass das parameters Attribut hier einfach falsch ist. Im Code wird sich auf eine zweites Argument auch nie bezogen, und ich kann mir kaum vorstellen, was das sein sollte.

Enno

Enno

2015-12-06 13:00

Administrator   ~0006382

related: https://github.com/eressea/server/issues/428

Solthar

Solthar

2015-12-06 13:28

Entwickler   ~0006383

Ja, das war mir auch aufgefallen. Ich dachte, ich hätte das ? schon entfernt. Das zweite Argument ist aber nötig (sp_break_curse)

Das sollte kcc heißen und gut.

Enno

Enno

2015-12-06 14:19

Administrator   ~0006384

Oh, ich sehe gerade, habe sp_break_curse und sp_destroy_magic verwechselt, weil letzteres auch break_curse aufruft. Danke.

Enno

Enno

2015-12-06 14:24

Administrator   ~0006385

Problem ist noch, wie macht man es, dass ein Ziel angegeben werden kann, welches REGION/EINHEIT/SCHIFF/GEBÄUDE sein kann? Es müsste da noch einen parameter-typ geben, der das symbolisiert (c reicht nicht), oder die Syntax von "parameters" muss komplexere Ausdrücke verstehen. Uff.

Im Code steht der so beschrieben:

  • ZAUBERE \"Fluch brechen\" REGION
  • ZAUBERE \"Fluch brechen\" EINHEIT
  • ZAUBERE \"Fluch brechen\" GEBAEUDE
  • ZAUBERE \"Fluch brechen\" SCHIFF

Im Report ist es ja immer nur eine Zeile, da müsste es also evtl. so heißen: ZAUBERE "Fluch brechen" [REGION | EINHEIT | SCHIFF | GEBAEUDE ] , aber das ist schon verflucht lang.

Warum muss man das Ziel überhaupt angeben, die Zauber-Id ist doch wohl eigentlich global eindeutig?

Enno

Enno

2015-12-06 14:29

Administrator   ~0006386

Aha. Dass das angegeben wird, ist ein Shortcut, um das verzauberte Objekt zu finden (mit der Zauber-Id bekommt man über findcurse nur ein struct curse, aber keinen Hinweis darauf, was da verzaubert ist. Für remove_curse braucht man allerdings das Ziel, und für die Erfolgsmeldung auch.

Ich schalge vor, für 3.8 ändern wir die Syntax des Zaubers, und lassen sp_destroy_magic mehr Arbeit machen (alle Objekte der Region durchsuchen, oder das Ziel des Zaubers in struct curse speichern).

Solthar

Solthar

2015-12-06 15:35

Entwickler   ~0006387

Langsam. Was du da beschreibst, leistet 'kc' bereits. Das steht für KEYWORD+ID oder so ähnlich. Und die Syntax wird genau so erzeugt, wie du sie beschreibst. Es gibt sogar noch attribute buildingtarget, shiptarget, regiontarget, unittarget, mit dem man das beschränken kann. Also entspricht ZAUBERE "bla" EINHEIT .

Deinen zweiten Kommentar verstehe ich vielleicht nicht. Willst du die Syntax auf ZAUBERE "Fluch brechen" vereinfachen? Könnte man machen, aber lohnt das? Im Moment funktioniert's und die Spieler werden ungern neue Syntax lernen wollen. (Die Handvoll, die es je geschafft haben, den Zauber einzusetzen, weil bis vor kurzem die Sytaxbeschreibung falsch war, siehe #1867)

Enno

Enno

2015-12-06 16:41

Administrator   ~0006390

"lohnt sich das" kann ich nicht beantworten. Ich dachte halt, einfacher ist besser, und das sollte nicht schwierig sein, aber es kann natürlich gut sein, dass die Antimagie-Sprüche wirklich niemand verwendet. Dazu kommt, dass mich der Spruch auch durch seine Komplexität verwirrt hat, weshalb ich heute schon ein bisschen Zeit da hinein gesteckt habe. Das nicht wieder tun zu müssen, wäre schon lohnend. So eine angekündigte Veränderung zu einem neuen Release finde ich dann einen guten Zeitpunkt für so eine Veränderung, wenn man es macht.

Enno

Enno

2015-12-06 16:54

Administrator   ~0006391

In erster Näherung habe ich jetzt mal das Fragezeichen aus dem Syntax genommen (und den Code, der es benutzt hätte, gefixt).

https://github.com/eressea/server/pull/429

Falls ich nach meiner OP noch Lust habe, den Spruch zu vereinfachen, habe ich die Arbeit daran in einen lokalen Branch getan. Schauen wir mal.

Solthar

Solthar

2015-12-06 17:42

Entwickler   ~0006395

Noch mal nachgedacht. Ist das denn immer eindeutig? Können zum Beispiel eine Einheit und eine Region gleichzeitig mit einem Spruch mit der selben ID verzaubert sein? Oder wahrscheinlicher: Können zwei Einheiten mit dem selben Zauber verzaubert sein? Falls ja, würde das den Zauber Fluch brechen einerseits mächtiger machen -- er kann zwei Einheiten gleichzeitig entzaubern -- und andererseits weniger mächtig -- er kann nicht eine Einheit entzaubern und die andere in Ruhe lassen.

Mir fällt kein Zauber ein, der mehrere Objekte gleichzeitig betrifft, aber das muss nicht heißen, das es so etwas nicht gibt.

Enno

Enno

2015-12-13 09:36

Administrator   ~0006408

Im Log heute moegen stand immer noch: ERROR: unknown spell parameter ? for spell analyze_magic

Enno

Enno

2015-12-15 08:08

Administrator   ~0006409

In E3 war da immer noch kc? in dem Zauber, gefixt in https://github.com/eressea/server/pull/436

Enno

Enno

2015-12-17 13:46

Administrator   ~0006415

reicht für's erste hier.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2015-12-06 12:59 Enno Neuer Eintrag
2015-12-06 12:59 Enno Status neu => zugewiesen
2015-12-06 12:59 Enno Bearbeitung durch => Enno
2015-12-06 13:00 Enno Notiz hinzugefügt: 0006381
2015-12-06 13:00 Enno Notiz hinzugefügt: 0006382
2015-12-06 13:28 Solthar Notiz hinzugefügt: 0006383
2015-12-06 14:19 Enno Notiz hinzugefügt: 0006384
2015-12-06 14:24 Enno Notiz hinzugefügt: 0006385
2015-12-06 14:29 Enno Notiz hinzugefügt: 0006386
2015-12-06 15:35 Solthar Notiz hinzugefügt: 0006387
2015-12-06 16:41 Enno Notiz hinzugefügt: 0006390
2015-12-06 16:54 Enno Notiz hinzugefügt: 0006391
2015-12-06 17:42 Solthar Notiz hinzugefügt: 0006395
2015-12-13 09:36 Enno Notiz hinzugefügt: 0006408
2015-12-15 08:08 Enno Notiz hinzugefügt: 0006409
2015-12-17 13:46 Enno Notiz hinzugefügt: 0006415
2015-12-17 13:46 Enno Status zugewiesen => erledigt
2015-12-17 13:46 Enno Behoben in Version => 3.8.1
2015-12-17 13:46 Enno Lösung offen => erledigt
2017-12-05 19:50 Enno Status erledigt => geschlossen
2022-04-27 17:27 Enno Kategorie ZAUBER => Magie