CODE
# ----------------------------------------------------------------------------- #
# This is a decompile of the iscript.bin file 'data\scripts\iscript.bin'
# created on: Sat Sep 30 20:43:12 2006
# ----------------------------------------------------------------------------- #
# ----------------------------------------------------------------------------- #
# This header is used by images.dat entries:
# 130 Arbiter (protoss\arbiter.grp)
.headerstart
IsId 146
Type 21
Init ArbiterInit
Death ArbiterDeath
GndAttkInit ArbiterGndAttkInit
AirAttkInit ArbiterGndAttkInit
SpAbility1 [NONE]
GndAttkRpt ArbiterGndAttkRpt
AirAttkRpt ArbiterGndAttkRpt
SpAbility2 ArbiterSpAbility2
GndAttkToIdle ArbiterGndAttkToIdle
AirAttkToIdle ArbiterGndAttkToIdle
SpAbility3 [NONE]
Walking ArbiterWalking
Other ArbiterGndAttkToIdle
BurrowInit [NONE]
ConstrctHarvst [NONE]
IsWorking [NONE]
Landing [NONE]
LiftOff [NONE]
Unknown18 [NONE]
Unknown19 [NONE]
Unknown20 [NONE]
Unknown21 ArbiterUnknown21
.headerend
# ----------------------------------------------------------------------------- #
ArbiterInit:
imgul09 131 0 42 # ArbiterShad (protoss\arbiter.grp)
playfram 0x00 # frame set 0
goto ArbiterGndAttkToIdle
ArbiterGndAttkToIdle:
shvertpos 1
waitrand 8 10
shvertpos 2
waitrand 8 10
shvertpos 1
waitrand 8 10
shvertpos 0
waitrand 8 10
goto ArbiterGndAttkToIdle
ArbiterDeath:
playsnd 7 # Misc\ExploLrg.wav
imgol08 213 0 0 # ProtossBuildingExplosionSmall (thingy\tBangS.grp)
wait 3
end
ArbiterGndAttkInit:
shvertpos 0
ArbiterGndAttkRpt:
playfram 0x11 # frame set 1
wait 1
nobrkcodestart
attack25 1
wait 1
attack25 1
wait 1
attack25 1
wait 1
attack25 1
wait 1
playfram 0x00 # frame set 0
wait 1
playfram 0x11 # frame set 1
wait 1
playfram 0x00 # frame set 0
wait 1
playfram 0x11 # frame set 1
wait 1
playfram 0x00 # frame set 0
__1e_condjmp 60 AntiMatter
nobrkcodeend
gotorepeatattk
goto local12
local12:
wait 125
goto local12
ArbiterSpAbility2:
nobrkcodestart
wait 1
playsnd 548 # Protoss\ARBITER\PAbCag00.WAV
castspell
nobrkcodeend
gotorepeatattk
sigorder 2
goto local12
AntiMatter:
wait 1
attack25 2
attack25 2
attack25 2
attack25 2
wait 1
gotorepeatattk
ArbiterWalking:
imgol08 132 0 0 # ArbiterGlow (thingy\pabGlow.grp)
playfram 0x00 # frame set 0
shvertpos 0
goto local12
ArbiterUnknown21:
imgol08 133 0 0 # Unknown133 (protoss\arbiter.grp)
goto local12
Well, I've added a random attack for the arbiter so that it would randomly fire 4 anti-matter missiles in a scatter. The problem is that sometimes when it fires its random, the arbiter freezes up and is stuck in some animation. I got a feeling that I need to remove something from the code, but I don't know what. Anyone knows what I'm doing wrong?
Also, this could be a little off topic, but how do you alter the cloaking field range of the arbiter? Is it the weapon attack range?
QUOTE
Also, this could be a little off topic, but how do you alter the cloaking field range of the arbiter? Is it the weapon attack range?
Never mind Goose is wrong. 8l
Wierd 0.o... Somehow I got the field to be a little larger than normal o.0
Think I'll put up some pics of what happened..
Your Antimatter block does not have a nobrkcodeend command, which is why it is freezing up. if you add one in right before the gotorepeatattk, it should work fine.
If I recall right, it is based on the weapon range...
Yes, it's weapon range. My tests confirmed that it's actually the current weapon, but I haven't distinguished whether it's the ground or air weapon.
Also, gotorepeatattk is wrongly named, it doesn't goto at that location, it just works like a sigorder that says that it's okay to go to the repeat attack now. So you still need a goto command of some kind after your gotorepeatattk command, probably just copy "goto local12" from the other non-special attack block. You might notice in some Doom scripts I have the gotorepeatattk as the first command in the attack block because of this fact.
Was wondering when someone was going to pick up on that fact about gotorepeatattk...even if I forgot it for a while. So, yeah, another goto, like BST said...
offtopic: What's odd is ignorerest...I cannot for the life of me remember why it is important.
I would assume it's the ground weapon...just in case it doesn't have an air weapon via modding?
That explains why the Arbiter's cloaking range got so damn big when I gave it a huge attack range... Is there any way to assign the cloacking field to like a second weapon but have it attack with the first? I want my long range weapon without the huge field...
Well, like I said on SCU (check it out you guys!!) ignorerest in concept makes the script stop until the next animation - which usually is a repeat attack animation or a return to idle animation. This is used because generally after the ignorerest command is commands for the unit to put its gun down or go back to its idle state. For particular units, it looks better if the unit doesn't put its gun down. It's an optional command, you can choose to use it or not to use it. I used this for the Archon in Doom Dragoon, it's part of the reason why the Archon just focuses energy constantly without putting its arms down.
I realise that if you got a memory reader you'd probably see the script continue to execute but nothing happening, that's why I say in concept it just makes the script stop until the next animation, I think this is a better explanation if you want to use it for something.