[Modding] Level 1-NPCs (Mod-Idee)

Garret

Meisterdieb
Registriert
10.11.2000
Beiträge
832
Hi zusammen,

ich habe mich gerade beim spielen mal wieder daran gestört, dass mein Hauptcharakter doppelt so viel Erfahrungspunkte hat wie die NPCs.

Ich frage mich nun, ob es möglich ist, einen Mod zu machen, bei dem alle NPCs auf Level 1 in die Gruppe gelangen und dann eine äquivalente Erfahrungspunktanzahl zum HC bekommen.

Meine Fragen dazu:
1) Ist es möglich, den Erfahrungspunktstand des HC als Variable auslesen zu lassen, sodass ein Script beim Joinen des NPCs diese Variable wieder aufnimmt und entsprechend viele XP verteilt?

2) Wie würde man es schaffen können, dass die üblichen XYZ8.cre usw. ersetzt werden durch eine einzige .cre-Datei?

Wäre auch über Hinweise aller anderen Art sehr erfreut, von "dämliche Idee" bis "technisch unmöglich".

MFG,
Garret
 

Lokadamus

Buddelmagier
Registriert
01.03.2000
Beiträge
4.861
mmm...

Ich hab mir letzens den BGT-Weidu- Mod installiert, welcher BG1 in BG2 bringt. Dein Problem fiel mir auch auf, ebenso die Tatsache, das irgendwie alle Personen auf einem niedrigen Level steckengeblieben sind. Dabei ist in diesem Fall der Grund ganz einfach: Sobald man den Ort betritt, wo ein NPC ist, wird er erstellt und eine Variable definiert. Dabei dient der eigene Level als Grundlage für die erstellten NPC => hierbei werden die verschiedenen .CRE relevant. Kommt man später zurück, haben die NPC nichts weiter gelernt. In BG1 selber hatte ich das Gefühl, die Level werden aufgrund der Erfahrungspunkte erzeugt, bzw. angepasst, wenn man den NPC anspricht, kann aber gut sein, das ich mich dabei täusche.

Dein Vorschlag mit angepasster Erfahrungspunkte wird in dem Tutorial von Maus gemacht, wobei nur eine .CRE benutzt wird und man die NPCs selber aufsteigen lassen kann. Für welches BG1 würdest du sowas haben wollen? BG1 Original, BGTutu (ca. 800 KB gross, schön klein), BGT (ca. 700MB gross + neuer Weltkarte) oder BGT- Weidu (ca. 12MB gross + neuer Weltkarte), wobei BGT und BGT- Weidu kompatible sein dürften? Ich werde es aber nicht machen, bin schon zu faul, Imoen umzuändern in einen Kensai mit Fähigkeiten mit einhänder Waffen (+2 auf RK bei 2 vergebenen Waffenpunkten), das dürfte die beste Kombination für einen Kensai sein ...
 

Garret

Meisterdieb
Registriert
10.11.2000
Beiträge
832
Also ich hätte eigentlich an BG2 gedacht, dort finde ich das Ganze besonders extrem, wenn man einen Char reimportiert, weil man mit ihm nochmal anfangen will weil einem beispielsweise die Gruppenkonstellation nicht gefällt, dann fällt das schon sehr ins Gewicht.

Wenn man das für BG2 machen würde wäre TuTu doch enginemäßig mitabgedeckt oder verkenne ich da etwas?

Aber danke schonmal für den Hinweis, werde dann mal Maus' Tutorial durcharbeiten, hatte ich ohnehin mal wieder vor, ist lange her, dass ich mich mit IE-Modding beschäftigt habe...

Edit: So, habe mal die entsprechende Stelle rausgesucht.

Hoffe, es ist okay, wenn ich sie jetzt so direkt verlinke:
http://fphfslinux.physik.uni-karlsruhe.de/~maus/web/tutorial/tutorial/node35.html

Demnach müsste ich ja nur die Variable (die XP) in gewissen Schritten erhöhen und entsprechende Mengen an XP auch hinterher zuweisen.

Da stellt sich ja die Frage, in welchen Abständen es sinnvoll ist, die EXP zu staffeln.

Sehe ich das soweit richtig?

Edit 2: Welchem "Skriptfeld" müsste ich das Skript zuordnen?
Override, Class, Race, General, ...?
 
Zuletzt bearbeitet:

Lokadamus

Buddelmagier
Registriert
01.03.2000
Beiträge
4.861
mmm...

Wenn ich es richtig sehe, hat Maus die Sache mit den Exp. einfach im Gespräch untergebracht. Lad dir dazu mal ein oder 2 von den NPCs runter guck die an. Bei Roar ist in der roar.d das Gespräch zu finden :) ... wie man die Exp. am besten staffelt? naja, am besten so, das sie möglichst nah am HC sind ...

Naja, persönlich würde ich BGT- Weidu- Mod vorziehen, wobei ich die ganze Zeit am überlegen bin, nicht einfach entweder die Char- Dateien umzukopieren oder die Area- Scripte umzuändern ;) und jup, du kannst auch BGTutu nehmen und so erstmal in BG1 anfangen, wobei deine Gruppe aber in BG2 nicht direkt übernommen werden kann, was bei BGT möglich sein soll, habs aber noch nicht getestet ...
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.425
Tja, Jugendsünden verfolgen einen immer wieder :D

Inzwischen mache ich die EP-Anpassung per Skript und zwar override, einfach um auf Nummer sicher zu gehen.

Allerdings: so, wie ich das mache, hilft das nur bei der Aufnahme bzw. einmal. Das liegt halt am Skript. Da muss man die EP-Zuteilung begrenzen, sonst hört das gar nicht auf... (war eines der Probleme, mit dem ich am Anfang zu kämpfen hatte).

Wenn man die EP-Anpassung im Skript macht, dann ist das Mod auch recht einfach. Es gibt zwar verschiedene cre für einen NPC, aber die haben alle dasselbe Skript. Ist somit sogar ziemlich einfach zu machen. Das Problem ist dabei allerdings: man kann nicht die EPs des NPCs abfragen und man setzt in meinem Skript die EP nicht auf einen festen Wert, sondern addiert solange einen Betrag hinzu, bis man genügend addiert hat, um den Wert des HC zu erreichen. Problemlos funktioniert das nur, wenn man den Wert des NPCs kennt. Lösen lässt sich das Problem dadurch, dass man vielleicht irgendwoher indirekt den EP-Wert bekommt. Wenn man weiss, welche cre das Spiel in das Gebiet gesetzt hat, weiss man ja, wieviel EPs diese cre standardmässig hat. Das wird dann halt ziemlich viel Arbeit.

Wenn man das Problem mit den nicht angepassten EP bei Wiederaufnahme lösen will, wirds schon komplizierter. Da müsste man dann in dem Aufnahme-Dialog eine Variable setzen, die dann das Skript triggert, bzw. die Variable, die das Skript nach dem ersten Durchlauf (bei dem die Anpassung gemacht wird) stoppt, wieder zurücksetzt.
Aber dann hat man immer noch das massive Problem, dass man die EP bei Wiederaufnahme nicht kennt.

Man kann das Skript auch so schreiben, dass die EPs auf einen Wert gesetzt werden (glaube zumindest, dass es den Befehl gibt). Dann wirds halt saumässig aufwändig, für jedes Intervall, das der HC haben kann den Wert extra zu setzen. Kann man aber machen.

So, das war der technische Teil. Vom Spiel her ist das so eine Sache: wenn die Begleiter nix tun, sondern z.B. in der Kupferkrone rumlungern, wie sollen sie da Erfahrung gewinnen?
Ist halt so eine Abwägung von Spielbalance und Realität. Aber als Mod kann man m.E. sowas ruhig machen. Wird ja keiner gezwungen, sowas zu installieren...

Wie das Skript genau aussieht:

// EP-Anpassung

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
XPGT(Player1,200000)
THEN
RESPONSE #100
AddXPObject(Myself,100000)
Continue()
END

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
XPGT(Player1,400000)
THEN
RESPONSE #100
AddXPObject(Myself,200000)
Continue()
END

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
XPGT(Player1,600000)
THEN
RESPONSE #100
AddXPObject(Myself,200000)
Continue()
END

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
XPGT(Player1,800000)
THEN
RESPONSE #100
AddXPObject(Myself,200000)
Continue()
END

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
XPGT(Player1,1000000)
THEN
RESPONSE #100
AddXPObject(Myself,200000)
Continue()
END

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
XPGT(Player1,1500000)
THEN
RESPONSE #100
AddXPObject(Myself,500000)
Continue()
END

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
XPGT(Player1,2000000)
THEN
RESPONSE #100
AddXPObject(Myself,500000)
END

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
XPGT(Player1,3000000)
THEN
RESPONSE #100
AddXPObject(Myself,1000000)
Continue()
END

IF
InParty(Myself)
Global("M#LYAEPAnpassung","LOCALS",0)
THEN
RESPONSE #100
SetGlobal("M#LYAEPAnpassung","LOCALS",1)
END

Macht halt eine Anpassung, die gleich auch noch für die Herbeirufung im Einsprengsel taugt.
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.425
Tja, ist nicht so einfach, weil:
Das Skript ja davon ausgeht, dass der NPC beim Durchlaufen des Skriptes x EPs hat. Hat der NPC mehr EPs (war beim Rauswurf anzunehmen ist), dann bekommt er unverhältnismässig EPs dazu...

Die Idee hinter dem Skript ist:

NPC hat y EPs. Schau wieviel der HC ungefähr hat (über die Abfrage, ob er mehr als x hat). Dann gib dem NPC (x-y) EPs. Wenn aber der NPC nicht mehr y EPs hat, sondern y+500k, dann bekommt er trotzdem (x-y) EP und hat somit 500k mehr als der HC.
Wiederaufnahme ist halt besonders eklig. Daher hab ich das auch nicht gemacht ;)
 

Garret

Meisterdieb
Registriert
10.11.2000
Beiträge
832
Habe mich mal ein wenig durch die Dateien gewühlt aber komme nicht wirklich weiter, wäre für Hilfe sehr dankbar.

1) Sollte ich die XP-Anpassung nun in den Dialogen einarbeiten oder als Script, wenn letzteres, wie binde ich es ein?

2) Wenn ich mich für die erstere Variante entscheiden sollte, genügt es dann, [Charname].dlg entsprechnend anzupassen oder muss was anderes getan werden?
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.425
1. Skript, ganz klar Skript. In der Dialogdatei ist es nur ein übles Gewürge. Einbindung mit WeiDU, EXTEND_BOTTOM ~charname.bcs~ ~deinskript.bcs~ . Am besten das override-Skript nehmen.

2. Ja, sollte ausreichend sein.
 

Garret

Meisterdieb
Registriert
10.11.2000
Beiträge
832
Okay, und in wie würde ich das Skript dann einbinden?

Das scheint bei mir nicht so ganz zu funktionieren...
 

Caswallon

Chronist
Registriert
13.08.2001
Beiträge
11.460
Sinnvoll wäre vielleicht auch, die im Spiel vorhandenen NPCs durch Level-1-Varianten zu ersetzen, wie das Bluchers Level-1-NPCs machen, so daß man auch Hexerzauber, Waffenfertigkeiten usw. auswählen kann. (Falls man das will.)

Das Script muß irgendwie an das Charakterscript (Aerie.bcs usw.) oben angehängt werden - weiß aber nicht genau, wie das mit WeiDU geht.

Cas
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.425
Syntax für eine tp2 s. mein obiger Beitrag ;) und Level1-NPCs würden auch die Anpassung vereinfachen...
 

Garret

Meisterdieb
Registriert
10.11.2000
Beiträge
832
Genau so hatte ich das vor, mit Level 1-NPCs, um so auch Ärgernisse über (vermeintlich) schlecht verteilte Waffenfertigkeitspunkte aus der Welt zu schaffen.

Werde mich wohl morgen genauer damit beschäftigen, danke euch auf jeden Fall schonmal :)
 
Zuletzt bearbeitet:

Garret

Meisterdieb
Registriert
10.11.2000
Beiträge
832
So, habe dann die Skripte noch fertiggestellt und bei Jaheira erfolgreich getestet.

Habe bisher die Erfahrungspunkte in 100.000er-Schritten bis 3 Millionen eingebaut.

Erscheint euch mehr sinnvoll bzw. kleinere Einteilungen?

Und schon sind wieder ein paar Fragen aufgetaucht:
A) Was passiert bei TOB, wenn man sich dort NPCs herbeiruft, werden die ebenfalls über die normalen Skripts gespawnt?

B) Ist es aus obengenanntem Grund und den deutlich höheren Start-XP sinnvoll, auch Sarevok mit einem solchen Skript zu versehen?

C) Hat jemand eine gute Methode, NPCs auf Level 1 zu erschaffen, sodass sie dennoch die korrekten Rettungswürfe und mögliche Zauber usw. haben?

Jetzt ein paar rollenspieltechnische Aspekte, die mir beim Basteln auffielen:
Ihr hab ja bereits angesprochen, dass es zweifelhaft ist, dass NPCs Erfahrung bekommen, wenn sie nicht dabei sind.

Dazu kam mir in den Sinn, dass im Falle einer erstmaligen Aufnahme der Begleiter aus BG1 ja klar ist, dass sie so erfahren sind wie der HC, da sie ihn ja begleitet haben.

Bei den anderen NPCs ist es ja auch nicht abwegig, da sie ja Abenteurer sind, und weder als zu erfahrene Recken noch als totale Greenhorns würden sie sich überhaupt der Gruppe anschließen wollen, sondern eher nur dann, wenn sie ungefähr gleich stark sind.

Was das Rauswerfen und dann mit angepassten EXP wieder aufnehmen angeht bin ich auch eher skeptisch:
Neben den schon von Maus genannten technischen Problemen finde ich da kaum Gründe, woher der Erfahrungsanstieg kommen sollte, höchstens dadurch, dass sie zwischenzeitlich auch "arbeiten" waren, um sich über Wasser zu halten.

Ich persönlich würde daher einen solchen Teil aus den beiden Gründen erstmal Außen vor lassen, ich konzentriere mich auf die Skripte und Level 1-NPCs.

Danach würde ich als nächstes alternative Klassen für die noch nicht versorgten NPCs in Angriff nehmen, aber erstmal muss ich soweit kommen ;)
Kommentare, Hilfestellungen und Stellungnahmen jeder anderen Art sind wie immer herzlich willkommen.

Achja, kann es sein, dass dein Erfahrungsskript oben nicht richtig ist, meiner Erfahrung nach fehlen dort zwei Continue() ;)

Danke natürlich trotzdem für die viele Vorarbeit, ich sah das als kleinen Test an :D
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.425
Mittendrin fehlt eines, da hab ich bei c&p nicht aufgepasst (musste es in mehreren Teilen machen).

Am Schluss kann man eventuell noch ein continue setzen, nötig ist es aber nicht.

Hm, Level1-NPCs würde ich mit BG1 erstellen und die Kits ändern. Da, wo ein Kit noch innate-Fähigkeiten mitbringt, die dann per Hand reineditieren. Oder halt mittels AD&D oder Handbuch-Tabellen die BG2 generierten Charaktere auf Level 1 bringen. Letzteres ist wohl einfacher.
 

Garret

Meisterdieb
Registriert
10.11.2000
Beiträge
832
Okay, dankesehr :)

Das fehlende continue() hat das Ganze in eine Endlosschleife gesetzt, das fiel negativ auf :D

Ich glaube, ich versuche es mal mit Rekonstruktion durch das Handbuch...
 

Caswallon

Chronist
Registriert
13.08.2001
Beiträge
11.460
Wie wäre es mit: NPC als HC erstellen und fragliche Werte abschreiben?
Ansonsten werden TP+CON-Bonus, RW, Zauberanzahl usw. beim Levelanstieg in BG2 automatisch auf die korrekten Werte gesetzt.

Die NPCs in ToB werden über den FATESP.dlg geholt (für "Fate Spirit", dt. iirc "Schicksalsgeist", dieser Dialog mit der Tür im Einsprengsel). Dafür gibt's jeweils eine ToB-Variante des NPC (name12.cre oder so - halt die mit 2,5 Mio. XP).

Cas
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.425
Das beim Levelanstieg alles korrigiert bezweifel ich mal... Innates nämlich soweit ich weiss nicht... und bei den Angriffen wäre ich mir auch nicht sicher.
 

Garret

Meisterdieb
Registriert
10.11.2000
Beiträge
832
Hilft es mir denn, den NPC als HC zu kreieren?

Dadurch komme ich ja auch nicht auf Level 1, oder?

Wegen ToB mache ich mir dann später weitergehende Gedanken.
 
Oben