Projekt

Allgemein

Profil

Aktionen

Fehler #16642

geschlossen

Fehler #4058: [Schamane] - Hauptticket

[Schamane] Feuerelementar: Dmgskalierung falsch

Von Mollestus vor mehr als 8 Jahren hinzugefügt. Vor fast 6 Jahren aktualisiert.

Status:
Live
Priorität:
Hoch
Zugewiesen an:
-
Kategorie:
Kreaturen
Zielversion:
Beginn:
04.12.2015
Update Text Deutsch:

Schamane: Das Feuerelementar sollte nun immer immun gegen Feuerattacken sein. Zudem wurden Zaubermacht, Resistenzen und die Intelligenzskalierungen aktualisiert.

Tags:

Beschreibung

Comes with:
Melee attack (Deals Fire damage.)
Fire Nova (Deals AoE Fire-damage close to his melee damage)
Fire Blast (Deals mediocre Fire damage.)
Fire Shield(Deals low Fire damage on hit.)"

Das sind die richtigen Koeffizienten!
Swing: 180 + 0.6 * SP + ( 2.0 / 14 ) * AP
Blast: ( 725 to 825 ) + 0.2 * SP
Nova: ( 925-1050 ) + 0.5 * SP
Shield: 96 + 0.015 * SP
Base Mana: 4000 + 15(0.3 * Int)

Die SP/AP/Int-Werte entsprechen denen des Besitzers! nicht des Pets!!! (Wenn man die Pet AP/ ZM etc nehmen muss, alle Koeffizienten *2 nehmen, da das PEt 50% der ZM des Owners übernimmt)

(1) there is a 5sec CD for Fire Nova
(2) While Fire Nova may be a 2sec cast, the elemental never does anything 0.5sec after the cast is over..... so I have chosen to effectively model it as a 2.5sec cast
(3) Fire Blast also seems to have a 5sec CD
(4) There is no clear priority list. If both FB and FN are off cooldown, it seems random which one is picked
(5) Swing time is 2sec and un-modified by any haste effects
(6) If FB or FN will come off CD in less than 2sec, the Elemental will often just wait instead of trying to get in another melee swing. I haven't yet determined the crossover point yet.
(7) FN costs 207 mana and FB costs 276 mana
(8) The elemental has 4k base mana and inherits 30% of master's intellect, gaining 15 mana per intellect
(9) When out of the five-second-rule it gains 10.66 mana per second


Wie das ganze modifiziert werden sollte:

- Das Pet skaliert mit den 10% AP bzw + AP Auren wie AP-Shout.
- Das Pet oder die Casts davon skalieren weder mit Haste, noch sollte der Dmg der Autohits durch Rüstung verändert werden.
- Der einzige Critmodifier, welches das Pet Crits erlauben sollte ist Herz des Kreuzfahrers ( Wenn nicht mgl einfach only 3% Crit adden)
- Das Pet hat im Simulator immer 100% Hit auf Spells? ( In den Logs auch keine Misses)
- Das Pet sollte durch Agi-Buff ( zB Horn des Winters auch AP kriegen 1:1 Umwandlung(Zusätzlich zum AP Gain des Besitzers)
- Alle Spells + der Autohit profitieren von FdE und ähnlichen Effekten (13% Spelldmg erhöhung)
- Manaregeffekte wie Replenishment/ Revitalize/ Euphoria sollten auch aufs Pet funktionieren
- Das ganze sollte nicht live modifiziert werden, sondern einen Snapshot der Werte zum Summon des Pets machen und dann durch obere Dinge modifiziert werden.
- Das Ding sollte immung gegen alle Spells aus der Feuerschule sein.

Der Autohit sollte in einer Attacktable stehen, davon 25% Glancing Blows. zusätzlich unterliegt der Autohit und die restlichen Casts dem Spellresist-system. (Ist de facto gerade so)

Ids:
https://db.rising-gods.de/?spell=32982
https://db.rising-gods.de/?npc=15438
https://db.rising-gods.de/?spell=57984
https://db.rising-gods.de/?spell=12470
https://db.rising-gods.de/?spell=13376


Quellen:

Cataclysm-Logo-Small Patch 4.3.0 (29-Nov-2011): Fire Elemental now benefits from 55% of its master's spell power, up from 50%.

Patch 3.1.0 (14-Apr-2009): The summoned Fire Elemental should now have moderately more health and mana, and its damage scaling has been increased. In addition, the Fire Elemental's spells now cost less mana.

http://www.worldoflogs.com/reports/rnyhwb053jp6bxqn/xe/?s=2567&e=2801&x=sourceName+%3D+%22Greater+Fire+Elemental%22

http://forums.elitistjerks.com/forums/topic/87430-enhancement-bis-gear-and-set-up-discussion-33-and-onward/

http://enhsim.codeplex.com/releases/view/50238


Zugehörige Tickets

Beziehung mit RG Live WotLK 3.3.5a - Fehler #10048: [Todesritter] Armee der Toten - Glancing HitsLive09.07.2014Aktionen
Beziehung mit RG Live WotLK 3.3.5a - Fehler #5667: Petscaling - HauptticketAbgewiesen18.11.2011Aktionen
Aktionen #1

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #2

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #3

Von Mollestus vor mehr als 8 Jahren aktualisiert

Interessant ist, dass Fireblast vom Ele zum Mage verlinkt ist^^

https://wow.freakz.ro/spells.php?spell=57984
Hier ists zu den Eletalenten verlinkt :>
http://de.wowhead.com/spell=57984/feuerschlag#sounds Hier ist er bei 45,9 aber WOD

Aktionen #4

Von Rushor vor mehr als 8 Jahren aktualisiert

  • Beziehung mit Fehler #10048: [Todesritter] Armee der Toten - Glancing Hits wurde hinzugefügt
Aktionen #5

Von Rushor vor mehr als 8 Jahren aktualisiert

bezüglich der blows: https://redmine.rising-gods.de/issues/10048 für die entry des pets die ausnahme hinzufügen

Aktionen #6

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #7

Von Rushor vor mehr als 8 Jahren aktualisiert

bezüglich der sp: Skalieren die Zauber des Pets überhaupt mit der ZM des petowners?

http://bug.omfg.gg/issues/6175 30 days no anwser close ..........
https://wotlk-twinhead.twinstar.cz/?issue=1038 - ein paar infos

zu 1) https://redmine.rising-gods.de/issues/5667 commits davon nachschauen

kay beim fireele scheint es so zu sklaieren:

                case ENTRY_FIRE_ELEMENTAL:
                {
                    if (!pInfo)
                    {
                        SetCreateHealth(40*petlevel);
                        SetCreateMana(28 + 10*petlevel);
                    }
                    SetBonusDamage(int32(GetOwner()->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_FIRE) * 0.5f));
                    SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 4 - petlevel));
                    SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 4 + petlevel));
                    break;
                }
Aktionen #9

Von Mollestus vor mehr als 8 Jahren aktualisiert

  • Beschreibung aktualisiert (Vergleich)
  • Status wurde von Neu zu Bestätigt geändert
  • Priorität wurde von Normal zu Hoch geändert

Das Ticket nochmal komplett überarbeitet mit meinen Tests :P

Aktionen #10

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #11

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #12

Von Mollestus vor mehr als 8 Jahren aktualisiert

  • Thema wurde von [Schamane] Feuerelementar: Besitzt Glancing Blows und Dmgskalierung falsch zu [Schamane] Feuerelementar: Dmgskalierung falsch geändert
Aktionen #13

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #14

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #15

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #16

Von Mollestus vor mehr als 8 Jahren aktualisiert

Aktionen #17

Von Rushor vor fast 8 Jahren aktualisiert

  • Beziehung mit Fehler #5667: Petscaling - Hauptticket wurde hinzugefügt
Aktionen #18

Von Rushor vor fast 8 Jahren aktualisiert

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

alles übernommen was ich so finden konnte:

spells welche nun übertragen werden:

SPELL_FERAL_SPIRIT_PET_SCALING_04  = 61783,
SPELL_FIRE_ELEMENTAL_SCALING_01 = 35665,
SPELL_FIRE_ELEMENTAL_SCALING_02 = 35666,
SPELL_FIRE_ELEMENTAL_SCALING_03 = 35667,
SPELL_FIRE_ELEMENTAL_SCALING_04 = 35668,

basedmg:

SetBonusDamage(int32(GetOwner()->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_FIRE) * 0.5f));
SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 3.5 - petlevel));
SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 3.5 + petlevel));

spellimplemenierungen:

class spell_sha_fire_elemental_scaling : public SpellScriptLoader
{
    public:
        spell_sha_fire_elemental_scaling() : SpellScriptLoader("spell_sha_fire_elemental_scaling") { }

        class spell_sha_fire_elemental_scaling_AuraScript : public AuraScript
        {
            PrepareAuraScript(spell_sha_fire_elemental_scaling_AuraScript);

            void CalculateResistanceAmount(AuraEffect const* aurEff, int32 & amount, bool & /*canBeRecalculated*/)
            {
                // fire elemental inherits 40% of resistance from owner and 35% of armor
                if (Unit* owner = GetUnitOwner()->GetOwner())
                {
                    SpellSchoolMask schoolMask = SpellSchoolMask(aurEff->GetSpellInfo()->Effects[aurEff->GetEffIndex()].MiscValue);
                    int32 modifier = schoolMask == SPELL_SCHOOL_MASK_NORMAL ? 35 : 40;
                    amount = CalculatePct(std::max<int32>(0, owner->GetResistance(schoolMask)), modifier);
                }
            }

            void CalculateStatAmount(AuraEffect const* aurEff, int32 & amount, bool & /*canBeRecalculated*/)
            {
                // fire elemental inherits 30% of intellect / stamina
                if (Unit* owner = GetUnitOwner()->GetOwner())
                {
                    Stats stat = Stats(aurEff->GetSpellInfo()->Effects[aurEff->GetEffIndex()].MiscValue);
                    amount = CalculatePct(std::max<int32>(0, owner->GetStat(stat)), 30);
                }
            }

            void CalculateAPAmount(AuraEffect const* aurEff, int32 & amount, bool & /*canBeRecalculated*/)
            {
                // fire elemental inherits 300% / 150% of SP as AP
                if (Unit* owner = GetUnitOwner()->GetOwner())
                {
                    int32 fire = owner->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_FIRE);
                    amount = CalculatePct(std::max<int32>(0, fire), (GetUnitOwner()->GetEntry() == ENTRY_FIRE_ELEMENTAL ? 300 : 150));
                }
            }

            void CalculateSPAmount(AuraEffect const* aurEff, int32 & amount, bool & /*canBeRecalculated*/)
            {
                // fire elemental inherits 100% of SP
                if (Unit* owner = GetUnitOwner()->GetOwner())
                {
                    int32 fire = owner->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_FIRE);
                    amount = CalculatePct(std::max<int32>(0, fire), 100);

                    // Update appropriate player field
                    if (owner->GetTypeId() == TYPEID_PLAYER)
                        owner->SetUInt32Value(PLAYER_PET_SPELL_POWER, (uint32)amount);
                }
            }

            void HandleEffectApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
            {
                GetUnitOwner()->ApplySpellImmune(0, IMMUNITY_STATE, aurEff->GetAuraType(), true);
                if (aurEff->GetAuraType() == SPELL_AURA_MOD_ATTACK_POWER)
                    GetUnitOwner()->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_ATTACK_POWER_PCT, true);
                else if (aurEff->GetAuraType() == SPELL_AURA_MOD_STAT)
                    GetUnitOwner()->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE, true);
            }

            void Register() override
            {
                if (m_scriptSpellId != 35665 && m_scriptSpellId != 65225)
                    DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_sha_fire_elemental_scaling_AuraScript::CalculateResistanceAmount, EFFECT_ALL, SPELL_AURA_MOD_RESISTANCE);

                if (m_scriptSpellId == 35666 || m_scriptSpellId == 65226)
                    DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_sha_fire_elemental_scaling_AuraScript::CalculateStatAmount, EFFECT_ALL, SPELL_AURA_MOD_STAT);

                if (m_scriptSpellId == 35665 || m_scriptSpellId == 65225)
                {
                    DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_sha_fire_elemental_scaling_AuraScript::CalculateAPAmount, EFFECT_ALL, SPELL_AURA_MOD_ATTACK_POWER);
                    DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_sha_fire_elemental_scaling_AuraScript::CalculateSPAmount, EFFECT_ALL, SPELL_AURA_MOD_DAMAGE_DONE);
                }

                OnEffectApply += AuraEffectApplyFn(spell_sha_fire_elemental_scaling_AuraScript::HandleEffectApply, EFFECT_ALL, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
            }
        };

        AuraScript* GetAuraScript() const override
        {
            return new spell_sha_fire_elemental_scaling_AuraScript();
        }
};

ist nun auch immun gegen fireattacken

sollte es eine verbesserung darstellen und sonst nichts kaputt machen > ready

Aktionen #19

Von Laederlappen vor fast 8 Jahren aktualisiert

  • Status wurde von Testbereit zu Ready geändert
  • Zugewiesen an wurde auf Rushor gesetzt
  • Update Text Deutsch aktualisiert (Vergleich)

Jo es stellt eine Verbesserung dar, daher auf ready, danach wieder auf bestätigt, da die Spells immer noch alle! zu niedrig skalieren.

Aktionen #20

Von Rushor vor fast 8 Jahren aktualisiert

  • Update Text Deutsch aktualisiert (Vergleich)

// fire elemental inherits 40% of resistance from owner and 35% of armor
// fire elemental inherits 30% of intellect / stamina
// fire elemental inherits 300% / 150% of SP as AP
// fire elemental inherits 100% of SP

wurde auch kurz überprüft oder?

ansonsten noch die spell_bonus_data einträge:

INSERT INTO `spell_bonus_data` VALUES ('57984', '0.2', '0', '0', '0', 'Pet Shaman - Fire Elemental Fire Blast');
INSERT INTO `spell_bonus_data` VALUES ('12470', '0.5', '0', '0', '0', 'Pet Shaman - Fire Elemental Fire Nova');
INSERT INTO `spell_bonus_data` VALUES ('13376', '0.015', '0', '0', '0', 'Pet Shaman - Fire Elemental Fire Shield');

https://github.com/Kittnz/Sunwell/blob/831ac9da07abf607cfb585a4435a0734759da977/sql/spell%20fixes/spell_bonus.sql

Aktionen #21

Von Rushor vor fast 8 Jahren aktualisiert

  • Zugewiesen an Rushor wurde gelöscht
  • DB-Link wurde auf https://db.rising-gods.de/?spell=32982 gesetzt

master reset > neuer hash

spell_bonus_data wurde gleich mit übernommen

Aktionen #22

Von Veylen vor fast 8 Jahren aktualisiert

  • Update Text Deutsch aktualisiert (Vergleich)
Aktionen #23

Von Daejiv vor fast 8 Jahren aktualisiert

  • Status wurde von Ready zu Live geändert
Aktionen #24

Von Daejiv vor etwa 7 Jahren aktualisiert

  • Zielversion wurde von Klassen zu Klasse - Schamane geändert
Aktionen #25

Von Left4Info vor fast 6 Jahren aktualisiert

  • Tags wurde auf Classes, Shaman gesetzt
Aktionen

Auch abrufbar als: Atom PDF