Member
Posts: 58
Join Date: Apr 2002
|
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
|