Projekt

Allgemein

Profil

Aktionen

Fehler #4201

geschlossen

[Merge][Turm Utgarde][HC] Svala Grabeslied

Von Melgro vor mehr als 12 Jahren hinzugefügt. Vor etwa 11 Jahren aktualisiert.

Status:
Abgewiesen
Priorität:
Normal
Zugewiesen an:
-
Kategorie:
-
Zielversion:
Beginn:
13.08.2012
Update Text Deutsch:

Beschreibung

Svala Grabeslied (Boss): http://www.hordeguides.de/Instanz/WotLK/Boss/26668/Svala-Grabeslied/index.htm

1# Beim triggern des Events sollten die Zuschauer wegrennen.
Derzeit müssen diese noch bekämpft werden, was nicht weiter schlimm ist.

Ritual des Schwertes (Spell): [[http://de.wowhead.com/?spell=48276]]
Sollte bei 75% 50% und 25% stattfinden.
Momentan findet dies nur einmal im gesamten Kampf statt.

Ritualkanalisierer (Kreatur/Add):
Sollte den Spell: Paralysieren (http://de.wowhead.com/?spell=48278) nur auf den
geopferten Spieler wirken, sodass die anderen die 3 gespawnten Tirualkanalisierer
schnellstmöglich bekämpfen können.
Momentan betrifft das Paralysieren auch nicht geopferte Spieler der Gruppe.

2# Nach dem Tirual bleibt Svala Grabeslied an ihrer Schwebeposition in der Luft.
Es sollte so sein, dass sie nach dem Ritual das Ziel ihrer Hassliste angreift.


Dateien

boss_svala.cpp (19,9 KB) boss_svala.cpp Melgro, 23.08.2012 23:37
Aktionen #1

Von Melgro vor mehr als 12 Jahren aktualisiert

  • % erledigt wurde von 0 zu 20 geändert

Hatte grad doch noch bißchen Zeit im Geschäft und hab mir die boss_svala.cpp
angeschaut - also vom trinityCore-Repository.
Ich denke man kann diesen Eintrag auf Zielversion Merge setzen, da es mir scheint als wären die oben beschriebenen Fehler dort teilweise schon behoben.
Die Zuschauer sollten von alleine wegrennen:

                            // spectators flee event
                            if (instance)
                            {
                                std::list<Creature*> lspectatorList;
                                GetCreatureListWithEntryInGrid(lspectatorList, me, CREATURE_SPECTATOR, 100.0f);
                                for (std::list<Creature*>::iterator itr = lspectatorList.begin(); itr != lspectatorList.end(); ++itr)
                                {
                                    if ((*itr)->isAlive())
                                    {
                                        (*itr)->SetStandState(UNIT_STAND_STATE_STAND);
                                        (*itr)->SetWalk(false);
                                        (*itr)->GetMotionMaster()->MovePoint(1, spectatorWP[0][0], spectatorWP[0][1], spectatorWP[0][2]);
                                    }
                                }
                            }

Die Kanalisierer sollten demnach den Spieler als "victim" nehmen, der auch geopfert wird: DATA_SACRIFICED_PLAYER

class npc_ritual_channeler : public CreatureScript{
...
        void UpdateAI(const uint32 diff)
        {
...
            if (paralyzeTimer <= diff)
            {
                if (instance)
                    if (Unit* victim = me->GetUnit(*me, instance->GetData64(DATA_SACRIFICED_PLAYER)))
                        DoCast(victim, SPELL_PARALYZE, false);

                paralyzeTimer = 200;
            }

Das OpferEvent, ist laut dem Programmcode allerdings noch fehlerhaft und bedarf überarbeitung:
Hier wird ein bool sacrificed benutzt. So wie es momentan implementiert ist, wird dieses Event
nur einmal pro Kampf ausgelöst.

        void UpdateAI(const uint32 diff)
        {
...
{
 if (!sacrificed)
                {
                    if (HealthBelowPct(50))
                    {
...
                            DoCast(me, SPELL_RITUAL_OF_THE_SWORD);
                            sacrificed = true;
                        }
                    }
...
            else  //SACRIFICING
            {
                if (sacrificeTimer <= diff)
                {
                    switch (sacrePhase)
                    {
...
                        case 2:
                            DoCast(me, SPELL_RITUAL_DISARM);
                            ++sacrePhase;
                            break;
                        case 3:
                            break;
...


Ich denke ein einfaches im

case 3:
sacrificed = false;
break;

und dann weiter oben beim HPPrct check:

                    if (HealthBelowPct(75) || HealthBelowPct(50) || HealthBelowPct(25)){

Die drei Anpassungen könnten das Event schon ändern :)

Bleibt nur das

else  //SACRIFICING
            {
...
                SetCombatMovement(true);
                DoMeleeAttackIfReady();



am Ende des Rituals.

Grüße, Melgro

Aktionen #2

Von Melgro vor mehr als 12 Jahren aktualisiert

OUps,

das würde so nicht funktioniere:
1 if (HealthBelowPct(75) || HealthBelowPct(50) || HealthBelowPct(25)){

das wäre ja ab unter 75% immer true, blöd von mir ^^
:D

Aktionen #3

Von karn vor mehr als 12 Jahren aktualisiert

Melgro bewerbe dich als dev

Aktionen #4

Von Melgro vor mehr als 12 Jahren aktualisiert

schon längst passiert, ich warte noch auf Antwort.
Hab den trinityCore bei mir schon am laufen samt MySQL und so Zeugs bräuchte nur noch Zugang zum RG-Git :)

BTT:
Und ich glaube ich würde hier entweder drei bools einführen um die einzelnen sacrifice_below75, sacrifice_below_50 und sacrifice_below25 zu setzen oder nen "uint8 SacrificeEventCounter" um die ProzentPhasen abzufragen.

Aktionen #5

Von Melgro vor mehr als 12 Jahren aktualisiert

Hi Zusammen,

ich hab heute abend mal bißchen Zeit gehabt und mir nachdem TrinityCore und so schon bei mir läuft mal die Svala nochmal angeschaut.

im Anhang ist das, was dabei rausgekommen ist, bei mir getestet mit zwei Spielern:

Ritual des Schwertes findet nun drei mal statt bei 75,50,25%
geopfert sollte eigentlich random werden, allerdings war das bei mir nicht der Fall,
naja bei 3 mal testen und einer 50:50 Chance schwer zu beurteilen :)

Die Zuschauer rennen schon vom aktuellen TrinityCore her während des events weg.

Svala kommt auch nach dem Ritual schön artig runtergeflogen,
sofern der geopferte Spieler nicht gestorben ist, anderes Szenario bisher nicht testen können, sollte
aber davonnicht abhängig sein.

Schauts euch mal und nehmt raus was ihr/wir davon benutzen können.

Aktionen #6

Von Daejiv vor mehr als 12 Jahren aktualisiert

  • Thema wurde von [Turm Utgarde][HC] Svala Grabeslied zu [Merge][Turm Utgarde][HC] Svala Grabeslied geändert
  • Status wurde von Neu zu Testbereit geändert
  • Zielversion wurde auf Merge gesetzt

https://github.com/rising-gods/Merge/commit/953241133704a223486b8e4bf7deb0b781ba833a

Hab deine Datei mal so übernommen und nur ein paar Whitespaces angepasst. Bitte Testen.

Aktionen #7

Von frostworg vor mehr als 12 Jahren aktualisiert

  • Status wurde von Testbereit zu In Bearbeitung geändert
  • Zugewiesen an wurde auf Lareine gesetzt

1.: Sobald ein Spieler von den Ritualkanalisierern gefangen wird kommt Svala runter und macht nichts ausser sich vor den Aggrohalter zu stellen normal sollte sie während des gesamten Rituals Schweben und unmittelbar danach runter kommen.

2.: Es tritt oft der Bugg auf, dass das Ritual unmittelbar nach dem es angefangen hat es sich resettet und immer mehr Ritualkanalisierer spawnen -> irgendwann ist die ganze Gruppe betäubt und man kommt nur mittel .gm on aus dem Fight.

Aktionen #8

Von Lareine vor mehr als 12 Jahren aktualisiert

  • Zugewiesen an wurde von Lareine zu Daejiv geändert
Aktionen #9

Von Daejiv vor fast 12 Jahren aktualisiert

  • Status wurde von In Bearbeitung zu Bestätigt geändert
  • Zugewiesen an Daejiv wurde gelöscht
Aktionen #10

Von Lareine vor fast 12 Jahren aktualisiert

  • Status wurde von Bestätigt zu In Bearbeitung geändert
  • Zugewiesen an wurde auf 1623 gesetzt

In Bearbeitung von paz.

Aktionen #11

Von pastulio vor fast 12 Jahren aktualisiert

Fuer 1. hilft folgende Aenderung, 2. kann ich auf TC nicht reproduzieren.

Sorry, kein patch/diff, hab das orginal nicht aus git

                case SACRIFICING: 
                    if (sacrificeTimer <= diff)
                    {
                        switch (sacrePhase)
                        {
                            case 0:
                                // spawn ritual channelers
                                if (instance)
                                {
                                    DoCast(me, SPELL_RITUAL_CHANNELER_1, true);
                                    DoCast(me, SPELL_RITUAL_CHANNELER_2, true);
                                    DoCast(me, SPELL_RITUAL_CHANNELER_3, true);
                                }
                                ++sacrePhase;
                                sacrificeTimer = 25 * IN_MILLISECONDS; ////HIER 2 -> 25
                                break;
Aktionen #12

Von Sif vor mehr als 11 Jahren aktualisiert

Der Erfolg http://wowdata.buffed.de/achievement/Dungeons-und-Schlachtzuege/Wrath-of-the-Lich-King-Dungeons/Ueberredungskuenstler-2043 funktioniert damit auch nicht. Weil sie den Cast unterbricht und sofort runter kommt noch während paralysieren.

http://www.youtube.com/watch?v=gfsbebTw6Cc

Aktionen #13

Von Lareine vor mehr als 11 Jahren aktualisiert

  • Status wurde von In Bearbeitung zu Bestätigt geändert
  • Zugewiesen an 1623 wurde gelöscht
Aktionen #14

Von Ajolkus vor etwa 11 Jahren aktualisiert

An dieser Stelle verweise ich einfach mal auf ein anderes, neues Ticket, welches die aktuelle fehler Situation zeigt:
https://redmine.rising-gods.de/issues/6972

Aktionen #15

Von Ajolkus vor etwa 11 Jahren aktualisiert

  • Status wurde von Bestätigt zu Abgewiesen geändert

Um nicht unübersichtlich zu werden, daher -> closed

Aktionen

Auch abrufbar als: Atom PDF