// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
thread 'SWATCANNON' 

:SWATCANNON_19
32@ = 1500 
wait 0 
if 
   Actor.DrivingVehicleType($PLAYER_ACTOR, #SWATVAN)
else_jump @SWATCANNON_19 
0@ = Actor.CurrentCar($PLAYER_ACTOR)
0A97: 4@ = car 0@ struct 
4@ += 2380 
0A97: 5@ = car 0@ struct 
5@ += 2384 
Model.Load(#GRENADE)
Model.Load(1551)
038B: load_requested_models 

:SWATCANNON_102
wait 0 
if and
   Model.Available(#GRENADE)
   Model.Available(1551)
else_jump @SWATCANNON_102 
0407: store_coords_to 7@ 8@ 9@ from_car 0@ with_offset 0.0 0.0 1.1 
2@ = Object.Create(1551, 7@, 8@, 9@)
3@ = Object.Create(1551, 7@, 8@, 9@)
0681: attach_object 2@ to_car 0@ with_offset 0.0 0.0 1.1 rotation 0.0 0.0 0.0 
069A: attach_object 3@ to_object 2@ with_offset 0.0 0.0 0.0 rotation 0.0 0.0 0.0 
Object.CollisionDetection(2@) = False
Object.SetImmunities(2@, 1, 1, 1, 1, 1)
Object.CollisionDetection(3@) = False
Object.SetImmunities(3@, 1, 1, 1, 1, 1)

:SWATCANNON_310
wait 0 
if 
   Actor.Driving($PLAYER_ACTOR)
else_jump @SWATCANNON_3580 
0A8C: write_memory 12045956 size 4 value 2147483647 virtual_protect 0 
if 
83CA:   not object 1@ exists 
0AA0: gosub_if_false @SWATCANNON_1948 
0A8D: 9@ = read_memory 4@ size 4 virtual_protect 0 
0A8D: 7@ = read_memory 5@ size 4 virtual_protect 0 
7@ *= 180.0 
9@ *= 180.0 
7@ /= 3.141593 
9@ /= 3.141593 
0681: attach_object 2@ to_car 0@ with_offset 0.0 0.0 1.1 rotation 0.0 0.0 9@ 
069A: attach_object 3@ to_object 2@ with_offset 0.0 0.0 0.0 rotation 7@ 0.0 0.0 
068D: get_camera_position_to 16@ 17@ 18@ 
0400: store_coords_to 10@ 11@ 12@ from_object 3@ with_offset 0.0 5000.0 0.0 
0063: 10@ -= 16@ // (float) 
0063: 11@ -= 17@ // (float) 
0063: 12@ -= 18@ // (float) 
050A: 19@ = distance_between_XYZ 10@ 11@ 12@ and_XYZ 0.0 0.0 0.0 
19@ /= 10.0 
0073: 10@ /= 19@ // (float) 
0073: 11@ /= 19@ // (float) 
0073: 12@ /= 19@ // (float) 
0400: store_coords_to 7@ 8@ 9@ from_object 3@ with_offset 0.0 6.487 0.206 
25@ = 0 

:SWATCANNON_661
005B: 7@ += 10@ // (float) 
005B: 8@ += 11@ // (float) 
005B: 9@ += 12@ // (float) 
if 
86BD:   not no_obstacles_between 16@ 17@ 18@ and 7@ 8@ 9@ solid 1 car 1 actor 1 object 0 particle 0 
else_jump @SWATCANNON_911 
0063: 7@ -= 10@ // (float) 
0063: 8@ -= 11@ // (float) 
0063: 9@ -= 12@ // (float) 
10@ *= 0.05 
11@ *= 0.05 
12@ *= 0.05 
25@ = 0 

:SWATCANNON_787
005B: 7@ += 10@ // (float) 
005B: 8@ += 11@ // (float) 
005B: 9@ += 12@ // (float) 
if 
86BD:   not no_obstacles_between 16@ 17@ 18@ and 7@ 8@ 9@ solid 1 car 1 actor 1 object 0 particle 0 
else_jump @SWATCANNON_883 
0063: 7@ -= 10@ // (float) 
0063: 8@ -= 11@ // (float) 
0063: 9@ -= 12@ // (float) 
jump @SWATCANNON_904 

:SWATCANNON_883
25@ += 1 
  25@ > 20 
else_jump @SWATCANNON_787 

:SWATCANNON_904
jump @SWATCANNON_932 

:SWATCANNON_911
25@ += 1 
  25@ > 50 
else_jump @SWATCANNON_661 

:SWATCANNON_932
0400: store_coords_to 10@ 11@ 12@ from_object 3@ with_offset 0.0 6.487 0.206 
050A: 19@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 10@ 11@ 12@ 
19@ /= 850.0 
006B: 19@ *= 19@ // (float) 
19@ *= 4.0 
0063: 9@ -= 19@ // (float) 
068D: get_camera_position_to 16@ 17@ 18@ 
0063: 7@ -= 16@ // (float) 
0063: 8@ -= 17@ // (float) 
0063: 9@ -= 18@ // (float) 
050A: 19@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 0.0 0.0 0.0 
19@ /= 5.0 
0073: 7@ /= 19@ // (float) 
0073: 8@ /= 19@ // (float) 
0073: 9@ /= 19@ // (float) 
005B: 7@ += 16@ // (float) 
005B: 8@ += 17@ // (float) 
005B: 9@ += 18@ // (float) 
04D5: create_corona_at 7@ 8@ 9@ radius 0.05 type 1 flare 0 RGB 0 192 0 
0400: store_coords_to 7@ 8@ 9@ from_object 3@ with_offset 0.0 5000.0 -55.0 
068D: get_camera_position_to 16@ 17@ 18@ 
0063: 7@ -= 16@ // (float) 
0063: 8@ -= 17@ // (float) 
0063: 9@ -= 18@ // (float) 
050A: 19@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 0.0 0.0 0.0 
19@ /= 5.0 
0073: 7@ /= 19@ // (float) 
0073: 8@ /= 19@ // (float) 
0073: 9@ /= 19@ // (float) 
005B: 7@ += 16@ // (float) 
005B: 8@ += 17@ // (float) 
005B: 9@ += 18@ // (float) 
04D5: create_corona_at 7@ 8@ 9@ radius 0.05 type 9 flare 0 RGB 0 192 0 
if 
03CA:   object 1@ exists 
else_jump @SWATCANNON_1377 
059F: get_object 1@ velocity_in_direction 16@ 17@ 18@ 

:SWATCANNON_1377
if 
  150 > 32@ 
else_jump @SWATCANNON_1450 
0400: store_coords_to 7@ 8@ 9@ from_object 3@ with_offset 0.0 6.487 0.206 
09E5: create_flash_light_at 7@ 8@ 9@ RGB_mask 1024 768 256 radius 25.0 

:SWATCANNON_1450
if 
  32@ > 1500 
else_jump @SWATCANNON_310 
if or
00E1:   player 0 pressed_key 4 
00E1:   player 0 pressed_key 17 
else_jump @SWATCANNON_310 
if 
03CA:   object 1@ exists 
else_jump @SWATCANNON_1513 
Object.Destroy(1@)

:SWATCANNON_1513
066D: 6@ = attach_particle "TANK_FIRE" to_object 3@ with_offset 0.0 6.487 0.206 type 1 
064C: make_particle 6@ visible 
097B: play_audio_at_object 3@ event 1159 
0407: store_coords_to 7@ 8@ 9@ from_car 0@ with_offset 0.0 0.0 0.0 
1@ = Object.Create(1551, 7@, 8@, 9@)
Object.SetImmunities(1@, 1, 1, 1, 1, 1)
0906: set_object 1@ mass_to 1.0 // float 
0908: set_object 1@ turn_mass_to 1000000.0 // float 
069A: attach_object 1@ to_object 3@ with_offset 0.0 6.487 0.206 rotation -90.0 0.0 0.0 
Object.CollisionDetection(1@) = True
0682: detach_object 1@ 0.0 0.0 0.0 collision_detection 0 
04D9: object 1@ set_scripted_collision_check 1 
08D2: object 1@ scale_model 1.5 
0A98: 8@ = object 1@ struct 
8@ += 152 
0A8C: write_memory 8@ size 4 value 1.0 virtual_protect 0 
0400: store_coords_to 7@ 8@ 9@ from_object 1@ with_offset 0.0 0.0 0.0 
0400: store_coords_to 10@ 11@ 12@ from_object 1@ with_offset 0.0 0.0 850.0 
0063: 10@ -= 7@ // (float) 
0063: 11@ -= 8@ // (float) 
0063: 12@ -= 9@ // (float) 
06A2: get_car 0@ velocity_in_direction_XYZ 7@ 8@ 9@ 
005B: 7@ += 10@ // (float) 
005B: 8@ += 11@ // (float) 
005B: 9@ += 12@ // (float) 
0400: store_coords_to 13@ 14@ 15@ from_object 3@ with_offset 0.0 6.487 0.206 
059F: get_object 1@ velocity_in_direction 16@ 17@ 18@ 
Object.Throw(1@, 7@, 8@, 9@)
32@ = 0 
jump @SWATCANNON_310 

:SWATCANNON_1948
0400: store_coords_to 7@ 8@ 9@ from_object 1@ with_offset 0.0 0.0 0.0 
if 
84DA:   not has_object 1@ collided 
else_jump @SWATCANNON_2047 
050A: 19@ = distance_between_XYZ 13@ 14@ 15@ and_XYZ 7@ 8@ 9@ 
0063: 7@ -= 13@ // (float) 
0063: 8@ -= 14@ // (float) 
0063: 9@ -= 15@ // (float) 
jump @SWATCANNON_2253 

:SWATCANNON_2047
0A8D: 23@ = read_memory 12010644 size 4 virtual_protect 0 
23@ += 4 
0A8D: 23@ = read_memory 23@ size 4 virtual_protect 0 
24@ = 0 

:SWATCANNON_2087
0A8D: 22@ = read_memory 23@ size 1 virtual_protect 0 
23@ += 1 
if and
  22@ >= 0 
  128 > 22@ 
else_jump @SWATCANNON_2177 
005A: 22@ += 24@ // (int) 
if and
803B:   not  0@ == 22@ // (int) 
   not Car.Wrecked(22@)
0897:   car 22@ collided_with_object 1@ 
else_jump @SWATCANNON_2177 
020B: explode_car 22@ 

:SWATCANNON_2177
24@ += 256 
  24@ > 27904 
else_jump @SWATCANNON_2087 
050A: 19@ = distance_between_XYZ 16@ 17@ 18@ and_XYZ 0.0 0.0 0.0 
0087: 7@ = 16@ // (float) 
0087: 8@ = 17@ // (float) 
0087: 9@ = 18@ // (float) 

:SWATCANNON_2253
0073: 7@ /= 19@ // (float) 
0073: 8@ /= 19@ // (float) 
0073: 9@ /= 19@ // (float) 
if 
04E7:   object 1@ in_water 
else_jump @SWATCANNON_2300 
Object.Destroy(1@)
return 

:SWATCANNON_2300
20@ = 0.0 
21@ = 4 
if and
84DA:   not has_object 1@ collided 
06BD:   no_obstacles_between 16@ 17@ 18@ and 13@ 14@ 15@ solid 1 car 1 actor 1 object 0 particle 0 
else_jump @SWATCANNON_2836 

:SWATCANNON_2363
0025:   19@ > 20@ // (float) 
else_jump @SWATCANNON_2829 
005B: 13@ += 7@ // (float) 
005B: 14@ += 8@ // (float) 
005B: 15@ += 9@ // (float) 
095C: create_smoke_at 13@ 14@ 15@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 0.5 size 0.1 last_factor 0.125 
20@ += 1.0 
21@ += 1 
if 
  21@ == 5 
else_jump @SWATCANNON_2822 
09E5: create_flash_light_at 13@ 14@ 15@ RGB_mask 1024 768 256 radius 25.0 
21@ = 0 
0A8D: 23@ = read_memory 12010644 size 4 virtual_protect 0 
23@ += 4 
0A8D: 23@ = read_memory 23@ size 4 virtual_protect 0 
24@ = 0 

:SWATCANNON_2565
0A8D: 22@ = read_memory 23@ size 1 virtual_protect 0 
23@ += 1 
if and
  22@ >= 0 
  128 > 22@ 
else_jump @SWATCANNON_2799 
005A: 22@ += 24@ // (int) 
25@ = Car.Model(22@)
if or
0820:   model 25@ heli 
081F:   model 25@ plane 
081E:   model 25@ boat 
else_jump @SWATCANNON_2799 
if and
803B:   not  0@ == 22@ // (int) 
01AF:   car 22@ sphere 0 in_sphere 13@ 14@ 15@ radius 7.5 7.5 7.5 
else_jump @SWATCANNON_2799 
005B: 16@ += 7@ // (float) 
005B: 17@ += 8@ // (float) 
005B: 18@ += 9@ // (float) 
097A: play_audio_at 16@ 17@ 18@ event 1159 
020C: create_explosion_with_radius 0 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 5 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 8 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 8 at 16@ 17@ 18@ 
Object.Destroy(1@)
return 

:SWATCANNON_2799
24@ += 256 
  24@ > 27904 
else_jump @SWATCANNON_2565 

:SWATCANNON_2822
jump @SWATCANNON_2363 

:SWATCANNON_2829
jump @SWATCANNON_3535 

:SWATCANNON_2836
0025:   19@ > 20@ // (float) 
else_jump @SWATCANNON_3535 
0087: 16@ = 13@ // (float) 
0087: 17@ = 14@ // (float) 
0087: 18@ = 15@ // (float) 
0063: 16@ -= 7@ // (float) 
0063: 17@ -= 8@ // (float) 
0063: 18@ -= 9@ // (float) 
005B: 13@ += 7@ // (float) 
005B: 14@ += 8@ // (float) 
005B: 15@ += 9@ // (float) 
if or
04DA:   has_object 1@ collided 
81AF:   not car 0@ sphere 0 in_sphere 13@ 14@ 15@ radius 5.0 5.0 2.5 
else_jump @SWATCANNON_3108 
if 
86BD:   not no_obstacles_between 16@ 17@ 18@ and 13@ 14@ 15@ solid 1 car 1 actor 1 object 0 particle 0 
else_jump @SWATCANNON_3108 
005B: 16@ += 7@ // (float) 
005B: 17@ += 8@ // (float) 
005B: 18@ += 9@ // (float) 
097A: play_audio_at 16@ 17@ 18@ event 1159 
020C: create_explosion_with_radius 0 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 5 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 8 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 8 at 16@ 17@ 18@ 
Object.Destroy(1@)
return 

:SWATCANNON_3108
095C: create_smoke_at 13@ 14@ 15@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 0.5 size 0.1 last_factor 0.125 
20@ += 1.0 
21@ += 1 
if 
  21@ == 5 
else_jump @SWATCANNON_3528 
09E5: create_flash_light_at 13@ 14@ 15@ RGB_mask 1024 768 256 radius 25.0 
21@ = 0 
0A8D: 23@ = read_memory 12010644 size 4 virtual_protect 0 
23@ += 4 
0A8D: 23@ = read_memory 23@ size 4 virtual_protect 0 
24@ = 0 

:SWATCANNON_3271
0A8D: 22@ = read_memory 23@ size 1 virtual_protect 0 
23@ += 1 
if and
  22@ >= 0 
  128 > 22@ 
else_jump @SWATCANNON_3505 
005A: 22@ += 24@ // (int) 
25@ = Car.Model(22@)
if or
0820:   model 25@ heli 
081F:   model 25@ plane 
081E:   model 25@ boat 
else_jump @SWATCANNON_3505 
if and
803B:   not  0@ == 22@ // (int) 
01AF:   car 22@ sphere 0 in_sphere 13@ 14@ 15@ radius 7.5 7.5 7.5 
else_jump @SWATCANNON_3505 
005B: 16@ += 7@ // (float) 
005B: 17@ += 8@ // (float) 
005B: 18@ += 9@ // (float) 
097A: play_audio_at 16@ 17@ 18@ event 1159 
020C: create_explosion_with_radius 0 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 5 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 8 at 16@ 17@ 18@ 
020C: create_explosion_with_radius 8 at 16@ 17@ 18@ 
Object.Destroy(1@)
return 

:SWATCANNON_3505
24@ += 256 
  24@ > 27904 
else_jump @SWATCANNON_3271 

:SWATCANNON_3528
jump @SWATCANNON_2836 

:SWATCANNON_3535
0400: store_coords_to 13@ 14@ 15@ from_object 1@ with_offset 0.0 0.0 0.0 
059F: get_object 1@ velocity_in_direction 16@ 17@ 18@ 
return 

:SWATCANNON_3580
0A8C: write_memory 12045956 size 4 value 0 virtual_protect 0 
if 
03CA:   object 1@ exists 
else_jump @SWATCANNON_3614 
Object.Destroy(1@)

:SWATCANNON_3614
Object.Destroy(2@)
Object.Destroy(3@)
Model.Destroy(#GRENADE)
Model.Destroy(1551)
jump @SWATCANNON_19 
0509: 13@ = distance_between_XY 14@ 15@ and_XY 0.0 0.0 
0073: 14@ /= 13@ // (float) 
0073: 15@ /= 13@ // (float) 
0509: 13@ = distance_between_XY 14@ 15@ and_XY 0.0 1.0 
16@ = 0 

:SWATCANNON_3706
13@ /= 2.0 
006B: 13@ *= 13@ // (float) 
0087: 15@ = 13@ // (float) 
13@ *= -1.0 
13@ += 1.0 
01FB: 13@ = square_root 13@ 
13@ *= -1.0 
13@ += 1.0 
006B: 13@ *= 13@ // (float) 
005B: 13@ += 15@ // (float) 
01FB: 13@ = square_root 13@ 
16@ += 1 
  16@ > 11 
else_jump @SWATCANNON_3706 
13@ *= 4096.0 
13@ /= 3.141529 
13@ *= 180.0 
if 
  14@ > 0.0 
else_jump @SWATCANNON_3896 
13@ *= -1.0 
13@ += 360.0 

:SWATCANNON_3896
return 
