Знаю только способы которые мы с напарником называем "костыль"
Создать юнит
Дать способность - духовное пламя
Заставить применить духовное пламя на юнит кастера.
Наверняка же есть способ более адекватный!?
Какие ещё вы знаете возможности накинуть баф на персонажа который не будет влиять на геймпелей.
Может кто то уже писал статью об этом или есть список способностей похожих на "духовое пламя" с помощью которой можно накидывать бафы на юнитов.
удалите вопрос в по сылке - xgm.guru/p/100/159628 - ибо два идентичных вопроса.
(извини за не правильно составленный ранее вопрос)

Дамми-каст - самый адекватный.
`
ОЖИДАНИЕ РЕКЛАМЫ...
24
следуя твоей логике всё что я напишу будет считаться правильным ответом ибо начальное условие можно тупо проигнорить
В свете того, что поменялся ответ темы - остальное сводится к дополнительной инфе по теме и её(доп. инфы) обсуждению. Которое, кстати, закончено.
15
Ну для баффов меня больше устраивают все же ауры, чем даммикасты. Потому что стакать удобнее, да и можно с эффектами похимичить.
11
для того мы его и запрещаем чтобы его не было видно.
Я имел в виду что если у персонажа игрока есть спел бук, и ему дават ауру-баф через спел бук, то в том спел буке который у него активные появляется эта павсивка-баф. Зато этот способ отлично подходит для накидывания бафоф на вражин и непесей.

Clamp:
любой таргет способности можно прописать бафф.
Вопрос задавался про любое условие значка бафа без влияния на геймплей, просто иконка, мы сами им задались когда каналом который "применяется мгновенно" не удалось накинуть баф через заклинания в PO на кастер юнита. Да я понимаю что ты написал про таргер, это я так, разъяснил
Clamp:
то фактический эффект не в баффе, а бафф - всего лишь видимость.
Вот как раз видимость бафа и добиваемся.
nvc123:
автор спросил более адекватный способ
Ну вообще я искал любые возможности накинуть баф, не правильно изложил, после вопрос на 1 ступень выше соз
дал. Да мой косяк похоже.
Melissa:
Ты как российсике чиновники - напичкаешь свои посты терминами и высокомерием и считаешь что дал информативный ответ, снеся какой-то бред.
Melissa, условие оптимальности было заданно в самом начале(как и прочие условия)
следовательно оно распространяется на все утверждения за исключением тех которые помечены как не удовлетворяющие условию
следуя твоей логике всё что я напишу будет считаться правильным ответом ибо начальное условие можно тупо проигнорить
Мне тоже показалось что демагогией попахивает.
38
у меня на стейт "алкоголя в крови" было так
void DrinkDummyCast(int abilId) {
    unit x = CreateUnit(Player(0),LINK_DGUI_TYPEUNIT,GetUnitX(GetJack()),GetUnitY(GetJack()),0.0)
    ShowUnit(x,false)
    UnitApplyTimedLife(x,'BTLF',1.2)
    IFDEBUG(! UnitAddAbility(x,abilId), )
    IssueTargetOrder(x,"drunkenhaze",GetJack())
    x = null
}
весь код
// JC_MainEngine_DrinkMode.j
// с поддержкой русского

#guard _JC_MainEngine_DrinkMode_j

library DrinkMode uses ENGINE, Ifdebug, String
{
enum (drinkmodestates) { DRM_NONE, DRM_EASY, DRM_NORMAL, DRM_HARD, DRM_VGOVNO }

#define private TIME_START_SEC = 2.8
#define private LITE_K = 0.08
#define private NORM_K = 0.16
#define private HARD_K = 0.25
#define private SUB_K = 0.006
#define private DRM_ANIM0 = "alternate"
#define private DRM_ANIM1 = "medium"
#define private DRM_ANIM2 = "large"

private timer tcounter = CreateTimer()
private timer tchanger = CreateTimer()

private trigger actor = CreateTrigger()

private unit GetJack() { return CANSAY_HERO }

real JackDrinkState = 0.0 //0.0-none, 1.0-vgovno
real GetJackRealDrinkState() { return JackDrinkState }
int GetJackDrinkState() {
    if(JackDrinkState<0.01) { return DRM_NONE }
    if((JackDrinkState>=0.01) && (JackDrinkState<0.25)) { return DRM_EASY }
    if((JackDrinkState>=0.25) && (JackDrinkState<0.5)) { return DRM_NORMAL }
    if((JackDrinkState>=0.5) && (JackDrinkState<0.75)) { return DRM_HARD }
    //if((JackDrinkState>=0.75)) {}
    return DRM_VGOVNO
}


void SetJackDrinkState(real st) {
    JackDrinkState = st
    SetJackSpeedModifyer(1.00 - JackDrinkState)
}

void DrinkDummyCast(int abilId) {
    unit x = CreateUnit(Player(0),LINK_DGUI_TYPEUNIT,GetUnitX(GetJack()),GetUnitY(GetJack()),0.0)
    ShowUnit(x,false)
    UnitApplyTimedLife(x,'BTLF',1.2)
    IFDEBUG(! UnitAddAbility(x,abilId), )
    IssueTargetOrder(x,"drunkenhaze",GetJack())
    x = null
}

void DrinkSetJackAnimProperties(int WhichState) {
    if(WhichState == DRM_NONE) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,false)
    }
    if(WhichState == DRM_EASY) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,false)
    }
    if(WhichState == DRM_NORMAL) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,true)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,false)
    }
    if(WhichState == DRM_HARD) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,true)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,false)
    }
    if(WhichState == DRM_VGOVNO) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,true)
    }
}

void CastDrinkToJackS(int WhichState) {
    if(WhichState == DRM_NONE) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,false)
        PauseTimer(tchanger)
        return
    }
    if(WhichState == DRM_EASY) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,false)
        DrinkDummyCast(LINK_DRM_ID1)
    }
    if(WhichState == DRM_NORMAL) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,true)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,false)
        DrinkDummyCast(LINK_DRM_ID2)
    }
    if(WhichState == DRM_HARD) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,true)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,false)
        DrinkDummyCast(LINK_DRM_ID3)
    }
    if(WhichState == DRM_VGOVNO) {
        AddUnitAnimationProperties(GetJack(),DRM_ANIM0,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM1,false)
        AddUnitAnimationProperties(GetJack(),DRM_ANIM2,true)
        DrinkDummyCast(LINK_DRM_ID4)
    }
}

void CastDrinkToJack() {
    CastDrinkToJackS(GetJackDrinkState())
}

void JackSubDrink() {
    SetJackDrinkState(GetJackRealDrinkState()-SUB_K)
    if(GetJackRealDrinkState()<0.0) {
        SetJackDrinkState(0.0)
        PauseTimer(tcounter)
    }
}

void JackAddDrink(real k) {
    SetJackDrinkState(GetJackRealDrinkState() + k)
    if(GetJackRealDrinkState()>1.0) {
        SetJackDrinkState(1.0)
    }
    TimerStart(tcounter,1.0,true,function JackSubDrink)
}

void JackAddDrinkById() {
    int id = GetSpellAbilityId()
    if(id == LINK_DRM_SRC1) { JackAddDrink(LITE_K) }
    elseif(id == LINK_DRM_SRC2) { JackAddDrink(NORM_K) }
    elseif(id == LINK_DRM_SRC3) { JackAddDrink(HARD_K) }
    else { return }
    CastDrinkToJack()
    TimerStart(tchanger,TIME_START_SEC,true,function CastDrinkToJack)
}

void DrinkMode_Init() {
    TriggerRegisterPlayerUnitEvent(actor,Player(0),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    TriggerAddAction( actor, function JackAddDrinkById )
}


}
Как видно, таймер периодически вызывает нужный каст от дамми на юнита. А как только надо снять бафф, таймер останавливается и бафф сам снимается через несколько секунд. Юнит же создается с временной жизнью и сам умирает.

Через ауру опасно - если юниты будут стоять слишком близко, может задеть соседа.
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.