home *** CD-ROM | disk | FTP | other *** search
Text File | 2002-10-21 | 37.8 KB | 1,468 lines |
- //.
- //*******************************
- players_tank local.trigger:
- // self vehiclespeed 300
- self rendereffects "-shadow"
- local.parent = spawn script_origin
- local.parent.origin = self.origin
- level.playertanktarget = spawn script_origin
- level.playertanktarget.origin = (self.origin + (0 0 80))
- level.playertanktarget bind local.parent
- local.parent glue self
-
- self removeondeath 0
- if (self.target)
- {
- self.collisionent = self.target
- // self.collisionent hide
- }
- local.gun = self QueryTurretSlotEntity 0
- local.gun2 = self QueryTurretSlotEntity 1
- if (local.gun)
- local.gun nodamage
- if (local.gun2)
- local.gun2 nodamage
-
- thread player_tank_health
- end
-
- player_tank_health:
- level waittill prespawn
-
- if (getcvar(debug) != "1")
- {
- $player notsolid
- $player nodamage
- self attachdriverslot 0 $player
- $player perferredweapon "88mm Tank Gun"
- }
-
- level waittill spawn
-
- local.skill = getcvar (skill)
- println "z: local.skill = getcvar (skill) = " local.skill
-
- if (local.skill == "2")
- {
- println "z: skill = 2 health = 1000"
- self.health = 1000
- }
- if (local.skill == "1")
- {
- println "z: skill = 1 health = 3000"
- self.health = 3000
- }
- if ( (local.skill != "1") && (local.skill != "2") )
- {
- println "z: skill != 2 and skill != 1 health = 5000"
- self.health = 5000
- }
-
-
- // if ( (int (getcvar developer)) )
- // thread playertank_health_hud
- thread playertank_pain
-
- self waittill death
-
- self LockMovement
- self playsound explode_tank
- level.missionfailed = 1
- iprintlnbold "The T34 tank has been lost, you have failed."
- //wait 3
- missionfailed
- end
-
- playertank_pain:
- local.original_health = self.health
- local.previoushealth = self.health
- local.paintime = level.time
-
- while(isAlive self)
- {
- wait .1
- if (self.health < local.previoushealth)
- {
- self playsound damage_tank
- exec global/earthquake.scr .2 4 0 0
-
- if ( (self.health < (local.previoushealth - 150)) && (level.time > (local.paintime + 5) ) )
- {
- local.paintime = level.time
- local.health_fraction = (self.health / local.original_health)
- println "z: local.health_fraction: " local.health_fraction
-
- if (local.health_fraction >= 0.7)
- {
- $player playsound tank_hurt1
- }
- else if (local.health_fraction >= 0.4)
- {
- $player playsound tank_hurt2
- }
- else
- {
- $player playsound tank_hurt3
- }
- }
-
- local.previoushealth = self.health
- }
- }
- end
-
-
- playertank_health_hud:
- level.subtitleX = 100
- level.subtitleY = 70
- while ( 1)
- {
- locprint level.subtitleX level.subtitleY ("Health: " + self.health)
- wait 1
- }
- end
-
-
- //*****************************************
- PLAYER_JEEP_CONTROLLER local.trigger:
- self vehicleanim remove_surfaces
- self rendereffects "-shadow"
- self thread speed_controls
- if (self.driver != NIL)
- {
- self.driver rendereffects "-shadow"
- self AttachDriverSlot 0 self.driver
- self.driver exec global/disable_ai.scr
- self.driver anim jeep_idle_drive
- self.driver nodamage
- self.driver notsolid
- self.driver gun "none"
- self.driver immune bullet
- self.driver immune fast_bullet
- self.driver immune explosion
- self.driver immune rocket
- self.driver.gren_awareness = 0
- self.driver forceactivate
- }
- self nodamage
- if (self.target)
- {
- self.collisionent = self.target
- // self.collisionent hide
- }
-
- //local.trigger waittill trigger
-
- if (getcvar(debug) != "1")
- {
- local.vturretent = self queryturretslotentity 0
- local.vturretent unlock
- self attachturretslot 0 $player // Attach the player to the jeep
- $player perferredweapon ".30cal Machine Gun"
- local.vturretent lock
- }
-
- //level waittill spawn
-
-
- // if ( (int (getcvar developer)) )
- // thread speed_tracker
- end
-
-
- speed_tracker:
- level.subtitleX = 100
- level.subtitleY = 70
- while ( 1)
- {
- local.speed = vector_length(self.velocity)
- local.message = ("speed: " + local.speed)
- locprint level.subtitleX level.subtitleY local.message
- wait .5
- }
- end
-
- speed_controls:
- for ( local.i = 1; local.i <= $slowdown.size; local.i++)
- {
- thread slowdown local.i
- }
- for ( local.i = 1; local.i <= $speedup.size; local.i++)
- {
- thread speedup local.i
- }
- end
-
- speedup local.i:
- while (1)
- {
- if ($speedup[local.i].speed != NIL)
- local.speed = $speedup[local.i].speed
- else
- local.speed = level.fastspeed
-
- println "z: wait for trigger speedup: " local.i " value " local.speed
- $speedup[local.i] waittill trigger
-
- println "z: modify drive speedup: " local.i " value " local.speed
-
- self modifydrive local.speed 10 level.lookahead
- if (self.driver != NIL)
- {
- self.driver anim jeep_drive_gearchange_up
- self.driver waittill animdone
- self.driver anim jeep_idle_drive
- }
- }
- end
-
- slowdown local.i:
- while (1)
- {
- if ($slowdown[local.i].speed != NIL)
- local.speed = $slowdown[local.i].speed
- else
- local.speed = level.slowspeed
-
- println "z: wait for trigger slowdown: " local.i " value " local.speed
- $slowdown[local.i] waittill trigger
-
- println "z: modify drive slowdown: " local.i " value " local.speed
- self modifydrive local.speed 40 level.lookahead
- if (self.driver != NIL)
- {
- self.driver anim jeep_drive_gearchange_down
- self.driver waittill animdone
- self.driver anim jeep_idle_drive
- }
- }
- end
-
- //****************************************
- enemy_truck_think local.hp local.passengers local.path local.trigger local.type local.guy_type local.special local.passenger_name local.driver_name:
- if (local.hp == NIL)
- self.health = 4000
- else
- self.health = local.hp
- println "truck health: " self.health
- thread truck_INIT
-
- if ( (local.passengers != NIL) && (local.passengers != 0) )
- waitthread truck_load local.passengers local.guy_type local.panzer local.passenger_name local.driver_name
- if (local.path)
- {
- println "truck_drive thread initialized"
- thread truck_drive local.path local.trigger
- }
-
- self waittill death
-
- self stop
- self.collisionent disconnect_paths
- thread truck_killed local.type
- end
-
- truck_drive local.path local.trigger:
- if (local.trigger)
- {
- println "truck waitting for trigger before driving"
- local.trigger waittill trigger
- }
-
- local.speed = 200
- local.accel = 50
- local.lookahead = 256
-
- println "truck starting to drive"
- self drive local.path local.speed local.accel 200 local.lookahead
- self waitTill drive
- self.drive_done = 1
- self.collisionent disconnect_paths
- println "truck done with waittill drive"
- self stop
-
- wait 3
- println "truck starting to unload"
- thread truck_unload
- end
-
- //------------------------------------------------------------------------------
- LoadPassengers local.passengers local.guy_type local.special local.passenger_name:
- //------------------------------------------------------------------------------
-
- self.passenger_count = local.passengers
-
- for (local.slot = 1; local.slot <= local.passengers; local.slot++)
- {
- if (local.guy_type == NIL)
- local.guy_type = "models/human/german_afrika_private"
- if (randomint (3) == 1)
- local.gun = "MP40"
- else
- local.gun = "Mauser KAR 98K"
- if ( (local.special == "panzer") && (local.slot == 1) )
- local.gun = "panzerschrek"
- local.guy = spawn local.guy_type "gun" local.gun
- local.guy.origin = self.origin
- local.guy rendereffects "-shadow"
- local.guy.done_unloading = 0
-
- // don't prone while on vehicle!
- local.guy.ainoprone = 1
- local.guy.ainocrouch = 1
-
-
- self.passenger[local.slot] = local.guy
-
- if ( local.passenger_name!=NIL )
- local.guy.targetname = local.passenger_name
-
- if (level.dontdropweapons == 1)
- local.guy dontdropweapons
- self AttachPassengerSlot local.slot local.guy
- local.guy type_attack "cover"
- local.guy leash 0
- //local.guy exec global/disable_ai.scr //temp
- local.guy fixedleash 1
- local.guy physics_off
-
- if ( (level.script == "maps/t2l2") && (local.slot == 2) )
- {
- local.guy.targetname = "t2l2_cab_diver"
- $t2l2_cab_diver immune "vehicle"
- $t2l2_cab_diver immune "explosion"
- }
- else
- {
- switch (local.slot)
- {
- case 1:
- local.guy exec global/setdeathanim.scr "death_headpistol"
- break
- case 2:
- local.guy exec global/setdeathanim.scr "death_crotch"
- break
- case 3:
- local.guy exec global/setdeathanim.scr "death_left"
- break
- case 4:
- local.guy exec global/setdeathanim.scr "death_run"
- break
- case 5:
- local.guy exec global/setdeathanim.scr "death_shoot"
- break
- case 6:
- local.guy exec global/setdeathanim.scr "death_right"
- break
- default:
- local.guy exec global/setdeathanim.scr "death_collapse"
- break
- }
- }
- }
-
- End
-
- //------------------------------------------------------------------------------
- UnloadPassengers:
- //------------------------------------------------------------------------------
- for (local.slot = 0; local.slot <= 6; local.slot++)
- {
- self thread truck_passenger_unload local.slot
- }
-
- end
-
-
- truck_load local.passengers local.guy_type local.special local.passenger_name local.driver_name:
-
- self waitthread LoadPassengers local.passengers local.guy_type local.special local.passenger_name
-
- //driving anim name = opel_driver
- local.driver = spawn local.guy_type "gun" "none"
- local.driver.origin = self.origin
- local.driver rendereffects "-shadow"
-
- if ( local.driver_name!=NIL )
- local.driver.targetname = local.driver_name
-
- self AttachDriverSlot 0 local.driver
- local.driver exec global/disable_ai.scr
- local.driver anim 00A004_driversitstill
- self.driver = local.driver
- self.driver.driving = 1
- self.driver.done_unloading = 0
- local.driver exec global/setdeathanim.scr "opel_driver_death"
- end
-
- truck_unload:
-
- self waitthread UnloadPassengers
-
- local.driver = self.driver
-
- if ( isAlive local.driver && self.driver.driving != 0)
- {
- wait 3
- self fullstop
- //self vehicleanim dooropen
- self moveanim dooropen
- self DetachDriverSlot 0 local.driver.origin
- local.driver notsolid
- local.driver physics_on
- local.driver gun "walter p38"
-
- local.driver nodamage
- local.driver anim_noclip 00A003_driverexit
- local.driver waittill animdone
- local.driver takedamage
- local.driver solid
- local.driver exec global/enable_ai.scr
- local.driver exec global/setdeathanim.scr NIL
- self.driver.driving = 0
- self.driver.done_unloading = 1
- }
-
- self.done_unloading = 1
- end
-
- truck_passenger_unload local.slot:
- local.ent = self QueryPassengerSlotEntity local.slot
- if !(isAlive local.ent)
- end
- if (local.ent == NULL)
- end
- local.ent exec global/disable_ai.scr
- self DetachPassengerSlot local.slot local.ent.origin
- local.tag = ("passenger" + local.slot)
- println "z: local.tag: " local.tag
- local.ent.origin = self gettagposition local.tag
- local.ent.angles = self gettagangles local.tag
- local.ent notsolid
- local.ent physics_on
- local.ent anim_noclip ("opel_passenger" + local.slot)
- local.ent waittill animdone
- local.ent solid
- local.ent rendereffects "+shadow"
- local.ent leash 10000
- local.ent exec global/enable_ai.scr
- local.ent exec global/setdeathanim.scr NIL
- local.ent.done_unloading = 1
-
- // allow proning and crouching now...
- local.ent.ainoprone = 0
- local.ent.ainocrouch = 0
-
-
- end
-
- truck_INIT:
- self rendereffects "-shadow"
- self takedamage
- self solid
- self removeondeath 0
-
- if (self.nolights == 1)
- self vehicleanim idlenolights
- else
- self vehicleanim idlelights
- if (self.target)
- {
- self.collisionent = self.target
- //self.collisionent hide
- }
- end
-
- truck_killed local.type:
-
- self show
-
- if ( self.driver!=NIL && self.driver.driving==1 )
- self.driver exec global/bullethit.scr (0 0 250) 500 0 1
-
- self playsound explode_truck
- exec global/earthquake.scr .2 4 0 0
- local.explosion1 = spawn script_model model models/fx/fx_truck_explosion.tik
- local.explosion1.origin = self gettagposition "engine1"
- local.explosion1.angles = self gettagangles "engine1"
- local.explosion1 anim start
- local.explosion1 notsolid
-
- wait .4
-
- self playsound explode_truck
- exec global/earthquake.scr .2 4 0 0
- local.explosion2 = spawn script_model model models/fx/fx_truck_explosion.tik
- local.explosion2.origin = self gettagposition "engine2"
- local.explosion2.angles = self gettagangles "engine2"
- local.explosion2 anim start
- local.explosion2 notsolid
-
- if($player istouching self.collisionent)
- {
- $player normal_damage 100
- }
-
- if ( (level.script == "maps/t2l2") && (isAlive $t2l2_cab_diver) )
- {
- $t2l2_cab_diver removeimmune "explosion"
- $t2l2_cab_diver waitexec global/setdeathanim.scr "22A222_DeathTruck"
- $t2l2_cab_diver damage $world 10000 $world (0 0 0) (0 0 0) (0 0 0) 0 0 9 0
- }
-
- //radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius
- radiusdamage self.origin 200 200
-
- // if (local.type == "green")
- // self.damaged = thread spawn_damaged models/vehicles/opeltruckgreen_d.tik
- // else
- // self.damaged = thread spawn_damaged models/vehicles/opeltruck_d.tik
- // self hide
- // self notsolid
- self.collisionent disconnect_paths
-
- local.name = self
- local.angles = self.angles
- local.origin = self.origin
- // local.brushmodel = self.collisionent.brushmodel
- // self remove
- self hide
- self notsolid
- // local.collision = thread damaged_collision local.angles local.origin local.brushmodel
- if (local.type == "green")
- self.damaged = thread spawn_damaged_new models/vehicles/opeltruckgreen_d.tik local.angles local.origin
- else
- self.damaged = thread spawn_damaged_new models/vehicles/opeltruck_d.tik local.angles local.origin
- // local.collision disconnect_paths
- if (self.collisionent)
- {
- if (self.damaged)
- {
- // if we have a collision entity make our destroyed truck not solid
- self.damaged notsolid
- }
- }
-
- if (level.script == "maps/m1l3b.scr")
- {
- println "z: in m1l3b. making truck not solid"
- self.collisionent remove
- self.damaged notsolid
- self notsolid
- while (self.done_unloading != 1)
- wait 1
- self.origin = (1952 376 80)
- }
-
- wait 10
- local.explosion1 remove
- local.explosion2 remove
- end
-
- //*****************************************
- enemy_bike_think:
- self rendereffects "-shadow"
- self solid
- self.health = 100
- self takedamage
- self removeondeath 0
- if (self.target)
- {
- self.collisionent = self.target
- //self.collisionent hide
- }
-
- self waittill death
-
- self show
- self playsound explode_bike
-
- self thread spawn_fx models/fx/fx_truck_explosion.tik
- //radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius
- radiusdamage self.origin 200 200
- local.damaged = thread spawn_damaged models/vehicles/bmwbike_d.tik
- self remove
- end
-
-
- //**************************************
- enemy_half-trak_think:
- self.mg42 = self QueryTurretSlotEntity 0 //mg42 setup
- local.gun = self.mg42
- if ($(self.gunner))
- {
- self AttachPassengerSlot 1 self.gunner //gunner positioning
- self.gunner nodamage
- }
- self rendereffects "-shadow"
- self immune bullet
- self immune fast_bullet
- self immune grenade
- self solid
- self.health = 100
- self takedamage
- self removeondeath 0
- if (self.target)
- {
- self.collisionent = self.target
- //self.collisionent hide
- }
-
- self waittill death
-
- // self.collisionent disconnect_paths
- self show
- self playsound explode_tank
- self stop
- if (local.gun)
- {
- self DetachTurretSlot 0
- local.gun stopfiring
- local.gun remove
- }
- if ($(self.gunner))
- {
- self DetachPassengerSlot 1 self.gunner.origin
- self.gunner bedead
- self.gunner hide
- self.gunner notsolid
- }
- exec global/earthquake.scr .2 4 0 0
- //radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius
- radiusdamage self.origin 200 200
- self thread spawn_fx models/fx/fx_tank_explosion.tik
- // local.damaged = thread spawn_damaged models/vehicles/sdkfz_green_d.tik
- // self remove
-
- local.name = self
- local.angles = self.angles
- local.origin = self.origin
- local.brushmodel = self.collisionent.brushmodel
- self hide
- self notsolid
- local.collision = thread damaged_collision local.angles local.origin local.brushmodel
- local.damaged = thread spawn_damaged_new models/vehicles/sdkfz_green_d.tik local.angles local.origin
- local.collision disconnect_paths
-
- wait .5
- if (self)
- self remove
- end
-
- //**************************************
- enemy_flak_think:
- self rendereffects "-shadow"
- self solid
- self.health = 100
- self takedamage
- self removeondeath 0
- if (self.target)
- {
- self.collisionent = self.target
- //self.collisionent hide
- }
-
- level waittill spawn
-
- while ( (level.playertanktarget == 0) || (level.playertanktarget == NIL) )
- wait 1
-
- if (level.sightdistance == NIL)
- level.sightdistance = 16000
- self setaimtarget level.playertanktarget
- thread enemy_flak_attack
- local.attack_thread = parm.previousthread
-
- self waittill death
- //self stopFiring
- self setaimtarget NULL
- self show
- self playsound explode_flak88
- local.attack_thread delete
- //radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius
- radiusdamage self.origin 200 200
- self thread spawn_fx models/fx/fx_tank_explosion.tik
- local.damaged = thread spawn_damaged models/statweapons/flak88_d.tik
- self remove
- end
-
- enemy_flak_attack:
- while (isAlive self)
- {
- if !(vector_within level.playertanktarget.origin self.origin level.sightdistance)
- {
- // println "z: " self " is not firing because of range"
- wait 1
- }
- else if (!(sighttrace level.playertanktarget.origin (self.origin + (0 0 64)) 1))
- {
- // println "z: " self " is not firing because of sight trace"
- wait 1
- }
- else
- {
- println "z: " self " on target, waitting 3 secs to fire"
- wait 3
- self anim fire
- wait 3
- }
- }
- end
-
-
-
- //****************************************
- enemy_tank_think local.notattacking local.type:
-
- level waittill spawn // <-- jsl is this really necessary???
-
- self.type = local.type
- self rendereffects "-shadow"
-
- // make sure we only set health once...
- if ( self.health_set==NIL || self.health_set==0 )
- {
- self.health_set = 1
- self.start_health = (((randomint 3) + 1) * 400)
- self.health = self.start_health
- }
- self removeondeath 0
- level.tank_stunned_time = 80
- println "z: self.target " self.target
- if (self.target)
- {
- self.collisionent = self.target
- // self.collisionent hide
- }
- self.gun = self QueryTurretSlotEntity 0
- self.gun2 = self QueryTurretSlotEntity 1
- if (self.gun)
- self.gun nodamage
- if (self.gun2)
- self.gun2 nodamage
- if (level.sightdistance == NIL)
- level.sightdistance = 16000
- if (local.notattacking != 1)
- {
- while ( (level.playertanktarget == 0) || (level.playertanktarget == NIL) )
- wait 1
- self.gun setAimTarget level.playertanktarget
- thread enemy_tank_attack_loop self.gun
- self.attack_thread = parm.previousthread
- thread tank_pain self.gun
- self.pain_thread = parm.previousthread
- }
-
- thread tank_stop_if_close
-
- if (self.death_thread==NULL || self.death_thread==NIL)
- {
- self thread TankExplodeOnDeath local.type
- }
-
- end
-
-
- /////////////////////////////////////////////////
-
- enemy_tank_think2 local.notattacking local.type:
-
- level waittill spawn
-
- self.type = local.type
- self rendereffects "-shadow"
- level.tank_stunned_time = 5
- if(self.start_health==0)
- {
- self.health_set = 1
- self.start_health = (((randomint 3) + 1) * 400)
- self.health = self.start_health
- }
- else
- {
- println ("health: " + self.health)
- }
- self removeondeath 0
- println "z: self.target " self.target
- if (self.target)
- {
- self.collisionent = self.target
- // self.collisionent hide
- }
- self.gun = self QueryTurretSlotEntity 0
- self.gun2 = self QueryTurretSlotEntity 1
- if (self.gun)
- self.gun nodamage
- if (self.gun2)
- self.gun2 nodamage
- if (level.sightdistance == NIL)
- level.sightdistance = 16000
- if (local.notattacking != 1)
- {
- while ( (level.playertanktarget == 0) || (level.playertanktarget == NIL) )
- wait 1
-
- thread enemy_tank_attack_loop self.gun
- self.attack_thread = parm.previousthread
- thread tank_pain self.gun
- self.pain_thread = parm.previousthread
- }
-
- thread tank_stop_if_close
-
- if (self.death_thread==NULL || self.death_thread==NIL)
- {
- self thread TankExplodeOnDeath2 local.type
- }
-
- end
-
- //---------------------------------------------------------------------------------
- TankExplodeOnDeath local.type:
- //---------------------------------------------------------------------------------
- self.death_thread = local
-
- self removeondeath 0
- self.type = local.type
- self rendereffects "-shadow"
- if ( self.health_set==NIL || self.health_set==0 )
- {
- self.health_set = 1
- self.start_health = (((randomint 3) + 1) * 400)
- self.health = self.start_health
- }
- self removeondeath 0
-
- self waittill death
- println "z: " self " is dead. self.start_health: " self.start_health
- thread tank_killed
-
- end
-
- //---------------------------------------------------------------------------------
- TankExplodeOnDeath2 local.type:
- //---------------------------------------------------------------------------------
- self.death_thread = local
-
- self.type = local.type
- self rendereffects "-shadow"
- self removeondeath 0
-
- self waittill death
- println "z: " self " is dead. self.start_health: " self.start_health
- thread tank_killed2
-
- end
-
- tank_stop_if_close:
- while ( (isAlive self) && !(vector_within self.origin $player.origin 450) )
- {
- wait 1
- // println "z: tank stop if close: " self " is not close"
- }
- if !(isAlive self)
- end
- if (self.driving == 1)
- self stop
- // println "z: tank stop if close: " self " is close. stopping."
- end
-
- tank_killed:
- self playsound explode_tank
- self stop
- self.driving = 0
-
- local.do_collision = 1
- local.turretmodel = NIL
- local.type = self.type
-
- if (self.attack_thread)
- self.attack_thread delete
- if (self.pain_thread)
- self.pain_thread delete
- println "z: self.type: " self.type
- switch (self.type)
- {
- case empty_turretless_tiger:
- local.model = models/vehicles/tigertank_wot_d.tik
- break
- case panzer_desert:
- local.model = models/vehicles/panzer_iv_d.tik
- break
- case panzer:
- local.model = models/vehicles/panzer_iv_eud.tik
- local.get_out = 1
- local.anims[0] = panzer_exit_1
- local.anims[1] = panzer_exit_2
- local.anims[2] = panzer_exit_3
- break
- case empty_panzer_desert:
- local.model = models/vehicles/Panzer_destroyed_lowpoly_base.tik
- local.turretmodel = models/vehicles/Panzer_destroyed_lowpoly_cannon.tik
- local.get_out = 0
- break
- case empty_tiger:
- local.model = models/vehicles/tigertank_destroyed_base.tik
- local.turretmodel = models/vehicles/tigertank_destroyed_cannon.tik
- local.get_out = 0
- // local.do_collision = 0
- break;
- case bridge_tiger:
- // tiger tank that get's pushed into the bridge...
- local.model = models/vehicles/tigertank_destroyed_base.tik
- local.get_out = 0
- local.do_collision = 0
- break
- case panzerwerfer:
- local.model = models/vehicles/Panzerwerfer_d_base.tik
- local.turretmodel = models/vehicles/Panzerwerfer_d_cannon.tik
- local.get_out = 0
- break;
- case empty_panzer_winter:
- local.model = models/vehicles/PanzerIV_w_d_base.tik
- local.turretmodel = models/vehicles/PanzerIV_w_d_cannon.tik
- local.get_out = 0
- break;
- case panzer_winter:
- local.model = models/vehicles/PanzerIV_w_d_base.tik
- local.turretmodel = models/vehicles/PanzerIV_w_d_cannon.tik
- local.get_out = 1
- local.anims[0] = panzer_exit_1
- local.anims[1] = panzer_exit_2
- local.anims[2] = panzer_exit_3
- break;
- case empty_panzer_lowpoly:
- local.model = models/vehicles/panzer_destroyed_lowpoly_base.tik
- local.turretmodel = models/vehicles/panzer_destroyed_lowpoly_cannon.tik
- local.get_out = 0
- // local.do_collision = 0
- break;
- case empty_t34:
- local.model = models/vehicles/t34_base_d.tik
- local.turretmodel = models/vehicles/t34_cannon_d.tik
- local.get_out = 0
- // local.do_collision = 0
- break;
- case bridge_panzer:
- // tiger tank that get's pushed into the bridge...
- local.model = models/vehicles/Panzer_destroyed_lowpoly_base.tik
- local.get_out = 0
- local.do_collision = 0
- break
- case berlin_panzer:
- local.model = models/vehicles/panzer_destroyed_lowpoly_base.tik
- local.turretmodel = models/vehicles/panzer_destroyed_lowpoly_cannon.tik
- local.get_out = 1
- local.anims[0] = tank_exit_1
- local.anims[1] = tank_exit_2
- local.anims[2] = tank_exit_3
- local.anims[3] = tank_exit_4
- break
- default:
- local.model = models/vehicles/tigertank_destroyed_base.tik
- local.turretmodel = models/vehicles/tigertank_destroyed_cannon.tik
- local.get_out = 1
- local.anims[0] = tank_exit_1
- local.anims[1] = tank_exit_2
- local.anims[2] = tank_exit_3
- local.anims[3] = tank_exit_4
- break
- }
- local.name = self
- local.angles = self.angles
- local.origin = self.origin
- local.brushmodel = self.collisionent.brushmodel
- local.targetname = self.targetname
-
- //stop the smoke emitter that came from damage and start a temp emitter for the death model
-
- if (self.smoke)
- {
- self.smoke anim stop
- self.smoke = NIL
- }
-
- self anim temp_smoke
- self anim temp_sizzle
-
- self.gun = self QueryTurretSlotEntity 0
- self.gun2 = self QueryTurretSlotEntity 1
-
- if (self.gun)
- local.turretangles = self.gun.angles
-
- self thread spawn_fx models/emitters/explosion_tank.tik
- // wait 0.25 jsl--> these waits cause the t34 tank to disappear briefly...
- waitframe
- exec global/earthquake.scr .2 4 0 0
- //radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius
- radiusdamage (self.origin + (0 0 200)) 800 400
- waitframe
- // wait .1 //wait for explosion fx to cover up the model swap (jsl--> these waits cause the t34 tank to disappear briefly so I removed them...)
- if (self.gun)
- {
- self DetachTurretSlot 0
- self.gun remove
- }
- if (self.gun2)
- {
- self DetachTurretSlot 1
- self.gun2 remove
- }
-
- self remove
-
- if ( local.do_collision==1 )
- {
- local.collision = thread damaged_collision local.angles local.origin local.brushmodel
- }
-
- local.damaged = thread spawn_damaged_new local.model local.angles local.origin
- local.damaged.targetname = local.targetname
-
- local.damaged.smoke = local.smoke
-
- //produce temporary smoke and burning sound
- local.damaged anim temp_smoke
- local.damaged anim temp_sizzle
-
- if ( local.collision != NIL )
- {
- local.damaged notsolid
- local.collision disconnect_paths
- }
-
- if ( local.turretmodel != NIL )
- {
- local.turretname = local.targetname + "_damaged_turret"
- local.damaged attachmodel local.turretmodel "turret0" 1 local.turretname
- local.turretname detach
- local.turretname.angles = local.turretangles
- if (local.get_out == 1)
- local.turretname thread tank_guys_get_out local.anims local.name local.type local.angles
- }
- else
- {
- if (local.get_out == 1)
- local.damaged thread tank_guys_get_out local.anims local.name local.type local.angles local.turretname
- }
- end
-
-
-
- // please do not change this thread
- tank_killed2:
- self playsound explode_tank
- self stop
- self.driving = 0
-
- local.do_collision = 1
- local.turretmodel = NIL
-
- if (self.attack_thread)
- self.attack_thread delete
- if (self.pain_thread)
- self.pain_thread delete
- println "z: self.type: " self.type
- switch (self.type)
- {
- case empty_turretless_tiger:
- local.model = models/vehicles/tigertank_wot_d.tik
- break
- case panzer_desert:
- local.model = models/vehicles/panzer_iv_d.tik
- break
- case panzer:
- local.model = models/vehicles/panzer_iv_eud.tik
- // please do not change this thread
- // local.get_out = 1
- local.anims[0] = panzer_exit_1
- local.anims[1] = panzer_exit_2
- local.anims[2] = panzer_exit_3
- break
- case empty_panzer_desert:
- local.model = models/vehicles/Panzer_destroyed_lowpoly_base.tik
- local.turretmodel = models/vehicles/Panzer_destroyed_lowpoly_cannon.tik
- local.get_out = 0
- break
- case empty_tiger:
- local.model = models/vehicles/tigertank_destroyed_base.tik
- local.turretmodel = models/vehicles/tigertank_destroyed_cannon.tik
- local.get_out = 0
- // local.do_collision = 0
- break;
- case bridge_tiger:
- // tiger tank that get's pushed into the bridge...
- local.model = models/vehicles/tigertank_destroyed_base.tik
- local.get_out = 0
- local.do_collision = 0
- break
- case bridge_panzer:
- // tiger tank that get's pushed into the bridge...
- local.model = models/vehicles/Panzer_destroyed_lowpoly_base.tik
- local.get_out = 0
- local.do_collision = 0
- break
- case panzerwerfer:
- local.model = models/vehicles/Panzerwerfer_d_base.tik
- local.turretmodel = models/vehicles/Panzerwerfer_d_cannon.tik
- local.get_out = 0
- break;
- case empty_panzer_winter:
- local.model = models/vehicles/PanzerIV_w_d_base.tik
- local.turretmodel = models/vehicles/PanzerIV_w_d_cannon.tik
- local.get_out = 0
- break;
- case empty_panzer_lowpoly:
- local.model = models/vehicles/panzer_destroyed_lowpoly_base.tik
- local.turretmodel = models/vehicles/panzer_destroyed_lowpoly_cannon.tik
- local.get_out = 0
- // local.do_collision = 0
- break;
- case empty_t34:
- local.model = models/vehicles/t34_base_d.tik
- local.turretmodel = models/vehicles/t34_cannon_d.tik
- local.get_out = 0
- // local.do_collision = 0
- break;
- case berlin_panzer:
- local.model = models/vehicles/panzer_destroyed_lowpoly_base.tik
- local.turretmodel = models/vehicles/panzer_destroyed_lowpoly_cannon.tik
- local.get_out = 1
- local.anims[0] = tank_exit_1
- local.anims[1] = tank_exit_2
- local.anims[2] = tank_exit_3
- local.anims[3] = tank_exit_4
- break
- default:
- local.model = models/vehicles/tigertank_destroyed_base.tik
- local.turretmodel = models/vehicles/tigertank_destroyed_cannon.tik
- local.get_out = 1
- local.anims[0] = tank_exit_1
- local.anims[1] = tank_exit_2
- local.anims[2] = tank_exit_3
- local.anims[3] = tank_exit_4
- break
- }
- self thread spawn_fx models/emitters/explosion_tank.tik
- wait 0.25
- exec global/earthquake.scr .2 4 0 0
- //radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius
- radiusdamage (self.origin + (0 0 200)) 800 400
- wait .1 //wait for explosion fx to cover up the model swap
- self.gun = self QueryTurretSlotEntity 0
- self.gun2 = self QueryTurretSlotEntity 1
- if (self.gun)
- {
- local.turretangles = self.gun.angles
- self DetachTurretSlot 0
- self.gun remove
- }
- if (self.gun2)
- {
- self DetachTurretSlot 1
- self.gun2 remove
- }
- local.name = self
- local.angles = self.angles
- local.origin = self.origin
- local.brushmodel = self.collisionent.brushmodel
- local.targetname = self.targetname
-
- //stop the smoke emitter that came from damage and start a temp emitter for the death model
-
- if (self.smoke)
- {
- self.smoke anim stop
- self.smoke = NIL
- }
-
- self remove
-
- if ( local.do_collision==1 )
- {
- local.collision = thread damaged_collision local.angles local.origin local.brushmodel
- }
-
- local.damaged = thread spawn_damaged_new local.model local.angles local.origin
- local.damaged.targetname = local.targetname
- //dprintln ( "model " + local.model )
- local.damaged.smoke = local.smoke
-
- //produce temporary smoke and burning sound
- local.damaged anim temp_smoke
- local.damaged anim temp_sizzle
-
- if ( local.turretmodel != NIL )
- {
- local.turretname = local.targetname + "_damaged_turret"
- local.damaged attachmodel local.turretmodel "turret0" 1 local.turretname
- local.turretname detach
- local.turretname.angles = local.turretangles
- }
-
- local.collision disconnect_paths
-
- //Do not add this back in.
- //if (local.get_out == 1)
- //local.damaged thread tank_guys_get_out local.anims local.name
- end
-
-
-
- tank_guys_get_out local.anims local.name local.type local.angles local.turretname:
- wait 3
-
- if (self.state != "open")
- {
- if(local.turretname)
- local.turretname anim open
- else
- self anim open
- self playsound tank_snd_dooropen
- }
-
- wait 1
- //self waittill animdone
- if (self.state != "open")
- {
- if(local.turretname)
- local.turretname anim open_idle
- else
- self anim open_idle
-
- self.state = "open"
- }
-
- //insert roberts random sorter here
- exec global/randomorder.scr local.anims
-
- for (local.i = 0; local.i < 4; local.i ++)
- {
- if ((randomint 100) <= 70)
- {
- if (local.anims[local.i])
- {
- waitthread tank_guy_spawn local.anims[local.i] local.name local.type local.angles
- }
- }
- }
- end
-
- tank_guy_spawn local.anim local.name local.type local.angles:
- println "z: spawning guy to get out " local.anim
-
- switch ( local.type )
- {
- case panzer_winter:
- local.model_type = human/german_winter_Artillery-Crew
- break;
-
- default:
- local.temp = randomint 3
- if (local.temp == 0)
- local.model_type = human/german_panzer_grenadier
- if (local.temp == 1)
- local.model_type = human/german_panzer_obershutze
- if (local.temp == 2)
- local.model_type = human/german_panzer_tankcommander
- break;
- }
-
- local.ent = spawn local.model_type
- local.ent.origin = self gettagposition "tag_start"
-
- if ( local.angles!=NIL )
- local.ent.angles = local.angles
- else
- local.ent.angles = self gettagangles "tag_start"
-
- local.ent noticescale 1
- local.ent sight 4500
- local.ent mindist 2024
- local.ent maxdist 2448
- local.ent leash 10000
-
- if (level.dontdropweapons == 1)
- local.ent dontdropweapons
-
- local.ent exec global/disable_ai.scr
- local.ent notsolid
-
- println "z: starting anim: " local.name " " local.anim
- local.ent anim_noclip local.anim
- local.ent waittill animdone
- println "z: ending anim: " local.name " " local.anim
-
- if ( (local.anim == "tank_exit_2") || (local.anim == "panzer_exit_2") )
- local.ent.position = "crawl"
- if ( (local.anim == "tank_exit_3") || (local.anim == "panzer_exit_3") )
- local.ent.health = 45
- if (local.anim == "tank_exit_4")
- {
- local.ent bedead
- end
- }
-
- wait .4
- println "z: making solid: " local.name " " local.anim
-
- local.ent solid
-
- // wait 3
- println "z: enabling AI: " local.name " " local.anim
-
- local.ent exec global/enable_ai.scr
- local.ent attackplayer
- end
-
-
- tank_pain local.gun local.relock_on_player:
- local.previoushealth = self.health
- local.timer = 0
- self immune bash
-
- if ( local.relock_on_player==NIL )
- local.relock_on_player = 1
-
- while(isAlive self)
- {
- wait .1
- if ( (isAlive self) && (self.health < local.previoushealth) )
- {
- println "z: " self " is damaged. self.start_health: " self.start_health
- println "z: current health: " self.health
- println "z: previous health: " local.previoushealth
- println "z: " self " is stunned"
-
- self playsound damage_tank
- self.stunned = 1
- local.gun setAimTarget NULL
-
- if (self.driving == 1)
- self modifydrive 5 100 256
- if (self.driving_reverse == 1)
- self modifydrive -5 100 256
-
- // self.smoke = spawn script_model model "models/emitters/linger_smoke.tik"
-
- if ( self.smoke==NIL )
- {
- self.smoke = spawn "models/emitters/linger_smoke.tik"
- self.smoke notsolid
- self.smoke anim start
- self.smoke.origin = (self.origin + (0 0 80))
- self.smoke glue self
- }
- local.previoushealth = self.health
- local.timer = 0
- }
-
- if (local.timer == level.tank_stunned_time)
- {
- if ( local.relock_on_player==1 )
- local.gun setAimTarget level.playertanktarget
-
- if (self.driving == 1)
- self modifydrive level.enemytankspeed 30 256
- if (self.driving_reverse == 1)
- self modifydrive level.enemytankspeed_reverse 30 256
- self.stunned = 0
- println "z: " self " is no longer stunned"
- }
- local.timer++
- }
- end
-
- enemy_tank_attack_loop local.gun: //self is the tank
-
- if ( self.paused==NIL )
- self.paused = 0
-
- local.waited = 0
-
- while (IsAlive self)
- {
- // get our gun on target 1st...
- local.gun waittill ontarget
- if ( self.paused==0 )
- {
- local.gun waittill ontarget
- wait 0.25 // center on target for just a little..
-
- local.trace_offset = local.gun.origin + (0 0 48)
- if (self.stunned == 1)
- {
- //println "z: " self " is not firing because stunned"
- wait 1
- local.waited = 1
- }
- else if !(vector_within level.playertanktarget.centroid local.trace_offset level.sightdistance)
- {
- //println "z: " self " is not firing because range"
- wait 1
- local.waited = 1
- }
- else if (!(sighttrace level.playertanktarget.centroid local.trace_offset 1))
- {
- //println "z: " self " is not firing because sight trace"
- wait 1
- local.waited = 1
- }
- else
- {
- //println "z: " self " on target, firing!"
- // wait 3
-
- if ( local.waited==0 )
- {
- wait 2
- local.waited = 1
- }
-
- if (self.stunned != 1)
- local.gun anim fire
-
- wait 5
- }
- }
- else
- {
- wait 1
- }
- }
- end
-
-
- //local.collision = thread damaged_collision local.angles local.origin local.brushmodel
- //local.damaged = thread spawn_damaged_new local.model local.angles local.origin
- //----------------------------------
- spawn_damaged local.model:
- local.damaged = spawn script_model model local.model
- local.damaged.origin = self.origin
- local.damaged.angles = self.angles
- local.damaged notsolid
- end local.damaged
-
- spawn_damaged_new local.model local.angles local.origin:
- local.damaged = spawn script_model model local.model
- local.damaged.origin = local.origin
- local.damaged.angles = local.angles
- end local.damaged
-
- spawn_fx local.fx:
- local.temp = spawn script_model model local.fx
- local.temp notsolid
- local.temp.origin = self.origin
- local.temp anim start
- local.temp notsolid
- wait 5
- local.temp remove
- end
-
- damaged_collision local.angles local.origin local.brushmodel:
- local.collision = spawn script_object model local.brushmodel
- local.collision.origin = local.origin
- local.collision.angles = local.angles
- local.collision safesolid
- end local.collision