Code: Select all
//Recovery:
// After the Hanomag you were in got blown to smithereens, you and your squad
// are stranded, with nothing left but your colts. Follow the captains orders
// and you just might make it out alive.
//Geometry - Alcoholic
//Scripting - Alcoholic
//Notes:
//You are a sergeant.
//Captain uses STG44 later, sniper uses KAR 98 later, privates use MP40 later, you use Mauser later.
main:
level waittill prespawn
//Global Scripts
exec global/ai.scr
exec global/alarmer.scr
exec global/exploder.scr
exec global/friendly.scr
//Definition of Friendlies
level.captain = level.friendly1
level.sniper = level.friendly2
level.private1 = level.friendly4
level.private2 = level.friendly5
level.medic = level.friendly6
level.finn = level.friendly7
level.hill = level.friendly8
level.ryan = level.friendly9
//Some Variables
level.captainlead = 0
level.regularsfollow = 1
level.newguysfollow = 0
level.youdoit = 0
level.maxplayerhealth = $player.health
level.engysdead = 0
//Always on hard
game.skill = "hard"
//Initialize Minefield
thread global/minefield.scr::minefield_setup
level waittill spawn
//Death Threads
level.captain thread death_captain
level.sniper thread death_sniper
level.private1 thread death_private1
level.private2 thread death_private2
level.medic thread death_medic
level.hill thread death_hill
level.finn thread death_finn
//Some initial things that need to be done
$player item weapons/colt45.tik
$player ammo pistol 42
$player useweaponclass pistol
$sniper exec global/disable_ai.scr
$snipee exec global/disable_ai.scr
level.finn exec global/disable_ai.scr
level.hill exec global/disable_ai.scr
$sniper hide
$snipee hide
level.finn hide
level.hill hide
//Initial Threads
thread intro_setup
end
//********************
//Scripted things
//********************
intro_setup:
wait 2
level.captain say dfr_M1L1_add03 //Change of plans, Lets Go!
level.captain waittill saydone
level.sniper say streamed_dfr_scripted_M3L1_096a //Minefields, watch for minefields
waittill saydone
thread basic_ai_setup
waitthread global/objectives.scr::add_objectives 1 2 "Follow the Captain. He knows what to do." level.captain.origin
level.sniper thread regulars_follow
level.private1 thread regulars_follow
level.private2 thread regulars_follow
end
//********************
//AI Changes, Scripted, etc.
//********************
basic_ai_setup:
level.captain.friendtype = 4
level.captain exec global/friendly.scr::friendlythink
level.captain.avoidplayer = 1
// level.sniper.friendtype = -1
// level.sniper exec global/friendly.scr::friendlythink
level.sniper.avoidplayer = 1
// level.private1.friendtype = -1
// level.private1 exec global/friendly.scr::friendlythink
level.private1.avoidplayer = 1
// level.private2.friendtype = -1
// level.private2 exec global/friendly.scr::friendlythink
level.private2.avoidplayer = 1
level.medic.friendtype = 5
level.medic exec global/friendly.scr::friendlythink
level.medic.avoidplayer = 1
end
regulars_follow:
while (isalive self && isalive level.captain && level.regularsfollow == 1)
{
if !(vector_within self.origin level.captain 256)
{
self runto level.captain
}
else
{
self runto NULL
}
wait 1
}
end
newguys_follow:
while (isalive self && isalive level.captain && level.newguysfollow == 1)
{
if !(vector_within self.origin level.captain 256)
{
self runto level.captain
}
else
{
self runto NULL
}
wait 1
}
end
new_leader_setup:
level.regularsfollow = 0
level.sniper.friendtype = 1
level.private1.friendtype = 1
level.private2.friendtype = 1
waitthread global/objectives.scr::add_objectives 1 3 "Follow the Captain. He knows what to do. - Failed."
// thread objective1_check
end
introtiger_entrance:
if(isalive level.private2)
{
local.speaker = level.private2
local.speaker say dfr_scripted_M5L3_17g //Hey, somethins coming.
local.speaker waittill saydone
wait 1
local.speaker say dfr_scripted_M5L3_18f //Its a tank!
}
else
{
if(isalive level.sniper)
{
local.speaker = level.sniper
local.speaker say dfr_scripted_M5L3_17g //Hey, somethins coming.
local.speaker waittill saydone
wait 1
local.speaker say dfr_scripted_M5L3_18f
}
else
{
if(isalive level.private1)
{
local.speaker = level.private1
local.speaker say dfr_scripted_M5L3_17g //Hey, somethins coming.
local.speaker waittill saydone
wait 1
local.speaker say dfr_scripted_M5L3_18f
}
else
{
if(isalive level.captain)
{
local.speaker = level.captain
local.speaker say dfr_scripted_M5L3_17g //Hey, somethins coming.
local.speaker waittill saydone
wait 1
local.speaker say dfr_scripted_M5L3_18f
}
}
}
}
local.speaker waittill saydone
wait 0.25
local.speaker say dfr_scripted_M3L1_039g //Keep your head down!
level.captain exec global/disable_ai.scr
level.sniper exec global/disable_ai.scr
level.private1 exec global/disable_ai.scr
level.private2 exec global/disable_ai.scr
level.captain runto $intro_captain_destination
level.sniper runto $intro_sniper_destination
level.private1 runto $intro_private1_destination
level.private2 runto $intro_private2_destination //behind the rock. damage actors like this:(put the targetname in front) damage $world 35000 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0
end
engineer_entrance:
wait 3
$introtiger1 thread introtigers_death
wait 1
$introtiger2 thread introtigers_death
wait 2
level.captain exec global/disable_ai.scr
level.sniper exec global/disable_ai.scr
level.private1 exec global/disable_ai.scr
level.private2 exec global/disable_ai.scr
level.captain.avoidplayer = 0
level.sniper.avoidplayer = 0
level.private1.avoidplayer = 0
level.private2.avoidplayer = 0
level.hill.avoidplayer = 0
level.finn.avoidplayer = 0
$sniper show
$snipee show
level.hill show
level.finn show
waitframe
level.hill nodamage
level.finn nodamage
$sniper nodamage
$snipee nodamage
level.captain nodamage
level.sniper nodamage
level.private1 nodamage
level.private2 nodamage
level.medic nodamage
//Friend reunion
$snipee runto $snipeesnipe_destination
waitframe
level.hill runto $hillsnipe_destination
waitframe
level.finn runto $finnsnipe_destination
waitframe
level.captain runto $captainsnipe_destinatin
waitframe
level.sniper runto $snipersnipe_destination
waitframe
level.private1 runto $private1snipe_destination
waitframe
level.private2 runto $private2snipe_destination
waitframe
$snipee waittill movedone
level.hill waittill movedone
level.finn waittill movedone
level.captain waittill movedone
level.sniper waittill movedone
level.private1 waittill movedone
level.private2 waittill movedone
$snipee turnto level.captain
level.hill turnto level.private1
level.finn turnto level.private1
level.captain turnto $snipee
level.sniper turnto $snipee
level.private1 turnto level.hill
level.private2 turnto level.finn
level.finn say dfr_scripted_M5L3_09f //Hey Hill look its Parish.
level.finn waittill saydone
wait 1
level.private1 say dfr_scripted_M5L3_10c //Finn, Hill, I figured you guys were dead.
level.private1 waittill saydone
wait 0.5
level.finn say dfr_scripted_M5L3_11h //Not yet.
level.finn waittill saydone
//He gets shot by a sniper.
$snipee takedamage
$snipee damage $world 15000 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0
level.sniper turnto NULL
level.sniper turnto $sniper
level.sniper say dfr_scripted_M5L3_02g //The sniper's up there!
level.sniper waittill saydone
//Sniper kills sniper
wait 0.5
level.sniper exec global/aimat.scr $sniper
waitframe
level.sniper exec global/shoot.scr
wait 0.2
level.sniper exec global/aimat.scr NULL
$sniper takedamage
$sniper damage $world 15000 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0
level.sniper say dfr_confirm_kill4 //One down.
level.sniper waittill saydone
level.hill say dfr_M5L3_549k_1 //Those snipers are tearing us to pieces out here.
level.hill waittill saydone
wait 1
level.finn say dfr_follow_01c_201 //We'll cover you.
level.finn waittill saydone
wait 0.25
level.hill say dfr_follow_10c1 //Lead the way.
level.hill waittill saydone
level.captain takedamage
level.sniper takedamage
level.private1 takedamage
level.private2 takedamage
level.finn takedamage
level.hill takedamage
level.captain turnto NULL
level.sniper turnto NULL
level.private1 turnto NULL
level.private2 turnto NULL
level.finn turnto NULL
level.hill turnto NULL
level.newguysfollow = 1
level.finn thread newguysfollow
level.hill thread newguysfollow
iprintlnbold_noloc "The Captain has decided to lead these engineers to a small German encampment to steal some Tiger Tanks."
waitthread global/objectives.scr::add_objectives 2 2 "Assist the Captain in helping the engineers steal Tiger Tanks."
level.captain.friendtype = 4
level.captain exec global/enable_ai.scr
level.sniper exec global/enable_ai.scr
level.private1 exec global/enable_ai.scr
level.private2 exec global/enable_ai.scr
level.finn exec global/enable_ai.scr
level.hill exec global/enable_ai.scr
level.captain.avoidplayer = 1
level.sniper.avoidplayer = 1
level.private1.avoidplayer = 1
level.private2.avoidplayer = 1
level.finn.avoidplayer = 1
level.hill.avoidplayer = 1
//********************
//Flag Threads
//********************
flagthread1:
level.captain.friendtype -1
level.captain runto NULL
wait 0.5
level.private1 say dfr_M1L1_add06 //What was that, I think I heard something.
level.private1 waittill saydone
wait 1
level.private1 say dfr_M1L1_106k_1 //AMBUSH!
level.private1 waittill saydone
thread global/ai.scr::spawngroup #1
$introtiger1 waitthread initTank
$introtiger1 thread introtiger1_move
wait 2
$introtiger2 waitthread initTank
$introtiger2 thread introtiger2_move
end
//********************
//Tank things
//********************
initTank:
self.health = 1000
self removeondeath = 0
self lock
self setcollisionentity self.target
self immune bullet
self immune fast_bullet
self immune grenade
self immune bash
end
introtiger1_move:
local.path = $introtiger1_vehiclepoint
local.tankspeed = 64
local.acceleration = 32
local.reachdistance = 256
local.lookahead = 128
self drive local.path local.tankspeed local.acceleration local.reachdistance local.lookahead
self waittill drive
self stop
end
introtiger2_move:
local.path = $introtiger2_vehiclepoint
local.tankspeed = 60
local.acceleration = 34
local.reachdistance = 256
local.lookahead = 128
self drive local.path local.tankspeed local.acceleration local.reachdistance local.lookahead
self waittill drive
self stop
thread engineer_entrance
end
introtigers_death:
self show
self stop
local.gun1 = self queryturretslotentity 0
local.gun2 = self queryturretslotentity 1
if(local.gun1)
{
self detachturretslot 0
local.gun1 remove
}
if(local.gun2)
{
self detachturretslot 1
local.gun2 remove
}
self playsound explode_tank
local.boom = spawn "fx/fx_tank_explosion.tik"
local.boom.origin = self.origin
local.boom anim start
exec global/earthquake.scr.23 4 0 0
radiusdamage self.origin 200 200
local.brushmodel = self.target.brushmodel
local.collision = spawn script_object model local.brushmodel
local.collision.angles = self.angles
local.collision.origin = self.origin
local.collision disconnect_paths
local.damaged = spawn script_model model models/vehicles/tigertank_d.tik
local.damaged.origin = self.origin
local.damaged.angles = self.angles
self remove
local.boom remove
end
tiger_death:
self waittill death
self show
self stop
local.gun1 = self queryturretslotentity 0
local.gun2 = self queryturretslotentity 1
if(local.gun1)
{
self detachturretslot 0
local.gun1 remove
}
if(local.gun2)
{
self detachturretslot 1
local.gun2 remove
}
self playsound explode_tank
local.boom = spawn "fx/fx_tank_explosion.tik"
local.boom.origin = self.origin
local.boom anim start
exec global/earthquake.scr.23 4 0 0
radiusdamage self.origin 200 200
local.brushmodel = self.target.brushmodel
local.collision = spawn script_object model local.brushmodel
local.collision.angles = self.angles
local.collision.origin = self.origin
local.collision disconnect_paths
local.damaged = spawn script_model model models/vehicles/tigertank_d.tik
local.damaged.origin = self.origin
local.damaged.angles = self.angles
self remove
local.boom remove
end
//********************
//Death Threads
//********************
death_captain:
self waittill death
iprintlnbold_noloc "Captain Hank has been killed in action. Pick up his mission plans and carry on."
$trigger_captainitem.origin = level.captain.origin
thread new_leader_setup
thread deathitem_captain
end
death_sniper:
self waittill death
iprintlnbold_noloc "Sniper Jackson has been killed in action. Pick up his binoculars and carry on."
$trigger_sniperitem.origin = level.sniper.origin
thread deathitem_sniper
end
death_private1:
self waittill death
iprintlnbold_noloc "Private Parish has been killed in action. Sadly, he has nothing of value to pick up."
end
death_private2:
self waittill death
iprintlnbold_noloc "Private Zack has been killed in action. Sadly, he has nothing of value to pick up."
end
death_medic:
self waittill death
iprintlnbold_noloc "Medic Tom has been killed in action. Pick up his spare health pack and carry on."
$trigger_medic.origin = level.medic.origin
thread deathitem_medic
end
death_hill:
self waittill death
iprintlnbold_noloc "Engineer Hill has been killed in action."
level.engysdead++
end
death_finn:
self waittill death
iprintlnbold_noloc "Engineer Finn has been killed in action."
level.engysdead++
end
//********************
//Dead Teammate Item Spawn
//********************
deathitem_captain:
local.item_captain = spawn script_model "targetname" "inventory_captain"
$inventory_captain model "miscobj/clipboard.tik"
$inventory_captain.origin = level.captain.origin
end
deathitem_sniper:
local.item_sniper = spawn script_model "targetname" "inventory_sniper"
$inventory_sniper model "items/binoculars.tik"
$inventory_sniper.origin = level.sniper.origin
end
deathitem_medic:
local.item_medic = spawn script_model "targetname" "inventory_medic"
$inventory_medic model "items/item_100_healthbox.tik"
$inventory_medic.origin = level.medic.origin
end
pickup_captainitem:
self waittill trigger
$inventory_captain remove
waitthread global/items.scr::add_item "clipboard" "1"
iprintlnbold_noloc "You have the captain's mission plans. As the Lietenant, you are now in charge of completing the mission."
level.youdoit = 1
self remove
end
pickup_sniperitem:
self waittill trigger
$inventory_sniper remove
waitthread global/items.scr::add_item "binoculars" "1"
iprintlnbold_noloc "You have the sniper's binoculars."
self remove
end
pickup_medicitem:
self waittill trigger
$inventory_medic remove
$player playsound med_kit
$player.health = level.maxplayerhealth
iprintlnbold_noloc "You used the medic's health pack.
self remove
end