Fehler #21998
offenInstantzauber werden schon vor Kampfbeginn gewirkt
Instantzauber werden nun erst mit Beginn des Kampfes gewirkt.
Beschreibung
Aufgefallen ist mir das Verhalten bei den Incendosauriern in der Sengenden Schlucht (https://db.rising-gods.de/?npc=9318)
Wenn ich mit meinem Schurken Den Kampf mit "Fieser Trick" eröffne, sollte der Gegner für 4 Sekunden gestunnt sein.
Die Saurier sind auch gestunnt, jedoch habe ich den DoT (https://db.rising-gods.de/?spell=9275) (Den sie seit BC gar nicht mehr haben sollten) direkt den gesamten Kampf über auf mir drauf.
Ich konnte nicht Testen ob auch andere NPCs, die einen Sofortzauber haben, diesen direkt wirken, aber es sollte nicht passieren, wenn sie von Beginn an gestunnt sind.
Von Rushor vor fast 8 Jahren aktualisiert
checkcast in smart_scripts fehlt wohl
case SMART_ACTION_CAST: { ObjectList* targets = GetTargets(e, unit); if (!targets) break; for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (!IsUnit(*itr)) continue; if (!(e.action.cast.flags & SMARTCAST_AURA_NOT_PRESENT) || !(*itr)->ToUnit()->HasAura(e.action.cast.spell)) { if (me) { if (e.action.cast.flags & SMARTCAST_INTERRUPT_PREVIOUS) me->InterruptNonMeleeSpells(false); if (e.action.cast.flags & SMARTCAST_COMBAT_MOVE) { // If cast flag SMARTCAST_COMBAT_MOVE is set combat movement will not be allowed // unless target is outside spell range, out of mana, or LOS. bool _allowMove = false; SpellInfo const* spellInfo = sSpellMgr->EnsureSpellInfo(e.action.cast.spell); int32 mana = me->GetPower(POWER_MANA); if (me->GetDistance(*itr) > spellInfo->GetMaxRange(true) || me->GetDistance(*itr) < spellInfo->GetMinRange(true) || !me->IsWithinLOSInMap(*itr) || mana < spellInfo->CalcPowerCost(me, spellInfo->GetSchoolMask())) _allowMove = true; ENSURE_AI(SmartAI, me->AI())->SetCombatMove(_allowMove); } if (!me->HasUnitState(UNIT_STATE_CONFUSED) && !me->HasUnitState(UNIT_STATE_FLEEING) && !me->HasUnitState(UNIT_STATE_STUNNED)) me->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED) != 0); } else if (go) go->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED) != 0); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_CAST:: %s: %u casts spell %u on target %u with castflags %u", (me ? me->GetGUID() : go->GetGUID()).GetTypeName(), me ? me->GetGUID().GetCounter() : go->GetGUID().GetCounter(), e.action.cast.spell, (*itr)->GetGUID().GetCounter(), e.action.cast.flags); } else TC_LOG_DEBUG("scripts.ai", "Spell %u not cast because it has flag SMARTCAST_AURA_NOT_PRESENT and the target (%s) already has the aura", e.action.cast.spell, (*itr)->GetGUID().ToString().c_str()); } delete targets; break; }
besonders
if (!me->HasUnitState(UNIT_STATE_CONFUSED) && !me->HasUnitState(UNIT_STATE_FLEEING) && !me->HasUnitState(UNIT_STATE_STUNNED)) me->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED) != 0);
sollte dann hinzugefügt werden
Von Sockentester vor fast 8 Jahren aktualisiert
- Status wurde von Neu zu Bestätigt geändert
Von mathew vor mehr als 7 Jahren aktualisiert
- Status wurde von Bestätigt zu Testbereit geändert
- Zugewiesen an wurde von mathew zu Shienor geändert
Denkt bitte daran, den server neu zu starten!
Von Shienor vor mehr als 7 Jahren aktualisiert
- Status wurde von Testbereit zu Ready geändert
- Zugewiesen an
Shienorwurde gelöscht - Update Text Deutsch aktualisiert (Vergleich)
Von Daschluz vor mehr als 7 Jahren aktualisiert
- Zielversion wurde auf Welt gesetzt
- Update Text Deutsch aktualisiert (Vergleich)
Von Kuschkusch vor mehr als 7 Jahren aktualisiert
- Status wurde von Live zu Bestätigt geändert
Von Yrito vor mehr als 7 Jahren aktualisiert
Von Jeora vor mehr als 4 Jahren aktualisiert
- Tags wurde auf Creature, Spell, Mechanic gesetzt