• 🏆 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!

Super Advanced Shoot System

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
S -uper.
A -dvanced.
S -hoot.
S -ystem.
----------
Explanation:
String bow using the "String Bow" ability,
must have atleast 1 arrow in quiver to do this.

type -Ammo to refresh ammo to maximum (20 / 20)

Enjoy!!

(give credits if used!)


Keywords:
Arrow, Arrows, Bow, Bows, Archer, Archers, Shoot, Shooters, Elf, Night Elf, String, Strings, Damage, Target, Ground, Target Ground, Fire, Advanced, El
Contents

SASS (Map)

Reviews
12th Dec 2015 IcemanBo: For long time as NeedsFix. Rejected. Bribe: >> Elapsed game time is 0.00 seconds Unless you are creating a multiboard, this event should be Map Initialization. So your QuiverSetup trigger needs a change. >> Every...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: For long time as NeedsFix. Rejected.

Bribe:

>> Elapsed game time is 0.00 seconds

Unless you are creating a multiboard, this event should be Map Initialization. So your QuiverSetup trigger needs a change.

>> Every 0.01 seconds of game time

Turn that to 0.03, reduces lag but preserves realism.

>>Set Angle = (Angle from (Position of Caster) to Location)

Leaks (Position of Caster)

>>Unit - Create 1 Arrow for (Owner of Caster) at ((Position of Caster) offset by 2.00 towards Angle degrees) facing Angle degrees

Leaks (Position of Caster) and the offset-position.

>>Set Damage = (Random integer number between 8 and 14)

8 and 14 should be configurable.

>>Unit - Move Arrow instantly to ((Position of Arrow) offset by 8.00 towards Angle degrees

Two location leaks

>>Unit Group - Pick every unit in (Units within 50.00 of (Position of Arrow) matching ((((Matc

A location leak and a unit group leak. Use the bj_wantDestroyGroup custom script to clear this leak.

There are a lot more leaks and problems.

Needs a LOT of work.
 
Level 4
Joined
Feb 18, 2009
Messages
18
And also, this spell is only to be used by 1 archer at a time the spell is not made for example custom melee maps where you have several of them, its for RPGS or perhaps Mini Game arenas where more archers battle against eachother, and if you have so much experience with triggering as you all claim to have, then what is so hard about making the booleans, reals, integers, units and locations array triggers, then at cast just set it to =E.x "Set Variable = Dummy [(Player Number of(owner of (triggering unit)))] , but thanks everyone for the critiques, i shall update the spell as soon as this is fixed i suppose.
 
sorry but, a spell/system resource is REQUIRED to be usable by any number of units at the same time without problems...

you should learn to read the rules... http://www.hiveworkshop.com/forums/faq/spellrules/#faq_spellperforms

also, resources should be as user-friendly as possible... because there will be a lot of people with only a bit of triggering knowledge who might use your spell...

and also, Set Variable = Dummy [(Player Number of(owner of (triggering unit)))] will just make it MPI (meaning one unit per player can use it), but still not MUI...
 
Level 7
Joined
Apr 11, 2011
Messages
173
Here is the triggers...

[trigger=QuiverSetup]
Events
Time - Elapsed game time is 0.00 seconds
Actions
Set Ammo = 20
Set MaximumAmmo = 20
Set BowStrung = False
[/trigger]

[trigger=Multiboard]
Events
Time - Elapsed game time is 0.00 seconds
Actions
Multiboard - Create a multiboard with 1 columns and 3 rows, titled Quiver
Set Quiver = (Last created multiboard)
Multiboard - Set the width for Quiver item in column 1, row 1 to 10.00% of the total screen width
Multiboard - Set the width for Quiver item in column 1, row 2 to 12.00% of the total screen width
Multiboard - Set the width for Quiver item in column 1, row 3 to 18.00% of the total screen width
Multiboard - Set the icon for Quiver item in column 1, row 1 to ReplaceableTextures\CommandButtons\BTNTrueShot.blp
Multiboard - Set the icon for Quiver item in column 1, row 2 to ReplaceableTextures\CommandButtons\BTNImprovedBows.blp
Multiboard - Set the text for Quiver item in column 1, row 1 to (Arrows: + ( + ((String(Ammo)) + ( | + ( + (String(MaximumAmmo)))))))
Multiboard - Set the text for Quiver item in column 1, row 2 to (Bow Strung: + |CFFED1C24No|r)
Multiboard - Set the display style for Quiver item in column 1, row 3 to Show text and Hide icons
Multiboard - Show Quiver
Multiboard - Minimize Quiver
Multiboard - Maximize Quiver
[/trigger]

[trigger=Loop Quiver]
Events
Time - Every 0.01 seconds of game time
Actions
Multiboard - Set the text for Quiver item in column 1, row 1 to (Arrows: + ( + ((String(Ammo)) + ( | + ( + (String(MaximumAmmo)))))))
Multiboard - Set the text for Quiver item in column 1, row 3 to (|CFFED1C24Damage Done: + ( + ((String(DamageDone)) + |r)))
[/trigger]

[trigger=String Bow]
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to String Bow
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Ammo Greater than 0
Then - Actions
Set BowStrung = True
Multiboard - Set the text for Quiver item in column 1, row 2 to (Bow Strung: + |CFF00FF00Yes|r)
Else - Actions
Game - Display to (All players) for 8.00 seconds the text: |CFF00FF00Y|CFF0EF9...
[/trigger]


[trigger=Shoot]
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Shoot
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BowStrung Equal to True
Then - Actions
Set Caster = (Triggering unit)
Set Location = (Target point of ability being cast)
Set Angle = (Angle from (Position of Caster) to Location)
Custom script: call RemoveLocation(udg_Location)
Unit - Create 1 Arrow for (Owner of Caster) at ((Position of Caster) offset by 2.00 towards Angle degrees) facing Angle degrees
Set Arrow = (Last created unit)
Unit - Add a 1.19 second Generic expiration timer to Arrow
Set Damage = (Random integer number between 8 and 14)
Set DoubleDamage = (Damage x 2)
Set CritChance = 27.00
Set Ammo = (Ammo - 1)
Set BowStrung = False
Trigger - Turn on Shoot Loop <gen>
Multiboard - Set the text for Quiver item in column 1, row 2 to (Bow Strung: + |CFFED1C24No|r)
Else - Actions
Game - Display to (All players) for 8.00 seconds the text: |CFF00FF00S|CFF03FE...

[/trigger]

[trigger=Shoot Loop]
Events
Time - Every 0.01 seconds of game time
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Arrow is alive) Equal to True
Then - Actions
Unit - Move Arrow instantly to ((Position of Arrow) offset by 8.00 towards Angle degrees)
Unit Group - Pick every unit in (Units within 50.00 of (Position of Arrow) matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Not equal to True) and (((Matching unit) belongs to an enemy of (Owner of Arrow)) Equal to True)))) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Random real number between 1.00 and 100.00) Less than or equal to CritChance
Then - Actions
Trigger - Turn off (This trigger)
Unit - Remove Arrow from the game
Unit - Cause Arrow to damage (Picked unit), dealing (Real(DoubleDamage)) damage of attack type Chaos and damage type Normal
Floating Text - Create floating text that reads (|CFF6DCFF6:|CFF7FB6D8:|CFF919CBAC|CFFA3839CR|CFFB6697EI|CFFC85060T|CFFDA3642:|CFFEC1D24: + ( + (String(DoubleDamage)))) above (Picked unit) with Z offset 0.00, using font size 11.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Set the velocity of (Last created floating text) to 25.00 towards 135.00 degrees
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
Floating Text - Change the fading age of (Last created floating text) to 1.30 seconds
Set DamageDone = (DamageDone + DoubleDamage)
Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Else - Actions
Trigger - Turn off (This trigger)
Unit - Remove Arrow from the game
Unit - Cause Arrow to damage (Picked unit), dealing (Real(Damage)) damage of attack type Chaos and damage type Normal
Floating Text - Create floating text that reads (|CFF790000 + (- + ( + ((String(Damage)) + |r)))) above (Picked unit) with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Set the velocity of (Last created floating text) to 80.00 towards 45.00 degrees
Floating Text - Change the lifespan of (Last created floating text) to 1.25 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.90 seconds
Set DamageDone = (DamageDone + Damage)
Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Else - Actions
Trigger - Turn off (This trigger)
[/trigger]

[trigger=DestroyArrowSE]
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Arrow
Actions
Special Effect - Create a special effect at (Position of (Triggering unit)) using Abilities\Spells\Orc\Devour\DevourEffectArt.mdl
[/trigger]


Quite messy and needs to be fixed wc3 n00b.
 
@wc3_n00b,
you can always combine the setup for the arrow max, and current ammo with the multiboard to save space,
Like so :
  • Setup
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • Set Ammo = 20
      • Set MaximumAmmo = 20
      • Set BowStrung = False
      • Multiboard - Create a multiboard with 1 columns and 3 rows, titled Quiver
      • Set Quiver = (Last created multiboard)
      • Multiboard - Set the width for Quiver item in column 1, row 1 to 10.00% of the total screen width
      • Multiboard - Set the width for Quiver item in column 1, row 2 to 12.00% of the total screen width
      • Multiboard - Set the width for Quiver item in column 1, row 3 to 18.00% of the total screen width
      • Multiboard - Set the icon for Quiver item in column 1, row 1 to ReplaceableTextures\CommandButtons\BTNTrueShot.blp
      • Multiboard - Set the icon for Quiver item in column 1, row 2 to ReplaceableTextures\CommandButtons\BTNImprovedBows.blp
      • Multiboard - Set the text for Quiver item in column 1, row 1 to (Arrows: + ( + ((String(Ammo)) + ( | + ( + (String(MaximumAmmo)))))))
      • Multiboard - Set the text for Quiver item in column 1, row 2 to (Bow Strung: + |CFFED1C24No|r)
      • Multiboard - Set the display style for Quiver item in column 1, row 3 to Show text and Hide icons
      • Multiboard - Show Quiver
      • Multiboard - Minimize Quiver
      • Multiboard - Maximize Quiver
But also what is the point of this trigger?
  • Loop Quiver
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Multiboard - Set the text for Quiver item in column 1, row 1 to (Arrows: + ( + ((String(Ammo)) + ( | + ( + (String(MaximumAmmo)))))))
      • Multiboard - Set the text for Quiver item in column 1, row 3 to (|CFFED1C24Damage Done: + ( + ((String(DamageDone)) + |r)))
 
Level 3
Joined
Jan 20, 2011
Messages
29
Adiktuz what about you go make the triggers for us and then post them in a new threat? Lolz...
 
Top