Custom Backstab Problem

spectre37

New Member
I try to create a "wind walk" spell that stun the target when a caster attack it from behind.
My problem is that I want to hide a floating text that come up with backstab damage (I want to use only my own custom text).

So I try to change a target allowed to "none", but the result is trigger don't even run : ((

JASS:
library BackstabCheck
 
function IsUnitBehindUnit takes unit u2, unit u1 returns boolean
local real face = GetUnitFacing(u1)
local real rangle = bj_RADTODEG*Atan2(GetUnitY(u2)-GetUnitY(u1),GetUnitX(u2)-GetUnitX(u1))
 
return not (RAbsBJ(face-rangle) < 45 or RAbsBJ(face-rangle-360) < 90)
endfunction
 
endlibrary


JASS:
function Shadow_Walk_Cond takes nothing returns boolean
return UnitHasBuffBJ(GetAttacker(), 'B00K') and IsUnitEnemy(GetAttacker(), GetOwningPlayer(GetTriggerUnit())) and IsUnitType(GetTriggerUnit(), UNIT_TYPE_MECHANICAL) == false
endfunction
 
function Shadow_Walk_Act takes nothing returns nothing
local unit a = GetAttacker()
local unit v = GetTriggerUnit()
local unit n
local real damage = GetUnitAbilityLevel(a, 'A015')*50
 
call DisableTrigger(GetTriggeringTrigger())
call TriggerSleepAction(.05)
 
if IsUnitBehindUnit(a,v) and IsUnitAliveBJ(v) then
set n = CreateUnitAtLoc( GetOwningPlayer(a), 'n00A', GetUnitLoc(v), bj_UNIT_FACING )
call UnitAddAbility( n, 'ACtb' )
call SetUnitAbilityLevel( n, 'ACtb', 2 )
call IssueTargetOrder( n, "creepthunderbolt", v )
call UnitApplyTimedLife( n, 'BTLF', 1 )
 
call UnitDamageTargetBJ( a, v, damage, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
call CreateTextTagLocBJ( I2S(R2I(damage)) + "!", GetUnitLoc(v), 60, 10, 100, 10, 10, 0 )
call FloatingText( GetLastCreatedTextTag(), 2, 1.5, 96, 90 )
 
call UnitRemoveBuffBJ('B00K', a)
endif
 
call EnableTrigger(GetTriggeringTrigger())
set n = null
endfunction
 
//===========================================================================
function InitTrig_Shadow_Walk takes nothing returns nothing
set gg_trg_Shadow_Walk = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Shadow_Walk, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Shadow_Walk, Condition( function Shadow_Walk_Cond ) )
call TriggerAddAction( gg_trg_Shadow_Walk, function Shadow_Walk_Act )
endfunction


**Note : 'B00K' is a wind walk buff.
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Problems :
1) TriggerSleepAction does not allow such short period. You need a timer to achieve that.
2) You can't override the default order string. It should be "thunderbolt".

Try this :
JASS:
library ShadowWalk initializer OnInit
 
private function IsAttackerBehindTarget takes unit atkr, unit targ returns boolean
local real targAngle=GetUnitFacing(targ)*bj_DEGTORAD
local real atkrToTargAngle=Atan2(GetUnitY(targ)-GetUnitY(atkr),GetUnitX(targ)-GetUnitX(atkr))
local real r=atkrToTargAngle-targAngle
return r<0.8 and r>-0.8 //360 degree = 6.284 rad, 45 degree = 0.7955 rad
endfunction
 
private function Cond takes nothing returns boolean
local unit atkr=GetAttacker()
local unit targ=GetTriggerUnit()
local real damage
local unit dum
if GetUnitAbilityLevel(atkr,'B00K')>0 and /*
*/ IsUnitEnemy(atkr,GetOwningPlayer(targ)) and /*
*/ IsUnitType(targ,UNIT_TYPE_MECHANICAL)==false and /*
*/ IsAttackerBehindTarget(atkr,targ) then
set damage=GetUnitAbilityLevel(atkr,'A015')*50.0
set dum=CreateUnit(GetOwningPlayer(atkr),'n00A',GetUnitX(targ),GetUnitY(targ),0.0)
//dummy, does not matter 270.0 degree facing or not.
call UnitAddAbility(dum,'ACtb')
call SetUnitAbilityLevel(dum,'ACtb',2) // Should be equal to GetUnitAbilityLevel? Idk.
call IssueTargetOrder(dum,"thunderbolt",targ)
call UnitDamageTarget(atkr,targ,damage,true,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_NORMAL,null)
call FloatingText(CreateTextTagLocBJ(I2S(R2I(damage)) + "!", GetUnitLoc(targ), 60, 10, 100, 10, 10,0), 2, 1.5, 96, 90 )
call UnitRemoveAbility(atkr,'B00K')
call UnitApplyTimedLife(dum,'BTLF',1.0)
set dum=null
endif
set atkr=null
set targ=null
return false
endfunction
 
private function OnInit takes nothing returns nothing
local trigger trig=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_UNIT_ATTACKED)
call TriggerAddCondition(trig, Condition(function Cond))
endfunction
 
endlibrary
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • tom_mai78101 tom_mai78101:
    I have a GIF though
  • tom_mai78101 tom_mai78101:
    In the GIF, I've configured it so the lower the "Main Value" is, the better. I had to compress it pretty far down though.
  • tom_mai78101 tom_mai78101:
    And this is the thread with the video that shows the wall clip. https://tasvideos.org/Forum/Topics/23453
    +2
  • tom_mai78101 tom_mai78101:
    Hmm, about the Headline News, I noticed threads are being moved into the subforum (Health News, Environmental News, etc.). When that happens, the TH Forum Home page loses the articles, and instead would show old articles posted 1 or 2 weeks ago.
  • tom_mai78101 tom_mai78101:
    What do we do with the Home page?
  • Ghan Ghan:
    I added those forums to the filter for that widget.
    +1
  • tom_mai78101 tom_mai78101:
    Oh nice. They're back. Thanks.
  • tom_mai78101 tom_mai78101:
    Now I think it makes more sense for me to put news in their own subforums, without worry.
  • The Helper The Helper:
    Awesome Ghan thanks! I was purposely not moving the first 15 news articles in Headline news to the different subforums but I guess I don't have to do that now?
  • tom_mai78101 tom_mai78101:
    Question: Is there a way to remove thread redirects? It creates a copy of the moved thread and takes up space, and I am leaning towards wanting to remove them in the Headline News. But if they have an expiration date, I guess I'm fine with it.
  • The Helper The Helper:
    If you move a thread please leave a permanent redirect. You can delete any redirects after 6 months. The redirects are left to help Search Engines find the moved content.
  • tom_mai78101 tom_mai78101:
    What if you move the permanent redirect, not the thread?
  • The Helper The Helper:
    I think that works but I have not messed with it. You can delete redirects though if you have to that will not delete the original thread
  • The Helper The Helper:
    if a redirect ends up in the same forum as the post it goes to though I think the redirect drops or fails or something but they are not bugged out and when you are working on an indirect the original post is safe.
  • The Helper The Helper:
    Happy Early Friday :)
    +1
  • V-SNES V-SNES:
    Happy Friday :)
  • tom_mai78101 tom_mai78101:
    Fun Friday for me
  • tom_mai78101 tom_mai78101:
    Happy Fun Friday to all.
    +2
  • The Helper The Helper:
    Happy Sunday everyone!!!
  • V-SNES V-SNES:
    Happy Sunday!!!
    +1
  • jonas jonas:
    Happy monday :p
  • jonas jonas:
    Everyone hates mondays?
    +1
  • The Helper The Helper:
    Happy Tuesday!
  • jonas jonas:
    Happy belated tuesday

    Members online

    No members online now.

    Affiliates

    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.
    Top