1. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  2. The 15th Mini-Mapping Contest came to an end. The Secrets of Warcraft 3 are soon to be revealed! Come and vote in the public poll for your favorite maps.
    Dismiss Notice
  3. The 12th incarnation of the Music Contest is LIVE! The theme is Synthwave. Knight Rider needs a song to listen to on his journey. You should definitely have some fun with this theme!
    Dismiss Notice
  4. Join other hivers in a friendly concept-art contest. The contestants have to create a genie coming out of its container. We wish you the best of luck!
    Dismiss Notice
  5. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

System Reinventing

Discussion in 'Triggers & Scripts' started by IcemanBo, Oct 17, 2016.

  1. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    So this is a list of submissions we might not want to forget and maybe re-create them.

    - Some authors might still want to improve
    - Some of the submissions only serve as idea platform
    - Some authors don't care anymore

    I didn't do any deep thoughts, but just wrote out some concept that seemed overall or partialy interesting.

    Finaly we might interact with author first, if we are unsure he is not working on it anymore.

    Submission Theme Attempt (old) Attempt (new)
    Item Identify Link -
    MS Dependency Link -

    ArrowKeySequence
    Link Link 1
    Link 2

    Santa spells
    Link -

    Timed Capturing
    Link Link

    Interactive Conversation
    Link -

    Mount System
    Link -

    Waypoints
    Link -

    Unit Fusion
    Link Link

    ReadyDialogue
    Link Link

    TradeDialogue
    Link -

    CustomBunker
    Link Link

    Radar
    Link -

    UnitReputation
    Link -

    AC Recycling
    Link -

    String Binding
    Link Link

    Clip Maker
    Link Link

    Light System
    Link -

    Parachute
    Link -

    CombatSystem
    Link Link

    UnitDisarm
    Link Link

    Lightning Figure
    Link -

    Eating Plant
    Link -



    If someone still knows a good one, go ahead and share. :)
     
    Last edited: Mar 16, 2018
  2. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
  3. Aniki

    Aniki

    Joined:
    Nov 7, 2014
    Messages:
    517
    Resources:
    4
    Spells:
    1
    JASS:
    3
    Resources:
    4
    My attempt at "String Binding".

    Code (vJASS):

    library StringNextChar

    struct StringNextChar
        string s
        private integer a = 0
        private integer b = 1
        string cc = "" // current color
        readonly boolean no_next_char = false

        static method create takes string s returns thistype
            local thistype this = allocate()
            set this.s  = s
            return this
        endmethod

        //
        // the default destroy method is sufficient
        //

        method next_char takes nothing returns string
            local string c
            local string cff

            if no_next_char then
                return ""
            endif

            // note: s = this.s, a = this.a, b = this.b

    loop
            set c = SubString(s, a, b)

            if c == "" then
                set no_next_char = true
                return ""

            elseif c == "|" then
                set c = SubString(s, a + 1, b + 1)
                if c == "c" then
                    set cff = SubString(s, a + 1, b + 3)
                    if StringCase(cff, /*upper:*/ false) == "cff" then
                        set cc = SubString(s, b + 3, b + 9)
                        set c = SubString(s, b + 9, b + 10) // empty color codes (e.g: "|cffFF0000|r") are not handled correctly
                        set a = b + 10
                        set b = a + 1
                        exitwhen true

                    else
                        // c == "c"
                        set a = a + 2
                        set b = a + 1
                        exitwhen true
                    endif

                elseif c == "r" then
                    set cc = ""
                    set a = a + 2
                    set b = a + 1
                    // continue

                else
                    set c = "|"
                    set a = a + 2
                    set b = a + 1
                    exitwhen true
                endif

            else
                set a = a + 1
                set b = a + 1
                exitwhen true
            endif

    endloop

            if cc != "" then
                return "|cff" + cc + c + "|r"
            endif
            return c
        endmethod

        method reset takes nothing returns nothing
            set this.a = 0
            set this.b = 1
            set no_next_char = false
        endmethod

        method set_string takes string s returns nothing
            set this.s = s
            call this.reset()
        endmethod
    endstruct

    endlibrary
     


    Code (vJASS):

    library Example initializer init requires StringNextChar

    globals
        private StringNextChar snc = 0
        private timer tmr = CreateTimer()
        private string msg = ""
    endglobals

    private function show_next_char takes nothing returns nothing
        if snc.no_next_char then
            call PauseTimer(tmr)
            return
        endif

        call ClearTextMessages()
        set msg = msg + snc.next_char()
        call BJDebugMsg(msg)
    endfunction

    private function snc_init takes nothing returns nothing
        if snc == 0  then
            set snc = StringNextChar.create("|cff0000FFT|r|cff0000DDh|r|cff0000BBi|r|cff000099s|r |cff000077i|r|cff000055s|r |cff000033m|r|cff000011y|r |cff000033s|r|cff000055t|r|cff000077r|r|cff000099i|r|cff0000BBn|r|cff0000DDg.|r |cff0000FFT|r|cff0000DDh|r|cff0000BBe|r|cff000099r|r|cff000077e|r |cff000055a|r|cff000033r|r|cff000011e|r |cff000033m|r|cff000055a|r|cff000077n|r|cff000099y|r |cff0000BBl|r|cff0000DDi|r|cff0000FFk|r|cff0000DDe|r |cff0000BBi|r|cff000099t|r|cff000077,|r |cff000055b|r|cff000033u|r|cff000011t|r |cff000033t|r|cff000055h|r|cff000077i|r|cff000099s|r |cff0000BBo|r|cff0000DDn|r|cff0000FFe|r |cff0000DDi|r|cff0000BBs|r |cff333333mine.|r")
        else
            call snc.reset()
        endif
    endfunction

    private function on_esc takes nothing returns nothing
        call snc_init()
        set msg = ""
        call TimerStart(tmr, 0.05, true, function show_next_char)
    endfunction

    private function init takes nothing returns nothing
        local trigger t = CreateTrigger()
        call TriggerRegisterPlayerEventEndCinematic(t, Player(0))
        call TriggerAddAction(t, function on_esc)

        call BJDebugMsg("Press Esc and try to read the string... =)")
    endfunction

    endlibrary
     
     
  4. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,573
    Resources:
    18
    Maps:
    1
    Spells:
    11
    Tutorials:
    6
    Resources:
    18
    Subbing so that I may be reminded of this.
     
  5. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    Removed Multiboard from the list, we actually have Nestharus's. I forgot.

    Aniki, nice.
    For better reading I wanted to "fix" the line where you define the long string, and made a new line several times.
    I found out some interesting behaviour which I have not thought is possible before. Test this (care at Message indention in game):

    Code (vJASS):

    library Example initializer init requires StringNextChar

    globals
        private StringNextChar snc = 0
        private timer tmr = CreateTimer()
        private string msg = ""
    endglobals

    private function show_next_char takes nothing returns nothing
        if snc.no_next_char then
            call PauseTimer(tmr)
            return
        endif

        call ClearTextMessages()
        set msg = msg + snc.next_char()
        call BJDebugMsg(msg)
    endfunction

    private function snc_init takes nothing returns nothing
        if snc == 0  then
            set snc = StringNextChar.create("|cff0000FFT|r|cff0000DDh|r|cff0000BBi|r|cff000099s|r |cff000077i|r|cff000055s|r |cff000033m|r|cff000011y|r
     |cff000033s|r|cff000055t|r|cff000077r|r|cff000099i|r|cff0000BBn|r|cff0000DDg.|r |cff0000FFT|r|cff0000DDh|r|cff0000BBe|r|cff000099r|r
          |cff000077e|r |cff000055a|r|cff000033r|r|cff000011e|r |cff000033m|r|cff000055a|r|cff000077n|r|cff000099y|r |cff0000BBl|r|cff0000DDi|r
            |cff0000FFk|r|cff0000DDe|r |cff0000BBi|r|cff000099t|r|cff000077,|r |cff000055b|r|cff000033u|r|cff000011t|r |cff000033t|r|cff000055h|r
        |cff000077i|r|cff000099s|r |cff0000BBo|r|cff0000DDn|r|cff0000FFe|r |cff0000DDi|r|cff0000BBs|r |cff333333mine.
    |cff000077i|r|cff000099s|r |cff0000BBo|r|cff0000DDn|r|cff0000FFe|r |cff0000DDi|r|cff0000BBs|r |cff333333mine.|r"
    )
        else
            call snc.reset()
        endif
    endfunction

    private function on_esc takes nothing returns nothing
        call snc_init()
        set msg = ""
        call TimerStart(tmr, 0.05, true, function show_next_char)
    endfunction

    private function init takes nothing returns nothing
        local trigger t = CreateTrigger()
        call TriggerRegisterPlayerEventEndCinematic(t, Player(0))
        call TriggerAddAction(t, function on_esc)

        call BJDebugMsg("Press Esc and try to read the string... =)")
    endfunction

    endlibrary


    it hold the spaces you make in JASS. (!)

    So I tried to construct it dynamicly with adding new strings, and it actually works fine:

    Code (vJASS):

    struct S extends array
        private static method onInit takes nothing returns nothing
            local string s = ""
            local integer i
            local integer j
            local integer mode = 1  // set it to 1 or 2
       
            if mode == 1 then
                set s = "1\n  2\n    3\n      4\n        5\n      6\n    7\n  8\n9"
       
            elseif mode == 2 then
       
                set i = 1
                loop
                    exitwhen i >= 9
               
                    set s = s + "\n"
                    set j = 1
               
                    loop
                        exitwhen j >= i
                            set s = s + "  "
                        set j = j + 1
                    endloop
               
                    set s = s + I2S(i)
                    set i = i + 1
                endloop
           
            endif
       
            call BJDebugMsg(s)
        endmethod
    endstruct


    So..
    native DisplayTextToPlayer takes player toPlayer, real x, real y, string message returns nothing
    does not allow to have different indentions at once, but forces alignment.
    But we actually might manipulate one string to have multiple lines with individual indentions with mimicing indention with a certain amount of spaces.

    So we can do something like this:
    [​IMG]
     

    Attached Files:

    • Test.PNG
      Test.PNG
      File size:
      521.7 KB
      Views:
      565
    Last edited: Oct 18, 2016
  6. BlueSaint

    BlueSaint

    Joined:
    Jun 18, 2012
    Messages:
    2,756
    Resources:
    3
    Tools:
    1
    Spells:
    2
    Resources:
    3
    I would love to do man eating plant, but I bet someone is already doing it lol :D

    It would take like months for me so I won't even bother, just to see someone else submitting it first.
     
  7. Aniki

    Aniki

    Joined:
    Nov 7, 2014
    Messages:
    517
    Resources:
    4
    Spells:
    1
    JASS:
    3
    Resources:
    4
    Okay... but I think this:
    Code (vJASS):

        set s = "1\n  2\n    3\n      4\n        5\n      6\n    7\n  8\n9"
        call BJDebugMsg(s)
     


    displays the same thing as this:
    Code (vJASS):

    call BJDebugMsg("1")
    call BJDebugMsg("  2"
    call BJDebugMsg("    3"
    call BJDebugMsg("      4"
    call BJDebugMsg("        5"
    call BJDebugMsg("      6"
    call BJDebugMsg("    7"
    call BJDebugMsg("  8"
    call BJDebugMsg("9")
     



    And (as far as I know) to the Jass parser the string:
    Code (vJASS):

    set s = "
    A
        B
    C    "

     


    is exactly the same as this:
    Code (vJASS):

    set s = "\nA\n    B\nC    "
     
     
  8. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    Yes. So if we replace the native indention "x" from he DisplayText function wich a respective amount of spaces we could also intuitivly set indentions for our texts. For example print("Hallo", 0.5") could start at half of screen, and "0" at very left.
     
  9. Aniki

    Aniki

    Joined:
    Nov 7, 2014
    Messages:
    517
    Resources:
    4
    Spells:
    1
    JASS:
    3
    Resources:
    4
    Well... how many spaces would move the text exactly to the middle of the screen?
    It probably depends on the font, Options/Video/Resolution, window size (in window mode), etc., so I think that would be difficult to work out.
     
  10. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    Yes, tested it, you're right. It becomes pretty senseless for global submissions.

    Aniki, I also added Cine Filter Fun to "Click Maker", it's not the exact same goal, but similar I guess. (?) : )

    edit:
    I contacted rulerofiron99 because of "Unit Fusion", and asked about planned updates-- else I would probably give it a shot.

    edit 2:

    he won't work anymore on "Unit Fusion", but thinking about it more I can't get a too generic and useful enough approach.
    I would make it probably always map specific, so I think won't make a submission.
     
    Last edited: Oct 19, 2016
  11. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,573
    Resources:
    18
    Maps:
    1
    Spells:
    11
    Tutorials:
    6
    Resources:
    18
    There are multiple versions of:
    Conversation System

    I know at least two or three. And they are all better.
     
  12. Aniki

    Aniki

    Joined:
    Nov 7, 2014
    Messages:
    517
    Resources:
    4
    Spells:
    1
    JASS:
    3
    Resources:
    4
    ;P
     

    Attached Files:

  13. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    Hehe^^.
    I also had it one library first, but then I splitted it in Ask and SequenceT, and also used VectorT, etc, because I thought it was handy, especially when sequences should be strings, or so.
    I will just add a new column to the table.
     
  14. BlueSaint

    BlueSaint

    Joined:
    Jun 18, 2012
    Messages:
    2,756
    Resources:
    3
    Tools:
    1
    Spells:
    2
    Resources:
    3
    I think we don't have aura system atm either?
     
  15. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    There are some buff systems, or bonus mods.
    But I'm not very sure what your suggestion is.
     
  16. BlueSaint

    BlueSaint

    Joined:
    Jun 18, 2012
    Messages:
    2,756
    Resources:
    3
    Tools:
    1
    Spells:
    2
    Resources:
    3
    It just manages aura member insertion/removal. I've one on my HDD, but it has non-hive deps:
    Code (vJASS):

    library AuraMan requires /*
        */
    AIDS,        /* http://www.thehelper.net/threads/advanced-indexing-data-storage.116539/
        */
    UnitAlloc     // https://www.dropbox.com/s/v0rdg9mqnyxeeik/UnitAlloc.j?dl=1
     
        // AuraMan v1.0.0
        // by jondrean
     
        // d:05.04.16
     
        // Manages aura abilities.
     
        // ---------------
        //      USAGE
        // ---------------

        //! novjass
     
        struct MyStruct extends array
     
            static constant real tickRate=.03125000
                // Interval of unit enumeration
         
            method onInsert takes unit u returns nothing
            method onErase takes unit u returns nothing
                // Catch when unit is added/removed (OPTIONAL)
         
            method getRange takes nothing returns real
            static method filter takes nothing returns boolean
                // Enumerate how distant units? Also who to add?
         
            implement AuraMan
                static method operator filtOwner takes nothing returns player
                    // Use inside of filter
                static method insertHost takes unit u returns nothing
                static method insertHostById takes integer u returns nothing
                    // Registers host (aura wielder)
                method eraseHost takes unit u returns nothing
                method eraseHostById takes integer u returns nothing
                    // Unregisters host
         
        endstruct
     
        //! endnovjass
     
    // ---------------
     
        globals
            private group G=CreateGroup()
            private player P
        endglobals
     
    // ---------------
     
        module AuraMan
     
            private thistype n     // next node / first allocation node
            private thistype p     // previous node / rest of allocation nodes
            private thistype h     // head node
            private unit u         // node host
            private boolean new // relevant node = DON'T deallocate
     
            player pl             // owner of host
         
        // ---------------
     
            implement UnitAlloc
            private static timer C=CreateTimer()
            debug private boolean used
         
        // ---------------
         
            static method operator filtOwner takes nothing returns player
                return P
            endmethod
         
        // ---------------
         
            private static method onExpire takes nothing returns nothing
                local thistype this=thistype(0).next
                local unit FoG
                local thistype n
                loop
                    if(UnitAlive(unit))then
                        set P=pl
                        call GroupEnumUnitsInRange(G,GetUnitX(unit),GetUnitY(unit),getRange(),Filter(function thistype.filter))
                        loop
                            set FoG=FirstOfGroup(G)
                            exitwhen(FoG==null)
                            set n=h
                            loop
                                if(n==0)then
                                    //! runtextmacro AURAMAN_ALLOCN()
                                    exitwhen(true)
                                endif
                                exitwhen(n.u==FoG)
                                set n=n.n
                            endloop
                            set n.new=true
                            call GroupRemoveUnit(G,FoG)
                        endloop
                        set n=h
                        loop
                            exitwhen(n==0)
                            if(n.new)then
                                set n.new=false
                            else
                                //! runtextmacro AURAMAN_DEALLOCN()
                            endif
                            set n=n.n
                        endloop
                    else
                        set n=h
                        loop
                            exitwhen(n==0)
                            //! runtextmacro AURAMAN_DEALLOCN()
                            set n=n.n
                        endloop
                        set pl=null
                        set h=0
                        //! runtextmacro UNITALLOC_DEALLOC("thistype","this")
                        if(empty)then
                            call PauseTimer(C)
                        endif
                    endif
                    set this=this.next
                    exitwhen(this==0)
                endloop
            endmethod
         
            //! textmacro AURAMAN_ALLOCN
                debug if(thistype(0).n==8191)then
                debug     call BJDebugMsg("|cffff0000"+thistype.onExpire.name+" ERROR: Exceeding node limit")
                debug else
                    static if(thistype.onInsert.exists)then
                        call this.onInsert(FoG)
                    endif
                    set h.p=thistype(0).n
                    set thistype(0).n.n=h
                    set h=thistype(0).n
                    set thistype(0).n=thistype(0).n.p
                    set h.u=FoG
                    set h.new=true
                debug endif
            //! endtextmacro
            //! textmacro AURAMAN_DEALLOCN
                static if(thistype.onErase.exists)then
                    call this.onErase(n.u)
                endif
                set n.u=null
                if(n==h)then
                    set h=n.n
                    set n.n.p=0
                else
                    set n.p.n=n.n
                    set n.n.p=n.p
                endif
                set n.p=thistype(0).n
                set thistype(0).n=n
            //! endtextmacro
         
        // ---------------
         
            static method insertHostById takes thistype this returns nothing
                local unit FoG
                debug if(used)then
                debug     call BJDebugMsg("|cffff0000"+thistype.insertHostById.name+" ERROR: Double allocation")
                debug     return
                debug endif
                debug set used=true
                if(empty)then
                    call TimerStart(C,thistype.tickRate,true,function thistype.onExpire)
                endif
                set pl=GetOwningPlayer(unit)
                //! runtextmacro UNITALLOC_ALLOC("thistype","this")
                set P=pl
                call GroupEnumUnitsInRange(G,GetUnitX(unit),GetUnitY(unit),getRange(),Filter(function thistype.filter))
                loop
                    set FoG=FirstOfGroup(G)
                    exitwhen(FoG==null)
                    //! runtextmacro AURAMAN_ALLOCN()
                    call GroupRemoveUnit(G,FoG)
                endloop
            endmethod
            static method insertHost takes unit u returns nothing
                debug if(GetUnitUserData(u)==0)then
                debug   call BJDebugMsg("|cffff0000"+thistype.insertHost.name+" ERROR: Removed/unindexed unit given")
                debug   return
                debug endif
                call insertHostById(GetUnitId(u))
            endmethod
         
        // ---------------
         
            static method eraseHostById takes thistype this returns nothing
                local thistype n=h
                debug if(not used)then
                debug     call BJDebugMsg("|cffff0000"+thistype.eraseHostById.name+" ERROR: Double free")
                debug     return
                debug endif
                debug set used=false
                loop
                    exitwhen(n==0)
                    //! runtextmacro AURAMAN_DEALLOCN()
                    set n=n.n
                endloop
                set h=0
                set pl=null
                //! runtextmacro UNITALLOC_DEALLOC("thistype","this")
                if(empty)then
                    call PauseTimer(C)
                endif
            endmethod
            static method eraseHost takes unit u returns nothing
                debug if(GetUnitUserData(u)==0)then
                debug   call BJDebugMsg("|cffff0000"+thistype.eraseHost.name+" ERROR: Removed/unindexed unit given")
                debug   return
                debug endif
                call eraseHostById(GetUnitId(u))
            endmethod
         
        // ---------------
         
            private static method onInit takes nothing returns nothing
                local integer n=8190
                loop
                    set thistype(n).p=n+1
                    exitwhen(n==1)
                    set n=n-1
                endloop
                set thistype(0).n=1
            endmethod
         
        endmodule
     
    // ---------------

    endlibrary


    I would of course rewrite it :) also, it's not optimal performance-wise.

    Edit: Oh now I know why this was confusing, I didn't link the orignal one LOL
    (system) [vJass] CustomAura
     
  17. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    I was a bit confused at first because my initial intention was not to forget submissions that were never good enough to be approved, but had an interesting concept.
    But finding (meanwhile) lacking approved submissions and re-create them is in the end something similar, so I guess it's okay, too, and fitting the thread.

    But though it would be good to point out the original submission's weak points to make it valid to write a new same concept attempt.
    You could for example make a statement in it's thread why it is not sufficient/lacking so we might even evaluate to re-approve it. Then, it would make perfect sense for us to write an improved version since it's author is not active anymore.
     
  18. BlueSaint

    BlueSaint

    Joined:
    Jun 18, 2012
    Messages:
    2,756
    Resources:
    3
    Tools:
    1
    Spells:
    2
    Resources:
    3
    Well this is alarmingly bad performance:
    In its periodic function, it does a crap load of native group function calls, which I'm pretty sure are the cause of bad performance. Also the interface calls result in filth. On top of that, bad function placements have resulted in filth on top of filth:
    Code (vJASS):

    function s__CustomAura_create takes unit theUnit returns integer
        local integer this= s__CustomAura__allocate()
     
        set s__CustomAura_affect[this]=NewGroup()
        set s__CustomAura_last[this]=NewGroup()
        set s__CustomAura_theUnit[this]=theUnit
     
        set s__CustomAura_index[this]=s__CustomAura_a
        set s__CustomAura_i[s__CustomAura_index[this]]=this
        set s__CustomAura_a=s__CustomAura_a + 1
        if s__CustomAura_a == 1 then
            call TimerStart(s__CustomAura_t, CustomAura__PERIOD, true, function sc__CustomAura_run)
        endif
     
        return this
    endfunction

    And quess what sc__CustomAura_run is?
    Code (vJASS):

    function sc__CustomAura_run takes nothing returns nothing
        call TriggerEvaluate(st__CustomAura_run)
    endfunction

    And spell submission rules state:
    Edit: I realized I repeated what PnF has said: (system) [vJass] CustomAura
     
    Last edited: Oct 22, 2016
  19. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,109
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    Some minor efficiency flaws are probably not enough for an unapproval.
    And overriding the past verdict for little stuff is perhaps no good way, too.

    Though if the flaws are critical and make markable difference it might be valid.
    (e.g. you can test if his system really can handles only 10 units,
    and then show what your method can handle instead)
    But please, you should write the critiques in his thread, not here.
     
  20. BlueSaint

    BlueSaint

    Joined:
    Jun 18, 2012
    Messages:
    2,756
    Resources:
    3
    Tools:
    1
    Spells:
    2
    Resources:
    3
    No need, PnF's post tells what I want to tell.

    Edit: I summon @TriggerHappy as he's the owner of approving rating.
     
    Last edited: Oct 22, 2016