Snippet Hero Real Attribute

Dirac

22710180
Reaction score
147
JASS:
library HeroRealAttribute /* v1.00

*/uses/* one of the following
*/  optional AIDS           /* thehelper.net/forums/showthread.php/130752-Advanced-Indexing-Data-Storage
*/  optional UnitIndexer    /* hiveworkshop.com/forums/jass-functions-413/system-unit-indexer-172090/

An useful tool to accurately add stats to your hero

*****************************************************************************

    API:
        
    struct HeroReal
*       Stores the hero's attributes as reals instead of integers.
--->
        real Agi
        real Str
        real Int
        
        static method operator [] takes unit whichUnit returns thistype
    *       HeroReal[unit].Stat=X
    
****************************************************************************/

    struct HeroReal extends array
        //! textmacro HERO_REAL_SETUP takes NAME
            private real S_$NAME$
            method operator $NAME$= takes real howMuch returns nothing
                set this.S_$NAME$=howMuch-R2I(howMuch)
                static if LIBRARY_UnitIndexer then
                    call SetHero$NAME$(GetUnitById(this),R2I(howMuch),true)
                else
                    call SetHero$NAME$(GetIndexUnit(this),R2I(howMuch),true)
                endif
            endmethod
            method operator $NAME$ takes nothing returns real
                static if LIBRARY_UnitIndexer then
                    return this.S_$NAME$+GetHero$NAME$(GetUnitById(this),false)
                else
                    return this.S_$NAME$+GetHero$NAME$(GetIndexUnit(this),false)
                endif
            endmethod
        //! endtextmacro
        
        //! runtextmacro HERO_REAL_SETUP("Str")
        //! runtextmacro HERO_REAL_SETUP("Agi")
        //! runtextmacro HERO_REAL_SETUP("Int")
        
        static method operator [] takes unit whichUnit returns thistype
            return GetUnitUserData(whichUnit)
        endmethod
    endstruct
endlibrary
 

tommerbob

Minecraft. :D
Reaction score
110
A couple thoughts:

- Include some methods for getting the remaining real values for each attribute? Not necessary, but might be good for completeness.

- Include an example of how to use it, and explain why its useful?

- Is it possible to combine both add and lower functions together, and simply allow for a negative amount?

Personally, I think this is really useful, such as increasing the effectiveness hero level-ups over time. Thanks for doing this. :thup:
 

Dirac

22710180
Reaction score
147
The example of how to used is posted below the script, changed the "Add$VAR$" function to "Modify$VAR$" it now allows you to give negative values to hero stats. Added the "Get$VAR$" function
 

NoobImbaPro

You can change this now in User CP.
Reaction score
60
very clever thought, now stats will be more accurate when increased by %
 

Laiev

Hey Listen!!
Reaction score
188
I suggest you to use optional Status/Bonus (and not use the natives one), will be much better to some peoples that use it :p
 

luorax

Invasion in Duskwood
Reaction score
67
JASS:
call SetHero$VAR$(whichHero,GetHero$VAR$(whichHero,true)+i,true)


This will cause errors as I've already mentioned before. GetHeroXXX with true will return the base value plus the bonus value (bonus = the green value) and will set the base value to it. So, for example:
If the hero has 100 strength and 50 bonus (looks like this: "100 + 50") after adding 50 will end with 200 base and 50 bonus (because the native will return 150, you add 50 to it and the bonus 50 is still there).

You better use this:

JASS:
call SetHero$VAR$(whichHero,GetHero$VAR$(whichHero,false)+i,true)
 

Dirac

22710180
Reaction score
147
@Laiev
I'm not sure of what you mean
@luorax
Yes thank you i knew there was a problem somewhere regarding the additional bonus value, and because i originally wrote this on notepad i wasn't able to spot it
 

Laiev

Hey Listen!!
Reaction score
188
JASS:
function ModifyHero$VAR$ takes unit whichHero, real howMuch returns nothing
	local integer i=R2I(howMuch)
	local real whatsLeft=howMuch-i
	set Stat[whichHero].$VAR$=Stat[whichHero].$VAR$+whatsLeft
	if Stat[whichHero].$VAR$>=1 then
		set i=i+1
		set Stat[whichHero].$VAR$=Stat[whichHero].$VAR$-1
	endif
	if Stat[whichHero].$VAR$<=-1 then
		set i=i-1
		set Stat[whichHero].$VAR$=Stat[whichHero].$VAR$+1
	endif
	static if LIBRARY_STATUS then
		call Status[whichHero].mod$VAR$Bonus(i)
	else
		call SetHero$VAR$(whichHero,GetHero$VAR$(whichHero,false)+i,true)
	endif
endfunction
 

tommerbob

Minecraft. :D
Reaction score
110
Update your API:

JASS:
function ModifyStr 
function ModifyAgi 
function ModifyInt


should be

JASS:
function ModifyHeroStr
function ModifyHeroAgi 
function ModifyHeroInt


Also, fix:

JASS:
//! endtexmacro
 

tooltiperror

Super Moderator
Reaction score
231
Add a demo and an imperative (i.e. not OOP) interface, and a demo map too.

In your documentation, "An useful" -> "A useful", because of pronunciation.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Varine Varine:
    They are pretty much disposable. I have shitty nozzles though, and I don't think these were designed for how hot I've run them
  • Varine Varine:
    I tried to extract it but the thing is pretty stuck. Idk what else I can use this for
  • Varine Varine:
    I'll throw it into my scrap stuff box, I'm sure can be used for something
  • Varine Varine:
    I have spare parts for like, everything BUT that block lol. Oh well, I'll print this shit next week I guess. Hopefully it fits
  • Varine Varine:
    I see that, despite your insistence to the contrary, we are becoming a recipe website
  • Varine Varine:
    Which is unique I guess.
  • The Helper The Helper:
    Actually I was just playing with having some kind of mention of the food forum and recipes on the main page to test and see if it would engage some of those people to post something. It is just weird to get so much traffic and no engagement
  • The Helper The Helper:
    So what it really is me trying to implement some kind of better site navigation not change the whole theme of the site
  • Varine Varine:
    How can you tell the difference between real traffic and indexing or AI generation bots?
  • The Helper The Helper:
    The bots will show up as users online in the forum software but they do not show up in my stats tracking. I am sure there are bots in the stats but the way alot of the bots treat the site do not show up on the stats
  • Varine Varine:
    I want to build a filtration system for my 3d printer, and that shit is so much more complicated than I thought it would be
  • Varine Varine:
    Apparently ABS emits styrene particulates which can be like .2 micrometers, which idk if the VOC detectors I have can even catch that
  • Varine Varine:
    Anyway I need to get some of those sensors and two air pressure sensors installed before an after the filters, which I need to figure out how to calculate the necessary pressure for and I have yet to find anything that tells me how to actually do that, just the cfm ratings
  • Varine Varine:
    And then I have to set up an arduino board to read those sensors, which I also don't know very much about but I have a whole bunch of crash course things for that
  • Varine Varine:
    These sensors are also a lot more than I thought they would be. Like 5 to 10 each, idk why but I assumed they would be like 2 dollars
  • Varine Varine:
    Another issue I'm learning is that a lot of the air quality sensors don't work at very high ambient temperatures. I'm planning on heating this enclosure to like 60C or so, and that's the upper limit of their functionality
  • Varine Varine:
    Although I don't know if I need to actually actively heat it or just let the plate and hotend bring the ambient temp to whatever it will, but even then I need to figure out an exfiltration for hot air. I think I kind of know what to do but it's still fucking confusing
  • The Helper The Helper:
    Maybe you could find some of that information from AC tech - like how they detect freon and such
  • Varine Varine:
    That's mostly what I've been looking at
  • Varine Varine:
    I don't think I'm dealing with quite the same pressures though, at the very least its a significantly smaller system. For the time being I'm just going to put together a quick scrubby box though and hope it works good enough to not make my house toxic
  • Varine Varine:
    I mean I don't use this enough to pose any significant danger I don't think, but I would still rather not be throwing styrene all over the air
  • The Helper The Helper:
    New dessert added to recipes Southern Pecan Praline Cake https://www.thehelper.net/threads/recipe-southern-pecan-praline-cake.193555/

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top