System BuffStruct

What result are you expecting? What is not happening what should, or you wish to have happen?

Did any of the examples help? ;)

The ability applies the buff, so isn't the onCreate method supposed to run? I just have a BJDebugMsg call there, and it isn't being displayed.
 
JASS:
//! runtextmacro BuffType("Dummy")
    //! runtextmacro SetBuffName("DummyBuff")
    //! runtextmacro SetBuffAlignment("NEGATIVE")
    //! runtextmacro SetBuffTooltip(" ")
    //! runtextmacro SetBuffIcon("None")
//! runtextmacro BuffStruct()
    
    method onCreate takes nothing returns nothing
        call BJDebugMsg("Created!")
    endmethod
    method onDamageRecieved takes nothing returns nothing
        call BJDebugMsg("Damaged!")
    endmethod
    method preDestroy takes nothing returns nothing
        call BJDebugMsg("Destroyed!")
    endmethod
//! runtextmacro EndBuff()


None of the messages display.
 
Should be "onDamageReceived", but aside from that, I can take your buff and put it straight into the demo map and add it in the way the demo map add its buff, and it works 100%.

Let me know if implementing it in the demo map works for you. Remember that all buffs must be located between the BuffStruct head and footer, as per the documentation. :)
 
Should be "onDamageReceived", but aside from that, I can take your buff and put it straight into the demo map and add it in the way the demo map add its buff, and it works 100%.

Let me know if implementing it in the demo map works for you. Remember that all buffs must be located between the BuffStruct head and footer, as per the documentation. :)

Apparently abilities that use the buffs don't "count" for this system. When I used the demo map and modified the Light Headed buff to display text, it worked. When I added the buff to Storm Bolt and casted it, it didn't work.
 
Is posible something like this:
JASS:

scope Something
globals
//blabla
endglobals
//! runtextmacro BuffType("something")
//.................
//! runtextmacro BuffStruct()
//.........................
//! runtextmacro EndBuff()
endscope
 
Because every usage I see is like...

JASS:
//! runtextmacro BuffType("tossBuff")
//.................
//! runtextmacro BuffStruct()
//.........................
//! runtextmacro EndBuff()
scope tossAbil
//onEffect tossBuff.create(blabla)
endscope

:D

Btw, thx j4l for your resources, they all are great ones :thup:
 
I have a small problem, sometimes my buffs shows an other buff Icon. I trought it happens cuz I created a lot of buff via this system and there are some that I dont use anymore or I deleted from the object data.

For example, I have two buffs : A and B. So, sometimes when I cast X spell that applies (via trigger) A, it shows B icon, but it do A actions.
 
Odd. I imagine like with any object data issues and this system, it will magically solve itself sooner or later... Usually once people save, restart the editor and save again or something it fixes up..

Either way, the system recreates all the abilities every time you save it. So deleting a buff should be fine, once it works itself out. :thup:

Let me know if problems persist...
 
What happen if I use BuffStruct + Status, I mean... Silence already got a buff, if I add status inside the buffstruct the target will get 2 buffs?

like:

JASS:
//! runtextmacro BuffType("Return")
    //! runtextmacro SetBuffName("Return")
    //! runtextmacro SetBuffAlignment("NEUTRAL")
    //! runtextmacro SetBuffTooltip("This unit is being Returned; it will return to its previous location soon.")
    //! runtextmacro SetBuffIcon("ReplaceableTextures\\CommandButtons\\BTNDaggerOfEscape.blp")
//! runtextmacro BuffStruct()
 
    method onApply takes nothing returns nothing
        call Status[.unit].addSilence()
    endmethod
    method preDestroy takes nothing returns nothing
        call Status[.unit].removeSilence()
    endmethod
//! runtextmacro EndBuff()
 
BuffStruct allow dynamic values?

JASS:
library A
globals
    private integer Dynamic = 0
endglobals

//! runtextmacro BuffType("Return")
    //! runtextmacro SetBuffName("Return")
    //! runtextmacro SetBuffAlignment("NEUTRAL")
    //! runtextmacro SetBuffTooltip("This unit is being Returned; it will return to its previous location soon.")
    //! runtextmacro SetBuffIcon("ReplaceableTextures\\CommandButtons\\BTNDaggerOfEscape.blp")
//! runtextmacro BuffStruct()
    integer i
    
    method onCreate takes nothing returns nothing
        set .i = Dynamic
    endmethod
    method onApply takes nothing returns nothing
        call Status[.unit].modStrBonus(.i)
    endmethod
    method preDestroy takes nothing returns nothing
        call Status[.unit].modStrBonus(-.i)
    endmethod
//! runtextmacro EndBuff()



function B takes unit u, integer h returns nothing
    set Dynamic = h
    call Return.setUnit(u).destroyTimed(20)
endfunction

endlibrary
 
Yes, also you can do something like this if you dont beleive
JASS:
//! runtextmacro BuffType("Return")
    //! runtextmacro SetBuffName("Return")
    //! runtextmacro SetBuffAlignment("NEUTRAL")
    //! runtextmacro SetBuffTooltip("This unit is being Returned; it will return to its previous location soon.")
    //! runtextmacro SetBuffIcon("ReplaceableTextures\\CommandButtons\\BTNDaggerOfEscape.blp")
//! runtextmacro BuffStruct()
    private integer i
    method operator str= takes value returns nothing
          set this.i = value
          call Status[.unit].modStrBonus(value)
    endmethod
    method preDestroy takes nothing returns nothing
        call Status[.unit].modStrBonus(-.i)
    endmethod
//! runtextmacro EndBuff()

function B takes unit u, integer h returns nothing
    local Return k = Return.setUnit(u)
    set k.str = h
    call k.destroyTimed(20)
endfunction



Also, I'm not sure if something like this works
JASS:
    
   //.......
   method str takes value returns thistype
          set this.i = value
          call Status[.unit].modStrBonus(value)
          return this
    endmethod
    //......
function B takes unit u, integer h returns nothing
    call Return.setUnit(u).str(h).destroyTimed(20)
endfunction
 
I want to modify this to check if the buff was destroyed before before calling the callback on timedDestroy..
so that I wont do a double removal.

JASS:
        private static method timedDestroyCallback takes nothing returns nothing
            static if LIBRARY_TimerUtils then
                local timer t=GetExpiredTimer()
                call thistype(GetTimerData(t)).destroy()
                call ReleaseTimer(t)
            endif
        endmethod


Any ideas?
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • The Helper The Helper:
    Added new Crab Bisque Soup recipe - which is badass by the way - Crab Bisque - https://www.thehelper.net/threads/soup-crab-bisque.196085/
  • The Helper The Helper:
    I feel like we need to all meet up somewhere sometime. Maybe like in Vegas :)
    +2
  • The Helper The Helper:
    Would love to go to Vegas I have never been and it would be an adventure! Who is in?
  • The Helper The Helper:
    at least the full on bot attack has stopped it was getting ridiculous there for a while and we use cloudflare and everything
  • jonas jonas:
    I'm sure my wife would not be happy if I went to Vegas, but don't let that stop you guys - would be hard for me to attend anyways
    +1
  • jonas jonas:
    Do you know why the bot attack stopped?
  • The Helper The Helper:
    maybe they finally got everything lol
  • Ghan Ghan:
    There's lots of good food in Vegas.
  • Ghan Ghan:
    Everything tends to be pretty expensive though so bring your wallet.
    +1
  • The Helper The Helper:
    I have to wait longer if I am going for food because my teeth are still messed up from the work and I still cannot eat right. Going to be a couple more months before that gets better
    +1
  • The Helper The Helper:
    I would immediately hitting the dispensary though :)
    +1
  • Varine Varine:
    My Xbox account got hijacked, and apparently I have a different one from like 10 years ago that Microsoft keeps telling me is the right one
  • Varine Varine:
    Like NO, I mean for some reason that one is attached to my email, but it's not the right one
  • Varine Varine:
    I have a different one, and that one has my credit card attached to it and I would like that credit card to not be attached to it if I can't get it back
  • Varine Varine:
    Anyway Microsoft is not very helpful with this, they just keep telling me to fill out the Account Recovery form, but that just redirects me to the other account
  • The Helper The Helper:
    They should not allow you to put a credit card on a account that does not have human customer service you can call
  • Varine Varine:
    That's the only thing that got hijacked at least. I don't totally know how these integrate together, but it seems like I should be able to do this via the gamertag. Like my email is still mine, but they changed the email to that account I'm guessing.
    +1
  • Blackveiled Blackveiled:
    I went to Vegas a few weeks ago to visit my mom. I had never been either, lol! But I'm working in Salt Lake City at the moment so it's not a far trip.
    +2
  • The Helper The Helper:
    I have never been to Vegas and it is on the bucket list so...
    +1
  • tom_mai78101 tom_mai78101:
    Recently getting addicted to Shapez.
    +1
  • Ghan Ghan:
    I've heard Shapez 2 is good.
    +1
  • Ghan Ghan:
    Also Satisfactory 1.0 released on the 10th and that has been excellent as well.
    +1
  • The Helper The Helper:
    Happy Saturday! Hope everyone has a fantastic day!
    +1
  • tom_mai78101 tom_mai78101:
    My mistake is moving from Shapez (beaten the game) to Shapez 2.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top