kdriver
the key is this
IfVarAnd( :Normal 0024 0040 ) ;the label in this line points to the normal state
Jump(

amaged ) ;the next line points to the damaged state
it makes the switch that chooses which path to take through the rest of the code
In scasm anything that starts with
: is an address label.
Think about addresses, Every house needs a unique address but many parcels and letters will have that address on them. What happens when two houses have the same address?
SCASM decompliers assign hex offsets like :L00548A and :L0054A6
But friendly labels like :Normal and

amaged are equally valid.
On this premis I can see an error in your your code
Code:
ObjID( 0CD1D004 4352FA73 2B77FAA3 23F35C50 )
LibObj(
PWR 0
SIZE 30
SCALE 0.250
TYPE 0
NAME "CD_Hut_Duxford" )
IfVarAnd( :L00548A 0024 0040 ) ;this label is just the
:L00548A ;next line any way! so the switch is broken
Call( :L0054A6 ) ;this calls the start of the first part
TransformCall( :L005590 0 12 0 ;this calls the second part
0 0000 0 0000 0 0000 )
Return
:L0054A6
Points( 0
-12 0 -36 ; 0
12 0 -36 ; 1
12 0 36 ; 2
-12 0 36 ; 3
-12 12 -36 ; 4
12 12 -36 ; 5
12 12 36 ; 6
-12 12 36 ; 7
)
LoadBitmap( 0 6 EF 0 0 0
cdduxhut.bmp )
TexPoly( m 0 0 -32767 36
0 12 68 ; 0
4 12 118 ; 1
5 90 118 ; 2
1 90 68 ; 3
)
TexPoly( m 0 0 32767 36
2 110 67 ; 0
6 110 117 ; 1
7 188 117 ; 2
3 188 67 ; 3
)
TexPoly( m -32767 0 0 12
3 3 191 ; 0
7 3 247 ; 1
4 160 247 ; 2
0 160 191 ; 3
)
TexPoly( m 32767 0 0 12
1 3 191 ; 0
5 3 247 ; 1
6 160 247 ; 2
2 160 191 ; 3
)
Return
:L005590
Points( 8
-12 0 -36 ; 8
12 0 -36 ; 9
12 0 36 ; 10
-12 0 36 ; 11
0 6 -36 ; 12
0 6 36 ; 13
)
LoadBitmap( 0 6 EF 0 0 0
cdduxhut.bmp )
TexPoly( m 0 0 -32767 36
8 12 120 ; 0
12 51 149 ; 1
9 90 120 ; 2
)
TexPoly( m 0 0 32767 36
10 12 120 ; 0
13 51 149 ; 1
11 90 120 ; 2
)
RGBSColor( EF 96 84 80 )
Poly( m -14654 29308 0 5
11 13 12 8
)
Poly( m 14654 29308 0 5
9 12 13 10
)
Poly( m 0 -32767 0 0
9 10 11 8
)
Return
EndObj
I can see two parts , they are called one after the other, the switch is broken!
This is an easy mistake to make and fix, If you fix it yourself you will not make it again.
Or maybe we should have a competition, a prize for the first member to post the fix.
Damage can be shown in a number of ways
the damaged state could be a separate model included as part of the same object as in the code above.
If you have a number of objects that are similar and could share a damage model you could create a separate object, make it first in the library and call it by its GUID
Code:
CallLibObj( 0 id0 id1 id2 id3 )
Damage can sometimes be shown very nicely with a simple texture flip.
Code:
; Part: PARTNAME
:PARTLABEL
IfVarAnd( :DAMAGE_PARTLABEL 90 MASK )
SetMaterial( 0 t )
Jump( :DrawPARTNAME )
:DAMAGE_PARTLABEL
SetMaterial( 0 t )
:DrawPARTNAME