HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

y wont this script work??

03-07-2007, 08:13 AM#1
shakib_028
This works wen i use the shortcut key n cast it or click n cast it but it doesnt work wen autocasted... please help the hero is a melee hero

Collapse JASS:
function Dummy_Unit takes nothing returns integer
  return 'e000'
endfunction

function Wrath_Abi takes nothing returns integer
  return 'A007'
endfunction

function Wrath_Debuff_Abi takes nothing returns integer
  return 'A002'
endfunction

function Wrath_Mana_Cost takes nothing returns integer
  return 15
endfunction

function Wrath_Damage takes integer l returns real
  return 4.*l
endfunction

function Wrath_Cooldown takes integer l returns real
  return 3.5 - 0.5*l 
endfunction

function Wrath_learned_cond takes nothing returns boolean
  return GetLearnedSkill() == Wrath_Abi()
endfunction

function Wrath_cond takes nothing returns boolean
  return GetSpellAbilityId() == Wrath_Abi()
endfunction

function Wrath_add_debuff takes unit c, unit v returns nothing
  local unit u = CreateUnitAtLoc(GetOwningPlayer(c), Dummy_Unit(), GetUnitLoc(c), 0.) 
  local integer l = GetUnitAbilityLevel(c,Wrath_Abi()) 
  
  call UnitDamageTarget(c,v,Wrath_Damage(l),true,false, ATTACK_TYPE_HERO, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)  
  call IssueTargetOrder(v, "attack", c)
  call UnitAddAbility(u, Wrath_Debuff_Abi())
  call SetUnitAbilityLevel(u, Wrath_Debuff_Abi(), l)
  call IssueTargetOrder(u, "acidbomb", v)
  call UnitApplyTimedLife(u, 'BTFL', 0.6)
  
  set u = null
endfunction

function Wrath_action takes nothing returns nothing
  local unit c = GetTriggerUnit()
  local unit v = GetSpellTargetUnit()

  call Wrath_add_debuff(c,v)

  set v = null
  set c = null
endfunction

function Wrath_autocast_action takes nothing returns nothing
  local trigger t = null
  if GetIssuedOrderId() == 852255 then //flamingarrows turn on autocast
    set t = GetHandleTrigger(GetTriggeringTrigger(), "t")
    call EnableTrigger(t)
    call EnableTrigger(GetHandleTrigger(GetTriggeringTrigger(), "f"))
    if GetUnitState(GetTriggerUnit(), UNIT_STATE_MANA) >= Wrath_Mana_Cost() then
      call SetHandleBoolean(t, "b", true)
    endif
    set t = null 
  endif
  if GetIssuedOrderId() == 852256 then //flamingarrows turn off autocast
    call DisableTrigger(GetHandleTrigger(GetTriggeringTrigger(), "t"))
    call DisableTrigger(GetHandleTrigger(GetTriggeringTrigger(), "f"))
  endif    
endfunction

function Wrath_Cooldown_timer takes nothing returns nothing
  local trigger t = GetHandleTrigger(GetExpiredTimer(), "t")
  call SetHandleHandle(t, "p", null)
  call FlushHandleLocals(GetExpiredTimer())
  call DestroyTimer(GetExpiredTimer())
  set t = null
endfunction

function auto_casted_Wrath_action takes nothing returns nothing
  local trigger t = GetTriggeringTrigger()
  local unit c = GetHandleUnit(t, "c")
  local unit v = GetTriggerUnit()
  local integer l = GetUnitAbilityLevel(c, Wrath_Abi())
  local boolean b = GetHandleBoolean(t, "b")
  local boolean m 
  local timer p = GetHandleTimer(t, "p")
  
  if GetAttacker() == c and p == null and IsUnitEnemy(v, GetOwningPlayer(c)) and not(IsUnitType(v, UNIT_TYPE_STRUCTURE)) and not(IsUnitType(v, UNIT_TYPE_MAGIC_IMMUNE)) then
    set m = GetUnitState(c, UNIT_STATE_MANA) >= Wrath_Mana_Cost()
    if b or m then
      call Wrath_add_debuff(c,v) 
    
      if not(m) then
        call SetHandleBoolean(t, "b", false)
      endif  
    
      set p = CreateTimer()
      call SetHandleHandle(t, "p", p)
      call SetHandleHandle(p, "t", t)
      call TimerStart(p, Wrath_Cooldown(l), false, function Wrath_Cooldown_timer)
    
      set p = null
    endif  
  endif
  
  set t = null
  set v = null
  set c = null
endfunction

function Wrath_autocast_has_mana takes nothing returns nothing
  local trigger t = GetHandleTrigger(GetTriggeringTrigger(), "t")
  call SetHandleBoolean(t, "b", true)
  set t = null
endfunction  

function Wrath_learned_action takes nothing returns nothing
  local trigger t = CreateTrigger()
  local trigger p = CreateTrigger()
  local trigger k = CreateTrigger()
  local trigger f = CreateTrigger()
  local trigger r = CreateTrigger()
  
  call TriggerRegisterUnitEvent(t, GetTriggerUnit(), EVENT_UNIT_SPELL_EFFECT)
  call TriggerAddCondition(t, Condition(function Wrath_cond))
  call TriggerAddAction(t, function Wrath_action)
  
  //used for auto-cast Wrath
  call TriggerRegisterAnyUnitEventBJ(r, EVENT_PLAYER_UNIT_ATTACKED)
  call TriggerAddAction(r, function auto_casted_Wrath_action)
  call SetHandleHandle(r, "c", GetTriggerUnit())
  call SetHandleBoolean(r, "b", GetUnitState(GetTriggerUnit(), UNIT_STATE_MANA) >= Wrath_Mana_Cost())
  call SetHandleHandle(r, "k", k)
  call DisableTrigger(r)
  
  call TriggerRegisterUnitManaEvent(f, GetTriggerUnit(), GREATER_THAN, Wrath_Mana_Cost() )
  call TriggerAddAction(f, function Wrath_autocast_has_mana)
  call SetHandleHandle(f, "t", t)
  
  call TriggerRegisterUnitEvent(k, GetTriggerUnit(), EVENT_UNIT_ISSUED_ORDER)
  call TriggerAddAction(k, function Wrath_autocast_action)  
  call SetHandleHandle(k, "t", r)
  call SetHandleHandle(k, "f", f)
  
  call DestroyTrigger(GetTriggeringTrigger())
  set t = null 
  set p = null
endfunction

function InitTrig_Wrath takes nothing returns nothing
  local trigger t = CreateTrigger()
  call TriggerRegisterUnitEvent(t, gg_unit_H000_0001, EVENT_UNIT_HERO_SKILL ) 
  call TriggerAddCondition(t, Condition (function Wrath_learned_cond))
  call TriggerAddAction(t, function Wrath_learned_action)
endfunction
03-08-2007, 01:03 AM#2
botanic
try remapping the shortcut key. That might work i dunno