Spellpack Undying

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>Yeah, nvm.
It is not that I copy anyone else's idea. I am just following what DotA(Ice Frog) does.
 

NetherHawk

New Member
Reaction score
26
nvm ahaha =/

i wanted to learn how to use structs from your map... but it seems u use ABC, which i dunno also... argh =/
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
**Bump** :p

>>i wanted to learn how to use structs from your map... but it seems u use ABC, which i dunno also... argh =/
They are just like handle vars.
In my situnation, my struct act like a large wrapper which wrap up every variable.

It is my routine to bump this now..
 

Cohadar

master of fugue
Reaction score
209
I think this should not be approved until you make raise dead as well
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>I think this should not be approved until you make raise dead as well
I didn't said I wanted to submit a DotA hero.
I just wanted to submit spell pack, why does it have matter to the Raise Dead?
 

Cohadar

master of fugue
Reaction score
209
Because it is natural for it to be there, and because you need to learn to finish what you started (education and stuff...)

EDIT:
JASS:
private function tAct takes nothing returns nothing
local timer t = GetExpiredTimer()
local Soul_Rip SR = GetTimerStructA(t)

    call ClearTimerStructA(t)
    call SR.destroy()
    
call DestroyTimer(t)
set t = null
endfunction


JASS:
private function tAct takes nothing returns nothing
local timer t = GetExpiredTimer()
local Soul_Rip SR = ClearTimerStructA(t) // <---- small trick

    call SR.destroy()
    
call DestroyTimer(t)
set t = null
endfunction


JASS:
    method onDestroy takes nothing returns nothing
    set .caster = null
    set .target = null
    call DestroyTrigger(.Infect)
    call DestroyTrigger(.Amplify)
    call DestroyGroup(.reg)
    set .Infect = null
    set .Amplify = null
    set .reg = null
    endmethod


JASS:
    method onDestroy takes nothing returns nothing
    //set .caster = null   // Don't null struct members they are not locals.
    //set .target = null
    call DestroyTrigger(.Infect)
    call DestroyTrigger(.Amplify)
    call DestroyGroup(.reg)
    //set .Infect = null
    //set .Amplify = null
    //set .reg = null
    endmethod


Disabled versions of some of your icons are not showing properly.
Do you know why is this?

EDIT:
You are also using constant functions for ability codes instead of constant globals.
functions in spells are just for stuff that have level as parameter, for example:
JASS:
function AOE takes integer level returns real
    return 100. + level*200.
endfunction
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>@Cohadar
I already finished what you said currently, but I won't update now. I am making Raise Dead.

>>You don't need to trigger Raise Dead, base it off Summon Lava Spawn and change units and art.
Hmm, right. I am currently base off that spell. But, how do you do about the Heal 50 hitpoints thing?
I don't see there is an option for it, or am I blinded?
 

Cohadar

master of fugue
Reaction score
209
I stopped playing dota before that hero was added,
but if you describe what that rise dead does,
I am sure I could give a couple hints...
 

Somatic

You can change this now in User CP.
Reaction score
84
Just detect when the unit type of summoned unit died, create a unit to use fan of knive, with negative damage (for the healing) and cast it targeting own player unit.
 

Cohadar

master of fugue
Reaction score
209
Ok here is the PUI part:
JASS:
struct ZombieData
    unit hero // owner of zombie
    unit zombie
    integer counter // for attack six times thing
    private static ZombieData array PUI
    
    static method create takes unit hero, unit zombie returns ZombieData
        local ZombieData ret = ZombieData.allocate()
        set ret.hero = hero
        set ret.zombie = zombie
        set ret.counter = 0
        set ZombieData.PUI[GetUnitIndex(zombie)] = ret // zombie -> ZombieData link
        return ret
    endmethod
    
    static method Get takes unit zombie returns ZombieData
        return ZombieData.PUI[GetUnitIndex(zombie)]
    endmethod
    
    method onDestroy takes nothing returns nothing
        set ZombieData.PUI[GetUnitIndex(.zombie)] = 0 // break the link
    endmethod
endstruct


You register on attack trigger and if attacking unit is zombie you increase it's counter. if counter gets to 6 you raise a new zombie.

How do you keep track of number of zombies?
Well I will leave that as a homework ;)

EDIT: fixed some typos in code.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>You register on attack trigger and if attacking unit is zombie you increase it's counter. if counter gets to 6 you raise a new zombie.
Sorry bro.
In DotA, it is registered in EVENT_UNIT_DAMAGED. The "S" bug won't work with this spell. So... I think that in DotA, this spell was base on Lava Spawn. (IceFrog loves to use original spell of Blizzard, right? ;))

The problem was the healing 50 hp thingy...
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>Irrelevant, you steel need ZombieData.
-.-lll
There is a missle effect that moving towards the Hero when a zombie die.
The +50 hp effect will only happen when the missle reach the Hero.


And, in the other hand... I need 3 trigger for 1 spell again..?
1. Your PUI. (PUI is an insult in chinese you know?)
2. Your ZombieData (You said everything need 1 trigger right?)
3. Main Trigger.

>>Simple as that.
You think so?
 

Cohadar

master of fugue
Reaction score
209
ZombieData is a struct not a trigger ffs, just put it in spells trigger.
Heal effect is a dummy caster death-coil or something like that.
So when zombie dies use dummy caster to cast 50 heal on hero.

I said every scope should have it's own trigger.


EDIT:
I just looked at lava spawn spell.
You were right, that is how IceFrog did it, the only problem is that if you use lava spawn ability spell will not be MUI (it will be only multi-player instancable)

So you basically need to do this:

Forget about ZombieData

Base Raise dead on summon lava spawns

JASS:
globals
    unit array Dirges  // connects player <-> dirge
endglobals


When Dirge casts a summon spell you do:
JASS:
function RaiseDeadActions takes nothing returns nothing
    set Dirges[GetPlayerId(GetOwningPlayer(GetTriggerUnit()))] = GetTriggerUnit()
endfunction


And when spawn dies:
JASS:
function ZombieDiesActions takes nothing returns nothing
    local unit zombie = GetTriggerUnit
    local unit hero = Dirges[GetPlayerId(GetOwningPlayer(zombie))]
    local real x = GetUnitX(zombie)
    local real y = GetUnitY(zombie)

    // Cast some heal magic on hero from the position of dying unit
endfunction
 

emjlr3

Change can be a good thing
Reaction score
395
not bad, a few things however

Soul Rip:

  • should use a timer stack, CSSafety is common for people
  • could use a global group, and remove the need of creating and destroying/nulling each time
  • no need to make comparisons, just add a not in front of it
  • the group can grab the target itself....
  • do not need to null lightning varaible on destroying the struct
  • damage/unit should be level dependant
  • rest is good
Hearstopper

  • could use a global group, and remove the need of creating and destroying/nulling each time
  • rest is good

Plague:

  • infect range and duration should be level dependant
  • timer stack needed
  • could again use global groups
  • dont need to null structs variables
  • rest looks good

anyhow, needs some updates IMO

good job though
 

duyen

New Member
Reaction score
214
Ah, forgot about the healing while dead, but just create a dummy, give it an expiration timer and order it to cast death coil on Undying.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
I have gone to some sort of camp, sorry for late reply.. I just came back today.

>>@Cohadar
Hmm, I see.

>>should use a timer stack, CSSafety is common for people
I used it before, but ABC gives alot debug messages to me.
After I change from NewTimer to CreateTimer, this fixed the debug warning.

>>could use a global group, and remove the need of creating and destroying/nulling each time
I see.

>>no need to make comparisons, just add a not in front of it
Hmm? not?
Using not in where..?

>>the group can grab the target itself....
Argh, I have forgoten in DotA, it has no including the caster itself.

>>do not need to null lightning varaible on destroying the struct
I see.

>>damage/unit should be level dependant
I'll see what I can do about it.
Actually, what is dependant means? I see boolean option in ObjectEditor says something like Independance or something alike.

>> * infect range and duration should be level dependant
* timer stack needed
* could again use global groups
* dont need to null structs variables
* rest looks good

oK!

>>Ah, forgot about the healing while dead, but just create a dummy, give it an expiration timer and order it to cast death coil on Undying.
The problem is... You don't know who is the caster of the zombie when the zombie dies.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • 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 The Helper:
    Another bot invasion 493 members online most of them bots that do not show up on stats
  • Varine Varine:
    I'm looking at a solid 378 guests, but 3 members. Of which two are me and VSNES. The third is unlisted, which makes me think its a ghost.
    +1
  • The Helper The Helper:
    Some members choose invisibility mode
    +1
  • The Helper The Helper:
    I bitch about Xenforo sometimes but it really is full featured you just have to really know what you are doing to get the most out of it.
  • The Helper The Helper:
    It is just not easy to fix styles and customize but it definitely can be done
  • The Helper The Helper:
    I do know this - xenforo dropped the ball by not keeping the vbulletin reputation comments as a feature. The loss of the Reputation comments data when we switched to Xenforo really was the death knell for the site when it came to all the users that left. I know I missed it so much and I got way less interested in the site when that feature was gone and I run the site.
  • Blackveiled Blackveiled:
    People love rep, lol
    +1
  • The Helper The Helper:
    The recipe today is Sloppy Joe Casserole - one of my faves LOL https://www.thehelper.net/threads/sloppy-joe-casserole-with-manwich.193585/
  • The Helper The Helper:
    Decided to put up a healthier type recipe to mix it up - Honey Garlic Shrimp Stir-Fry https://www.thehelper.net/threads/recipe-honey-garlic-shrimp-stir-fry.193595/

      The Helper Discord

      Staff online

      • Ghan
        Administrator - Servers are fun

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top