Staredit Network > Forums > SC1 UMS Mapmaking Assistance > Topic: Hypertrigger failure
Hypertrigger failure
May 9 2009, 9:47 pm
By: Xpenguin17  

May 9 2009, 9:47 pm Xpenguin17 Post #1



So I made this retarded map out of boredom when a snowstorm confined me to my crib back in Jan'08. It's about disabled units dancing in a twilight dome to a gay techno song while lights flicker. I got hypers on but for some reason the lights (corsair explosions) don't occur consistently as I coded the triggers. They're supposed to explode diagonally on 5 different locations on each side with a 500-millisecond delay between each hop and repeat, but it takes 5 seconds before the next loop begins. Also, the hydra is roaming around (JYD) as if hyper triggers were off. I'm curious, where's the flaw?

Attachments:
TMTalala(1.2).scx
Hits: 3 Size: 572.27kb



None.

May 9 2009, 10:11 pm xYoshix Post #2



It seems like you are experiencing wait blocks. Use Death Counters instead.



None.

May 9 2009, 10:11 pm NudeRaider Post #3

We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch

waits and hyper triggers? Sounds like Wait Blocks.




May 9 2009, 10:59 pm Xpenguin17 Post #4



Quote from xYoshix
It seems like you are experiencing wait blocks. Use Death Counters instead.

Ok, so I set a death count to reset at 6 (for 500 milliseconds) everytime it reaches 0 and decrease by 1 if it has above 0, but how exactly do I work this into my corsair explosions?

Currently it's something like:
If switch 5 is set
Create 1 corsair at L1
Create 1 corsair at R1
Kill all any unit at L1
Kill all any unit at R1
Wait 500 milliseconds
...

I can't use death counts as an action.



None.

May 9 2009, 11:09 pm Falkoner Post #5



Set Deaths is the action, Deaths is the condition, replace that Wait 500 with a Death Count Timer and that should fix your problem.



None.

May 9 2009, 11:47 pm Xpenguin17 Post #6



The explosions are even less functioning now. Here's the code:

Code
//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 60);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L5");
    Create Unit("Player 7", "Protoss Corsair", 1, "R5");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 54);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L4");
    Create Unit("Player 7", "Protoss Corsair", 1, "R4");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 48);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L3");
    Create Unit("Player 7", "Protoss Corsair", 1, "R3");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 42);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L2");
    Create Unit("Player 7", "Protoss Corsair", 1, "R2");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 36);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L1");
    Create Unit("Player 7", "Protoss Corsair", 1, "R1");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 30);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L1");
    Create Unit("Player 7", "Protoss Corsair", 1, "R1");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 24);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L2");
    Create Unit("Player 7", "Protoss Corsair", 1, "R2");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 18);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L3");
    Create Unit("Player 7", "Protoss Corsair", 1, "R3");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 12);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L4");
    Create Unit("Player 7", "Protoss Corsair", 1, "R4");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("Player 7"){
Conditions:
    Switch("Switch5", set);
    Deaths("All players", "Alan Turret", Exactly, 6);

Actions:
    Create Unit("Player 7", "Protoss Corsair", 1, "L5");
    Create Unit("Player 7", "Protoss Corsair", 1, "R5");
    Kill Unit("Player 7", "Protoss Corsair");
    Preserve Trigger();
}

//-----------------------------------------------------------------//




None.

May 9 2009, 11:58 pm xYoshix Post #7



You need a trigger that constantly adds 1 DC. At the end, you have to reset it back to 0 and clear the switch.



None.

May 10 2009, 12:07 am Xpenguin17 Post #8



I do, only I subtract instead of add.

Code
Trigger("All players"){
Conditions:
    Deaths("All players", "Alan Turret", Exactly, 0);

Actions:
    Set Deaths("All players", "Alan Turret", Set To, 60);
    Preserve Trigger();
}

//-----------------------------------------------------------------//

Trigger("All players"){
Conditions:
    Deaths("All players", "Alan Turret", At least, 1);

Actions:
    Set Deaths("All players", "Alan Turret", Subtract, 1);
    Preserve Trigger();
}

//-----------------------------------------------------------------//




None.

May 10 2009, 12:11 am ForTheSwarm Post #9



Well, then is Switch 5 set?



None.

May 10 2009, 12:36 am Xpenguin17 Post #10



Yup:
Code
Trigger("Player 7"){
Conditions:
    Switch("Switch3", set);

Actions:
    Order("Player 7", "Hunter Killer (Hydralisk)", "Anywhere", "Hydra1", move);
    Set Switch("Switch3", clear);
    Set Switch("Switch4", set);
    Set Switch("Switch5", set);
}




None.

May 10 2009, 1:06 am ForTheSwarm Post #11



Oh, I think I see the problem.

Code
Trigger("All players"){
Conditions:
   Deaths("All players", "Alan Turret", At least, 1);

Actions:
   Set Deaths("All players", "Alan Turret", Subtract, 1);
   Preserve Trigger();
}

//-----------------------------------------------------------------//


That trigger subtracts 1 death from every player 8 times, because it is under "all players". Thus, many of your Create Corsair triggers never run, because the amount of deaths in the condition is skipped.

Change the "Set Deaths("All players", "Alan Turret", Subtract, 1);" to "Set Deaths("Current Player", "Alan Turret", Subtract, 1);", and change "Deaths("All players", "Alan Turret", At least, 1);" to Deaths("Current player", "Alan Turret", At least, 1);".

Post has been edited 1 time(s), last time on May 10 2009, 1:15 am by ForTheSwarm.



None.

May 10 2009, 1:11 am Xpenguin17 Post #12



Ok now it's SLOOWWWW, hops maybe every 5 seconds.



None.

May 10 2009, 1:16 am ForTheSwarm Post #13



Whoops, I forgot one thing. I edited my post; change the condition to what I said, and try it again.



None.

May 10 2009, 1:29 am Xpenguin17 Post #14



I did, I replaced all Set Deaths("All players to Set Deaths("Current player But I found the problem, the death counter is decreasing once every second instead of every 84 ms like the wiki explained. Hypers are enabled and everything.



None.

May 10 2009, 1:33 am NudeRaider Post #15

We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch

Quote from Xpenguin17
I did, I replaced all Set Deaths("All players to Set Deaths("Current player But I found the problem, the death counter is decreasing once every second instead of every 84 ms like the wiki explained. Hypers are enabled and everything.
2 possibilities here:
- You have another wait somewhere blocking the hypers rendering them useless
- You've set up the hypers wrong

Try giving the hypers to a single computer player that runs no other waits.
Also make sure you have 3 triggers with 62 waits and a preserve each (and optionally a comment).




May 10 2009, 1:41 am Xpenguin17 Post #16



Ohh k, I have many waits in other triggers, but not pertaining to the corsair explosions. If this still gives my map the wait block syndrome, should I rip out every line with "wait?"



None.

May 10 2009, 1:49 am NudeRaider Post #17

We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch

Read the wiki about wait blocks I linked above. I posted it for a reason.




May 10 2009, 1:49 am Falkoner Post #18



Yeah, any waits in the same player as the hypertriggers will cause them to mess up, and even 2 waits will mess up eachother if they run at the same time, so you may want to transfer them all over to death counts.



None.

May 10 2009, 3:19 am samsizzle Post #19



you can still use waits that are from 1-300 miliseconds. I always use waits that long and it never screws anything up while using hypers.



None.

May 10 2009, 3:47 am Xpenguin17 Post #20



Quote from samsizzle
you can still use waits that are from 1-300 miliseconds. I always use waits that long and it never screws anything up while using hypers.

Kickass, I was about to ask how I can tune the deathcount to precision. The song is 7266 ms and 85 death ticks is about 7203 ms. Now I would add "Wait 63 milliseconds" somewhere but so far attempts have failed and just made the song overlap. Any suggestions on how to incorporate it properly?



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[10:53 pm]
Oh_Man -- https://youtu.be/MHOZptE-_-c are yall seeing this map? it's insane
[2024-5-04. : 1:05 am]
Vrael -- I won't stand for people going around saying things like im not a total madman
[2024-5-04. : 1:05 am]
Vrael -- that's better
[2024-5-04. : 12:39 am]
NudeRaider -- can confirm, Vrael is a total madman
[2024-5-03. : 10:18 pm]
Vrael -- who says I'm not a total madman?
[2024-5-03. : 2:26 pm]
UndeadStar -- Vrael, since the ad messages get removed, you look like a total madman for someone that come late
[2024-5-02. : 1:19 pm]
Vrael -- IM GONNA MANUFACTURE SOME SPORTBALL EQUIPMENT WHERE THE SUN DONT SHINE BOY
[2024-5-02. : 1:35 am]
Ultraviolet -- Vrael
Vrael shouted: NEED SOME SPORTBALL> WE GOT YOUR SPORTBALL EQUIPMENT MANUFACTURING
Gonna put deez sportballs in your mouth
[2024-5-01. : 1:24 pm]
Vrael -- NEED SOME SPORTBALL> WE GOT YOUR SPORTBALL EQUIPMENT MANUFACTURING
[2024-4-30. : 5:08 pm]
Oh_Man -- https://youtu.be/lGxUOgfmUCQ
Please log in to shout.


Members Online: Oh_Man