Does this still even work?

Naga'sShadow

Ultra Cool Member
Reaction score
49
I have admittedly not messed with this stuff in a very long time. I know that most of my code is from before the patch that added hashtables and broke all my stuff. So I have started on something new and as far as I know it should work. Jass NG saves fine but the game drops me to the opening page when I attempt to test it. So some unknown trigger error. Here is the trigger in question.

Code:
scope InnerFire initializer init

globals
    private constant integer SPELLID = 'A002' //Spell's Rawcode
    private constant integer HIDID = 'A004' //The hidden Inner Fire's Rawcode
    private constant integer DUMMYID = 'h001' //The hidden caster unit
    private constant string SFX = "Abilities\\Spells\\Human\\MarkOfChaos\\MarkOfChaosTarget.mdl"
endglobals

private function targeting takes nothing returns boolean
    local unit u = GetFilterUnit()
    return GetWidgetLife(u) >= .45 and IsUnitAlly(u, GetOwningPlayer(GetTriggerUnit())) == true
endfunction

private function actions takes unit u returns nothing
    local unit caster = u
    local unit dummy
    local location target = GetSpellTargetLoc()
    local group targets = CreateGroup()
    local unit fog
    local integer i = GetUnitAbilityLevel(u, SPELLID)
   
    call AddSpecialEffectLoc(SFX,target)
   
    call GroupEnumUnitsInRangeOfLoc(targets, target, 200, Filter( function targeting))

    loop
        set fog = FirstOfGroup(targets)
        exitwhen fog == null
        set dummy = CreateUnitAtLoc(GetOwningPlayer(u), DUMMYID, target, 0)
        call UnitAddAbility(dummy, HIDID)
        call SetUnitAbilityLevel(dummy, HIDID, i)
        call IssueTargetOrder(dummy, "innerfire", fog)
        call UnitApplyTimedLife(dummy, 'BHwe', 1)
        call GroupRemoveUnit(targets, fog)
        set fog = null
    endloop
   
endfunction

private function conditions takes nothing returns boolean
    if GetSpellAbilityId() == SPELLID then
        call actions(GetTriggerUnit())
    endif
    return false
endfunction

//===========================================================================
private function init takes nothing returns nothing
    local trigger t = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( t, Condition( function conditions) )
endfunction

endscope
I'm currently using JNGP 5d. The only link to 2.0 I can find requires me signing up to a site. Is my problem solvable by upgrading or is it in the code itself? Please don't point out the inefficient group setup unless you know a superior way.
 

jonas

Ultra Cool Member
Reaction score
47
Are you sure that GetWidgetLife can be used on a unit in the new JASS?
 

Naga'sShadow

Ultra Cool Member
Reaction score
49
It's worked fine for me. I managed to get it working so considered the issue solved but thanks for the help.
 

MyPad

Member
Reaction score
0
JASS:
scope InnerFire initializer init

//Added AI function...
native UnitAlive takes unit id returns boolean

globals
   private constant integer SPELLID = 'A002' //Spell's Rawcode
   private constant integer HIDID = 'A004' //The hidden Inner Fire's Rawcode
   private constant integer DUMMYID = 'h001' //The hidden caster unit
   private constant string SFX = "Abilities\\Spells\\Human\\MarkOfChaos\\MarkOfChaosTarget.mdl"
endglobals

//Delimited the targeting conditionfunc
/*
private function targeting takes nothing returns boolean
   local unit u = GetFilterUnit()
   return GetWidgetLife(u) >= .45 and IsUnitAlly(u, GetOwningPlayer(GetTriggerUnit())) == true
endfunction
*/

private function actions takes unit u returns nothing
   //local unit caster = u
   local unit dummy

   //Reals
   local real target_x = GetSpellTargetX()
   local real target_y = GetSpellTargetY()
   //local location target = GetSpellTargetLoc()

   local group targets = CreateGroup()
   local unit fog
   local integer i = GetUnitAbilityLevel(u, SPELLID)
   
   call AddSpecialEffect(SFX, target_x, target_y)
   
   call GroupEnumUnitsInRange(targets, target_x, target_y, 200, null)
   loop
       set fog = FirstOfGroup(targets)
       exitwhen fog == null
       if /*GetWidgetLife(fog) >= .45*/ UnitAlive(fog) and IsUnitAlly(fog, GetOwningPlayer(u)) then
           set dummy = CreateUnitAtLoc(GetOwningPlayer(u), DUMMYID, target, 0)
           call UnitAddAbility(dummy, HIDID)
           call SetUnitAbilityLevel(dummy, HIDID, i)
           call IssueTargetOrder(dummy, "innerfire", fog)
           call UnitApplyTimedLife(dummy, 'BHwe', 1)
       endif
       call GroupRemoveUnit(targets, fog)
       set fog = null
   endloop
   
   call DestroyGroup(targets)
   
   set dummy = null
   set fog = null
   set targets = null
endfunction

private function conditions takes nothing returns /*boolean*/ nothing
   if GetSpellAbilityId() == SPELLID then
       call actions(GetTriggerUnit())
   endif
endfunction

//===========================================================================
private function init takes nothing returns nothing
   local trigger t = CreateTrigger( )
   call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
   call TriggerAddCondition( t, Condition( function conditions) )
   //set t = null
endfunction

endscope


Just optimized it! But, I didn't realize it was already solved so ignore this at your discretion :)
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • tom_mai78101 tom_mai78101:
    Starting this upcoming Thursday, I will be in Japan for 10 days.
  • tom_mai78101 tom_mai78101:
    Thursday - Friday will be my Japan arrival flight. 9 days later, on a Sunday, will be my return departure flight.
    +2
  • The Helper The Helper:
    Hope you have safe travels my friend!
    +1
  • vypur85 vypur85:
    Wow spring time in Japan is awesome. Enjoy!
  • The Helper The Helper:
    Hopefully it will be more pleasure than work
  • vypur85 vypur85:
    Recently tried out ChatGPT about WE triggering. Wow it's capable of giving a somewhat legitimate response.
  • The Helper The Helper:
    I am sure it has read all the info on the forums here
  • The Helper The Helper:
    i think triggering is just scripting and chatgpt is real good at code
  • vypur85 vypur85:
    Yeah I suppose so. It's interesting how it can explain in so much detail.
  • vypur85 vypur85:
    But yet it won't work.
  • The Helper The Helper:
    it does a bad ass job doing excel vba code it has leveled me up at my job when I deal with excel that is for sure
  • vypur85 vypur85:
    Nice! I love Excel coding as well. Has always been using Google to help me. Maybe I'll use ChatGPT next time when I need it.
  • The Helper The Helper:
    yeah whatever it puts out even if it is not perfect I can fix it and the latest version of chatgpt can create websites from pictures it will not be long until it can do that with almost all the tools
    +1
  • The Helper The Helper:
    These new Chat AI programs are going to change everything everyone better Buckle the Fuck Up!
  • The Helper The Helper:
    oh and Happy Tuesday Evening! :)
    +1
  • jonas jonas:
    Im worried they'll change things for worse
  • jonas jonas:
    A lot more low quality content, a lot more half-baked stuff.
  • jonas jonas:
    If you're good enough to spot the mistakes of the answers you don't need it in the first place. If you aren't good enough, you're gonna rely on some half-correct stuff
  • The Helper The Helper:
    the earlier AI is and has been used extensively for publishing news and other content for a while now
  • jonas jonas:
    I used to be active on quora, it's now flooded with extremely similar, superficial answers that often miss the point of the question
  • N NJJ:
    hi
  • N NJJ:
    Hello, gathering all my old accounts… :)
    +1
  • The Helper The Helper:
    by all means gather it all up!

    The Helper Discord

    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