[Modding] Ascalons Questpack: Bugsammelthread

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Achso, dann ist das also ein Bug dass alle gewandelt werden... :D

Naja werd ich damm anders implementieren... ;)
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.925
Wisp hat geschrieben, dass er eine default language für HANDLE_CHARSETS definieren kann, die immer auch umgewandelt und deren setup (game etc.) tras immer vor der gewünschten Sprachversion geladen werden könnte, also genau das, was wir wollen.
 

Lumorus

Wachender
Registriert
03.03.2011
Beiträge
4.060
Wegen der Sache mit den Tollkirschen:

In einer vorherigen Version waren die noch auf dem Jahrmarkt von Nashkell erhältlich. Stand auch in der Lösung bzw. steht immer noch drin. ;)

Dass sie jetzt wirklich nur noch auf der Werwolfsinsel zu finden sind (jau, ist wirklich so!), finde ich einen guten Schachzug, die Spieler zu bewegen, die Insel zu besuchen, und sich dieses Abenteuer nicht entgehen zu lassen! :D
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Also gefixt sein sollten jetzt folgende Probleme:

-Frau Brunnstein steht ungünstig. Bei einem Kampf mit Panikzauber rennt sie weg, und bei einer späteren Cutscene triggert der Dialog mit ihr nicht. [-> entweder Frau Brunnstein woanders hinstellen oder in der Cutscene sicherstellen, dass sie da ist] - evtl. könnte sie im Kampf mit Nimbul auch getötet werden. Evtl. steht sie lieber woanders

Sie steht jetzt vorm Rülpsenden Drachen... ;)

-Werwolfquest: Nach dem Herstellen des Gegenmittels lässt sich die Frau nicht mehr ansprechen ?

Gab keinen Dialog für diese Phase, hab mal zwei Zeilen geschrieben, falls die nicht passen, kann mans ja noch ändern. ;)

-Werwolfquest: Wenn der Werwolf nach misslungenem Versuch mit Gegenmittel getötet wurde, kann man Thalantyr die Leiche nicht geben

-Aaron: "Auch nachdem man Aaron gerettet hat kann man den Geist fragen wer Aaron ist und wo er zu finden ist."

-Aaron: Man kann den Ring bereits dem Geist geben, auch wenn Aaron die Lösung noch gar nicht gesagt hat

Zu folgenden hätte ich noch Fragen:

-Der große Karlini: Überprüfung der Tagebucheinträge. ("Ich bin mir nicht sicher, ob Ygnatius' Auftrag überhaupt im Questbook landete; als ich mich der Quest nun heute annahm und suchte, wurde ich (im Questbook) zumindest nicht fündig. Auch die Aufforderung, zu den Steinkreisen östlich von Kerzenburg zu kommen, fand keinen Eintrag.")

Wie schon geschrieben, gibt es hierfür keine Tagebucheinträge, bei der Kreischlingszucht und den Echten Fans auch nicht, sollen wir dafür welche verfassen?

-Aaron: "Nachdem man Aaron gerettet hat und mit ihm zurück nach Nashkell teleportiert wurde, verschwindet die Aufgabe "Frau Brunnstein vermisst ihren Sohn" nicht aus dem Tagebuch."

Die Tagebucheinträge werden gelöscht sobald man Marina den Ring gebracht hat, sollen wir vielleicht "Der verlorene Sohn" und "Der Geist in den Wolkenspitzen" unter einem Journal Title zusammenfassen?
 

Ascalon

Senior Member
Registriert
08.04.2008
Beiträge
2.730
Bei den Echten Fans war die Idee, keinen Tagebucheintrag zu machen, um das so ein bisschen als Easteregg zu verstecken. das ist ja alles schon ziemlich dämlich.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.925
Toll! -Äh, wie kriege ich diese Änderungen denn auf meinen Fork? Irgendiwe bin ich blind...

Wenn Du Tagebucheinträge schreiben möchtest, habe ich da nichts dagegen! EDIT: Ascalons Meinung hat natürlich Vorrang. Ich fand die Fans aber gar nicht dämlich - selten hat mich das Verwenden von sonst sinnlosen Game-Items so erheitert. :)

Die Einträge zu dem Aaron - Geist Quest zusammen zu fassen macht vielleicht wirklich Sinn. Evtl. könnte man sie unter "Aaron und Marina" oder "Ein missglücktes Picknick" zusammenfassen.
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Hmm, hab dir mal nen Pull Request geschickt, den solltest du aber auch selbst auslösen können, wenn du auf mein Master Repository gehst, da steht dann irgendwas mit "This branch is 9 commits behind whiteagnus:master" oder so und daneben gibts nen Pull Button. ;)

Zwecks Tagebucheinträgen, kann ich gerne machen (wird aber wahrscheinlich erst am WE was, morgen gehts arbeiten wieder los :c:)

Zusammenfassen geht also klar, fänd auch "EIN FRESSEN FÜR DIE GNOLLE" als Titel nicht schlecht... :D
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.925
Selbst konnte ich es mir nicht holen- es wurde immer nur verglichen, ob meine Änderungen in Deiner Version bereits drin sind (was sie ja waren). Hm, evtl. muss ich da doch mit dem Git command window arbeiten.
-Jetzt habe ich es aber, denke ich.
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
-Blickloses Auge und die NPC Stronghold Mod (G3): "dadurch, dass der Start-Text mit Gaal neu geschrieben wurde und der Mod-Autor Ascalons Mod nicht zu kennen scheint, kann die Rettungsquest von Bunger Wiesner nicht gestartet werden, da seine Mutter in Gaals Rede dazwischenruft und ihren Sohn zurück verlangt - erst danach kann man sie auf die Aufgabe ansprechen.
Da dies im neuen Dialog nicht eingeplant wurde, kann die Quest nicht starten - ob es geht, wenn man weder Aerie noch Anomen dabei hat, weiß ich leider nicht."

Hmm, hab mir gerade das Problem angeschaut und bin ein wenig ratlos... :confused:

Folgender Block in NPC Stronghold verursacht das Problem:

Code:
EXTEND_BOTTOM CSSUPP3 2
/* Fun bit here. If only one person is eligible to join a temple (which Viconia is, although she won't agree to do so), only that priest appears. If two people are eligible two priests appear. If three or more are, all three priests will. Count the permutations...
Note to self: Remember to note that you should probably try to have your Cleric Stronghold priest already in the party when you first set foot in the Temple district, and also that the alignment checks here are the Oversight ones, not the default game ones.*/
IF ~InParty("Anomen") !Dead("Anomen") Global("KishAnomenFighterStronghold","GLOBAL",0)~ EXTERN CSGAAL OisigAppears
IF ~Global("KishPEFHT","GLOBAL",1)~ EXTERN CSGAAL OisigAppears
IF ~InParty("Aerie") !Dead("Aerie") Global("KishAerieMageStronghold","GLOBAL",0) OR(3) !InParty("Anomen") Dead("Anomen") Global("KishAnomenFighterStronghold","GLOBAL",1) Global("KishPEFHT","GLOBAL",0)~ EXTERN CSGAAL ArvalAppears
IF ~Global("KishPEFLT","GLOBAL",1) Global("KishPEFHT","GLOBAL",0) OR(3) !InParty("Anomen") Dead("Anomen") Global("KishAnomenFighterStronghold","GLOBAL",1)~ EXTERN CSGAAL ArvalAppears
IF ~InParty("Viconia") !Dead("Viconia") Global("KishPEFLT","GLOBAL",0) Global("KishPEFHT","GLOBAL",0) OR(3) !InParty("Anomen") Dead("Anomen") GlobalGT("KishAnomenFighterStronghold","GLOBAL",0) OR(3) !InParty("Aerie") Dead("Aerie") GlobalGT("KishAerieMageStronghold","GLOBAL",0)~ EXTERN CSGAAL NallabirAppears
IF ~Global("KishPEFTT","GLOBAL",1) OR(3) !InParty("Anomen") Dead("Anomen") GlobalGT("KishAnomenFighterStronghold","GLOBAL",0) OR(3) !InParty("Aerie") Dead("Aerie") GlobalGT("KishAerieMageStronghold","GLOBAL",0)~ EXTERN CSGAAL NallabirAppears
IF ~OR(2) !InParty("Viconia") Dead("Viconia") OR(3) !InParty("Aerie") Dead("Aerie") GlobalGT("KishAerieMageStronghold","GLOBAL",0) Global("KishPEFLT","GLOBAL",0) Global("KishPEFTT","GLOBAL",0)~ EXTERN CSGAAL OisigAppears
END

CHAIN CSGAAL OisigAppears
@1332 DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishOisigAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT
CHAIN CSGAAL ArvalAppears
@1332 DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishArvalAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT
CHAIN CSGAAL NallabirAppears
@1332 DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishNallabirAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT

@1332 ist folgender Satz "Come, then, my faithful. Follow me." (wie auch im Original)
STATE_WHICH_SAYS kann man nicht nehmen, da der String dadurch 5 mal vorkommt und natürlich ne -2 zurückliefert...:hae:
Wie komm ich jetzt an die States ran, ohne sie fest zu definieren (kann ja auch ein anderer Mod an der CSGAAL rumwerkeln...):confused:
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.925
-Einen anderen interjection point suchen (evtl. zusätzlich, mit derselben Variablen, als "doppelt hält besser" - habe mir aber jetzt den Dialog nicht angeschaut)

-evtl. die Triggervariable ändern indem man aus
BEGIN ACQ22001
IF ~Global("ACQ22","GLOBAL",1)~ THEN BEGIN 0
irgendein OR() Trigger macht? (Habe aber auch hier nicht die entsprechenden Spielressoucen nachgeschaut, um Vorschläge machen zu können)

-darauf bestehen, dass Ascalons Questpack vor NPC Strongholds installiert wird (blöd) Huch, das funktioniert ja nicht mal
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.925
Noch ne Möglichkeit: Kish darum bitten, dass er es gleich an die CSGAAL.dlg, state 11 ranhängt. Ich meine, wieso diese inkompatible Variante machen, wenn man einfach mit entsprechenden Triggern das ganze direkt als ein großes EXTEND_BOTTOM da anhängen kann, wo es hinsoll? - Ich werde das mal bei G3 vorschlagen. EDIT: Das hier müsste doch eigentlich genau dasselbe tun, oder?
EXTEND_BOTTOM CSGAAL 11

/* OisigAppears */
IF ~InParty("Anomen") !Dead("Anomen") Global("KishAnomenFighterStronghold","GLOBAL",0)~ THEN DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishOisigAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT

/* OisigAppears */
IF ~Global("KishPEFHT","GLOBAL",1)~ THEN DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishOisigAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT

/* ArvalAppears */
IF ~InParty("Aerie") !Dead("Aerie") Global("KishAerieMageStronghold","GLOBAL",0) OR(3) !InParty("Anomen") Dead("Anomen") Global("KishAnomenFighterStronghold","GLOBAL",1) Global("KishPEFHT","GLOBAL",0)~ THEN DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishArvalAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT

/* ArvalAppears */
IF ~Global("KishPEFLT","GLOBAL",1) Global("KishPEFHT","GLOBAL",0) OR(3) !InParty("Anomen") Dead("Anomen") Global("KishAnomenFighterStronghold","GLOBAL",1)~ THEN DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishArvalAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT

/* NallabirAppears */
IF ~InParty("Viconia") !Dead("Viconia") Global("KishPEFLT","GLOBAL",0) Global("KishPEFHT","GLOBAL",0) OR(3) !InParty("Anomen") Dead("Anomen") GlobalGT("KishAnomenFighterStronghold","GLOBAL",0) OR(3) !InParty("Aerie") Dead("Aerie") GlobalGT("KishAerieMageStronghold","GLOBAL",0)~ THEN DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishNallabirAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT

/* NallabirAppears */
IF ~Global("KishPEFTT","GLOBAL",1) OR(3) !InParty("Anomen") Dead("Anomen") GlobalGT("KishAnomenFighterStronghold","GLOBAL",0) OR(3) !InParty("Aerie") Dead("Aerie") GlobalGT("KishAerieMageStronghold","GLOBAL",0)~ THEN DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishNallabirAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT

/* OisigAppears */
IF ~OR(2) !InParty("Viconia") Dead("Viconia") OR(3) !InParty("Aerie") Dead("Aerie") GlobalGT("KishAerieMageStronghold","GLOBAL",0) Global("KishPEFLT","GLOBAL",0) Global("KishPEFTT","GLOBAL",0)~ THEN DO ~AddJournalEntry(34386,QUEST)
SetGlobal("KishOisigAppear","GLOBAL",1)
SetGlobalTimer("Gaal","AR0900",3600)
ActionOverride("CSCleric",MoveToPointNoInterrupt([2858.1544]))
ActionOverride("CSCleric",DestroySelf())~ EXIT
END
 
Zuletzt bearbeitet:

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Hmm, das würde wohl so funktionieren, hab aber für den Notfall doch noch ne Lösung gefunden... :D

Code:
LOAD_TRA ~NPC_Strongholds/American/NPC_Strongholds.tra~

COPY_EXISTING ~csgaal.dlg~ ~override~
READ_LONG 0xc states_offset
READ_SHORT 0x8 states_number
	FOR( i=0;i<%states_number%;i+=1 ) BEGIN
		READ_LONG (%states_offset% + %i%*0x10) state_strref
		GET_STRREF  ~%state_strref%~ state_text
		SPRINT ~tra_text~ @1332
		
		PATCH_IF (("%state_text%" STRING_COMPARE_CASE "%tra_text%")=0) THEN BEGIN
			INNER_ACTION BEGIN
				ACTION_DEFINE_ASSOCIATIVE_ARRAY statearray BEGIN "%i%" => 0 END
			END
		END
	END

ACTION_PHP_EACH statearray AS state => zero BEGIN 
<<<<<<<< ../AC_QUEST/npcstrongholdworkaround.d
INTERJECT_COPY_TRANS CSGAAL %state% ACQ22
== ACQ22001 @40
== CSGAAL @41
END
>>>>>>>>
COMPILE ~../AC_QUEST/npcstrongholdworkaround.d~ EVAL USING ~AC_QUEST/tra/autotra/german/acq22000.tra~ 
END
 
Zuletzt bearbeitet:

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.925
Hm... ? Wenn ich es richtig verstehe, dann ist die Kompatibilität doch, wenn Ascalons Questpack nach dem NPC Stromghold Mod installiert wird, gegeben, da das später Installierte ja unten angehängt wird, oder? Und daher zuerst ausgeführt wird, dann kommt das COPY_TRANS und die Änderungen des Stronghold Quests werden angehängt.

Wenn aber Ascalons Questpack vorher installiert wurde, dann bringt u.U. auch Dein Code nichts, weil sich der NPC_Strongholds-Ordner evtl. noch gar nicht im Spieleordner befindet?

Ich denke, ich werde Kish meinen Vorschlag mal unterbreiten. Momentan habe ich nur Sorge, dass ich da was übersehen haben könnte, da ich es nicht im Spiel getestet habe und nur das genommen habe, was Du gepostet hast, ohne es selbst nachzuschauen. Du hättest nicht zufälligerweise Lust, das mal auszutesten?...
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Hmm, also ich seh im Strongholdmod nirgendwo ein COPY_TRANS, (was das Problem vielleicht beheben würde...)

Durch die CHAINs werden neue States erzeugt und nicht kopiert, heißt wenn zB. Anomen in der Gruppe ist, kommt Emmi Wiesner niemals dazu sich ins Gespräch einzumischen, da State 11 nicht aufgerufen wird... (bei meiner jetzigen Installation müsste man noch nen COPY_TRANS auf 15,16 und 17 machen, die sich aber durch andere Mods ändern könnten)

Für meinen Workaround (hab noch ein bischen dran gearbeitet :D) hatte ich gedacht eine eigene Komponente zu erstellen, die dann installiert werden kann, wenn man nachträglich die Stronghold Mod installiert... (Also als Postfix sozusagen... ;))


Edith: Habs gerade getestet, es funktioniert so wie du es gepostet hast, das "Problem" ist dann nur, dass das Questpack nach der Stronghold Mod installiert werden muss...
 
Zuletzt bearbeitet:

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.925
Habs gerade getestet, es funktioniert so wie du es gepostet hast, das "Problem" ist dann nur, dass das Questpack nach der Stronghold Mod installiert werden muss...
Ja, ich bin ja auch ein Id-i-ot, ich habe die Dialognamen verdreht und dachte, dass das Questpack ebenfalls in die "CSSUPP3 2" das I_C_T hat - sorry, mein Fehler.

Und wenn wir die I_C_T einfach, der Sichrheit halber, vedoppeln, also z.B.:

INTERJECT_COPY_TRANS CSGAAL 10 ACQ22
== ACQ22001 @40
== CSGAAL @41

INTERJECT_COPY_TRANS CSGAAL 11 ACQ22
== ACQ22001 @40
== CSGAAL @41

Würde m.E. auch passen (damit der Einmischdialog nicht mehrmals passiert, müssen zwischen den states mindestens ein, besser zwei weitere sein, das ist hier durch ein Schlagabtausch von Follower und Gegner gegeben, bevor es vom state 10 zum abschließenden State 11 geht.)

Was meinst Du? (Entschuldige meinen Quatsch von oben. Ich glaube, ich sollte dringend ins Bett gehen, jetzt ist mir auch noch schwindelig geworden..)
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Hmm, verdoppeln würd ich nicht, wenn man keinen Kleriker in der Gruppe hat, wird State 11 ja aufgerufen und so würde der Dialog doppelt kommen, oder blick ich einfach nicht durch? :confused: (Sollte wohl auch langsam in die Kiste... :D)
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.925
Da ich nicht weiß, wo Du hängst, erkläre ich es für den interessierten Laien:

Beide Einmischdialoge setzen die Variable "ACQ22" auf 1, wenn sie stattfinden (das ist der Name in der ersten Zeile, hinter der Angabe des Dialognamens und dem relevanten Dialogstate).

Da aber zwischen den beiden Zeilen des Originalsprechers CSGAAL, in denen der Einmischdialog stattfinden soll, noch zwei andere Leute sprechen, würde, wenn der Einmischdialog hinter dem CSGAAL 10 stattfindet, bis zum CSGAAL 11 die Variable gesetzt sein (da die Engine genug Zeit hatte), und der Einmischdialog an der zweiten Stelle nicht (mehr) passieren.

-Was natürlich auch heißt, dass damit die zweite Stelle eigentlich unnötig ist, und wir das I_C_T verschoben haben. :hae:
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Werd ich heute Abend mal testen, danke. :D

€dith sagt: Hmm, so würde das ganze laufen, aber das "Zur Seite, Ungläubige" kommt besser rüber wenn Gaal dabei ist abzuhaun... :confused: (Oder seh ich das falsch?)
 
Zuletzt bearbeitet:
Oben