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

Arrmageddon 1.3

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Armageddon
- Calls from the heavens to fall 10 meteorites down from the earth, each falling meteorites can affect enemy units within 300 range of the meteorite itself.
Level 1 - Deals 150 damage.
Level 2 - Deals 200 damage.
Level 3 - Deals 250 damage.
Cooldown: 10/20/30 seconds
Area of Effect: 600

Triggers:

[trigger="Armageddon INIT"]
Armageddon INIT
Events
Map initialization
Conditions
Actions
-------- ------------------------ --------
-------- Creates Hashtable --------
-------- ------------------------ --------
Hashtable - Create a hashtable
Set Armg_Hashtable = (Last created hashtable)
-------- ///////////////////////////////// --------
-------- MODELS / COUNT --------
-------- ///////////////////////////////// --------
-------- ------------------------ --------
-------- Sets how many meteors will spawn --------
-------- ------------------------ --------
Set Armg_ArmageddonCount = 10
-------- ------------------------ --------
-------- Types of Meteors --------
-------- ------------------------ --------
Set Armg_ArmageddonType = Armageddon
-------- ///////////////////////////////// --------
-------- AREA OF EFFECT --------
-------- ///////////////////////////////// --------
-------- ------------------------ --------
-------- Sets the Area of Effect --------
-------- ------------------------ --------
Set Armg_AreaofEffect = 600.00
-------- ------------------------ --------
-------- Area of Effect when the meteor has touched into the ground --------
-------- ------------------------ --------
Set Armg_MeteorAreaofEffect = 300.00
-------- ///////////////////////////////// --------
-------- DAMAGING --------
-------- ///////////////////////////////// --------
-------- ------------------------ --------
-------- Damage --------
-------- ------------------------ --------
Set Armg_Damage1 = 150.00
Set Armg_Damage2 = 200.00
Set Armg_Damage3 = 250.00
-------- ------------------------ --------
-------- Waits for the meteor to touch into the ground --------
-------- (I recommend not to touch these if you are not yet understand how this work) --------
-------- ------------------------ --------
Set Armg_Delay = 0.80
-------- ------------------------ --------
-------- Spawns Meteors in random seconds between 0.00 and 3.00 --------
-------- ------------------------ --------
Set Armg_RandomSpawnTime = 3.00
-------- ///////////////////////////////// --------
-------- ENVIRONMENTAL EFFECTS --------
-------- ///////////////////////////////// --------
-------- ------------------------ --------
-------- How long will it take to reform the terrain --------
-------- = the unit will be seconds = --------
-------- ------------------------ --------
Set Armg_ReformTerrain = 0.50
-------- ------------------------ --------
-------- The depth of the terrain deformation --------
-------- ------------------------ --------
Set Armg_TerrainDepth = 32.00
-------- ------------------------ --------
-------- Sets the effect of meteor when falling into ground --------
-------- ------------------------ --------
Set Armg_Effects = Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
[/trigger]


[trigger="Armageddon"]
Armageddon
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Armageddon
Actions
-------- ------------------------ --------
-------- Caster of this Ability --------
-------- ------------------------ --------
Set Armg_Caster = (Triggering unit)
-------- ------------------------ --------
-------- Target Point --------
-------- ------------------------ --------
Set Armg_TargetPoint = (Target point of ability being cast)
-------- ------------------------ --------
-------- Random Spawn Time --------
-------- ------------------------ --------
For each (Integer A) from 1 to Armg_ArmageddonCount, do (Actions)
Loop - Actions
-------- ==Sets random point for the creation of the meteor --------
Set Armg_Offset = (Random real number between 0.00 and Armg_AreaofEffect)
Set Armg_RandomPoint = (Armg_TargetPoint offset by Armg_Offset towards (Random angle) degrees)
-------- ==Creates a dummy for the delay, it is a safe trigger== --------
Unit - Create 1 Armageddon (Timer) for (Triggering player) at Armg_RandomPoint facing Default building facing degrees
-------- ==adds expiration to the last created unit so we can adjust when it is going to be spawned== --------
Unit - Add a (Random real number between 0.00 and Armg_RandomSpawnTime) second Generic expiration timer to (Last created unit)
-------- ==points the landing area== --------
Set Armg_ArmageddonLandPoint = (Position of (Last created unit))
-------- ==sets the handle ID== --------
Set Armg_HandleDummy[1] = (Last created unit)
-------- ==stores variables== --------
Hashtable - Save Handle OfArmg_Caster as (Key caster) of (Key Armg_HandleDummy[1]) in Armg_Hashtable
Hashtable - Save Handle OfArmg_ArmageddonLandPoint as (Key landpoint) of (Key Armg_HandleDummy[1]) in Armg_Hashtable
-------- ==Cleaning== --------
Custom script: call RemoveLocation(udg_Armg_RandomPoint)
[/trigger]


[trigger="Armageddon Effect"]
Armageddon Effect
Events
Unit - A unit Dies
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Armageddon (Timer)
Then - Actions
-------- ------------------------ --------
-------- sets the caster of the ability armageddon --------
-------- ------------------------ --------
Set Armg_Caster = (Load (Key caster) of (Key (Triggering unit)) in Armg_Hashtable)
-------- ------------------------ --------
-------- Landing Area --------
-------- ------------------------ --------
Set Armg_ArmageddonLandPoint = (Load (Key landpoint) of (Key (Triggering unit)) in Armg_Hashtable)
-------- ------------------------ --------
-------- Player owns the Armg_Caster --------
-------- ------------------------ --------
Set Armg_Player = (Owner of Armg_Caster)
-------- ------------------------ --------
-------- Creates Meteor (Special Effect) --------
-------- ------------------------ --------
Unit - Create 1 Armageddon for Armg_Player at Armg_ArmageddonLandPoint facing Default building facing degrees
Set Armg_Meteor = (Last created unit)
-------- ==the span of this unit is 1 second, to fully animate the animation to the meteor itself.== --------
Unit - Add a 1.00 second Generic expiration timer to Armg_Meteor
-------- ------------------------ --------
-------- Randoms the color of the Meteor --------
-------- ------------------------ --------
Set Armg_ColorR = (Integer((Random real number between 0.00 and 100.00)))
Set Armg_ColorG = (Integer((Random real number between 0.00 and 100.00)))
Set Armg_ColorB = (Integer((Random real number between 0.00 and 100.00)))
Animation - Change Armg_Meteor's vertex coloring to ((Real(Armg_ColorR))%, (Real(Armg_ColorG))%, (Real(Armg_ColorB))%) with 0.00% transparency
-------- ------------------------ --------
-------- Delay to Damage Enemies --------
-------- ------------------------ --------
-------- === creates a dummy again, (safe trigger) --------
Unit - Create 1 Armageddon (Delay) for Armg_Player at Armg_ArmageddonLandPoint facing Default building facing degrees
-------- === adjusts the second on when it is going to land === --------
Unit - Add a Armg_Delay second Generic expiration timer to (Last created unit)
-------- === stores variables again for the next trigger === --------
Hashtable - Save Handle OfArmg_Caster as (Key caster) of (Key (Last created unit)) in Armg_Hashtable
Hashtable - Save Handle OfArmg_ArmageddonLandPoint as (Key landpoint) of (Key (Last created unit)) in Armg_Hashtable
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Armageddon (Delay)
Then - Actions
-------- --------------------- --------
-------- sets the caster of the ability Armageddon --------
-------- --------------------- --------
Set Armg_Caster = (Load (Key caster) of (Key (Triggering unit)) in Armg_Hashtable)
-------- --------------------- --------
-------- Landing Point --------
-------- --------------------- --------
Set Armg_ArmageddonLandPoint = (Load (Key landpoint) of (Key (Triggering unit)) in Armg_Hashtable)
-------- --------------------- --------
-------- Terrain Deform --------
-------- --------------------- --------
Environment - Create a Armg_ReformTerrain second Depression ripple deformation at Armg_ArmageddonLandPoint with starting radius Armg_AreaofEffect, ending radius Armg_AreaofEffect, and depth Armg_TerrainDepth, using 1.00 second ripples spaced (Armg_AreaofEffect / 2.00) apart
-------- --------------------- --------
-------- Special Effect --------
-------- --------------------- --------
Special Effect - Create a special effect at Armg_ArmageddonLandPoint using Armg_Effects
Special Effect - Destroy (Last created special effect)
-------- --------------------- --------
-------- Damage --------
-------- --------------------- --------
Set Armg_TempGroup = (Units within Armg_MeteorAreaofEffect of Armg_ArmageddonLandPoint matching ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of Armg_Caster)) Equal to True))
Unit Group - Pick every unit in Armg_TempGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Armageddon for Armg_Caster) Equal to 1
Then - Actions
Unit - Cause Armg_Caster to damage (Picked unit), dealing Armg_Damage1 damage of attack type Spells and damage type Normal
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Armageddon for Armg_Caster) Equal to 2
Then - Actions
Unit - Cause Armg_Caster to damage (Picked unit), dealing Armg_Damage2 damage of attack type Spells and damage type Normal
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Armageddon for Armg_Caster) Equal to 3
Then - Actions
Unit - Cause Armg_Caster to damage (Picked unit), dealing Armg_Damage3 damage of attack type Spells and damage type Normal
Else - Actions
-------- --------------------- --------
-------- Clean --------
-------- --------------------- --------
Custom script: call DestroyGroup(udg_Armg_TempGroup)
Custom script: call RemoveLocation(udg_Armg_ArmageddonLandPoint)
Custom script: call RemoveLocation(udg_Armg_TargetPoint)
Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in Armg_Hashtable
Else - Actions
[/trigger]




v.1.3
- Changed Armg_Damage to Non-Array
- RandomColors: Converted from Real to Integer

v.1.2
- Merged the "Armageddon 2" and "Armageddon Effect"
- Fixed some point leaks
- More "readable"
- More "Configurable"


v.1.1
- Fixed the leak offset
- Deleted the Dummies "Armageddon (Colors)"
- Fixed the Description trigger.

v.1.0
- Release


- GUI and it is MUI :D
- User Friendly
- Feel free to edit as long as you give credits :D

-Created by dark_sparrow

Keywords:
armageddon,meteor,dark,sparrow,fire,earth
Contents

Armageddon (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Arrmageddon 1.3 | Reviewed by Maker | 2nd May 2013 NEEDS FIX Target point leaks in Armageddon trigger Make the terrain deformation optional since it can cause an FPS drop...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.


Arrmageddon 1.3 | Reviewed by Maker | 2nd May 2013
NEEDS FIX


126248-albums6177-picture66522.png


  • Target point leaks in Armageddon trigger
  • Make the terrain deformation optional since it can cause an FPS drop
  • Dummies should not use the default upgrades and their
    death type should be can't raise, does not decay. They don't need to
    give vision either. Disable their attacks
126248-albums6177-picture66523.png


  • The duration data field of the ability affects the animation the caster plays
    It looks better when not set to 0.01, but to a higher value
  • I don't favour using dummy units instead of timer to be used for delays
  • You only need one dummy unit type, not three
[tr]
 
Level 5
Joined
Feb 4, 2011
Messages
65
Did you paste the incorrect trigger for the third, daRk_sParroW?

oops, my bad..

You leak the offset point in the first trigger.

oh yeah.. I missed it.

Shouldn't you fix your spellpack first?
Please learn how to use only one dummy unit, if you want people useing your stuff... it makes it much MUCH better. All you need a blank dummy unit where you can find on from vexorian I think and then just learn to use special effects.

I'm working on it...

v.1.1 Update
 
Last edited:
replace Key(Triggering Unit) with an integer variable then do this : set Key = GetHandleId(udg_SomeUnit). SomeUnit is your triggering unit.That is just an example,replace all the parameters i have given.
This same goes to Key(last created unit).

Cache Owner of Caster

Terrain deform times , size, and depth should be configurable.

The "300" in the unit group should be configurable.

Because you are using so many dummies,i suggest using dummy.mdx. This will make the dummy data's very configurable.

Spell's variable prefix is too simple. Make it Armg or just AR. A is not enough to prevent variable collision.

You can merge Armageddon 2 and Armageddon Effect as one trigger by using If conditions.

The generic expiration timer value should be at least configurable.
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
Armageddon INIT:
- it's best to make the A_Damage[1], etc...into non-arrayed variables coz it's harder to configure that way and it's also slower, imo.

Armageddon:
- Use "Starts the effect of an ability" instead of begins casting
- You leak A_TargetPoint and offset point
- Use triggering player instead of owner of triggering unit
- key caster and alike (AKA StringHash is slow, use normal integers, like "Hashtable - Save Handle OfA_Caster as 1 of (Key (Last created unit)) in A_Hashtable"
- Imo, kill the meteors when 'it lands on the ground', not when the timer expires

Armageddon 2:
- When choosing color, integer is better then convert it to real

Armageddon Effect:
- Terrain deformation always leak, remove it
 
Level 5
Joined
Feb 4, 2011
Messages
65
Updated v1.2

- it's best to make the A_Damage[1], etc...into non-arrayed variables coz it's harder to configure that way and it's also slower, imo.

I would recommend my settings to be at this way to make it more configurable, for example what if a user would like to make the level 1 as 223 and level 2 as 346 or something like that would definitely hard for them to configure it.

- Use "Starts the effect of an ability" instead of begins casting
- You leak A_TargetPoint and offset point
- Use triggering player instead of owner of triggering unit

Done

- When choosing color, integer is better then convert it to real

The color is randomized so why change?.
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
I would recommend my settings to be at this way to make it more configurable, for example what if a user would like to make the level 1 as 223 and level 2 as 346 or something like that would definitely hard for them to configure it.
simple:
var1 = 223
var2 = 346
var3 = 1

although it's relatively the same, arrays should be used in a dynamic way like indexing not constants...

The color is randomized so why change?.
why? coz reals are 0.1, 0.23, 0.35 etc.....colors usually is 5, 15, 1 etc...
although conversion is slow but it's better...

@Almia
integers don't leak :)
 
Top