Staredit Network > Forums > Modding Assistance > Topic: Moar modding questions
Moar modding questions
Jun 11 2008, 9:50 pm
By: HailFire
Pages: < 1 2 3 4 5 >
 

Jun 18 2008, 7:40 pm Fyrinite Post #41



Go to the exe edit tab in FG. Search through the list until you find cloak(if you use the search feature, it's the 3rd one you come across). After selecting it, it should fill the listbox with a bunch of stuff. Make sure you have "Use Exe Edit Links" checked. Then, select the first entry with the name of the technology you used in it, either cloaking field or personnel cloaking. change the state to enabled. That should be what is needed to make the button work.



None.

Jun 18 2008, 7:52 pm HailFire Post #42



Sweet, is working now.

Although it was technically the second choice, the third was for field cloaking. :P



None.

Jun 18 2008, 8:29 pm Fyrinite Post #43



Hehe, I meant in the tree view search, where the first is permanent cloak, second is cloaking nearby units. But you found it, so sounds nice.

There is a couple of things in SC modding that are hardcoded like that. Most of them, if it is something easy to change in the exe, have an exe edit to mess with them. :)



None.

Jun 18 2008, 8:32 pm HailFire Post #44



I've been using the default ID search on account of not knowing about the tree format until now. :lol:



None.

Jun 18 2008, 8:51 pm HailFire Post #45



Alright, turns out there ARE a couple bugs. :<_<:

First, it won't decloak until it runs out of energy. Not really a problem (it's going to die anyway), but annoying.

Second, since I haven't firegrafted the new unit or research to their structures yet, I've been using cheats to test so as to not spend 20 minutes each time teching. Unfortunately, whenever I'm NOT using 'the gathering', they take well over the listed 25 energy to cloak (I haven't actually tested to see how much it takes, if they can even naturally cloak at all).



None.

Jun 18 2008, 10:03 pm Fyrinite Post #46



Yeah, my cloak exe edits are sometimes really buggy, as it's hard for me to test them all when I find them. I've heard about the decloaking, I haven't found out why yet though.



None.

Jun 19 2008, 6:38 am HailFire Post #47



Spread attacks. One unit will- via iscript, to my knowledge- send out a barrage of attacks covering a wide area in a very short time frame.

How would I pull something like this off?

What I'm looking for:
-a spray of missiles firing into random points in the radius around the target
-an attack similar to the lurker's line splash attack, but with lasers- preferably, doubled to correspond with the goliath's twin guns

Also, does anyone have a shadow for Syphon's Terminator .grp?



None.

Jun 19 2008, 5:25 pm A_of-s_t Post #48

aka idmontie

There are two ways to make a spray attack:

Have the weapon use halo behavoir and use this code for hte attack:

Code
attack 1
turncwise 1
attack 1
turnccwise 2
attack 1
...ect


OR, use the simple verison:

Code
attack 1
attack 1
attack 1




Personal GitHub
Starcraft GitHub Organization - Feel free to request member status!
TwitchTV

Jun 19 2008, 5:45 pm Fisty Post #49



Quote from HailFire
a spray of missiles firing into random points in the radius around the target
Turnrand command to the rescue (See the Iscript opcodes quote at the bottom of the post)! Not to forget the Goto Max Range Behavior in datedit.
(If you don't want the heavy "Bias" to turn clockwise I could show you a more complex and...time consuming way.)

And, about the lurker-style attack. You need to go into the actual GRP's Iscript and tell it to domissiledmg every 2 units of time, as well as, again setting. You can take a look at my shotgun laser Iscript if you need to, as it will be supplied below.

Quote from Shotgun Laser
# ----------------------------------------------------------------------------- #
# This is a decompile of the iscript.bin file 'data\scripts\iscript.bin'
# created on: Sun Mar 23 07:14:01 2008
# ----------------------------------------------------------------------------- #

# ----------------------------------------------------------------------------- #
# This header is used by images.dat entries:
# 535 Unknown535 (thingy\elbfireW.grp)
# 534 Unknown534 (thingy\elbfire.grp)
.headerstart
IsId 243
Type 2
Init LasersInit
Death LasersDeath
GndAttkInit LasersGndAttkInit
AirAttkInit [NONE]
.headerend
# ----------------------------------------------------------------------------- #

LasersInit:
tmprmgraphicstart
trgtrangecondjmp 40 LasersLocal00
tmprmgraphicend
LasersLocal00:
playfram 0x00 # frame set 0
playsnd 74 # Bullet\TPhFi100.wav
wait 1
sigorder 1
wait 1
goto LasersGndAttkInit

LasersGndAttkInit:
domissiledmg
wait 2
goto LasersGndAttkInit

LasersDeath:
imgol 447 0 0 # LaserHit (thingy\elbHit.grp)
domissiledmg
wait 1
end

Quote from Iscript Opcodes
IceCC Command Reference

Format: IceCC opcode name, opcode ID, parameters, opcode description

* playfram 0x00 - <frame#> - displays a particular frame, adjusted for direction.
* playframtile 0x01 - <frame#> - displays a particular frame dependent on tileset.
* sethorpos 0x02 - <x> - sets the current horizontal offset of the current image overlay.
* setvertpos 0x03 - <y> - sets the vertical position of an image overlay.
* setpos 0x04 - <x> <y> - sets the current horizontal and vertical position of the current image overlay.
* wait 0x05 - <#ticks> - pauses script execution for a specific number of ticks.
* waitrand 0x06 - <#ticks1> <#ticks2> - pauses script execution for a random number of ticks given two possible wait times.
* goto 0x07 - <labelname> - unconditionally jumps to a specific code block.
* imgol 0x08 - <image#> <x> <y> - displays an active image overlay at an animation level higher than the current image overlay at a specified offset position.
* imgul 0x09 - <image#> <x> <y> - displays an active image overlay at an animation level lower than the current image overlay at a specified offset position.
* imgolorig 0x0a - <image#> - displays an active image overlay at an animation level higher than the current image overlay at the relative origin offset position.
* switchul 0x0b - <image#> - only for powerups. Hypothesised to replace the image overlay that was first created by the current image overlay.
* __0c 0x0c - no parameters - unknown.
* imgoluselo 0x0d - <image#> <x> <y> - displays an active image overlay at an animation level higher than the current image overlay, using a LO* file to determine the offset position.
* imguluselo 0x0e - <image#> <x> <y> - displays an active image overlay at an animation level lower than the current image overlay, using a LO* file to determine the offset position.
* sprol 0x0f - <sprite#> <x> <y> - spawns a sprite one animation level above the current image overlay at a specific offset position.
* highsprol 0x10 - <sprite#> <x> <y> - spawns a sprite at the highest animation level at a specific offset position.
* lowsprul 0x11 - <sprite#> <x> <y> - spawns a sprite at the lowest animation level at a specific offset position.
* uflunstable 0x12 - <flingy# - creates an flingy with restrictions; supposedly crashes in most cases.
* spruluselo 0x13 - <sprite#> <x> <y> - spawns a sprite one animation level below the current image overlay at a specific offset position. The new sprite inherits the direction of the current sprite. Requires LO* file for unknown reason.
* sprul 0x14 - <sprite#> <x> <y> - spawns a sprite one animation level below the current image overlay at a specific offset position. The new sprite inherits the direction of the current sprite.
* sproluselo 0x15 - <sprite#> <overlay#> - spawns a sprite one animation level above the current image overlay, using a specified LO* file for the offset position information. The new sprite inherits the direction of the current sprite.
* end 0x16 - no parameters - destroys the current active image overlay, also removing the current sprite if the image overlay is the last in one in the current sprite.
* setflipstate 0x17 - <flipstate> - sets flip state of the current image overlay.
* playsnd 0x18 - <sound#> - plays a sound.
* playsndrand 0x19 - <#sounds> <sound#> <...> - plays a random sound from a list.
* playsndbtwn 0x1a - <firstsound#> <lastsound#> - plays a random sound between two inclusive sfxdata.dat entry IDs.
* domissiledmg 0x1b - no parameters - causes the damage of a weapon flingy to be applied according to its weapons.dat entry.
* attackmelee 0x1c - <#sounds> <sound#> <...> - applies damage to target without creating a flingy and plays a sound.
* followmaingraphic 0x1d - no parameters - causes the current image overlay to display the same frame as the parent image overlay.
* randcondjmp 0x1e - <randchance#> <labelname> - random jump, chance of performing jump depends on the parameter.
* turnccwise 0x1f - <turnamount> - turns the flingy counterclockwise by a particular amount.
* turncwise 0x20 - <turnamount> - turns the flingy clockwise by a particular amount.
* turn1cwise 0x21 - no parameters - turns the flingy clockwise by one direction unit.
* turnrand 0x22 - <turnamount> - turns the flingy a specified amount in a random direction, with a heavy bias towards turning clockwise.
* setspawnframe 0x23 - <direction> - in specific situations, performs a natural rotation to the given direction.
* sigorder 0x24 - <signal#> - allows the current unit's order to proceed if it has paused for an animation to be completed.
* attackwith 0x25 - <ground = 1, air = 2> - attack with either the ground or air weapon depending on a parameter.
* attack 0x26 - no parameters - attack with either the ground or air weapon depending on target.
* castspell 0x27 - no parameters - identifies when a spell should be cast in a spellcasting animation. The spell is determined by the unit's current order.
* useweapon 0x28 - <weapon#> - makes the unit use a specific weapons.dat ID on its target.
* move 0x29 - <movedistance> - sets the unit to move forward a certain number of pixels at the end of the current tick.
* gotorepeatattk 0x2a - no parameters - signals to StarCraft that after this point, when the unit's cooldown time is over, the repeat attack animation can be called.
* engframe 0x2b - <unknown> - plays a particular frame from a frameset.
* engset 0x2c - <unknown> - causes the current image overlay to display the same frame as the parent image overlay. Appears to have the same function as followmaingraphic
* __2d 0x2d - no parameters - hypothesised to hide the current image overlay until the next animation.
* nobrkcodestart 0x2e - no parameters - holds the processing of player orders until a nobrkcodeend is encountered.
* nobrkcodeend 0x2f - no parameters - allows the processing of player orders after a nobrkcodestart instruction.
* ignorerest 0x30 - no parameters - conceptually, this causes the script to stop until the next animation is called.
* attkshiftproj 0x31 - <distance> - creates the weapon flingy at a particular distance in front of the unit.
* tmprmgraphicstart 0x32 - no parameters - sets the current image overlay state to hidden.
* tmprmgraphicend 0x33 - no parameters - sets the current image overlay state to visible.
* setfldirect 0x34 - <direction> - sets the current direction of the flingy.
* call 0x35 - <labelname> - calls a code block.
* return 0x36 - no parameters - returns from call.
* setflspeed 0x37 - <speed> - sets the flingy.dat speed of the current flingy.
* creategasoverlays 0x38 - <gasoverlay#> - creates gas image overlays at offsets specified by LO* files.
* pwrupcondjmp 0x39 - <labelname> - jumps to a code block if the current unit is a powerup and it is currently picked up.
* trgtrangecondjmp 0x3a - <distance> <labelname> - jumps to a block depending on the distance to the target.
* trgtarccondjmp 0x3b - <angle1> <angle2> <labelname> - jumps to a block depending on the current angle of the target.
* curdirectcondjmp 0x3c - <unknown> <unknown> <labelname> - only for units. Jump to a code block if the current sprite is facing a particular direction.
* imgulnextid 0x3d - <x> <y> - displays an active image overlay at the shadow animation level at a specified offset position. The image overlay that will be displayed is the one that is after the current image overlay in images.dat.
* __3e 0x3e - no parameters - unknown.
* liftoffcondjmp 0x3f - <labelname> - jumps to a code block when the current unit that is a building that is lifted off.
* warpoverlay 0x40 - <frame#> - hypothesised to display the current image overlay's frame clipped to the outline of the parent image overlay.
* orderdone 0x41 - <unknown> - makes a unit repeat an order in a special way.
* grdsprol 0x42 - <sprite#> <x> <y> - spawns a sprite one animation level above the current image overlay at a specific offset position, but only if the current sprite is over ground-passable terrain.
* __43 0x43 - no parameters - unknown.
* dogrddamage 0x44 - no parameters - applies damage like domissiledmg when on ground-unit-passable terrain.


Post has been edited 1 time(s), last time on Jun 19 2008, 5:57 pm by Deathman101.



None.

Jun 19 2008, 5:49 pm A_of-s_t Post #50

aka idmontie

Using turnrand is a ridiculous way -- mainly because its annoying having the unit turn back to its original position. And don't you dare say, "Who cares?" because that's the worst thing to think.

Just use a list of random jumps and have each on turn and turn back a certain amount.

Now, if you are going to use turnrand, you need a list of curdirectcondjmp's to make it face the proper way after the attack.



Personal GitHub
Starcraft GitHub Organization - Feel free to request member status!
TwitchTV

Jun 19 2008, 6:03 pm Fisty Post #51



Quote from A_of-s_t
Using turnrand is a ridiculous way -- mainly because its annoying having the unit turn back to its original position. And don't you dare say, "Who cares?" because that's the worst thing to think.

I wasn't going to :bleh:

Quote from A_of-s_t
Just use a list of random jumps and have each on turn and turn back a certain amount.

That was the time consuming way.

Quote from A_of-s_t
Now, if you are going to use turnrand, you need a list of curdirectcondjmp's to make it face the proper way after the attack.

Forgot...I should stop posting here as I always screw up in some horrific manner, although you never said how to make it random before posting to retort my screw-up, instead you showed him/her/it how to make a fixed spray attack.



None.

Jun 19 2008, 6:08 pm A_of-s_t Post #52

aka idmontie

Quoted from "Tips for Tedious Coding" in the wiki (made by me :P ):

Quote
Random Attack Sequences:

In order to have a unit use random attacks, we need to use the "randcondjmp" opcode in the attack sequence. The probibility in this opcode is based off of 255.

x /100 = % / 255

255 * x / 100 = %

I know that in the end we will have 20 different attack sequences, plus one critical hit sequence. I know I want the critical hit to happen less than the regular sequence, but will naturally happen because of the nature of SC code.

54 = %

So, we will have:

randcondjmp 54 AttackStyle0
randcondjmp 54 AttackStyle1
randcondjmp 54 AttackStyle2
randcondjmp 54 AttackStyle3
randcondjmp 54 AttackStyle4
randcondjmp 54 AttackStyle5
randcondjmp 54 AttackStyle6
randcondjmp 54 AttackStyle7
randcondjmp 54 AttackStyle8
randcondjmp 54 AttackStyle9
randcondjmp 54 AttackStyle10
randcondjmp 54 AttackStyle11
randcondjmp 54 AttackStyle12
randcondjmp 54 AttackStyle13
randcondjmp 54 AttackStyle14
randcondjmp 54 AttackStyle15
randcondjmp 54 AttackStyle16
randcondjmp 54 AttackStyle17
randcondjmp 54 AttackStyle18
randcondjmp 54 AttackStyle19
randcondjmp 54 AttackStyle20
randcondjmp 54 AttackStyle21


(Entry point to produce that was:

for(var BLARG = 0; BLARG < 22; BLARG ++) {
outputStream.WriteLine("randcondjmp 54 AttackStyle" + BLARG);
})

Now, our weapons will need to be modified for this version of random weaponry to work:

Go to datedit and go to a unit that you would like to change.

Make its ground weapon use any weapon that uses Gemini Missile graphics and goes to Max Range. Add some splash damage and make its Max Range about 8.

Do the same to the Air weapon, except make its Max Range about 2-4.

Now make Weapon 123 any weapon that will use an explosion when it hits its target.

Now, we create the code for the random weapons:


Code
var fso = new ActiveXObject("Scripting.FileSystemObject");
var outputFileName = fso.GetParentFolderName(WScript.ScriptFullName) + "\\" + fso.GetBaseName(WScript.ScriptFullName) + ".txt";
var outputStream = fso.CreateTextFile(outputFileName, true);

var number = 0
for(var attackNum = 1; attackNum < 3; attackNum ++) {
for(var turn = 0; turn < 5; turn ++) {
outputStream.WriteLine("AttackStyle" + number++ + ":");
outputStream.WriteLine(" turncwise " + turn);
outputStream.WriteLine(" attackwith " + attackNum);
outputStream.WriteLine(" turnccwise " + turn);
outputStream.WriteLine(" goto EndofAttackSequence");
outputStream.WriteLine("");

outputStream.WriteLine("AttackStyle" + number++ + ":");
outputStream.WriteLine(" turnccwise " + turn);
outputStream.WriteLine(" attackwith " + attackNum);
outputStream.WriteLine(" turncwise " + turn);
outputStream.WriteLine(" goto EndofAttackSequence");
outputStream.WriteLine("");
}
}

outputStream.Close();


We initiate a variable (attackNum) that will change which weapon we use (ground or air). We then initiate a variable that will output what degree our unit will attack.

While messing with the randcondjmp, I realized that my method isn't very random... It favors the first random jump. I tried this:


Code
var fso = new ActiveXObject("Scripting.FileSystemObject");
var outputFileName = fso.GetParentFolderName(WScript.ScriptFullName) + "\\" + fso.GetBaseName(WScript.ScriptFullName) + ".txt";
var outputStream = fso.CreateTextFile(outputFileName, true);

//Functions
function func1(n) {
i = Math.round(51 + 3.8 * n * 256 / 100);
return i
}

//i = original [51] + (4/total) * BLARG * 256 / 100


//Program Entry Point
for(var BLARG = 0; BLARG < 22; BLARG ++) {
outputStream.WriteLine("randcondjmp " + func1(BLARG) + " AttackStyle" + BLARG);
}
outputStream.Close();


Which outputs this:
randcondjmp 51 AttackStyle0
randcondjmp 61 AttackStyle1
randcondjmp 70 AttackStyle2
randcondjmp 80 AttackStyle3
randcondjmp 90 AttackStyle4
randcondjmp 100 AttackStyle5
randcondjmp 109 AttackStyle6
randcondjmp 119 AttackStyle7
randcondjmp 129 AttackStyle8
randcondjmp 139 AttackStyle9
randcondjmp 148 AttackStyle10
randcondjmp 158 AttackStyle11
randcondjmp 168 AttackStyle12
randcondjmp 177 AttackStyle13
randcondjmp 187 AttackStyle14
randcondjmp 197 AttackStyle15
randcondjmp 207 AttackStyle16
randcondjmp 216 AttackStyle17
randcondjmp 226 AttackStyle18
randcondjmp 236 AttackStyle19
randcondjmp 246 AttackStyle20
randcondjmp 255 AttackStyle21

And it works fairly better, but it now favors the random jumps at the end. I'm messing around with the random condition jumps so that every single randcondjmp has the same percentage of firing.

Here's why the first idea I had was wrong:

The first one has a 54/254 chance of firing. The second one has a 54/255 chance of firing IF the first one doesnt fire (201/256). So, the next one needs to have a HIGHER chance of firing so that it is still the same percentage as the first one.

math.round(256/(totalNumberOfPaths - n)

It totally slipped my mind that I had made this and it is exactly what you want :P



Personal GitHub
Starcraft GitHub Organization - Feel free to request member status!
TwitchTV

Jun 19 2008, 6:11 pm HailFire Post #53



So much code... :crazy:

Iiiiiii think I'll go with a fixed shotgun-esque attack, for simplicity. :shifty:



None.

Jun 19 2008, 6:16 pm A_of-s_t Post #54

aka idmontie

Here's the code you want:

Code
RptAttack:
playfram 0x00
wait 1
nobrkcodestart
randcondjmp 51 AttackStyle0
randcondjmp 61 AttackStyle1
randcondjmp 70 AttackStyle2
randcondjmp 80 AttackStyle3
randcondjmp 90 AttackStyle4
randcondjmp 100 AttackStyle5
randcondjmp 109 AttackStyle6
randcondjmp 119 AttackStyle7
randcondjmp 129 AttackStyle8
randcondjmp 139 AttackStyle9
randcondjmp 148 AttackStyle10
randcondjmp 158 AttackStyle11
randcondjmp 168 AttackStyle12
randcondjmp 177 AttackStyle13
randcondjmp 187 AttackStyle14
randcondjmp 197 AttackStyle15
randcondjmp 207 AttackStyle16
randcondjmp 216 AttackStyle17
randcondjmp 226 AttackStyle18
randcondjmp 236 AttackStyle19
randcondjmp 246 AttackStyle20
randcondjmp 255 AttackStyle21

EndofAttackSquence:
wait 1
nobrkcodeend
ignorerest
playfram 0x11
wait 1
gotorepeatattk



AttackStyle0:
turncwise 0
attackwith 1
turnccwise 0
goto EndofAttackSequence

AttackStyle1:
turnccwise 0
attackwith 1
turncwise 0
goto EndofAttackSequence

AttackStyle2:
turncwise 1
attackwith 1
turnccwise 1
goto EndofAttackSequence

AttackStyle3:
turnccwise 1
attackwith 1
turncwise 1
goto EndofAttackSequence

AttackStyle4:
turncwise 2
attackwith 1
turnccwise 2
goto EndofAttackSequence

AttackStyle5:
turnccwise 2
attackwith 1
turncwise 2
goto EndofAttackSequence

AttackStyle6:
turncwise 3
attackwith 1
turnccwise 3
goto EndofAttackSequence

AttackStyle7:
turnccwise 3
attackwith 1
turncwise 3
goto EndofAttackSequence

AttackStyle8:
turncwise 4
attackwith 1
turnccwise 4
goto EndofAttackSequence

AttackStyle9:
turnccwise 4
attackwith 1
turncwise 4
goto EndofAttackSequence

AttackStyle10:
turncwise 0
attackwith 2
turnccwise 0
goto EndofAttackSequence

AttackStyle11:
turnccwise 0
attackwith 2
turncwise 0
goto EndofAttackSequence

AttackStyle12:
turncwise 1
attackwith 2
turnccwise 1
goto EndofAttackSequence

AttackStyle13:
turnccwise 1
attackwith 2
turncwise 1
goto EndofAttackSequence

AttackStyle14:
turncwise 2
attackwith 2
turnccwise 2
goto EndofAttackSequence

AttackStyle15:
turnccwise 2
attackwith 2
turncwise 2
goto EndofAttackSequence

AttackStyle16:
turncwise 3
attackwith 2
turnccwise 3
goto EndofAttackSequence

AttackStyle17:
turnccwise 3
attackwith 2
turncwise 3
goto EndofAttackSequence

AttackStyle18:
turncwise 4
attackwith 2
turnccwise 4
goto EndofAttackSequence

AttackStyle19:
turnccwise 4
attackwith 2
turncwise 4
goto EndofAttackSequence



And attackstyle20 and 21 are your "critical hit" attacks if you want to use those :P. I would use the Useweapon <#> command in those.

I'll upload some of my soure code from Disunion later :shifty:



Personal GitHub
Starcraft GitHub Organization - Feel free to request member status!
TwitchTV

Jun 19 2008, 7:20 pm O)FaRTy1billion[MM] Post #55

👻 👾 👽 💪

Code
randcondjmp 255 AttackStyle21
Is that really necessary? I just did an unconditional jump for the last one.



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!

Jun 19 2008, 7:21 pm A_of-s_t Post #56

aka idmontie

Quote from O)FaRTy1billion[MM]
Code
randcondjmp 255 AttackStyle21
Is that really necessary? I just did an unconditional jump for the last one.
It is becuase I made it :P And it s eaier to produce in javascript.



Personal GitHub
Starcraft GitHub Organization - Feel free to request member status!
TwitchTV

Jun 19 2008, 11:02 pm HailFire Post #57



Quote
EndofAttackSquence:
wait 1
nobrkcodeend
ignorerest
playfram 0x11
wait 1
gotorepeatattk

Quote
EndofAttackSquence:
wait 1
nobrkcodeend

Quote
EndofAttackSquence:

Quote
Squence

Do you have any idea how much grief IceCC gave me over that? :-_-:



None.

Jun 19 2008, 11:31 pm HailFire Post #58



Oooookaaaaay, buggy script? :wtfage:

Here's the current iscript:

Code
DragoonGndAttkInit:
    playfram           0x110     # frame set 16
    wait               1
    playfram           0x121     # frame set 17
    wait               1
    playfram           0x132     # frame set 18
    wait               1
    playfram           0x143     # frame set 19
    wait               1
    playfram           0x154     # frame set 20
    wait               1
    playfram           0x165     # frame set 21
    wait               1

DragoonGndAttkRpt:
    wait         1
    nobrkcodestart
    randcondjmp     51     AttackStyle0
    randcondjmp     61     AttackStyle1
    randcondjmp     70     AttackStyle2
    randcondjmp     80     AttackStyle3
    randcondjmp     90     AttackStyle4
    randcondjmp     100     AttackStyle5
    randcondjmp     109     AttackStyle6
    randcondjmp     119     AttackStyle7
    randcondjmp     129     AttackStyle8
    randcondjmp     139     AttackStyle9
    randcondjmp     148     AttackStyle10
    randcondjmp     158     AttackStyle11
    randcondjmp     168     AttackStyle12
    randcondjmp     177     AttackStyle13
    randcondjmp     187     AttackStyle14
    randcondjmp     197     AttackStyle15
    randcondjmp     207     AttackStyle16
    randcondjmp     216     AttackStyle17
    randcondjmp     226     AttackStyle18
    randcondjmp     236     AttackStyle19

AttackStyle0:
    turncwise     0
    attack
    turnccwise     0
    goto         EndofAttackSequence

AttackStyle1:
    turnccwise     0
    attack
    turncwise     0
    goto         EndofAttackSequence

AttackStyle2:
    turncwise     1
    attack
    turnccwise     1
    goto         EndofAttackSequence

AttackStyle3:
    turnccwise     1
    attack
    turncwise     1
    goto         EndofAttackSequence

AttackStyle4:
    turncwise     2
    attack
    turnccwise     2
    goto         EndofAttackSequence

AttackStyle5:
    turnccwise     2
    attack
    turncwise     2
    goto         EndofAttackSequence

AttackStyle6:
    turncwise     3
    attack
    turnccwise     3
    goto         EndofAttackSequence

AttackStyle7:
    turnccwise     3
    attack
    turncwise     3
    goto         EndofAttackSequence

AttackStyle8:
    turncwise     4
    attack
    turnccwise     4
    goto         EndofAttackSequence

AttackStyle9:
    turnccwise     4
    attack
    turncwise     4
    goto         EndofAttackSequence

AttackStyle10:
    turncwise     0
    attack
    turnccwise     0
    goto         EndofAttackSequence

AttackStyle11:
    turnccwise     0
    attack
    turncwise     0
    goto         EndofAttackSequence

AttackStyle12:
    turncwise     1
    attack
    turnccwise     1
    goto         EndofAttackSequence

AttackStyle13:
    turnccwise     1
    attack
    turncwise     1
    goto         EndofAttackSequence

AttackStyle14:
    turncwise     2
    attack
    turnccwise     2
    goto         EndofAttackSequence

AttackStyle15:
    turnccwise     2
    attack
    turncwise     2
    goto         EndofAttackSequence

AttackStyle16:
    turncwise     3
    attack
    turnccwise     3
    goto         EndofAttackSequence

AttackStyle17:
    turnccwise     3
    attack
    turncwise     3
    goto         EndofAttackSequence

AttackStyle18:
    turncwise     4
    attack
    turnccwise     4
    goto         EndofAttackSequence

AttackStyle19:
    turnccwise     4
    attack
    turncwise     4
    goto         EndofAttackSequence        

EndofAttackSequence:
    wait               1
    playfram           0x154     # frame set 20
    wait               1
    playfram           0x143     # frame set 19
    wait               1
    playfram           0x132     # frame set 18
    wait               1
    playfram           0x121     # frame set 17
    wait               1
    playfram           0x110     # frame set 16
    nobrkcodeend
    goto               DragoonWalkingToIdle


This is after I removed the playfram 0x00 at the beginning that was screwing up the goon's attack animation, and squeezed in a nobrkcodeend so that it wouldn't freeze after attacking (like the firebat near the beginning of the thread).

At the moment, it fires one missile and stops, with no special effects whatsoever. It remains "Attacking" with the highlighted button, but doesn't do anything after the single attack.

:dontgetit:



None.

Jun 19 2008, 11:38 pm A_of-s_t Post #59

aka idmontie

You keep forgetting that you need:

Code
ignorerest
#...
gotorepeatattk

So...

Code
EndofAttackSequence:
   wait               1
   playfram           0x154     # frame set 20
   wait               1
   playfram           0x143     # frame set 19
   wait               1
   playfram           0x132     # frame set 18
   wait               1
   playfram           0x121     # frame set 17
   wait               1
   playfram           0x110     # frame set 16
   nobrkcodeend
   ignorerest
#...
   gotorepeatattk




Personal GitHub
Starcraft GitHub Organization - Feel free to request member status!
TwitchTV

Jun 19 2008, 11:39 pm HailFire Post #60



Quote from A_of-s_t
You keep forgetting that you need:

Code
ignorerest
#...
gotorepeatattk

So you were just being a bitch by not including that little tidbit, so you could laugh when I did it wrong. :<_<:

:P

Also, #... = ?



None.

Options
Pages: < 1 2 3 4 5 >
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[07:43 am]
NudeRaider -- Vrael
Vrael shouted: if you're gonna link that shit at least link some quality shit: https://www.youtube.com/watch?v=uUV3KvnvT-w
Yeah I'm not a big fan of Westernhagen either, Fanta vier much better! But they didn't drop the lyrics that fit the situation. Farty: Ich bin wieder hier; nobody: in meinem Revier; Me: war nie wirklich weg
[2024-4-29. : 6:36 pm]
RIVE -- Nah, I'm still on Orange Box.
[2024-4-29. : 4:36 pm]
Oh_Man -- anyone play Outside the Box yet? it was a fun time
[2024-4-29. : 12:52 pm]
Vrael -- if you're gonna link that shit at least link some quality shit: https://www.youtube.com/watch?v=uUV3KvnvT-w
[2024-4-29. : 11:17 am]
Zycorax -- :wob:
[2024-4-27. : 9:38 pm]
NudeRaider -- Ultraviolet
Ultraviolet shouted: NudeRaider sing it brother
trust me, you don't wanna hear that. I defer that to the pros.
[2024-4-27. : 7:56 pm]
Ultraviolet -- NudeRaider
NudeRaider shouted: "War nie wirklich weg" 🎵
sing it brother
[2024-4-27. : 6:24 pm]
NudeRaider -- "War nie wirklich weg" 🎵
[2024-4-27. : 3:33 pm]
O)FaRTy1billion[MM] -- o sen is back
Please log in to shout.


Members Online: NudeRaider, Roy