Schamanentanz

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
332
Die Anwort auf meine Frage zu dem Thema habe ich gefunden, daher hier eine kleine Zusammenfassung zum Thema Schamanentanz am Beispiel von M'Khiin und einem eigenen Goblinschamanen.

1. cre
M'Khiin (BDMHKI7.cre) hat den "Spell Effect: Change Bard Song Effect [251]: SPSH004.spl".
-> Dadurch wird festgelegt welcher "Zauber" durch das Verwenden seines Schamanentanzes dieser Kreatur gewirkt wird. Hier ist das der Zauber "SPSH004.spl".

2. spl
Der Zauber "SPSH004.spl" hat mehrer Effekte. Entscheident ist hier:

"Summon: Random Monster Summoning [331]: BDSHAM01" (Falls man mit der Fähigkeit weitere Kreaturen beschwören will)
-> Das bedeutet, dass eine zufällige Kreatur aus der Liste "BDSHAM01.2da" beschworen wird.
-> Die Beschwörung hat im Original eine Wahrscheinlcihkeit von 36% (0-36).
Der Text, dass die Beschwörung geklappt hat, sollte die gleiche Wahrscheinlichkeit haben und der Text, dass es nicht klappt die entsprechende Gegenseite (37-100).
(Text: Display String [139]).

Der Zauber sorgt außerdem mit dem Effekt "Protection: Immunity Spell [318]: SPSH004.spl" (Dauer: 1 Runde) dafür, dass er nicht ununterbrochen gewirkt wird. Hat man einen eigen Zauber erstellt muss man hier entsprechend dessen Bezeichnung statt "SPSH004" eintragen.

Der Effekt "Spell: Cast Spell (at Target) [146]: SPSH003" sorgt dafür, dass die andere Fähigkeiten des Schamanen während des Tanzes gesperrt werden.

! Die Wirkung des .spl ändert sich mit der Stufe des Schamanen. Will man also eine Liste mit anderen Kreaturen verwenden muss man dies auch für jede Stufe eintragen oder alle Abstufungen außer der für Level 1 löschen.

3. cre
In der BDSHAM01.2da sind die Kreaturen "BDSHA01A" (Fuchsgeist), "BDSHA01B" (Schlangengeist), "BDSHA01C" (Hundegeist) eingetragen.
-> Hier kann auch jede andere Kreatur eingetragen werden, die beschworen werden soll. Die Endung .cre wird dabei weggelassen.

4. script
Die beschworenen Kreaturen haben u.a. den Script "BDSHUNSU.bcs"
Der sorgt dafür, dass die Bonuseffekte durch besondere Items des Beschwörers ausgelöst werden und dass sie verschwinden wenn der Schamanentanz unterbrochen wird.
Außerdem sorgt er dafür, dass sie nur Player 1 - 6 gerufen werden können und sonst direkt wieder verschwinden.
Wenn also z.B. eine beschworene Kreatur / neutraler NPC den Schamanentanz können soll, muss der Script hier abgeändert werden.


5. Beispiel Goblinschamane

Ich habe der Kreatur "NQ#GB16.cre" (Goblin-Schamane) den Spell Effect: Change Bard Song Effect [251]: "NQ#GB16.spl" gegeben.

Der "NQ#GB16.spl" hat den Effekt "Summon: Random Monster Summoning [331]: "NQ#GB16(.2da)" bekommen.
In "Protection: Immunity Spell [318]:l"-Effekt wurde der "NQ#GB16.spl" eingetragen.

In dieser .2da stehen die Kreaturen "NQ#GB21" (Goblin-Krieger), "NQ#GB22" (Goblin-Elite) und "NQ#BG23" (Goblin-Kommando), die ich vorher angelegt habe.
Für de Geistereffekt haben die .cre das Item "BDSPIRIM" ausgerüstet.

Statt "BDSHUNSU.bcs" haben sie den Script "NG#GBSU.bcs" bekommen, eine Kopie mit der oben genannten Änderung:

Code:
IF
  Allegiance(Myself,GOODCUTOFF)
  !CheckSpellState(Player1,SHAMANIC_DANCE)
  !CheckSpellState(Player2,SHAMANIC_DANCE)
  !CheckSpellState(Player3,SHAMANIC_DANCE)
  !CheckSpellState(Player4,SHAMANIC_DANCE)
  !CheckSpellState(Player5,SHAMANIC_DANCE)
  !CheckSpellState(Player6,SHAMANIC_DANCE)
THEN
  RESPONSE #100
    ApplySpellRES("BDSHUNSU",Myself)
END

wurde zu:

Code:
IF
  Allegiance(Myself,GOODCUTOFF)
  !CheckSpellState("NQ#GB16",SHAMANIC_DANCE)
THEN
  RESPONSE #100
    ApplySpellRES("BDSHUNSU",Myself)
END

Das Ergebnis diese Beispiels ist ein Schamane der mit seiner Fähigkeit Goblingeister beschwört und dafür nicht in der Gruppe sein muss.
 
Zuletzt bearbeitet:

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
332
Wenn man den Zauber, der duch das Verwenden der Fähigkeit gewirkt werden sollt, so einstellt, dass er den Effekt "Script: Set Global Variable [265]" hat, kann man durch einen Script nahezu alles mit ihr machen.

Hier der Script der ersten beiden Stufen eines Regentanzes:

Code:
IF
  Global("NQ#STORM","GLOBAL",1)
  Global("NQ#STORMSTATE","GLOBAL",0)
  AreaType(OUTDOOR)
THEN
  RESPONSE #50
    Weather(RAIN)
    DisplayString(Myself,@1)                    // ~Es beginnt zu regnen.~ 
    SetGlobal("NQ#STORMSTATE","GLOBAL",1)
    SetGlobal("NQ#STORM","GLOBAL",0)
    BattleSong()
  RESPONSE #50
    DisplayString(Myself,@2)                    // ~Nichts geschieht.~
    SetGlobal("NQ#STORM","GLOBAL",0)
    BattleSong()
END

IF
  Global("NQ#STORM","GLOBAL",1)
  Global("NQ#STORMSTATE","GLOBAL",1)
  AreaType(OUTDOOR)
  See(Nearestenemyof(Myself))
  CheckStatGT("NQ#SHA",9,Level)
THEN
  RESPONSE #50
    Weather(RAIN)
    CallLightning(Nearestenemyof(Myself))
    DisplayString(Myself,@3)                    // ~Ein Blitz antwortet Eurem Ruf!~
    SetGlobal("NQ#STORMSTATE","GLOBAL",2)
    SetGlobal("NQ#STORM","GLOBAL",0)
    BattleSong()
  RESPONSE #50
    DisplayString(Myself,@2)                    // ~Nichts geschieht.~
    SetGlobal("NQ#STORM","GLOBAL",0)
    BattleSong()
END

IF
  Global("NQ#STORM","GLOBAL",1)
  Global("NQ#STORMSTATE","GLOBAL",1)
  AreaType(OUTDOOR)
  See(Nearestenemyof(Myself))
  CheckStatLT(Myself,10,Level)
THEN
  RESPONSE #50
    Weather(RAIN)
    CallLightning(Nearestenemyof(Myself))
    DisplayString(Myself,@3)                    // ~Ein Blitz antwortet Eurem Ruf!~
    SetGlobal("NQ#STORM","GLOBAL",0)
    BattleSong()
  RESPONSE #50
    DisplayString(Myself,@2)                    // ~Nichts geschieht.~
    SetGlobal("NQ#STORM","GLOBAL",0)
    BattleSong()
END

In der ersten Stufe des Beispiels fängt es mit einer Wahrscheinlichkeit von 50% an zu regnen und die Variable "NQ#STORMSTATE" erhöht sich auf die nächste Stufe.
Wenn die zweite Stufe erreicht ist (es regnet) trifft mit einer Wahrscheinlichkeit von 50% ein Blitz den nächsten Gegner des Schamanen, falls der einen Gegner sieht ("See(Nearestenemyof(Myself)").
Es kann auch per Zufall einen anderen oder mehrere Gegner treffen, aber da das noch einige Zeilen mehr in Anspruch genommen hätte, hier nur das Beispiel mit dem nächsten Gegner.

Die Variable "NQ#STORMSTATE" erhöht sich im Beispiel wieder um eine Stufe, wenn der Schamane mindesten die Stufe 10 hat. (CheckStatGT("NQ#SHA",9,Level))
Hat er das nicht bleibt der Tanz in der aktuellen Stuffe und der jeweils nächste Gegner wird weiter zu 50% mit Blitzen beschossen. (CheckStatLT(Myself,10,Level))

Die dritte Stufe des Tanzes kann wieder jeden anderen Effekt haben, der hier passend erscheint.

Am Ende jeder Aktion steht BattleSong(), weil es sich um den Script des Schamanen handelt und der Schamenantanzz sonst, durch jeder Aktion unterbrochen, neu gestartet werden muss.
Alternativ kann der ein abgewandelter Script auch ohne BattleSong() in der baldur.bcs angefügt werde.

Durch das "IF" kann der Tanz sehr an den jeweiligen Charakter und seine Situation angepasst werden. Unter der Erde können statt Blitzen Erdbeben gerufen oder Erdelementar beschworen werden.
Eine Beschwörung könnte neben dem area type z.B. abhängig vom Ruf der Gruppe / der Gesinnung oder dem Zustand des Wirkers / dem Erfüllen bestimmter Quest usw. gemacht werden.
Außerdem kann man die Kraft des Skills über einen Timer aufladen lassen.
 
Zuletzt bearbeitet:
Oben