• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!
Wietlol
Reaction score
56

Profile posts Latest activity Postings Experience Albums Resources About

  • Hi Wietlol, can you look at this triggers if see if there's anything wrong?


    Courage
    Events
    Conditions
    Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    (Level of Courage for UnitCreation_Unit) Greater than 0
    Then - Actions
    Custom script: call EOT_Set_Default_Variables()
    Set EOT_Param_Ability = Courage (Attack Damage Bonus)
    Set EOT_Param_Hidden = True
    Set EOT_Param_Interval = 0.50
    Set EOT_Param_Is_Passive = True
    Set EOT_Param_Source = UnitCreation_Unit
    Set EOT_Param_Target = EOT_Param_Source
    Set TempAbility = Courage
    Custom script: set udg_TempInteger = udg_TempAbility
    Set EOT_Param_Type = TempInteger
    Trigger - Run EOT_Trigger_Create_EOT (ignoring conditions)
    Else - Actions


    Courage Loop
    Events
    Game - EOT_Event_On_Interval becomes Equal to 0.00
    Conditions
    Actions
    Set TempAbility = Courage
    Custom script: set udg_TempInteger = udg_TempAbility
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    EOT_Param_Type Equal to TempInteger
    EOT_Param_Subtype Equal to 0
    Then - Actions
    -------- Attack Damage Bonus --------
    Set TempLocation = (Position of EOT_Param_Target)
    Set TempPlayer = (Owner of EOT_Param_Target)
    Set TempGroup = (Units within (Current acquisition range of EOT_Param_Target) of TempLocation matching (((Matching unit) belongs to an enemy of TempPlayer) Equal to True))
    Unit Group - Pick every unit in TempGroup and do (Actions)
    Loop - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    ((Picked unit) is A Hero) Equal to True
    ((Picked unit) is alive) Equal to False
    Then - Actions
    Unit Group - Remove (Picked unit) from TempGroup
    Else - Actions
    Set EOT_Param_Ability_Level = ((Number of units in TempGroup) + 1)
    Custom script: call RemoveLocation(udg_TempLocation)
    Custom script: call DestroyGroup(udg_TempGroup)
    -------- Armor Bonus --------
    Set TempGroup_2 = (Units within (Current acquisition range of EOT_Param_Target) of TempLocation matching (((Matching unit) belongs to an ally of TempPlayer) Equal to True))
    Else - Actions
    Unit Group - Pick every unit in TempGroup_2 and do (Actions)
    Loop - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    ((Picked unit) is A Hero) Equal to True
    ((Picked unit) is alive) Equal to False
    Then - Actions
    Unit Group - Remove (Picked unit) from TempGroup
    Else - Actions
    Set EOT_Param_Ability_Level = ((Number of units in TempGroup_2) + 1)
    Custom script: call DestroyGroup(udg_TempGroup_2)

    Its the courage ability that I ask you About a long time ago. It increases the hero's attack damage for each enemy hero and increases his armor for each allied hero. It already increases his attack, I know how to do the same in increasing the armor though I think I got a problem here. This variable ''Set EOT_Param_Ability'' is already set for this ability ''Courage (Attack Damage Bonus)''

    Should I just create another variable like ''Set EOT_Param_Ability_2'' for ''Courage (Armor Bonus)'' :vw_wtf:
    So far this is what I've done in the first trigger, is it right? Also what variables should I use in you're EOT system?


    Courage
    Events
    Time - Every 0.50 seconds of game time
    Conditions
    EOT_Param_Buff Equal to Courage (Buff)
    Actions
    Set Temp_Unit = (Triggering unit)
    Set Temp_Location = (Position of Temp_Unit)
    Set TempPlayer = (Owner of Temp_Unit)
    Set Temp_Group = (Units within 500.00 of Temp_Location matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A Hero) Equal to True) and (((Owner of (Matching unit)) is an enemy of TempPlayer) Equa
    Set TempAbility = Courage (Armor)
    Unit - Add TempAbility to Temp_Unit
    Unit - Set level of TempAbility for Temp_Unit to Temp_Ability_Level
    If I want the ability to stack five times since there is only five heroes in each team, should I create 5 armor bonus ability with different armor bonuses or 1 armor bonus ability with 5 levels of different armor bonuses?
    Yow Wietlol, I'm just wondering how to do this with you're EOT System. For each enemy heroes near the Hero in 500 radius he gains + 2 armor and for each allied hero near him he will gain + 2 attk dmg. Of course if an enemy or allied hero leaves the 500 radius, the hero will lose the bonus stack. Its a passive ability and is only level 1.
    Hmm, I gave it a go but got an error.
    This is what I changed:

    //! textmacro CREATE_BUFF_ABILITY takes RAWCODE, NAME, ICON, DESCRIPTION
    //! external ObjectMerger w3a Aasl A$RAWCODE$ abuf 1 B$RAWCODE$ Slo1 1 0 aare 1 0 atar 1 "Self,Invulnerable,Vulnerable"
    //! external ObjectMerger w3h Basl B$RAWCODE$ ftip "$NAME$" fube "$DESCRIPTION$" fart "$ICON$"
    //! endtextmacro

    //! textmacro CREATE_BUFF_ABILITY takes RAWCODE, NAME, ICON, DESCRIPTION, ART, ATT1, ATT2, ATTAMOUNT
    //! external ObjectMerger w3a Aasl A$RAWCODE$ abuf 1 B$RAWCODE$ ansf 1 "(buff version)" Slo1 1 0 arac 1 "Orc" aare 1 0 atar 1 "Self,Invulnerable,Vulnerable" atat 1 $ART$ ata0 1 $ATT1$ ata1 1 $ATT2$ atac 1 $ATTAMOUNT$
    //! external ObjectMerger w3h Basl B$RAWCODE$ fnsf 1 "" ftip "$NAME$" fube "$DESCRIPTION$" fart "$ICON$"
    //! endtextmacro

    What I changed:
    - added Target - Art
    - added Target Art Attachment 1
    - added Target Art Attachment 2
    - added Target Attachments
    - added 'arac 1 "Orc"' so that the ability will appear in the orc tab in object editor
    - added 'fnsf 1 ""' to the buff so that the (slow aura) will be removed in object editor

    This is my new buff creation text macro now. (it's long)

    //! runtextmacro CREATE_BUFF_ABILITY("100", "|c0000ff00Enchant Weapon: Razorspine|r", "ReplaceableTextures\CommandButtons\BTNNagaWeaponUp3.blp", "|cff0080c0Buff Type:|r Positive Enchantment|n|cff0080c0Duration: |r2 turns and 2 additional turns if the unit is classified; Naga.|n|n|cffe19d00Description:|r Grants the unit +1 on its damage outcome.", "Abilities\Spells\Other\FrostDamage\FrostDamage.mdl", "hand,left", "hand,right", "2")


    Oh and here is the error message I got:
    Hey Wietlol,
    I was just wondering about something now that I'm trying to work with your (amazing) buff system. Is there a way to add the "Art - Target" and all the attachment points to that line of code below? It will probably become long, but I'd love to make the buffs also have an appearance. :)
    It will have to be part of the aura ability and not the buff, since with the buff it won't work (for some reason).

    //! textmacro CREATE_BUFF_ABILITY takes RAWCODE, NAME, ICON, DESCRIPTION
    //! external ObjectMerger w3a Aasl A$RAWCODE$ abuf 1 B$RAWCODE$ Slo1 1 0 aare 1 0 atar 1 "Self,Invulnerable,Vulnerable"
    //! external ObjectMerger w3h Basl B$RAWCODE$ ftip "$NAME$" fube "$DESCRIPTION$" fart "$ICON$"
    //! endtextmacro
    A leaderboard, multiboard or a persistent text message comes to mind, or if you have a fixed camera, something like DGUI might work.

    A invisible fullscreen multiboard is probably your best bet though.
    Wietlol I am happy you want to try my game ^^ I am on Tunngle (Kingluis) or Gameranger (LOTRKingluis)
    ----------
    1, that is not true.
    I cannot use the degree stuff cause when the unit is moving and the missile flies with the same speed, the missile stops orbiting and remains at one side of the target. (Because of the speed.)
    ----------
    You can use it. Just you need to update at what angle the missile is from the unit every time you update. Doing this forces it to move the appropriate amount every update. You can factor in a correction for distance from orbit the unit moved as well.
    For the first problem there are two approaches.
    1. Since velocity is around arc, go from arc back to the new angle and thus calculate the new offset. Simple and accurate.
    2. Add a guidance system to the missile. It works by changing its direction while the speed remains constant. This mimics a real missile without a tether.

    1. We know circumference of a circle is 2*pi*r. Hence the arc of a segment is 2*pi*r*arcangle/360 (in degrees). We can re-arrange that as follows...
    v = arc = 2*pi*r*arcangle/360
    v * 360 = 2*pi*r*arcangle
    v * 360 / 2*pi*r = arcangle
    arcangle = v * 360 / 2*pi*r
    Where 'v' is velocity (or in this case the missile speed)

    All that is left is to get the angle of the missile from the body currently and then either add or subtract depending on direction you want to go. You can then use polar offset to work out its new position.

    2. Is more complex but basically you give the missile intelligence. The missile always wants the body to one side of it, if not then it rotates to try and correct. If it is too far out or too far in it then corrects by some control algorithm (probably over-dampened so as not to oscillate).

    The second problem is solved by changing guidance state. You start the missile off with a simple "go towards point" driver. The point it heads towards is such that the gradient of the line between the missile and the circle and the gradient of the circle are equal. When it arrives you then change to your orbital driver.

    Alternatively if you use the comply approach 2 for the first problem it should automatically fall into place with some sort of decreasing orbit.
    Wietlol, Just found your Question about 0.999999 thing. You Multiply 9.99- By Ten, but the fact is that you Have to substract 0.999999 as the Same since 9.99- has a digit More than 0.99-. Sooooo, The Result will be 9-0.0000000000000000000000...0000000009!
    A
    Well, thank you, I think I stay with single target attacks.
    Maybe I trigger the fire orb, but the rest, uh, too complicated for me.
    A
    I am not sure whether this does not become too complicated.
    Tho, it would be nice to have a triggered splash, multi-shot and bounce.
    So, what is your thought ? Could you create it, please ?
    A
    So you could create a trigger that detects auto attacks ?
    A
    This sounds a bit overwhelming..
    There is no way to add somehow a condition that the damage dealt resulted from an auto-attack ?
    A
    The reason why I ask is that the system of lfh says the splash of fire orb is spell damage. My system Stacking Orbs needs to get the targets hit by the splash, but removing the condition of PDD_damageType Equal PDD_PHYSICAL makes all spells triggering the event, if you understand.
    Do you know a solution to this issue ?
    Ahh I get you now :) well darn, I haven't spent much time on reading tutorials in regards to vertex modification :( I'm sorry.
  • Loading…
  • Loading…
  • Loading…
  • Loading…
  • Loading…
  • Loading…
Top