Staredit Network > Forums > SC1 UMS Theory and Ideas > Topic: Useful EUD Reference
Useful EUD Reference
Apr 2 2010, 9:09 pm
By: Cinolt
Pages: < 1 2 3 >
 

Apr 4 2010, 9:02 pm Kaias Post #21



Quote from name:yoonkwun
The byte is a decrementing counter, so if you increase the value in the condition, you can in effect shorten the time it returns true. I made it the smallest value in the test map because I was too lazy to brute test what was the best highest value. Now I did and found it's 234881024 (16777216 * 14). It works pretty well too, it always runs at most once per order, and it's pretty hard to unintentionally click twice fast enough for it to return true only once.
The reason I didn't try this is because in my tests it seemed that the highest value it would be each order varied, enough that it would make it unusable for this purpose. Seems I was wrong (will test).

Edit: Yep, perfect, thank you.



None.

Apr 4 2010, 9:13 pm Cinolt Post #22



Just found out that it runs more than once if you order the unit to target another unit, either by Move or Attack. However in your case of canceling a spell this shouldn't be an issue.



None.

Apr 6 2010, 1:25 am CecilSunkure Post #23



The conditions for order coordinate detection for the first unit:id is
  • Memory(19047, Exactly, x + (65536 * y));

The second unit:id is
  • Memory(161763, Exactly, x + (65536 * y));

The third unit:id is
  • Memory(161679, Exactly, x + (65536 * y));

For each consecutive unit:id from 2 and on you do 161763 - (84 * (unit:id - 1)) to find the EP amount for the bold values above. Just thought this would be useful -it was to me.

As for the attack cooldown the EP for the first unit is 19046. What about the second and third units?

Post has been edited 2 time(s), last time on Apr 6 2010, 1:37 am by CecilSunkure. Reason: Typo



None.

Apr 6 2010, 1:57 am Kaias Post #24



Quote from CecilSunkure
The conditions for order coordinate detection for the first unit:id is
  • Memory(19047, Exactly, x + (65536 * y));

The second unit:id is
  • Memory(161763, Exactly, x + (65536 * y));

The third unit:id is
  • Memory(161679, Exactly, x + (65536 * y));

For each consecutive unit:id from 2 and on you do 161763 - (84 * (unit:id - 1)) to find the EP amount for the bold values above. Just thought this would be useful -it was to me.

As for the attack cooldown the EP for the first unit is 19046. What about the second and third units?
Quote from name:yoonkwun
Code
Converting to other unit indices (z = unit index; x = first unit index address/extended
player):
Address:
if z  = 0: x
if z >= 1: x + 0x8B5F0 - 0x150(z-1)
Extended Player:
if z  = 0: x
if z >= 1: x + 142716 - 84(z-1)




None.

Apr 6 2010, 2:04 am CecilSunkure Post #25



Ah thanks, looked right over that >.>



None.

Apr 6 2010, 2:54 am rockz Post #26

ᴄʜᴇᴇsᴇ ɪᴛ!

You know, I really don't think we need more than one EUD DB. A unitnode calculator would be nice, as I said earlier, but that's literally it.



"Parliamentary inquiry, Mr. Chairman - do we have to call the Gentleman a gentleman if he's not one?"

Jun 26 2010, 10:50 pm stickynote Post #27



Quote
59CCFC 19046 ATTACK COOLDOWN: (Make constant higher depending on unit) AtLeast 256

What do you mean by make constant higher? Which constant and by how much?



None.

Jun 26 2010, 11:35 pm Cinolt Post #28



256 is the constant. Add it by 256 a number of times depending on the attack rate of the unit.



None.

Jun 26 2010, 11:45 pm stickynote Post #29



Thanks.Testing it right now.

EDIT: Figured it out. My map was just corrupt or something, and the EUD wasn't working. I thought I just did it wrong. Thanks anyway.

Post has been edited 3 time(s), last time on Jun 27 2010, 12:54 am by stickynote.



None.

Aug 16 2011, 1:51 am Roy Post #30

An artist's depiction of an Extended Unit Death

I was running through a lot of these addresses for a Terran Marine, and took note on what I thought was happening at some addresses:

Code
59CCB8 19029  [Order] Order Coordinates (Similar to 59CD00)
59CCC0 19031  [Position] Unit Coordinates (Similar to 59CCD0) {X*256, Y*65536}
59CCC4 19032  [Position] Unit Idle Face Point (Connected to attacking) {X*256, Y*65536}
59CCC8 19033  [Movement] Unknown (Sprite Algorithm?)
59CCCC 19034  [Movement] Turn Radius
59CCD4 19036  [Position] X-Axis {X*256}
59CCD8 19037  [Position] Y-Axis {Y*256}
59CCE0 19039  [Movement] Move Acceleration (Related to turning)
59CCE4 19040  [Movement] Move Speed
59CCE8 19041  [Movement] Move Speed On X-Axis (Left = Negative, Right = Positive)
59CCEC 19042  [Movement] Move Speed On Y-Axis (Up = Negative, Down = Positive)
59CD3C 19062  [Order] Stop When Movement Destination Is Determined As Invalid


The accuracy of this is only based on my own observations, though. Some more explanation on some of my observations:

Code
59CCC4 19032  [Position] Unit Idle Face Point (Connected to attacking) {X*256, Y*65536}

When this is set to a certain point, that unit will face in the direction of that point while it idles. This has no effect on the unit when it's moving. By default, it was on the current position of the Marine. When the unit is attacking another unit, this point is set to the unit's target. This is likely used to make a unit face its target when attacking.

Code
59CCC8 19033  [Movement] Unknown (Sprite Algorithm?)

The unit flips out when this is frozen on a specific value. It will have difficulty turning, and will usually be seen walking diagonally instead of facing the direction it is actually walking towards.

Code
59CCCC 19034  [Movement] Turn Radius

Setting this to a low value OR a high value increased the turn radius by a significant amount. If asked to travel a short distance just behind the Marine, he would run in a circle because he couldn't turn sharp enough to get to that exact point. It's like a dog chasing its tail.

Code
59CCD4 19036  [Position] X-Axis {X*256}
59CCD8 19037  [Position] Y-Axis {Y*256}

This appears to be the X and Y coordinates of the unit, and as you can see, it's a bit easier using this than it is to use 59CCD0.

Code
59CD3C 19062  [Order] Stop When Movement Destination Is Determined As Invalid

When this address is frozen and you order a unit to try to walk into water or other invalid terrain, the unit will walk in place when it determines it cannot complete the destination, instead of coming to a full stop.

Post has been edited 1 time(s), last time on Sep 25 2011, 2:27 am by Roy.




Aug 16 2011, 2:41 am Cinolt Post #31



Quote from Roy
Code
59CCD4 19036  [Position] X-Axis {X*256}
59CCD8 19037  [Position] Y-Axis {Y*256}

Quite the find.

>1 pixel accurate unit coordinate detection is now easier/more practical. Also could be used to eliminate those static locations that only detect a single/few unit(s), in an RPG or so.

EDIT: Vast revision of OP, also edited the topic title to better reflect the reference in general.

Post has been edited 2 time(s), last time on Aug 16 2011, 4:26 am by yoonkwun.



None.

Oct 6 2011, 6:51 am Roy Post #32

An artist's depiction of an Extended Unit Death

Code
0x59CDB8 19093  Matrix damage absorption {X*16777216}

When Defensive Matrix is cast on a unit, this value is set to absorb 250 points of damage. When the value reaches 0 in-game (the unit would have taken 250 points of damage), it cancels the animation and the Matrix counter is set to 0, and vice versa.

When setting either the Matrix damage or counter to 0 forcefully (i.e. EUD action), it does not cancel the Matrix animation. You can set both the timer and absorption to 0 and have the Matrix animation remain on the unit for the remainder of the game (or its life).

So yeah, if you're interested in Defensive Matrix, this may be useful information.




Oct 6 2011, 8:21 am IAGG Post #33



Is there a way to see if a Unit is stasised from an arb then?



None.

Oct 6 2011, 6:27 pm Roy Post #34

An artist's depiction of an Extended Unit Death

Code
0x59CDC0 19095  [Status] Stasis Timer {X*256}

Also the effect of the unit becoming invincible and unresponsive seems to be connected to address 59CD84 having a value of 16777216*4.

Oh yeah:
Code
[Status]0x59CDC8 19097  [Status] Parasite {X*256}, Blind {X*16777216}

The second byte here seems to be for the Parasite status. The value is connected to which player parasites (i.e. Player 1 = 256, Player 2 = 512, Player 3 = 768, etc.).

Code
0x59CDCC 19098 [Status] Maelstrom Timer {X}, Acid Spores {X*65536}

Acid spores in the third byte here. This is a nice value to set because it even applies the effect on the unit, and of course updates the unit's status. (Although I don't know how to remove the effect once it's applied.)

Post has been edited 4 time(s), last time on Oct 6 2011, 6:54 pm by Roy.




Oct 6 2011, 9:06 pm O)FaRTy1billion[MM] Post #35

👻 👾 👽 💪

I sure hope you aren't just digging around in memory editors for these. ;o This has been here for as long as the EUDDB was a thing.



TinyMap2 - Latest in map compression! ( 7/09/14 - New build! )
EUD Action Enabler - Lightweight EUD/EPD support! (ChaosLauncher/MPQDraft support!)
EUDDB - topic - Help out by adding your EUDs! Or Submit reference files in the References tab!
MapSketch - New image->map generator!
EUDTrig - topic - Quickly and easily convert offsets to EUDs! (extended players supported)
SC2 Map Texture Mask Importer/Exporter - Edit texture placement in an image editor!
\:farty\: This page has been viewed [img]http://farty1billion.dyndns.org/Clicky.php?img.gif[/img] times!

Oct 8 2011, 8:36 pm IAGG Post #36



Quote from Roy
Code
0x59CDC0 19095  [Status] Stasis Timer {X*256}

Also the effect of the unit becoming invincible and unresponsive seems to be connected to address 59CD84 having a value of 16777216*4.

Oh yeah:
Code
[Status]0x59CDC8 19097  [Status] Parasite {X*256}, Blind {X*16777216}

The second byte here seems to be for the Parasite status. The value is connected to which player parasites (i.e. Player 1 = 256, Player 2 = 512, Player 3 = 768, etc.).

Code
0x59CDCC 19098 [Status] Maelstrom Timer {X}, Acid Spores {X*65536}

Acid spores in the third byte here. This is a nice value to set because it even applies the effect on the unit, and of course updates the unit's status. (Although I don't know how to remove the effect once it's applied.)

So you are able to detect if a unit has been stasised on the field? But there is no way to remove the stasis? or were u talking about the acid spores?



None.

Oct 8 2011, 8:43 pm Roy Post #37

An artist's depiction of an Extended Unit Death

You can set the stasis to 1 second with EUDAs, which will remove the stasis close enough to instantaneously.




Oct 8 2011, 9:38 pm Lanthanide Post #38



If you run a trigger to remove invincibility periodically, then when stasis is cast on a unit it will become vulnerable to damage but remain unable to move. The only thing that won't work on it is medic's restoration which is specifically coded to give an error message when targetting stasis'd units, although I wouldn't be surprised if the CPU could cast restoration on a stasis'd-but-vulnerable-unit that had a restorable malaise, like plague or ensnare on it, because the hard coding is most likely attached to the GUI click event rather than the actual effect itself and obviously the CPU doesn't use a GUI.

This may be a more interesting mechanic for your map, as it effectively makes stasis into an AoE lockdown that works on any units (or any units that you want to remove invincibility from).

Post has been edited 1 time(s), last time on Oct 8 2011, 9:54 pm by Lanthanide.



None.

Oct 10 2011, 5:34 pm Ice Baby Post #39



What about this, can u detect where and what what is stasised and then just replace that unit in the same spot with the same type of unit that isnt stasised? Like if u stasis a marine and detect that it was stasised so after 5 seconds u replace it with a new marine.



None.

Oct 11 2011, 2:04 am Roy Post #40

An artist's depiction of an Extended Unit Death

Quote from Ice Baby
What about this, can u detect where and what what is stasised and then just replace that unit in the same spot with the same type of unit that isnt stasised? Like if u stasis a marine and detect that it was stasised so after 5 seconds u replace it with a new marine.
I have provided the means of detection. As for the where and what, please refer to Section 5.3 of my EPD tutorial. The short answer is that you must uniquely identify the unit in some way in order to actually find it on the map.




Options
Pages: < 1 2 3 >
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[03:33 pm]
O)FaRTy1billion[MM] -- o sen is back
[01:53 am]
Ultraviolet -- :lol:
[06:51 pm]
Vrael -- It is, and I could definitely use a company with a commitment to flexibility, quality, and customer satisfaction to provide effective solutions to dampness and humidity in my urban environment.
[06:50 pm]
NudeRaider -- Vrael
Vrael shouted: Idk, I was looking more for a dehumidifer company which maybe stands out as a beacon of relief amidst damp and unpredictable climates of bustling metropolises. Not sure Amazon qualifies
sounds like moisture control is often a pressing concern in your city
[06:50 pm]
Vrael -- Maybe here on the StarEdit Network I could look through the Forums for some Introductions to people who care about the Topics of Dehumidifiers and Carpet Cleaning?
[06:49 pm]
Vrael -- Perhaps even here I on the StarEdit Network I could look for some Introductions.
[06:48 pm]
Vrael -- On this Topic, I could definitely use some Introductions.
[06:48 pm]
Vrael -- Perhaps that utilizes cutting-edge technology and eco-friendly cleaning products?
[06:47 pm]
Vrael -- Do you know anyone with a deep understanding of the unique characteristics of your carpets, ensuring they receive the specialized care they deserve?
[06:45 pm]
NudeRaider -- Vrael
Vrael shouted: I've also recently becoming interested in Carpet Cleaning, but I'd like to find someone with a reputation for unparalleled quality and attention to detail.
beats me, but I'd make sure to pick the epitome of excellence and nothing less.
Please log in to shout.


Members Online: NudeRaider, jjf28