- Joined
- Aug 19, 2007
- Messages
- 1,377
Hi, I want to make an ability which offers jobs to the target village, increasing it's population growth rate. I need a dummy unit to cast the custom spell (which uses "Aerial Shackles" as a base and has the same "order string - use/turn on" -> "magicleash). Now the problem, whenever I use the following trigger it does nothing, what am I doing wrong? Thanks for taking the time, here is the not working trigger in gui:
-
Offersciencejob
-

Events
-


Unit - A unit Starts the effect of an ability
-
-

Conditions
-


(Ability being cast) Equal to (==) Offers a Job (scientist)
-
-

Actions
-


Set ScienceJobCaster = (Casting unit)
-


Set ScienceJobTarget = (Target unit of ability being cast)
-


Unit - Order (Casting unit) to Stop
-



Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
-




If - Conditions
-





(ScienceJobTarget is A town-hall-type unit) Equal to (==) True
-
-




Then - Actions
-





Unit Group - Pick every unit in (Units within 100.00 of (Position of ScienceJobCaster) matching ((Unit-type of (Matching unit)) Equal to (==) dummy science job)) and do (Actions)
-






Loop - Actions
-







Unit - Order (Picked unit) to Human Dragonhawk Rider - Aerial Shackles ScienceJobTarget
-
-
-
-




Else - Actions
-
-
-
-
JASS:
function Trig_Offersciencejob_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00V' ) ) then
return false
endif
return true
endfunction
function Trig_Offersciencejob_Func004Func002001003 takes nothing returns boolean
return ( GetUnitTypeId(GetFilterUnit()) == 'n001' )
endfunction
function Trig_Offersciencejob_Func004Func002A takes nothing returns nothing
call IssueTargetOrder( GetEnumUnit(), "magicleash", udg_ScienceJobTarget )
endfunction
function Trig_Offersciencejob_Func004C takes nothing returns boolean
if ( not ( IsUnitType(udg_ScienceJobTarget, UNIT_TYPE_TOWNHALL) == true ) ) then
return false
endif
return true
endfunction
function Trig_Offersciencejob_Actions takes nothing returns nothing
set udg_ScienceJobCaster = GetSpellAbilityUnit()
set udg_ScienceJobTarget = GetSpellTargetUnit()
call IssueImmediateOrder( GetSpellAbilityUnit(), "stop" )
if ( Trig_Offersciencejob_Func004C() ) then
call ForGroupBJ( GetUnitsInRangeOfLocMatching(100.00, GetUnitLoc(udg_ScienceJobCaster), Condition(function Trig_Offersciencejob_Func004Func002001003)), function Trig_Offersciencejob_Func004Func002A )
else
endif
endfunction
//===========================================================================
function InitTrig_Offersciencejob takes nothing returns nothing
set gg_trg_Offersciencejob = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Offersciencejob, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Offersciencejob, Condition( function Trig_Offersciencejob_Conditions ) )
call TriggerAddAction( gg_trg_Offersciencejob, function Trig_Offersciencejob_Actions )
endfunction
Code:
function Trig_Offersciencejob_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00V' ) ) then
return false
endif
return true
endfunction
function Trig_Offersciencejob_Func004Func002001003 takes nothing returns boolean
return ( GetUnitTypeId(GetFilterUnit()) == 'n001' )
endfunction
function Trig_Offersciencejob_Func004Func002A takes nothing returns nothing
call IssueTargetOrder( GetEnumUnit(), "magicleash", udg_ScienceJobTarget )
endfunction
function Trig_Offersciencejob_Func004C takes nothing returns boolean
if ( not ( IsUnitType(udg_ScienceJobTarget, UNIT_TYPE_TOWNHALL) == true ) ) then
return false
endif
return true
endfunction
function Trig_Offersciencejob_Actions takes nothing returns nothing
set udg_ScienceJobCaster = GetSpellAbilityUnit()
set udg_ScienceJobTarget = GetSpellTargetUnit()
call IssueImmediateOrder( GetSpellAbilityUnit(), "stop" )
if ( Trig_Offersciencejob_Func004C() ) then
call ForGroupBJ( GetUnitsInRangeOfLocMatching(100.00, GetUnitLoc(udg_ScienceJobCaster), Condition(function Trig_Offersciencejob_Func004Func002001003)), function Trig_Offersciencejob_Func004Func002A )
else
endif
endfunction
//===========================================================================
function InitTrig_Offersciencejob takes nothing returns nothing
set gg_trg_Offersciencejob = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Offersciencejob, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Offersciencejob, Condition( function Trig_Offersciencejob_Conditions ) )
call TriggerAddAction( gg_trg_Offersciencejob, function Trig_Offersciencejob_Actions )
endfunction
Last edited by a moderator:





"Order (~specific selected unit with 'select unit' in editor)" and this worked. So I think the problem lies in the unit group action, don't know where though. And one more thing, the dummy unit has the locust ability but I don't think that matters.

