Alliedassault           
FAQ Calendar
Go Back   Alliedassault > FPS Gaming General Discussion > MoH General Discussion
Reload this Page need help editing thefarm.scr
MoH General Discussion General Discussion about Medal of Honor: Allied Assault, expansions and Pacific Assault

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
need help editing thefarm.scr
Old
  (#1)
stungun02278 is Offline
Member
 
Posts: 58
Join Date: Apr 2002
   
Default need help editing thefarm.scr - 08-23-2002, 07:53 PM

yeah i was just trying to turn respawn off.. and well this file is different then all the rest and i didnt want to go playing wit stuff and screw things up.. all i want to do is turn respawn off.. please help dont know scripting..

i mean i see this line and figured all i had to do was put it to 0 but then i saw alot of other things sayin respawn so i got scared

level.respawnon = 0 ?? that it??



// THEFARM
// ARCHITECTURE: Duncan
// SCRIPTING: Duncan
// April 2002
//
// Based on the script for 'The Bridge' by POWZER

main:

println "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~"
println " THE FARM ! "
println "************************************************* **********"

println "THREAD main"

setcvar "g_obj_alliedtext1" "4 Objectives:"
setcvar "g_obj_alliedtext2" "Tank, Ammo Room"
setcvar "g_obj_alliedtext3" "Radio and Antena"

setcvar "g_obj_axistext1" "Defend La Campagne"
setcvar "g_obj_axistext2" "It's vital to save"
setcvar "g_obj_axistext3" "the farm !"

setcvar "g_scoreboardpic" "thefarm"

// ************************************************** ****************************
// ************************************* VARS THAT CONTROL THE GAME *************
// setup default vars

level.introsounds = 0
level.introhints = 1

level.attack = "allies"

level.bomb_ticktime = 36
level.bomb_fastticktime = 10
level.bomb_armtime = 4
level.bomb_defusetime = 6

level.respawnon = 1
level.maptime = 10

// get server vars for config of the game

level.introsounds = getcvar ("g_thefarm_introsounds")
if (level.introsounds != "1" && level.introsounds != "0")
level.introsounds = "0"

level.introhints = getcvar ("g_thefarm_introhints")
if (level.introhints != "1" && level.introhints != "0")
level.introhints = "1"

level.barnladders = getcvar ("g_thefarm_barnladders")
if (level.barnladders != "1" && level.barnladders != "0")
level.barnladders = "0"

level.village = getcvar ("g_thefarm_village")
if (level.village != "1" && level.village != "0")
level.village = "0"

level.showvillagetrees = getcvar ("g_thefarm_villagetrees")
if (level.showvillagetrees != "1" && level.showvillagetrees != "0")
level.showvillagetrees = "0"

level.showhqtrees = getcvar ("g_thefarm_hqtrees")
if (level.showhqtrees != "1" && level.showhqtrees != "0")
level.showhqtrees = "0"

level.respawn = getcvar ("g_thefarm_respawn")
level.maptime = getcvar ("g_thefarm_maptime")

if (level.respawn != "1" && level.respawn != "0")
level.respawn = "1"

if (level.maptime != "1" && level.maptime != "2" && level.maptime != "3" && level.maptime != "4" && level.maptime != "5" && level.maptime != "6" && level.maptime != "7" && level.maptime != "8" && level.maptime != "9" && level.maptime != "10")
level.maptime = 10

if (level.respawn == "1")
level.respawnon = 1
else
level.respawnon = 0

// check which bombs are going to be active
level.radiobomb = getcvar ("g_thefarm_radiobomb")
level.antenabomb = getcvar ("g_thefarm_antenabomb")
level.tankbomb = getcvar ("g_thefarm_tankbomb")
level.ammobomb = getcvar ("g_thefarm_ammobomb")

level.carbomb = getcvar ("g_thefarm_carbomb")
level.bikebomb = getcvar ("g_thefarm_bikebomb")
level.truckbomb = getcvar ("g_thefarm_truckbomb")

if (level.radiobomb!="0" && level.radiobomb != "1")
level.radiobomb = 1
if (level.antenabomb!="0" && level.antenabomb != "1")
level.antenabomb = 1
if (level.tankbomb!="0" && level.tankbomb!="1")
level.tankbomb = 1
if (level.ammobomb!="0" && level.ammobomb!="1")
level.ammobomb = 1

if (level.carbomb!="0" && level.carbomb!="1")
level.carbomb = 1
if (level.bikebomb!="0" && level.bikebomb!="1")
level.bikebomb = 1
if (level.truckbomb!="0" && level.truckbomb!="1")
level.truckbomb = 1

// ************************************************** ****************************
// ************************************************** ****************************

// exec maps/obj/thefarm_spotlight.scr

level waittill prespawn
println "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~"
println " PRESPAWN ! "
println "************************************************* **********"

level.debug = 1

//*** Precache Dm Stuff
exec global/DMprecache.scr

println "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~"
println " PLANES ! "
println "Loading script: airstike bombers"
exec maps/obj/thefarm_bomber.scr::main
println "************************************************* **********"

level.script = maps/obj/thefarm.scr

//println "Loading script: weather.scr"
//level.farplane = 3500
//level.farplanecolor = (0.333 0.333 0.359)
//exec global/weather.scr 3500 (0.333 0.333 0.359)
//exec global/shutter.scr // dont know what this is

println "Loading script: ambient.scr"
exec global/ambient.scr thefarm

// turn on the elevator
thread elevator_preparation //Setup the elevator

println "Loading script: thefarm_exploder"
thread maps/obj/thefarm_exploder.scr::main

println "Loading script: thefarm_minefield"
thread maps/obj/thefarm_minefield.scr::minefield_setup

//exec global/door_locked.scr::lock

// thread setup_spawnpoints

// local.temp = level.spawn light
// local.temp.light = 30000
// local.temp.origin = (0 -5000 1000)

thread setup_simple_fog 1200

level.targets_to_destroy = 1
local.targets_to_destroy = 0
local.targets_to_destroy2 = 0

level waittill spawn

println "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~"
println " SPAWN ! "
println "************************************************* **********"

if (level.attack == "allies")
{
level.defusing_team = "axis"
level.planting_team = "allies"
}
else
{
level.defusing_team = "axis"
level.planting_team = "allies"
}

// this is for allies = use bomb_thinker
// bombs with number 0 - 19
level.targets_destroyed = 0 // nothing blown up yet
local.targetstodestroy = 0 // don't count fun bombs i.e bombs with id 10 or higher

// this is for axis = use bomb_thinker2
// bombs with number 20 - 40
level.targets_destroyed2 = 0 // nothing blown up yet
local.targetstodestroy2 = 0 // don't count fun bombs i.e bombs with id 30 or higher

level.bomb_damage = 300
level.bomb_explosion_radius = 1024

// set the parameters for this round/wave based match
level.dmrespawning = level.respawnon // 1 **wave based** or 0 **round based**
level.dmroundlimit = level.maptime // round time limit in minutes
level.clockside = axis // set to axis, allies, kills, or draw

thread ladder_control

thread village_control

// thread farmradioused

// THIS LOT REALLY SHOULD GO AFTER "level waittill roundstart"

// turn on the bombs
if (level.radiobomb==1)
{
$radio_bomb thread bomb_thinker 1 // radio
local.targetstodestroy=local.targetstodestroy+1
}

if (level.antenabomb==1)
{
$antena_bomb thread bomb_thinker 2 // antena
local.targetstodestroy=local.targetstodestroy+1
}

if (level.ammobomb==1)
{
$ammo_bomb thread bomb_thinker 3 // one of these
local.targetstodestroy=local.targetstodestroy+1
}

//$tank_bomb thread bomb_thinker 4
if (level.tankbomb==1)
{
$tank_bomb2 thread bomb_thinker 5
local.targetstodestroy=local.targetstodestroy+1
}
//$tank_bomb3 thread bomb_thinker 6

if (level.truckbomb==1)
$fun_bomb thread bomb_thinker 10 // 3 of these , truck

if (level.bikebomb==1)
$fun_bomb2 thread bomb_thinker 11 // 3 of these , bike

if (level.carbomb==1)
$fun_bomb3 thread bomb_thinker 12 // 3 of these , car

level.targets_to_destroy = local.targetstodestroy
level.targets_to_destroy2 = local.targetstodestroy2

println " @@@@@@@@@@@@ OBJECTIVES @@@@@@@@@@@@@@@@"
println ("Allied targets = " + level.targets_to_destroy)
println ("Axis targets = " + level.targets_to_destroy2)
println " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

// end of THIS LOT

$ammo_bomb thread allies_win_bomb
$ammo_bomb thread axis_win_timer

println " @@@@@@@@@@@@ SERVER VARS @@@@@@@@@@@@@@@@"
println " [0 = off, 1 = on]"
println ("Intro sounds = " + level.introsounds)
println ("Intro Hints = " + level.introhints)
println ("Access Allied village = " + level.village)
println ("Village surrounded by trees = " + level.showvillagetrees)
println ("Allied HQ surrounded by trees = " + level.showhqtrees)
println ("Use Barnladders = " + level.barnladders)
println ("Respawn = " + level.respawn)
println ("Respawnon = " + level.respawnon)
println ("Maptime = " + level.maptime + " minutes")
println ("Radio Bomb = " + level.radiobomb)
println ("Antena Bomb = " + level.antenabomb)
println ("Tank Bomb = " + level.tankbomb)
println ("Ammo Bomb = " + level.ammobomb)
println ("Car Bomb = " + level.carbomb)
println ("Bike Bomb = " + level.bikebomb)
println ("Truck Bomb = " + level.truckbomb)
println " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

// start the airstrikes
thread flyby

level waittill roundstart

println "************************************************* **********"
println " ROUNDSTART ! "
println "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~"

// do the intro speech sounds
thread intro_sounds

// show the intro hints
thread intro_hints

// show the current objectives
thread showmenu

// start the dissipating fog thread
thread morning_fog_dissipate 1200 4500 200 0

// thread night_to_day

// thread objectives_setup

// turn off bomb animation
thread bomb_noanimation

println "END THREAD main"
end

intro_hints:
println "THREAD: intro_hints"

if (level.introhints == 0)
{
println "END THREAD: intro_hints bypassed"
end
}

//called by BSP
local.player = parm.other

if (local.player.dmteam == "allies")
{
thread maps/obj/thefarm_message_print.scr::message "Welcome Allied soldier, complete your mission" NIL 15
thread maps/obj/thefarm_message_print.scr::message "You have 4 objectives:" HINT 3
thread maps/obj/thefarm_message_print.scr::message "1 = Ammo Room" HINT 3
thread maps/obj/thefarm_message_print.scr::message "2 = Tiger Tank" HINT 3
thread maps/obj/thefarm_message_print.scr::message "3 = Communications room" HINT 3
thread maps/obj/thefarm_message_print.scr::message "4 = Radio Antena" HINT 3
}
else
{
thread maps/obj/thefarm_message_print.scr::message "Welcome Axis soldier, defend the farm at all costs" NIL 15
thread maps/obj/thefarm_message_print.scr::message "Protect these items:" HINT 3
thread maps/obj/thefarm_message_print.scr::message "1 = Ammo Room" HINT 3
thread maps/obj/thefarm_message_print.scr::message "2 = Tiger Tank" HINT 3
thread maps/obj/thefarm_message_print.scr::message "3 = Communications room" HINT 3
thread maps/obj/thefarm_message_print.scr::message "4 = Radio Antena" HINT 3
}

println "END THREAD: intro_hints"
end

intro_sounds:
println "THREAD: intro_sounds"

if (level.introsounds == 0)
{
println "END THREAD: intro_sounds bypassed"
end
}

//called by BSP
local.player = parm.other

// prevent the player from trying to move around
//$player physics_off
//thread freezeplayerview

if (local.player.dmteam == "allies")
{
$player playsound thefarm_allied_intro1
println "seen any rocket"
wait 4

$player playsound thefarm_allied_intro2
println "yes we have"
wait 3.5

// let him move again
//$player physics_on
//level.frozen = 0

$player playsound thefarm_allied_intro3
println "what's your name soldier"
wait 2

$player playsound thefarm_allied_intro4
println "this is powel"
wait 1

$player playsound thefarm_allied_intro5
println "what do weapons look like"
wait 2.5

$player playsound thefarm_allied_intro6
println "well sir"
wait 7

$player playsound thefarm_allied_intro7
println "never heard anything like em"
wait 2

$player playsound thefarm_allied_intro8
println "that'd be great"
wait 3

$player playsound thefarm_allied_intro9
println "yes sir"
wait 2

$player playsound thefarm_allied_intro10
println "i'm not going anywhere"
wait 4

$player playsound thefarm_allied_intro11
println "moving out"
}
else
{
thread maps/obj/thefarm_message_print.scr::message "Welcome Axis soldier, defend the farm at all costs" NIL 2
thread maps/obj/thefarm_message_print.scr::message "Protect these items:" HINT 2
thread maps/obj/thefarm_message_print.scr::message "1 = Ammo Room" HINT 2
thread maps/obj/thefarm_message_print.scr::message "2 = Tiger Tank" HINT 2
thread maps/obj/thefarm_message_print.scr::message "3 = Communications room" HINT 2
thread maps/obj/thefarm_message_print.scr::message "4 = Radio Antena" HINT 2

//wait 9.5

// let him move again
//$player physics_on
//level.frozen = 0
}

// let him move again
//$player physics_on
//level.frozen = 0

println "END THREAD: intro_sounds"
end

countdown local.time:
thread maps/obj/thefarm_message_print.scr::message ("Countdown for " + local.time + " seconds")

wait local.time
end

setup_simple_fog local.density:
println ("THREAD: setup_simple_fog = " + local.density)

$world farplane local.density // fog thickness, 300 very dense, 2500 mist
$world farplane_color (.333 .333 .329)
$world farplane_cull "no"

//$world suncolor (20 20 20)

//$biglight light 300

println "END THREAD: setup_simple_fog"
end

morning_fog_dissipate local.start local.end local.timespan local.showdebug:
println ("THREAD: morning_fog_dissipate = " + local.start + ", to " + local.end + ", over " + local.timespan + " seconds")

local.difference = local.end - local.start // 2500 is mild fog, smaller the number denser the fog

local.fogtimeunit = local.difference / local.timespan // amount fog increases in 1 second

local.fogvalue = local.start // start value

local.start_time = level.time

$world farplane local.fogvalue
$world farplane_color (.333 .333 .329)
$world farplane_cull "no"

while (local.fogvalue<local.end)
{
// wait for 1 second
while (level.time < (local.start_time + 1) )
{
wait .1
}

local.start_time = level.time

local.fogvalue = local.fogvalue + local.fogtimeunit

if (local.showdebug==1)
println (" new fog value = " + local.fogvalue)

$world farplane local.fogvalue

waitframe
}

println "END THREAD: moring_fog_dissipate"
end

night_to_day:
println "THREAD: night_to_day"

if ($thesun == NULL)
level.thesun = 0
else
level.thesun = $thesun.size

println ("Level thesun = " + level.thesun)

if (level.thesun < 1)
{
println " no sun, so terminating early"
//println "END THREAD: night_to_day"
//end
}

local.daylight = 30000.0
local.night = 500.0

local.lightdifference = local.daylight - local.night // 70 is daylight, 20 is night

local.timespan = 30.0 // seconds

local.suntimeunit = local.lightdifference / local.timespan

local.lighttimeunit = 30000.0 / local.timespan

local.sunvalue = local.night // start at night

println (" daylight = " + local.daylight)
println (" night = " + local.night)
println (" time taken from night to day = " + local.timespan)
println (" suntimeunit = " + local.suntimeunit)
println (" thesun.light = " + $thesun.light)
// println (" level.suncolor = " + level.suncolor )

/*
local.suncolor[0] = local.sunvalue
local.suncolor[1] = local.sunvalue
local.suncolor[2] = local.sunvalue

local.suncolor = (local.sunvalue local.sunvalue local.sunvalue)
*/

local.start_time = level.time

$thesun.light = local.sunvalue

while (local.sunvalue<local.daylight)
{
// wait for 1 second
while (level.time < (local.start_time + 1) )
{
wait .1
}

local.start_time = level.time

local.sunvalue = local.sunvalue + local.suntimeunit

local.lightvalue = local.lightvalue + local.lightimeunit

println (" new sun value = " + local.sunvalue)
println (" new light value = " + local.lightvalue)

$biglight light local.lightvalue

// $world suncolor (local.sunvalue local.sunvalue local.sunvalue)
// $thesun.light = local.sunvalue
//local.suncolor = (local.sunvalue local.sunvalue local.sunvalue)

waitframe
}

println "END THREAD: night_to_day"
end

//*** --------------------------------------------
//*** "Allies breach permimeter
//*** --------------------------------------------

almost_there1:

//called by BSP
local.player = parm.other

println ("Almost there 1 Local player = " + local.player.dmteam)

if ( (local.player.dmteam != "allies") || (level.perimeter_breached == 1) )
end

iprintlnbold "The Allies have breached the perimeter!"
level.perimeter_breached = 1
end

//*** --------------------------------------------
//*** "Axis make a counter attack
//*** --------------------------------------------

almost_there2:

//called by BSP
local.player = parm.other

println ("Almost there 2 Local player = " + local.player.dmteam)

if ( (local.player.dmteam != "axis") || (level.counter_attack == 1) )
end

iprintlnbold_noloc "The Axis are making a counter attack!"
level.counter_attack = 1
end

//*** --------------------------------------------
//*** "Allies Victory"
//*** --------------------------------------------

allies_win_bomb:

println "THREAD allies_win_bomb"

if (level.targets_to_destroy < 1)
{
level waittill allieswin
$player playsound thefarm_allied_win2 // victory is ours
thread maps/obj/thefarm_message_print.scr::message "Victory is ours" NIL 2
wait 2
}
else
{
while(level.targets_destroyed < level.targets_to_destroy)
waitframe

thread maps/obj/thefarm_message_print.scr::message "We've completed our mission" NIL 2
$player playsound thefarm_allied_win1 // we've completed our mission
wait 2

$player playsound thefarm_allied_win2 // victory is ours
thread maps/obj/thefarm_message_print.scr::message "Victory is ours" NIL 2
wait 2

$player playsound thefarm_allied_win3// see you in berlin
thread maps/obj/thefarm_message_print.scr::message "See YOU in Berlin" NIL 2
wait 2

teamwin allies
}

println "END THREAD allies_win_bomb"

end

//*** --------------------------------------------
//*** "Axis Victory"
//*** --------------------------------------------

axis_win_timer:
println "THREAD axis_win_timer"

if (level.targets_to_destroy2 < 1)
{
level waittill axiswin
$player playsound thefarm_axis_win1 // victory is ours
thread maps/obj/thefarm_message_print.scr::message "Victory is ours" NIL 2
wait 2
}
else
{
while(level.targets_destroyed2 < level.targets_to_destroy2)
waitframe

$player playsound thefarm_axis_win1 // victory is ours
thread maps/obj/thefarm_message_print.scr::message "Victory is ours" NIL 2
wait 2

teamwin axis
}

println "END THREAD axis_win_timer"
end

//THIS PORTION OF SCRIPT NOT READY TO IMPLEMENT
//objectives_setup:
//
// waitthread global/objectives.scr::blank_objectives
// waitthread global/objectives.scr::add_objectives 1 2 "Allied forces must destroy the radio dish" $dish.origin
// wait 2
// waitthread global/objectives.scr::current_objectives 1
//end

//
//
// LOGIC FOR OBJECTIVE BASED DEATHMATCH ENTITIES
//
//

//***********************************************
// BOMB THINKER
//***********************************************

//***********************************************
// initialization thread...
//***********************************************

bomb_thinker local.triggernum:

println "THREAD bomb_thinker"

// Steve says planting time = 6 seconds
// defusing time = 12 second
// tick time = 36 seconds

level.bomb_set = 0
level.bomb_set2 = 0

level.bomb_defuse_time = level.bomb_defusetime * 10 //tenths of a second = 6
level.bomb_set_time = level.bomb_armtime * 10 //tenths of a second = 4
level.bomb_tick_time = level.bomb_ticktime //seconds (was 60 seconds, then 30 seconds, now 36)
// level.wait_after_explode = 2 //seconds time after target is destroyed before the level ends (no longer used, done in code now)
level.bomb_explosion_radius = 1054 //quake units
level.bomb_use_distance = 200 //quake units
level.bombusefov = 360
level.bomb_damage = 90

level.subtitleX = 100
level.subtitleY = 50

self.exploded = 0
self.exploder_set = local.triggernum
self.trigger_name = "trigger" + local.triggernum
// self.target.destroyed_model = "explodersmashed"

//self.target.collisionent = self.target.target // DUNNO !
// self.target notsolid // make the target non solid
self.live = 0 // 0 not live (safe) , 1 live (can expode)

//self.target anim start

println "----------------------Z-----------------------"
println "self = " self
println "level.bomb_defusetime " level.bomb_defusetime
println "level.bomb_defust_time " level.bomb_defusetime
println "level.bomb_armtime " level.bomb_armtime
println "level.bomb_set_time " level.bomb_set_time
println "level.bomb_ticktime " level.bomb_ticktime
println "level.bomb_tick_time " level.bomb_tick_time
println "self.trigger_name = " self.trigger_name // the trigger that trigger's the bomb !
println "self.exploded = " self.exploded
println "self.exploder_set = " self.exploder_set // the #set no of the models that are part of the objective
println "self.target (flak 88 or other) = " self.target // the object that is going to be destroyed (and removed when hit)
//println "self.target.destroyed_model = " self.target.destroyed_model // new model that appears after bomb has gone off
//println "self.target.target (collision entity) = " self.target.target // DUNNO !
println "self.explosion_fx = " self.explosion_fx // fx that appears if bomb goes off
println "self.explosion_sound = " self.explosion_sound // sound made when bomb goes off
println "self.killarea = " self.killarea // area where things get killed outright
println "----------------------Z-----------------------"

thread bomb_waittill_set

println "END THREAD bomb_thinker"

end

//***********************************************
// first thread... controls allies using the trigger
//***********************************************

bomb_waittill_set:

local.player = parm.other

//println ("Almost there 1 Local player = " + local.player.dmteam)

println "THREAD bomb_waittill_set"

self model items/pulse_explosive.tik

println " self.trigger_name = " self.trigger_name

if ( $(self.trigger_name) )
println " there is a trigger"
else
println " there is NOT a trigger, so bomb can't be set"

while ( $(self.trigger_name) )
{
println (" waittill trigger " + self.trigger_name)

self.trigger_name waittill trigger

println " triggered"

local.player = parm.other

//"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'

if (local.player.dmteam != level.planting_team) // check if the right team is setting the bomb
{
thread maps/obj/thefarm_message_print.scr::message "You can't set this bomb" NIL 2
goto bomb_waittill_set // wrong team so go back and start waiting again

println " FAILED dmteam check" local.player.dmteam
}
else
println " dmteam check passed OK" // correct team let's get on with it

if (self.live == 1)
{
thread maps/obj/thefarm_message_print.scr::message "Bomb is already set" NIL 2
end
}

local.counter = 0 // reset counter to start stopwatch

// check the following:
// player is alive ! , player can see the bomb, player has the use key held down

if (Isalive local.player)
println " player is alive OK"
else
println " player is dead FAILED"

//if (self cansee local.player level.bombusefov level.bomb_use_distance)
// println " bomb can see player OK"
//else
// println " bomb can't see player FAILED"

if (local.player.useheld == 1)
println " held key active OK = " local.player.useheld
else
println " held key inactive FAILED"

//while ( (Isalive local.player) && (local.player cansee self level.bombusefov level.bomb_use_distance) && (local.player.useheld == 1) )
while ( (Isalive local.player) && (local.player.useheld == 1) )
{
if (local.counter == 0) // if the counter is 0 display the stopwatch
local.player stopwatch (level.bomb_set_time * .1)

local.counter++

// if ((local.counter % 5) == 0)
// locprint level.subtitleX level.subtitleY("set "+ local.counter)

wait .1

if (local.counter >= level.bomb_set_time) // check how long use key has been held down
{
iprintlnbold_noloc("A bomb has been planted!, by " + local.player.dmteam )

if (level.planting_team == "allies")
self playsound dfr_objective_o // make a sound
else
self playsound den_objective_o // make a sound

local.player stopwatch (level.bomb_tick_time)

self.player_set = local.player

thread bomb_waittill_defuse // start thread to look for someone defusing the bomb (unless detonated)
thread bomb_waittill_explode // start thread to detonate the bomb after a preset time (unless diffused)

self.live = 1 // make the bomb live
level.bomb_set ++

println " waiting for bomb to detonate or be defussed"
println "END THREAD bomb_waittill_set"

end
}
}

if (local.counter > 0)
local.player stopwatch 0 // turn off the stopwatch

println " trigger used but failed check"

//if ! (self cansee local.player level.bombusefov level.bomb_use_distance)
// println " failed bomb can see player check"

if ! (local.player.useheld == 1)
println " failed use key held check" local.player.useheld
}

println "END THREAD bomb_waittill_set"
end

//***********************************************
// second thread... controls axis using the trigger
//***********************************************
bomb_waittill_defuse:
while ( $(self.trigger_name) )
{
self.trigger_name waittill trigger

local.player = parm.other

//"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'
if (local.player.dmteam != level.defusing_team)
{
thread maps/obj/thefarm_message_print.scr::message "You can't diffuse this bomb" NIL 2

println " failed dmteam check" local.player.dmteam
goto bomb_waittill_defuse
}
else
println " diffuse dmteam check ok" local.player.dmteam

if (self.live == 0)
{
thread maps/obj/thefarm_message_print.scr::message "Bomb is already disarmed" NIL 2
end
}

local.counter = 0

//while ( (Isalive local.player) && (local.player cansee self level.bombusefov level.bomb_use_distance) && (local.player.useheld == 1) )
while ( (Isalive local.player) && (local.player.useheld == 1) )
{
if (local.counter == 0)
local.player stopwatch (level.bomb_defuse_time * .1)

local.counter++
// if ((local.counter % 5) == 0)
// locprint level.subtitleX level.subtitleY ("defuse "+local.counter)

wait .1
if (local.counter >= level.bomb_defuse_time)
{
iprintlnbold_noloc("A bomb has been defused!, by " + local.player.dmteam )

if (level.defusing_team == "allies")
self playsound dfr_diffused_d
else
self playsound den_diffused_d

thread bomb_waittill_set //start first thread again

self.live = 0
level.bomb_set --

self.player_set stopwatch 0

end
}
}

if (local.counter > 0)
local.player stopwatch 0
}
end

//***********************************************
// third thread... times the bomb and makes it explode at the right time
//***********************************************
bomb_waittill_explode:

println "THREAD: bomb_waittill_explode"

self model items/explosive.tik

self playsound plantbomb

self loopsound thefarm_bombtick

local.start_time = level.time

while (level.time < (local.start_time + level.bomb_tick_time) )
{
wait .1

if (self.live != 1)
{
self stoploopsound

println " bomb not live, exiting"
println "END THREAD: bomb_waittill_explode"

end
}

if (level.time == (local.start_time + level.bomb_tick_time - level.bomb_fastticktime) )
{
self stoploopsound

self loopsound thefarm_finalcountdown
}

if (level.time == (local.start_time + level.bomb_tick_time - level.bomb_defusetime) )
{
self stoploopsound

self loopsound thefarm_finalcountdownquick
}
}

self stoploopsound

self.player_set stopwatch 0

thread bomb_explode

println "END THREAD: bomb_waittill_explode"

end

//***********************************************
// fourth thread... controls the explosion
//***********************************************
bomb_explode:

println "THREAD: bomb_explode"

self.trigger_name remove // remove the trigger so it can't go off again

thread jitter_large 0 // do a large screen shake

$player playsound "sounds/Multiplayer/a/AMdfr_o_02.wav" // we've completed our objective

if (self.exploder_set != NIL)
{
println (" executing exploder script " + self.exploder_set)
exec maps/obj/thefarm_exploder.scr::explode self.exploder_set // execute the exploder routine where #set = exploder_set
}
else
println " bypassing exploder script"

if (self.explosion_fx != NIL)
{
println " executing eplosion fx"
self thread spawn_fx self.explosion_fx // show an explosion
}
else
println " bypassing explosion fx"

if (self.explosion_sound != NIL)
{
println " executing explosion sound"
self playsound self.explosion_sound // make a noise
}
else
println " bypassing explosion sound"

if (self.target != NIL) // the object that's going to be blown up
{
if (self.target.destroyed_model != NIL) // the new object that will be show after bomb detonates
local.damaged = self.target thread spawn_damaged self.target.destroyed_model

self.target remove // remove the original object

waitframe
}

radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius // do some damage in the local area

if (self.killarea != NIL)
self.killarea volumedamage 1000 // kill in this area

if (self.exploder_set > 0 && self.exploder_set < 10 )
{
if (self.message != NIL)
local.message = " have destroyed OBJECTIVE " + self.message + "."
else
local.message = " have destroyed an OBJECTIVE."
}
else
{
if (self.message != NIL)
local.message = " have destroyed target " + self.message + "."
else
local.message = " have destroyed a target."
}

iprintlnbold_noloc("The " + level.planting_team + local.message )

self hide // remove the bomb

self.exploded = 1 // this bomb has exploded

// we delay the decrementing of level.bomb_set so that the script has
// time to determin the winner before the timelimit gets checked and hit
wait 0.5

if (self.exploder_set > 0 && self.exploder_set < 10 ) // don't count fun_bombs
level.targets_destroyed ++

level.bomb_set --

thread showmenu

println "END THREAD: bomb_explode"
end

//***********************************************
// BOMB THINKER 2 (planting / defussing teams switched
//***********************************************

//***********************************************
// initialization thread...
//***********************************************

bomb_thinker2 local.triggernum:

println "THREAD bomb_thinker"

// Steve says planting time = 6 seconds
// defusing time = 12 second
// tick time = 36 seconds

level.bomb_set2 = 0

level.bomb_defuse_time = level.bomb_defusetime * 10 //tenths of a second = 6
level.bomb_set_time = level.bomb_armtime * 10 //tenths of a second = 4
level.bomb_tick_time = level.bomb_ticktime //seconds (was 60 seconds, then 30 seconds, now 36)
// level.wait_after_explode = 2 //seconds time after target is destroyed before the level ends (no longer used, done in code now)
level.bomb_explosion_radius = 1054 //quake units
level.bomb_use_distance = 200 //quake units
level.bombusefov = 360
level.bomb_damage = 90

level.subtitleX = 100
level.subtitleY = 50

self.exploded = 0
self.exploder_set = local.triggernum
self.trigger_name = "trigger" + local.triggernum
self.target.destroyed_model = "explodersmashed"

//self.target.collisionent = self.target.target // DUNNO !
// self.target notsolid // make the target non solid
self.live = 0 // 0 not live (safe) , 1 live (can expode)

//self.target anim start

println "----------------------Z-----------------------"
println "self = " self
println "level.bomb_defusetime " level.bomb_defusetime
println "level.bomb_defust_time " level.bomb_defusetime
println "level.bomb_armtime " level.bomb_armtime
println "level.bomb_set_time " level.bomb_set_time
println "level.bomb_ticktime " level.bomb_ticktime
println "level.bomb_tick_time " level.bomb_tick_time
println "self.trigger_name = " self.trigger_name // the trigger that trigger's the bomb !
println "self.exploded = " self.exploded
println "self.exploder_set = " self.exploder_set // the #set no of the models that are part of the objective
println "self.target (flak 88 or other) = " self.target // the object that is going to be destroyed (and removed when hit)
//println "self.target.destroyed_model = " self.target.destroyed_model // new model that appears after bomb has gone off
//println "self.target.target (collision entity) = " self.target.target // DUNNO !
println "self.explosion_fx = " self.explosion_fx // fx that appears if bomb goes off
println "self.explosion_sound = " self.explosion_sound // sound made when bomb goes off
println "self.killarea = " self.killarea // area where things get killed outright
println "----------------------Z-----------------------"

thread bomb_waittill_set2

println "END THREAD bomb_thinker2"

end

//***********************************************
// first thread... controls allies using the trigger
//***********************************************

bomb_waittill_set2:

local.player = parm.other

//println ("Almost there 1 Local player = " + local.player.dmteam)

println "THREAD bomb_waittill_set"

self model items/pulse_explosive.tik

println " self.trigger_name = " self.trigger_name

if ( $(self.trigger_name) )
println " there is a trigger"
else
println " there is NOT a trigger, so bomb can't be set"

while ( $(self.trigger_name) )
{
println (" waittill trigger " + self.trigger_name)

self.trigger_name waittill trigger

println " triggered"

local.player = parm.other

//"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'

if (local.player.dmteam == level.planting_team) // check if the right team is setting the bomb
{
thread maps/obj/thefarm_message_print.scr::message "You can't set this bomb" NIL 2
goto bomb_waittill_set // wrong team so go back and start waiting again

println " FAILED dmteam check" local.player.dmteam
}
else
println " dmteam check passed OK" // correct team let's get on with it

if (self.live == 1)
{
thread maps/obj/thefarm_message_print.scr::message "Bomb is already set" NIL 2
end
}

local.counter = 0 // reset counter to start stopwatch

// check the following:
// player is alive ! , player can see the bomb, player has the use key held down

if (Isalive local.player)
println " player is alive OK"
else
println " player is dead FAILED"

//if (self cansee local.player level.bombusefov level.bomb_use_distance)
// println " bomb can see player OK"
//else
// println " bomb can't see player FAILED"

if (local.player.useheld == 1)
println " held key active OK = " local.player.useheld
else
println " held key inactive FAILED"

//while ( (Isalive local.player) && (local.player cansee self level.bombusefov level.bomb_use_distance) && (local.player.useheld == 1) )
while ( (Isalive local.player) && (local.player.useheld == 1) )
{
if (local.counter == 0) // if the counter is 0 display the stopwatch
local.player stopwatch (level.bomb_set_time * .1)

local.counter++

// if ((local.counter % 5) == 0)
// locprint level.subtitleX level.subtitleY("set "+ local.counter)

wait .1

if (local.counter >= level.bomb_set_time) // check how long use key has been held down
{
iprintlnbold_noloc("A bomb has been planted!, by " + local.player.dmteam )

if (level.planting_team == "allies")
self playsound dfr_objective_o // make a sound
else
self playsound den_objective_o // make a sound

local.player stopwatch (level.bomb_tick_time)

self.player_set = local.player

thread bomb_waittill_defuse2 // start thread to look for someone defusing the bomb (unless detonated)
thread bomb_waittill_explode2 // start thread to detonate the bomb after a preset time (unless diffused)

self.live = 1 // make the bomb live
level.bomb_set2 ++

println " waiting for bomb to detonate or be defussed"
println "END THREAD bomb_waittill_set"

end
}
}

if (local.counter > 0)
local.player stopwatch 0 // turn off the stopwatch

println " trigger used but failed check"

//if ! (self cansee local.player level.bombusefov level.bomb_use_distance)
// println " failed bomb can see player check"

if ! (local.player.useheld == 1)
println " failed use key held check" local.player.useheld
}

println "END THREAD bomb_waittill_set2"
end

//***********************************************
// second thread... controls axis using the trigger
//***********************************************
bomb_waittill_defuse2:
while ( $(self.trigger_name) )
{
self.trigger_name waittill trigger

local.player = parm.other

//"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'
if (local.player.dmteam == level.defusing_team)
{
thread maps/obj/thefarm_message_print.scr::message "You can't diffuse this bomb" NIL 2

println " failed dmteam check" local.player.dmteam
goto bomb_waittill_defuse2
}
else
println " diffuse dmteam check ok" local.player.dmteam

if (self.live == 0)
{
thread maps/obj/thefarm_message_print.scr::message "Bomb is already disarmed" NIL 2
end
}

local.counter = 0

//while ( (Isalive local.player) && (local.player cansee self level.bombusefov level.bomb_use_distance) && (local.player.useheld == 1) )
while ( (Isalive local.player) && (local.player.useheld == 1) )
{
if (local.counter == 0)
local.player stopwatch (level.bomb_defuse_time * .1)

local.counter++
// if ((local.counter % 5) == 0)
// locprint level.subtitleX level.subtitleY ("defuse "+local.counter)

wait .1
if (local.counter >= level.bomb_defuse_time)
{
iprintlnbold_noloc("A bomb has been defused!, by " + local.player.dmteam )

if (level.defusing_team == "allies")
self playsound dfr_diffused_d
else
self playsound den_diffused_d

thread bomb_waittill_set //start first thread again

self.live = 0
level.bomb_set2 --

self.player_set stopwatch 0

end
}
}

if (local.counter > 0)
local.player stopwatch 0
}
end

//***********************************************
// third thread... times the bomb and makes it explode at the right time
//***********************************************
bomb_waittill_explode2:

println "THREAD: bomb_waittill_explode2"

self model items/explosive.tik

self playsound plantbomb

self loopsound thefarm_bombtick

local.start_time = level.time

while (level.time < (local.start_time + level.bomb_tick_time) )
{
wait .1

if (self.live != 1)
{
self stoploopsound

println " bomb not live, exiting"
println "END THREAD: bomb_waittill_explode2"

end
}

if (level.time == (local.start_time + level.bomb_tick_time - level.bomb_fastticktime) )
{
self stoploopsound

self loopsound thefarm_finalcountdown
}

if (level.time == (local.start_time + level.bomb_tick_time - level.bomb_defusetime) )
{
self stoploopsound

self loopsound thefarm_finalcountdownquick
}
}

self stoploopsound

self.player_set stopwatch 0

thread bomb_explode2

println "END THREAD: bomb_waittill_explode2"

end

//***********************************************
// fourth thread... controls the explosion
//***********************************************
bomb_explode2:

println "THREAD: bomb_explode2"

self.trigger_name remove // remove the trigger so it can't go off again

thread jitter_large 0 // do a large screen shake

$player playsound "sounds/Multiplayer/a/AMdfr_o_02.wav" // we've completed our objective

if (self.exploder_set != NIL)
{
println (" executing exploder script " + self.exploder_set)
exec maps/obj/thefarm_exploder.scr::explode self.exploder_set // execute the exploder routine where #set = exploder_set
}
else
println " bypassing exploder script"

if (self.explosion_fx != NIL)
{
println " executing eplosion fx"
self thread spawn_fx self.explosion_fx // show an explosion
}
else
println " bypassing explosion fx"

if (self.explosion_sound != NIL)
{
println " executing explosion sound"
self playsound self.explosion_sound // make a noise
}
else
println " bypassing explosion sound"

if (self.target != NIL) // the object that's going to be blown up
{
if (self.target.destroyed_model != NIL) // the new object that will be show after bomb detonates
local.damaged = self.target thread spawn_damaged self.target.destroyed_model

self.target remove // remove the original object

waitframe
}

radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius // do some damage in the local area

if (self.killarea != NIL)
self.killarea volumedamage 1000 // kill in this area

if (self.exploder_set > 19 && self.exploder_set < 30 ) // don't count fun_bombs
{
if (self.message != NIL)
local.message = " have destroyed OBJECTIVE " + self.message + "."
else
local.message = " have destroyed an OBJECTIVE."
}
else
{
if (self.message != NIL)
local.message = " have destroyed target " + self.message + "."
else
local.message = " have destroyed a target."
}

iprintlnbold_noloc("The " + level.defuse_team + local.message )

self hide // remove the bomb

self.exploded = 1 // this bomb has exploded

// we delay the decrementing of level.bomb_set so that the script has
// time to determin the winner before the timelimit gets checked and hit
wait 0.5

if (self.exploder_set > 19 && self.exploder_set < 30 ) // don't count fun_bombs
level.targets_destroyed2 ++

level.bomb_set2 --

thread showmenu

println "END THREAD: bomb_explode2"
end

//----------------------------------
spawn_fx local.fx:
println ("THREAD: spawn_fx " + local.fx)

local.temp = spawn script_model model local.fx
local.temp.origin = self.origin
local.temp anim start
//wait 5
//local.temp remove

println ("END THREAD: spawn_fx " + local.fx)
end

spawn_damaged local.model:
println ("THREAD: spawn_damaged " + local.model)

local.damaged = spawn script_model model local.model
local.damaged.origin = self.origin
local.damaged.angles = self.angles

println ("END THREAD: spawn_damaged " + local.model)
end local.damaged

//******************************
// jitter large effect
// jitter_large [delay]
//******************************
jitter_large local.time:
println ("THREAD: jitter_large " + local.time)

if (local.time)
wait local.time

waitexec global/earthquake.scr .35 10 0 0
waitexec global/earthquake.scr .23 6 0 0
waitexec global/earthquake.scr 1 1 0 0
waitexec global/earthquake.scr 1.25 .3 0 1

println ("END THREAD: jitter_large " + local.time)
end

freezeplayerview:
println "THREAD: freezeplayerview"

continuefreeze:

level.frozen = 1

$player.viewangles = (0 0 0)

wait 0.01

if (level.frozen == 1)
goto continuefreeze

println "END THREAD: freezeplayerview"
end

farmradioused:
println "THREAD: radio used"

if (level.radio_on == NIL)
level.radio_on = 1

if (level.radio_on == 1)
{
level.radio_on = 0
self stoploopsound
}
else
{
level.radio_on = 1
self loopsound thefarm_radioloop
}

println "END THREAD: radio used"
end

barnnoise:
println "THREAD: barnnoise"

self loopsound machiner_loop

println "END THREAD: barnnoise"
end

//----------------------------------------------------------->
// Prepares the elvator by assigning the basic settings to it
//----------------------------------------------------------->

elevator_preparation:
println "THREAD: elevator_preperation"

$elevator moveto $waypoint_down // Moves elevator to waypoint_down.
// $elevator_button bind $elevator // Attaches the elevator_button into the elevator, this making it move same time as the elevator.
$elevator time 5 // sets the elevator move time, 4 seconds in this case, could also use the command "speed".
local.elepos = 0 // Defines the position of the elevator. "0 - lift down" "1 - lift up" Default - lift down
goto elevator_standby // standing by and waiting player to activate the trigger

//----------------------------------------------------------->
// Elevator is idle, and waiting user to activate the trigger
//----------------------------------------------------------->

elevator_standby:

println " SUB THREAD: elevator_standby"

//$elevator playsound thefarm_elevator_stop

if (local.elepos == 0)
thread maps/obj/thefarm_message_print.scr::message "Elevator waiting at ground floor" NIL 2
else
thread maps/obj/thefarm_message_print.scr::message "Elevator waiting at 1st floor" NIL 2

$elevator_button waittill trigger

thread maps/obj/thefarm_message_print.scr::message "Elevator activated" NIL 2
println " elevator triggered"

wait 2 // wait 2 seconds

if (local.elepos == 0) // If lift state is down, its better get up.
{
println "elevator down - moving up" //prints this text to console if the developer mode is set.
goto lift_move_up // jumps straight to the "lift_move_up" part in the script
}
else
{
if (local.elepos == 1) // Or maybe lift state is up, and you need to get down?
{
println "elevator up - moving down" //prints this text to console if the developer mode is set.
goto lift_move_down // jumps straight to the "lift_move_down" part in the script
}
}

goto elevator_standby

//----------------------------------------------------------->

lift_move_up:

println " SUB THREAD: lift_move_up"

thread maps/obj/thefarm_message_print.scr::message "Elevator raising to 1st floor" NIL 2

$elevator moveto $waypoint_up //moves the lift to info_waypoint with targetname waypoint_up
//$elevator playsound thefarm_elevator_start
$elevator playsound thefarm_elevator_run
$elevator waitmove //wait till the elevator has completed the move before doing anything else

local.elepos = 1 // it seems the elevator is up now, so we set the local.elepos to 1
goto elevator_standby // Jumps back to the standby part of the script waiting user to activate the trigger

//----------------------------------------------------------->

lift_move_down:

println " SUB THREAD: lift_move_down"

thread maps/obj/thefarm_message_print.scr::message "Elevator dropping to ground floor" NIL 2

$elevator moveto $waypoint_down //moves the lift to info_waypoint with targetname waypoint_down
//$elevator playsound thefarm_elevator_start
$elevator playsound thefarm_elevator_run
$elevator waitmove //wait till the elevator has completed the move before doing anything else

local.elepos = 0 // it seems the elevator is down now, so we set the local.elepos to 1
goto elevator_standby // Jumps back to the standby part of the script waiting user to activate the trigger

//----------------------------------------------------------->

println "END THREAD: elevator_preperation"

end //the end.

bomb_noanimation:
println "THREAD: bomb_noanimation"

if (level.exploders > 0)
{
println (" Level exploders = " + level.exploders)

for (local.i=1;local.i<level.exploders+1;local.i++)
{
if (local.exploder[local.i] != NIL)
{
local.exploder[local.i] anim stop
// println (" Exploder " + local.i + " has had animation turned off")
}
// else
// println (" WARNING -> Exploder " + local.i + " =NIL, can't have animation turned off")
}
}
else
println (" WARNING -> Level exploders = " + level.exploders)

println "END THREAD: bomb_noanimation"
end

setup_spawnpoints:
println "THREAD: setup_spawnpoints"

if (level.planting_team == "allies") // check if the right team is setting the bomb
{
// ok spawn the allies at the bottom, and axis at the top
thread spawn_alliedplayer 1 -1000 -5400 0 1000 6800 0

thread spawn_axisplayer 1 0 -550 0 1800 -1250 0
}
else
{
// ok spawn the axis at the bottom and the allies at the top
thread spawn_axisplayer 1 -1000 -5400 0 1000 6800 0

thread spawn_alliedplayer 1 0 -550 0 1800 -1250 0
}

println "END THREAD: setup_spawnpoints"
end

spawn_alliedplayer local.num local.x1 local.y1 local.z1 local.x2 local.y2 local.z2:
println ("THREAD: spawn_alliedplayer(s) " + local.num + "of @ " + local.x1 + "," + local.y1 + "," + local.z1 + "," + local.x2 + "," + local.y2 + "," + local.z2)

local.x = local.x1
local.y = local.y1
local.z = local.z1

local.xgap = 128
local.ygap = 128
local.zgap = 128

for (local.i=1;local.i<local.num+1;local.i++)
{
local.origin = (local.x local.y local.z)
local.alliedplayer = spawn info_player_allied
local.alliedplayer.origin = self.origin
local.alliedplayer.angles = self.angles

local.x = local.x + local.xgap

if (local.x>local.x2)
{
local.x=local.x1
local.z=local.z+local.zgap
}

local.alliedplayer[i] = spawn info_player_allied
local.alliedplayer[i].origin = (local.x local.y local.z)

if (local.z>local.z2)
local.i=local.num+1;
}

println ("END THREAD: spawn_alliedplayer " + local.num)
end local.alliedplayer

spawn_axisplayer local.num local.x1 local.y1 local.z1 local.x2 local.y2 local.z2:
println ("THREAD: spawn_axisplayer(s) " + local.num + "of @ " + local.x1 + "," + local.y1 + "," + local.z1 + "," + local.x2 + "," + local.y2 + "," + local.z2)

local.x = local.x1
local.y = local.y1
local.z = local.z1

local.xgap = 128
local.ygap = 128
local.zgap = 128

for (local.i=1;local.i<local.num+1;local.i++)
{
local.origin = (local.x local.y local.z)
local.axisplayer = spawn info_player_axis local.model
local.axisdplayer.origin = local.origin
local.axisplayer.angles = (0 90 0)

local.x = local.x + local.xgap

if (local.x>local.x2)
{
local.x=local.x1
local.z=local.z+local.zgap
}

local.alliedplayer[i] = spawn info_player_allied
local.alliedplayer[i].origin = (local.x local.y local.z)

if (local.z>local.z2)
local.i=local.num+1
}

println ("END THREAD: spawn_axisplayer " + local.num)
end local.axisplayer

//************************************************** **********************************
//*** displays text in the center of the screen
//*** mainly used for hint text (default), but can be for anything
//*** syntax --------------------------------
//*** message <string> [no hint text | non-NIL - will display, NIL - won't display] [time to leave message up, default 5 | 0 - means default]
//************************************************** **********************************
objmessage local.string local.hint local.time:

println ("Obj message: " + local.string)

//*** check to make sure a valid string was passed
if (local.string == NIL)
{
println "^~^~^ A non-valid string was passed for a hint-message!!"
goto message_false_end
}

//*** check to see if they want default time
if (local.time == 0 || local.time == NIL)
{
local.time = 5
}

// dont do this, replace immediate
//*** check to see if a message is already up, if so, wait till you get the goahead
//while (level.objmessage_onscreen == 1)
//{
// level.objmessage_waiting = 1
// wait .2
//}

//*** set the waiting variables for when another message is waiting
level.objmessage_onscreen = 1
level.objmessage_waiting = 0

//*** turn off the indexes incase theres a message up there
huddraw_alpha 28 0
huddraw_alpha 29 0

//*** assign huddraw elements
huddraw_string 28 "HINT:"
huddraw_align 28 center center
huddraw_rect 28 -150 50 0 0

//*** format the string
local.formatted_string = waitthread global/string_format.scr::str_format local.string 47

huddraw_string 29 local.formatted_string
huddraw_align 29 center center
huddraw_rect 29 -100 50 0 0

//*** check to see if they want HINT to appear
//*** fade the text onto the screen
if (local.hint != NIL)
{
for (local.j = 0 ; local.j <= 1 ; local.j += .2)
{
huddraw_alpha 28 local.j
huddraw_alpha 29 local.j
waitframe
}
}
else
{
for (local.k = 0 ; local.k <= 1 ; local.k += .2)
{
huddraw_alpha 28 0
huddraw_alpha 29 local.k
waitframe
}
}

//*** wait cycle, takes into account if another message is put up, to reset the time
for (local.i = 1 ; local.i <= local.time ; local.i ++)
{
wait 1

//*** check to see if another message is waiting to get on the screen
if (level.objmessage_waiting == 1)
{
goto message_abort
}
}

//*** fade the text off the screen
if (local.hint != NIL)
{
for (local.m = 1 ; local.m >= 0 ; local.m -= .2)
{
huddraw_alpha 28 local.m
huddraw_alpha 29 local.m
waitframe
}
}
else
{
for (local.n = 1 ; local.n >= 0 ; local.n -= .2)
{
huddraw_alpha 28 0
huddraw_alpha 29 local.n
waitframe
}
}

message_abort:
level.objmessage_onscreen = 0

end

showmenu:

if (level.targets_to_destroy>0)
{
level.objectivesleft = level.targets_to_destroy - level.targets_destroyed

if (level.objectivesleft <1)
level.objectivesleft = "Targets:None"
else
level.objectivesleft = ("ALLIED Targets left: " + level.objectivesleft)

thread objmessage level.objectivesleft
}

if (level.targets_to_destroy2 > 0)
{
level.objectivesleft = level.targets_to_destroy2 - level.targets_destroyed2

if (level.objectivesleft2 <1)
level.objectivesleft = "Targets:None"
else
level.objectivesleft = ("AXIS Targets left: " + level.objectivesleft2)

thread objmessage level.objectivesleft
}
end

ladder_control:

if (level.barnladders == 0)
{
$barnladder1 hide
$barnladder1 remove

$barnladder2 hide
$barnladder2 remove
}

end

village_control:

// ROAD BLOCK
if ($villagestop == NULL)
level.villagestops = 0
else
level.villagestops = $villagestop.size

println ("Level villagestops = " + level.villagestops)

if (level.villagestops > 0)
{
level.villagestop = exec global/makearray.scr $villagestop

for (local.i=1;local.i<level.villagestops+1;local.i++)
{
if (level.village == "1")
{
level.villagestop[local.i] hide
level.villagestop[local.i] remove

println ("Removed villagestop " + local.i)
}
else
{
level.villagestop[local.i] show
level.villagestop[local.i] solid

println ("Spawned villagestop " + local.i)
}
}
}

// TREES
if ($villagetrees == NULL)
level.hqtrees = 0
else
level.hqtrees = $villagetrees.size

println ("Level hqtrees = " + level.hqtrees)

if (level.hqtrees > 0)
{
level.hqtree = exec global/makearray.scr $villagetrees

for (local.i=1;local.i<level.hqtrees+1;local.i++)
{
if (level.showhqtrees == "0")
{
level.hqtree[local.i] hide
level.hqtree[local.i] remove

println ("Removed hqtree " + local.i)
}
else
{
level.hqtree[local.i] show
level.hqtree[local.i] solid

println ("Spawned hqtree " + local.i)
}
}
}

end

solidify:
println "THREAD: solidify"

level waittill spawn
self solid
self disconnect_paths

println "END THREAD: solidify = " // + self.targetname)
end

//***********************************************
// fourth thread... controls the explosion
//***********************************************
planebomb:

println "THREAD: planebomb"

thread jitter_large 0 // do a large screen shake

self playsound ("stonecrash0" + (randomint(3) + 1))
wait 0.1
self playsound ("stonecrash0" + (randomint(3) + 1))
wait 0.1
self playsound ("stonecrash0" + (randomint(3) + 1))

//local.explosion_fx =
//local.explosion_sound =
local.bomb_damage = 90
local.bomb_explosion_radius = 500

if (local.explosion_fx != NIL)
{
println " executing explosion fx"
self thread spawn_fx local.explosion_fx // show an explosion
}
else
println " bypassing explosion fx"

if (local.explosion_sound != NIL)
{
println " executing explosion sound"
self playsound local.explosion_sound // make a noise
}
else
println " bypassing explosion sound"

radiusdamage self.origin local.bomb_damage local.bomb_explosion_radius // do some damage in the local area

//if (self.killarea != NIL)
// self.killarea volumedamage 1000 // kill in this area

self hide // remove the bomb

println "END THREAD: planebomb"
end

flyby:

//***random flyby of plane
wait 30.0

flybystart:

thread maps/obj/thefarm_bomber.scr::bomb 1 1
// thread global/bomber.scr::bomb 6
// thread global/bomber.scr::bomb 7
// thread global/bomber.scr::bomb 8

wait (randomint(60) + 45)

goto flybystart // infinate loop

end

// centerprint
  
Reply With Quote
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump



Powered by vBulletin® Version 3.8.12 by ScriptzBin
Copyright ©2000 - 2025, vBulletin Solutions Inc.
vBulletin Skin developed by: vBStyles.com
© 1998 - 2007 by Rudedog Productions | All trademarks used are properties of their respective owners. All rights reserved.