Mission fehlschlagen lassen - Endroom

  • Ich bin inzwischen beim Abendspaziergang angekommen und habe wieder das alte Problem mit dem Endroom. Ich habe schon vor 20 Jahren alles mögliche probiert und es nicht hingekriegt und ärgere mich gerade wieder damit rum.


    Das letzte Missionsziel ist, in die Kneipe zu gehen und wenn man reingeht, geht hinter einem ein Gitter runter und man sitzt in der Falle. Soll auch so sein. Das Problem dabei ist, daß der Spieler auch in der Falle sitzt, wenn er nicht alle anderen Ziele erfüllt hat und dann passiert nunmal nix... die Mission endet nicht und der Spieler kann nicht mehr raus. Das stöhrt mich. Ich würde gerne die Mission trotzdem enden lassen und wenn der Spieler nicht alles erledigt hat, dann soll sie fehlschlagen.

    Es steht ja in den Zielen, daß man erst in die Kneipe soll, wenn man alles erledigt hat. Und mal ehrlich: sollte Garrett da vorher reingehen, würde er als halbwegs vernünftig denkender Dieb später nicht nochmal reingehen ;)


    Das Ziel ist als Endroom - "Go to location" mit "final" eingegeben. Ich überlege da schon die ganze Zeit, wie ich das anders machen könnte :/

  • Wie wäre es, wenn du vor die Stelle mit dem Gitter noch eine weitere Barriere (Tür, Gitter, ...) baust und die nur aufgehen lässt, wenn alle Ziele erfüllt sind? Darf natürlich nicht einschlag-bar sein, wie z.B. die Standard-Holztüren.


    Soul Tear hatte sowas gebaut für den letzten Raum, den der Spieler in "Bad Venture", der ersten Mission der "Keeper of Infinity 2"-Kampagne, betritt. Ich glaube, er hatte zum Öffnen der Tür eine "RequireAll Trap" o.ä. genutzt und an die eben die "Abfragen" der einzelnen zu erfüllenden Ziele drangehängt. Nach dem Betreten dieses Raumes löste der Spieler durch eine weitere Aktion noch ein Ereignis aus, der Monitor wurde dunkel, und der Spieler wurde, ohne es zu bemerken, in den eigentlichen "Endroom" teleportiert. Dieser "eigentliche Endroom" sah genauso aus wie derjenige, zu dem sich die Tür öffnete, allerdings war die Tür eine Atrappe. Der Spieler musste also zwangsweise warten, bis das Spiel das Ende der Mission erkannte.


    Soul Tear hatte allerdings bei der "Türöffner-Abfrage" ein Ziel vergessen, das also nicht erfüllt sein musste, damit die Tür aufging. Je nachdem, wie man die Mission spielte, konnte man dann im End-Raum landen, ohne dass das Spiel endete. Die zweite Abfrage der Ziele, am Ende der Mission, fragte nämlich auch jenes bei der ersten Abfrage vergessene Ziel ab, und das war latürnich nicht erfüllt. Zurück bzw. wieder aus dem Raum 'raus konnte der Spieler also auch nicht mehr, und saß im Zimmer 'rum, ohne zu verstehen, was er denn jetzt noch machen sollte. Da muss man also sehr sorgfältig mit dem "Türöffner-Mechanismus" umgehen.


    Ob du nun den Schnickschnack mit dem Teleportieren brauchst (aus "technischen" Gründen, meine ich), weiß ich nicht - meine DromEd-Kenntnisse sind doch sehr begrenzt. Diese Überlegung musst du wohl selber machen - wir können ja nicht alles für dich erledigen...;)

  • Ich würde sämtliche Ziele als qvars definieren.

    Wenn sie erledigt sind, haben sie dann goal_state_1 und alles ist prima.


    Sind sie nicht erledigt haben sie noch goal_state_0


    Du willst aber, dass die nicht-erledigten Ziele goal_state_3 bekommen (fail)


    Also mußt du den Endtrigger mit einigen qvartraps verbinden, die für das jeweilige Ziel goal_state_3 triggern

    -ausgenommen die Ziele, die schon erledigt sind. Das heißt, wenn ein Ziel vorher erledigt ist, muß es dafür sorgen, dass die qvar zerstört wird, die goal_state_3 triggern können -->mit dem Script TrigQVar und einer Destroy Trap.

    https://www.thiefmissions.com/telliamed/scripts.html

  • @ bäuchlein


    Witzigerweise ginge das was du vorschlägst in ShockEd ohne große Probleme, da habe ich das schon öfters gemacht. In Thief hängt es dann am Beute-Ziel. (jedenfalls bei mir), vielleicht war das auch bei SoulTear? Ich hatte damals versucht, die Mission zu spielen, aber mein alter Computer schaffte den Blick auf's Wasser nicht.


    Ich möchte den Zugang aber auch nicht blockieren. Es ist ja eine Kneipe, die ist geöffnet, da kann jeder rein, warum sollte Garrett die Tür nicht aufkriegen? Das fände ich auch irgendwie seltsam. Es würde halt von der Story her nicht passen.


    Die Mission sollte halt dann enden, damit der Spieler nicht dumm rumsteht. :/



    @ fibanocci


    Danke, das gucke ich mir mal an, im Moment habe ich erst die Scripts von Nameless-Voice geladen, dann lade ich noch die von Telliamed.


    Aber die Beute-Ziele werden dabei zum Problem, oder? Es sind ja 3 verschiedene :/

  • Auch das Beuteziel kannst du als qvar definieren mit goal_loot_n, x

    das kannst du dann auch chanceln.


    Sehr nützlich ist das alte qvar-Tutorial von The Pixie. Vorallem der Anhang.

  • Es war nicht das Beute-Ziel, was bei Soul Tear vergessen wurde, sondern eines, das man letzten Endes durch Auslösen eines Ereignisses zwar nicht schaffte, aber danach nicht mehr weiter verfolgte. Drei Beuteziele (je nach Schwierigkeitsgrad) hat Soul Tear aber auch drin, die muss er irgendwie abfragen. Kann gut sein, dass es über diese QVars geht, wie fibanocci es beschrieben hat. Vielleicht komme ich später mal dazu, mir das anzusehen.


    Die Sache mit dem Wasser ist auch bei mir auf einem Rechner extrem lästig gewesen. Es handelt sich wohl um ein Problem mit der Darstellung vieler Partikel durch die Grafik-Hardware. Nicht das Wasser störte, sondern die Gischt oben drauf. Und es gibt weitere Stellen in den "Keeper of Infinity"-Missionen, wo das auftrat - mal gibt's Staub an frisch aufgerissenen Löchern in der Straße, und mal nebelt es gewaltig bei einer Untoten, inklusive animierter Nebelwolken. Dürfte dasselbe Problem sein. Man hat es gerade vor ein paar Tagen bei der relativ neuen "Lonmore"-Kampagne mit einigen "DML fixes" aus dem Weg geräumt. Vielleicht kriegt das ja auch jemand bei Soul Tears Mission hin. Könnte nur lästig sein, wenn extrem viele Partikelquellen da sind.


    Was das Absperren der Kneipe angeht: Vielleicht könnte man 'ne Tür absperren und ein Schild "Geschlossene Gesellschaft - kommen Sie später wieder!" (o.ä.) hin hängen, wenn man es sonst nicht anders hinkriegt. Oder die Kneipe ist zu Beginn noch geschlossen, weil sie erst am Abend aufmacht, oder sowas in der Art. Solange der Spieler einigermaßen gut vermittelt bekommt, dass er später nochmal vorbei kommen soll, könnte das noch ganz gut in die Story einbaubar sein.

  • fibanocci


    Also ich habe jetzt einen Boundstrigger gleich zu Beginn des Endrooms mit Links zu QVarTraps, von denen jeder ein Ziel auf "fail" setzt. (mit Ausnahme des Nicht-töten-Ziels)


    Wie lösche ich diese aber, wenn ein Ziel erfüllt ist?


    Die diversen Gegenständen, die zu stehlen sind, kann ich mit einer destroy-Trap verlinken, die dann die entsprechende QVarTrap löscht. Aber wie mache ich es mit den Beutezielen? Da kann ich eigentlich nichts verlinken. Oder bin ich jetzt wieder ganz falsch :/

  • 1. Dein Boundstrigger sollte zu einer zeitverzögernden RelayTrap führen, damit du vor dem finalen Ende noch einiges andere triggern kannst - mit derselben Trap. Das wird sicher noch nötig sein. Also etwa ein Marker mit Traptimedrelay, Verzögerung ca 2000ms


    2. Ich weiß jetzt nicht genau, was du meinst. Willst du die Ziele später beseitigen? Du mußt dann deine Ziel unsichtbar machen. Dann sind sie für das Spiel nicht mehr vorhanden.


    3. Du hast deine Ziele nicht gelöscht, deshalb hast du für die Beute keine Qvartrap. Deine Beuteziel kannst du dennoch so machen, dass du es später änderst. Nehmen wir an, dein Beuteziel ist Nr. 3 und die verlangte Beute ist 5000.

    Mach einen Marker in den Blueroom. Nenne ihn Beute1. Gib ihm das Script Trapsetqvar. Er bekommt =5000:goal_loot_3 verpasst.

    Du hast vermutlich einen Blackjack anfangs eingepackt? Oder was anderes, egal. Gib dem Blackjack das Script "Trigcontained" und verlinke via CD zum Beute1-Marker. Das wird dafür sorgen, dass der Marker das Beuteziel am Anfang der MIssion "übernimmt". Später kannst du dann das Ziel canceln (3) oder unsichtbar machen (0).

  • Ich möchte die Ziele sichtbar behalten. Aber wenn Garrett in die Kneipe geht, bevor er alles erledigt hat, sollen sie fehlschlagen. Und das klappt eben gar nicht. :/


    Garrett muß 4 Gegenstände stehlen und eine Schriftrolle lesen. Und genug Beute finden.

  • Habe ich das jetzt richtig verstanden und du willst die Links zu den qvartraps löschen? Sobald ein Ziel erfüllt wird, muß dann auch die qvartrap gelöscht/zerstört werden, der das Ziel auf "fail" setzen kann, denn das willst du ja nicht. Das muß also sein.


    Das machst du mit einer TrigQvar-Trap. Z. B. wenn Ziel 3 erfüllt ist (=1:goal_state_3) kann diese Trap eine Destroy-Trap anfunken, die dann wiederum die QvarTrap zerstört, die du nicht mehr haben willst.


    Also Marker, Script: Triqvar

    quest var: =1:goal_state_x

    -->wird verlinkt.


    Wenns dir zu blöd wird, baue ich es für dich ein.

  • Ich habe jetzt TrigQvar-Traps drin und jetzt schlagen die Ziele nicht mehr fehl, gar nicht mehr. :huh:


    Und lasse ich sie weg, schlagen alle Ziele fehl, weil sich die QVarTraps einfach nicht löschen lassen.


    Ich versuch's morgen nochmal, für heute reicht's. Ich habe bestimmt wieder irgend einen blöden Fehler drin und komm' einfach nicht drauf.... :/

  • Ich habe mal zwei der "Bestandteile" von Soul Tears "Türöffnungsmechanismus" aus "Bad Venture" 'rausgesucht. Das "Goal 9 state"-Objekt überprüft im mittleren Schwierigkeitsgrad das dortige Beuteziel. Die "RequireAllTrap", die alle relevanten Missionsziele "überprüft" und dann ggf. die Tür öffnet (oder evtl. die geschlossene Tür wegteleportiert und eine geöffnete an ihre Stelle teleportiert), ist im anderen Bild gezeigt. Vielleicht hilft euch das weiter. Ich weiß allerdings nicht, ob das auch ohne NewDark geht.



  • Also für das Update benutze ich ja NewDark - von den Zielen her sollte es aber eigentlich keinen Unterschied machen. :/

    Ich habe sowas in der Art in ShockEd gemacht (z.b. das Shuttle in Polaris), allerdings ist es da ganz einfach, weil SystemShock ein ganz anderes Ziel-System hat und das funktioniert dann Level-übergreifend. Manches ist dadurch viel einfacher - aber dafür kennt Shocked keine fehlgeschlagenen Ziele.

    Ich bringe das manchmal durcheinander und wundere mich dann, warum es in Thief nicht funktioniert... :S


    @ fibanocci - genau richtig, du hast jedenfalls keinen Denkfehler drin ;).

    Ich schon ehr, bin gestern Mittag frisch geboostert und modernarisiert worden. Im Moment kämpfe ich noch mit den Nebenwirkungen. Ich sollte heute vielleicht nur Bäume und Felsen rumschieben und nix kompliziertes machen :sleeping:

    Vom Timing her sind die Ziele ja über das ganze Level verstreut, von daher sollte das auch kein Problem sein. Garrett braucht jedenfalls eine Weile bis zur Kneipe. Damit es mit dem Endroom nicht zu Verzögerungen kommt, habe ich das Endroom-Ziel mit QVarTrap state 1 mit dem Boundstrigger verlinkt. Ist zwar auch nicht optimal, weil dann das Endziel als erfüllt gilt, aber da reicht auch eine kleine Umformulierung der Ziele :/

    Das goal_final_0 kann ich nicht löschen? Ist seltsam, aber es läßt sich einfach nicht löschen? Im Moment habe ich bei den Zielen noch State_0 und Visible_1 drin, damit auch alle Ziele für den Spieler sichtbar sind (ansonsten würde er beim Laden der Mission unter Zielen ja nix angezeigt kriegen..

  • Hier sind die Daten, um alles für goal 0 zu löschen, Du brauchst eigentlich nur "state" und "visible".


    Im Grunde kannst du alles in eine txt-Datei packen und zu txt-->cmd umbenennen. Nenne es z. B. "cdel.cmd". Packs in dein Verzeichnis. In der Dromed Konsole dann "run cdel.cmd". Das löscht alles rund um goal 0. Ich hatte das mal für alle Ziele gemacht, ist als txt angehängt. "dall.cmd" löscht alle Ziele restlos.


    quest_delete goal_type_0

    quest_delete goal_state_0

    quest_delete goal_irreversible_0

    quest_delete goal_target_0

    quest_delete goal_visible_0

    quest_delete goal_loot_0

    quest_delete goal_gold_0

    quest_delete goal_gems_0

    quest_delete goal_goods_0

    quest_delete goal_final_0

    quest_delete goal_special_0

    quest_delete goal_specials_0

    quest_delete goal_optional_0

    quest_delete goal_bonus_0

    quest_delete goal_min_diff_0

    quest_delete goal_max_diff_0

  • normalerweise ist es eigentlich keine große Sache, ein Ziel zu löschen. Aber das final bleibt, egal wie oft ich es lösche, seltsamerweise war es in der Release-Version 2mal drin. Einmal ließ es sich löschen.... Dromed kann genauso bockig sein, wie ein esel... 8o:/


    Ich lösche das normalerweise alles einzeln, die letzten Ziele (nicht-töten) sollen ja eh drin bleiben. Das sind die einzigen mit Schwierigkeitsgrad.:/


    Edit: final ist jetzt auch draußen - ich hatte es ohne "_" eingegeben.... <X


    Ich überlege, ob ich das Beute-Ziel einfach so lassen wie es ist und als "optional" eingebe. Es wäre vielleicht doch nicht so ganz gemein... :/


    Also egal wie ich es mache, die Ziele schlagen fehl - anscheinend lassen sich QVarTraps nicht löschen. Die Ziele werden ganz normal erfüllt, aber sobald ich in die Kneipe gehe, sind sie fehlgeschlagen. Ich habe keine Ahnung, was ich da falsch mache ?(

  • In so einem Fall lade ich NVScripts/Public Scripts und lege NVSpy/ Spy auf eine qvartrap - nämlich eine von denen, die am Ende auf fail gesetzt werden. Zusammen mit

    set game_mode_backup 0 solltest du herausfinden können, woher das Signal stammt.

    Ich vermute, dass die Qvartraps immer noch zuletzt angefunkt werden können, obwohl das Ziel erledigt ist. Das soll aber nicht so sein.

  • Ja, die Destroy-Traps wirken einfach nicht - egal wie ich sie verlinke. Die QVarTraps werden einfach nicht gelöscht ?(


    Im Moment sogar doppelt mit dem Objekt (das zu klauen ist) und einem QVarTrigger. :/


    set game_mode_backup 0 kenne ich noch vom alten ShockEd, das war da Standart und wurde erst mit NewDark entfernt.... niemals speichern, nachdem man im Spiel war, sonst ist das Level im Eimer.... aber prima um Fehler zu finden. ;)

  • JAAAAAAA.... :thumbup::thumbup::):thumbup::thumbup: Dankeschön :)


    Genau das war's . Und ich dachte gestern noch, ob's da nicht vielleicht ein nettes Script von Nameless_Voice gibt... und habe es voll vergessen... :huh:


    Jetzt funktionieren die Ziele, an die Beute habe ich mich noch nicht rangemacht - ich wollte erst das andere mal zum Laufen bringen... ;) Ich habe auch schon alle möglichen Varianten ausprobiert, die Destroy-Traps mit NV-Script funktionieren einwandfrei 8) Die Ziele, die man erledigt hat bleiben erledigt und alle unerledigten schlagen fehl.