- Joined
- Oct 16, 2011
- Messages
- 308
You should post the triggers.
VENOM SPELL |
-Bribe- Unit Event Damage Engine |
v1.1 -Fixed Group Damaging v1.2 -Minor Fix v1.3 -Fixed Missile Movement -Fixed HaprDagger Cast Damage Group -Fixed Dummy Owner -Add Stocking Damage v1.4 -Fixed Harp Blink Minor Fixed -Add Pick Enemy Flag of Harp Blink -Update the Required System v1.5 -Documentd trigger -Fixed the missile size configuring -Fixed the damage detecting trigger -Add configure for loop periodic v1.6 -Convert to Jass -Change name harp to venom because it seem not related to harp word v1.6a -Fixed Dagger Angle v1.7 -Fixed dagger -Change dagger's damage -Change dagger's cd -Fixed damage detect -Add new spell "Venom Berserk" v1.7a -Switch loop function's event into variable timer -Reduce local usage at cast functions -Nullify some variable and local that has handle |
Venom DaggerVenom BlinkVenom Berserk
|
You can find triggers through here: Trigger Viewer | HIVEYou should post the triggers.
Yeah the tooltips could stand to be typed out at least instead of just be pictures.Okay. This needs description though.
What I meant is the Setup Trigger. Some of the variables might be confusing to others.Yeah the tooltips could stand to be typed out at least instead of just be pictures.
I want to,, but I forgot some of the code which hiding some descriptions,, I only remeber, [size=#] [trigger.] [jass.] [quote.]Yeah the tooltips could stand to be typed out at least instead of just be pictures.
udg_HarpDagger_GroupIndexed[1]
, since the object could be lost at the very first cast of the spell (from the assignment via set
).SetUnitX
and SetUnitY
in place of the SetUnitPosition
native.SetUnitPosition
will usually place the unit within a certain offset of the actual point, due to it performing path checks, whereas the natives above do as their name implies, without the pathing checks. SetUnitPosition
, which may make the result look awkward (e.g. Missile not moving through its' trajectory). Rectify this with SetUnitX
and SetUnitY
instead.SetUnitX
and SetUnitY
, might cause the dummy unit to go out of bounds, given extreme range. That is why this is a suggestion instead of an urgent key-point that demands immediate attention.SetUnitX, SetUnitY
and SetUnitPosition
.Exactly maybe some editors having this problem and cant figure out how to fix,, so go for it,, make a topic for this kind of behavior.I think I figured out the cause, the movement speed of the projectile is accounted for when using the coordinate setter natives, whereas SetUnitPosition forces the displacement of these units. The solution to this is to set the movement speed of the dummy unit type being used to at least 1 (that way, a coordinate setter native will work on the unit).
This may be an interesting find, albeit a bit off-topic, about the behavior ofSetUnitX, SetUnitY
andSetUnitPosition
.
I think I figured out the cause, the movement speed of the projectile is accounted for when using the coordinate setter natives, whereas SetUnitPosition forces the displacement of these units. The solution to this is to set the movement speed of the dummy unit type being used to at least 1 (that way, a coordinate setter native will work on the unit).
This may be an interesting find, albeit a bit off-topic, about the behavior ofSetUnitX, SetUnitY
andSetUnitPosition
.
I change my mind sir to not update this reasources,, and by the way I already fixed it and your suggestion is already made.Looks like this will be a spellpack, neat-o. Just remember to split up the config triggers, and you're good to go.
@Almia
So it is the case that it was an already known bug, eh? Looks like I really need to refine my skills to dig deep back up.![]()
function UnitEventCheckDeath takes nothing returns nothing
local integer i = udg_CheckDeathList[0]
set udg_CheckDeathList[0] = i
loop
exitwhen i == 0
if udg_IsUnitNew[i] then
//The unit was just created.
set udg_IsUnitNew[i] = false
elseif udg_IsUnitAlive[i] then
//The unit has started reincarnating.
set udg_IsUnitReincarnating[i] = true
set udg_IsUnitAlive[i] = false
set udg_UDex = i
set udg_DeathEvent = 0.50
set udg_DeathEvent = 0.00
endif
set i = udg_CheckDeathList[i]
set udg_CheckDeathList[udg_CheckDeathList[i]] = 0 // add this line...
endloop
endfunction
Latest Unit Event is now imported,, and added some configurable flag that conditionally pick an enemy of harp blink also I fixed the missile's flag that checks the enemy's condition weather alive or not,,I use the variable of unit event which is "isUnitAlive[]" also instead of calling the target's user data in loop triggeraction I create a variable integer that will do it once at trigger cast.From my tests, there still exists some unnecessary overhead when casting either one of the spells. This happens once the enemy is stunned as the undefend order is being issued by the stunned target (due to the inclusion of a detector defend ability).
In conjunction with this, I noticed that you're using an older version of Unit Event. I suggest using the latest version to ensure that the spell will work optimally, or if you cannot import it into your map, all you need to change is this function, in trigger Unit Event:
JASS:function UnitEventCheckDeath takes nothing returns nothing local integer i = udg_CheckDeathList[0] set udg_CheckDeathList[0] = i loop exitwhen i == 0 if udg_IsUnitNew[i] then //The unit was just created. set udg_IsUnitNew[i] = false elseif udg_IsUnitAlive[i] then //The unit has started reincarnating. set udg_IsUnitReincarnating[i] = true set udg_IsUnitAlive[i] = false set udg_UDex = i set udg_DeathEvent = 0.50 set udg_DeathEvent = 0.00 endif set i = udg_CheckDeathList[i] set udg_CheckDeathList[udg_CheckDeathList[i]] = 0 // add this line... endloop endfunction
In trigger HarpBlink Cast, all the conditional statements within Pick Unit Group actions are hardcoded. Perhaps you can add some configurability onto this trigger via introduction of new flag variables?
Excluding dependencies, I would say the spell is ready for approval, as long as those things above are addressed either now or in the future.
EDIT:
Changed old to older
Expected music related spell, disappointed.
V_LoopTrig
, VB_LoopTrig
, and VA_LoopTrig
behave like timers, despite the fact that they are triggers. A recommendation is to change the types of these variables into timers (Countdown Timers in GUI). This would automatically generate the needed handles during the initialization phase.VB_Create
, VD_Create
, the spell leaks a unit handle every time it is called.What else bro? :>Now that this is in JASS, there would be a few points that need to be addressed:
There are some quirky things about this version of the Venom Spell, such as the usage of a local in defining a customizable property, returning that local. ("property" in this case is defined as a constant function that returns some value).
- Variables
V_LoopTrig
,VB_LoopTrig
, andVA_LoopTrig
behave like timers, despite the fact that they are triggers. A recommendation is to change the types of these variables into timers (Countdown Timers in GUI). This would automatically generate the needed handles during the initialization phase.
- Remember to null dynamic handles in JASS/vJASS. In functions
VB_Create
,VD_Create
, the spell leaks a unit handle every time it is called.
Awaiting Update
There are some quirky things about this version of the Venom Spell, such as the usage of a local in defining a customizable property, returning that local. ("property" in this case is defined as a constant function that returns some value).