function SilaTmi_Damaged_Act takes nothing returns nothing local unit u = GetEventDamageSource() local unit c = GetTriggerUnit() local real a = GetUnitFacing(u) local real d = GetEventDamage() local real ds = d * 0.5 local real dss = ds * (1. + 0.01 * udg_SilaTmiDeath) local real dc = d * (0.4 + 0.05 * GetUnitAbilityLevel(u, Sila_Tmi_Ability_Crit())) * udg_SilaTmiDeath / 5 local real dcs = dc * (1. + 0.01 * udg_SilaTmiDeath) local real dsc = dc * 0.5 local real dscs = dcs * (1. + 0.01 * udg_SilaTmiDeath) local real width = Sila_Tmi_Width(u) local real dist = Sila_Tmi_Dist(u) local real x1 = GetWidgetX(u) + Cos((a - 90.) * .017) * width / 2 local real x2 = GetWidgetX(u) + Cos((a + 90.) * .017) * width / 2 local real x3 = x1 + Cos(a * .017) * dist local real x4 = x2 + Cos(a * .017) * dist local real y1 = GetWidgetY(u) + Sin((a - 90.) * .017) * width / 2 local real y2 = GetWidgetY(u) + Sin((a + 90.) * .017) * width / 2 local real y3 = y1 + Sin(a * .017) * dist local real y4 = y2 + Sin(a * .017) * dist local group g = CreateGroup() local unit b = null local integer ch = GetRandomInt(1, 100) call GroupEnumUnitsInRange(g, GetWidgetX(u), GetWidgetY(u), d + 100. , null) loop b = FirstOfGroup(g) exitwhen (b == null) if IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and b == c and ch <= Sila_Tmi_Crit_Chance(u) and GetUnitAbilityLevel(b, Sila_Tmi_Ability_Slow_Buff()) >= 1 and ChekSpellUnit(u, b) == true then call DisableTrigger(GetTriggeringTrigger()) call UnitDamageTarget(u, b, dcs, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS) call EnableTrigger(GetTriggeringTrigger()) call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Crit_Slow(), c, "chest")) call CritTextTag(dcs, GetWidgetX(u) - 20, GetWidgetY(u) - 20) elseif IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and b == c and ch <= Sila_Tmi_Crit_Chance(u) and ChekSpellUnit(u, b) == true then call DisableTrigger(GetTriggeringTrigger()) call UnitDamageTarget(u, b, dc, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS) call EnableTrigger(GetTriggeringTrigger()) call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Crit(), c, "chest")) call CritTextTag(dc, GetWidgetX(u) - 20, GetWidgetY(u) - 20) elseif IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and ch <= Sila_Tmi_Crit_Chance(u) and GetUnitAbilityLevel(b, Sila_Tmi_Ability_Slow_Buff()) >= 1 and ChekSpellUnit(u, b) == true then call DisableTrigger(GetTriggeringTrigger()) call UnitDamageTarget(u, b, dscs, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS) call EnableTrigger(GetTriggeringTrigger()) call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Splash_Slow(), c, "chest")) elseif IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and ch <= Sila_Tmi_Crit_Chance(u) and ChekSpellUnit(u, b) == true then call DisableTrigger(GetTriggeringTrigger()) call UnitDamageTarget(u, b, dsc, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS) call EnableTrigger(GetTriggeringTrigger()) call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Splash(), c, "chest")) elseif IsCoordsIn4Gon(GetWidgetX(b), GetWidgetY(b), x1, y1, x2, y2, x3, y3, x4, y4) == true and ChekSpellUnit(u, b) == true then call DisableTrigger(GetTriggeringTrigger()) call UnitDamageTarget(u, b, ds, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS) call EnableTrigger(GetTriggeringTrigger()) call DestroyEffect(AddSpecialEffectTarget(Sila_Tmi_Effect_Splash(), c, "chest")) endif call GroupRemoveUnit(g, b) endloop call DestroyGroup(g) set u = null set c = null set g = null set b = null endfunction
Объясняю: при ударе героем с руки создается триггер на получение урона с этими действиями, проблема в том что условия некорректно работают, т.е. в первом случае если юнит в прямоугольнике, выпал шанс на крит, у него есть такой то бафф и он является тем юнитом по которому прошел урон с руки то нанести такой то урон и сделать на нем такой то эффект если все выше перечисленное, но без баффа то нанести другой урон и сделать другой эффект если все как в первом случае только юнит не является тем по которому нанесли урон с руки то нанести третий урон и сделать третий эффект если все тоже самое но без баффа то нанести четвертый урон и сделать четвертый эффект если все тоже самое но без крита то нанести пятый урон и сделать четвертый эффект
Вроде как уроны наносятся правильно, но эффекты... При первом последующем же не критическом ударе на всех юнитах в прямоугольнике создается эффект крит, а на том которого бьешь с руки создается эффект, который должен создаваться на тех в прямоугольники. Вообще сделал вывод что и урон наверно не правильно работает, вроде условия все правильный но работает не так, или я нуб?
крит триггерный? если механизировано через прямое накладывание героем бафа, то он не наложится при крите. ну скорее всего у тебя не так, но вдруг...
Добавлено (11 Октября 2012, 18:39:35) --------------------------------------------- Просто помнится, ты говорил, что и урон с руки дамиками обрабатываешь