Lara Gesundheit und Tod - LUA
Hier nenne ich mal einige Basis Lua Funktionen, wie man Laras Gesundheitsanzeige verändert und sie auf verschiedene Weise tötet.
Alle hier aufgeführten "LevelFuncs." Funktionen schreiben wir in unsere Level Lua Datei und lösen diese durch Volume Trigger aus. Wie das geht, wird hier beschrieben.
Wichtige Anmerkung:
Lara hat unter den Moveables eine Sonderstellung und muss nicht erst durch den Befehl "GetMoveableByName(name)" einer Variabel zugewiesen werden.
Es entfällt also die Zuweisung:
local Lara = GetMoveableByName("laracroft")
1 Laras Gesundheitswert verändern
Wenn Laras Gesundheitsbalken vollständig aufgeladen ist, also 100%, hat Laras Gesundheit einen Wert von 1000.
Diesen Gesundheitswert kann man mit folgender Funktion ändern:
Hier im Beispiel setzen wir Laras Gesundheit auf 500, sie hat also nur noch 50%, der Balken ist nur noch zur Hälfte voll.
1.1 Laras Gesundheitswert reduzieren
Möchte man Laras Gesundheitswert z.B. um 10 reduzieren, nimmt man folgende Funktion.
Hier setzen wir Laras Gesundheitswert, indem wir durch "GetHP" erst den aktuellen Wert ermitteln und dann davon 10 abziehen.
Anmerkung:
Möchte man, dass ständig Gesundheit (-10) abgezogen wird, kann man einen Volume Trigger auf die entsprechenden Squares setzen und die Funktion in "When inside" setzen. Wie es auch ohne Volume Trigger und "When inside" geht, erkläre ich weiter unten unter "Damage Room simulieren".
1.2 Laras Gesundheitswert erhöhen
Genauso wie man Laras Gesundheitwert reduzieren kann, kann man ihn natürlich auch z.B. um 10 erhöhen.
Hier setzen wir Laras Gesundheitswert, indem wir durch "GetHP" erst den aktuellen Wert ermitteln und dann davon diesen um 10 erhöhen.
Hat natürlich keine Auswirkung mehr, wenn Laras Gesundheitswert eh schon auf 100% bzw. 1000 ist.
Anmerkung:
Möchte man, dass ständig Gesundheit (+10) erhöht wird, kann man einen Volume Trigger auf die entsprechenden Squares setzen und die Funktion in "When inside" setzen.
2 Lara töten
Um Lara zu töten, haben wir mehrere Möglichkeiten:
2.1 Laras Gesundheitswert auf 0 setzen
Wir können mit SetHP() Laras Gesundheitswert auf 0 setzen. Dadurch stirbt sie sofort.
2.2 Sterbeanimationen abspielen
Man kann natürlich auch einfach eine Sterbeanimation setzen, die dann abgespielt wird, dann stirbt Lara auch. Die Standardanimation ist z.B. 138. Möchte man sie im Wasser sterben lassen, kann man auch einfach im Wasser die Sterbeanimation 132 abspielen lassen. (Laras Ertrinken Animation wird abgespielt und sie stirbt)
LevelFuncs.KillLara = function ()
Lara:SetAnim(138)
end
LevelFuncs.KillLara_Water = function ()
Lara:SetAnim(132)
end
2.3 Lara explodieren lassen
Es gibt einige vorgefertigte Lua Funktionen, um Moveables zu töten. Diese können wir auch für Lara verwenden.
Der Befehl "Lara:Explode()" lässt Lara explodieren. Damit es realtischer wirkt, habe ich noch das Explosionsgeräusch "106" und Laras Schrei "30" hinzugefügt durch "PlaySound...."
Theoretisch geht auch
Lara:Shatter()
Dann zerspringt sie wie eine Vase, die man zerschießt. Inwieweit das Sinn macht, darüber kann man sich natürlich streiten.
2.4 Lara in Flammen aufgehen lassen
Leider gibt es noch keine direkte Lua Funktion, um Lara direkt in Flammen aufgehen zu lassen.
Es gibt aber einen kleinen Workaround:
Beim alten Editor gab es das Nullmesh Objekt "Flame", welches man irgendwo im Level platzieren konnte. Auf allen Triggern, auf denen man dieses ausgelöst hast, ging Lara in Flammen auf.
ZitatAltes Handbuch
FLAME
Der Auslöser sorgt dafür, das Lara in Flammen aufgeht (wie das grüne DEATH Square). Das Objekt ist
für Lara tödlich.
Dieses können wir uns für eine Lua Funktion zunutze machen.
Wir platzieren das Nullmesh Objekt irgendwo im Level und setzen folgende Funktion in einen Volume Trigger:
LevelFuncs.burstflames = function ()
local nullmesh = GetMoveableByName("Flame")
nullmesh: Enable()
end
Wir nehmen den Lua Namen des Flame Nullmesh Objektes (hier im Beispiel "Flame") und triggern es durch "Enable()". Dadurch geht Lara auf jedem Square in Flammen auf, auf dem der Volume Trigger mit dieser Funktion gesetzt ist.
Anmerkung:
Das Nullmesh Objekt "Flame" ist leider nicht im Basis "TombEngine.Wad2" enthalten. Man muss es sich aus einem anderen Standard Wad wie z.b. "tut1" usw. rüberkopieren.
3 Eigenen Damage Room simulieren
Im Tomb Editor können wir unter "Room Options" ein Häkchen bei "Damage" machen. Dadurch wird ein Raum ein "Damage Room", in dem Lara kontinuierlich Energie verliert. Bisher gibt es leider in der TEN Engine noch keinen direkten Befehl, die Geschwindigkeit der Gesundheitsreduzierung selber zu bestimmen.
Wir können uns aber eine Lua Funktion schreiben, in der wir selber bestimmten, wie schnell Laras Gesundheitsbalken reduziert wird.
LevelFuncs.OnControlPhase = function()
LaraDamageRoom ()
end
function LaraDamageRoom ()
if Lara:GetRoom() == 11 then
Lara:SetHP(Lara:GetHP()-10)
else
Lara:SetHP(Lara:GetHP()+10)
end
end
Alles anzeigen
Wir schreiben eine normale Funktion, die wir in .OnControlPhase ständig überprüfen lassen. Wenn Lara wie hier im Beispiel in den Raum 11 geht ( Überprüfung durch "GetRoom() ), werden hier ständig "-10" von ihrer Gesundheit abgezogen, verlässt sie den Raum 11 wieder, steigt ihre Gesundheitsanzeige wieder ständig um (+10).
Anmerkung:
Den Raum muss man natürlich entsprechend anpassen. (Hier im Beispiel war es Raum 11) Unter Room Options kann man herausfinden, welche Nummer der Raum hat, der zu einem Damage Room werden soll. Auch die Zahl "10" kann man natürlich beliebig anpassen. Je höher die Zahl, desto schneller wird Lara Energie abgezogen.