More updates to death commandos. Their shuttle should now work, along with other fixes. They are complete at this time.

Updated icons for plastic explosives.
Replaced one of the Construction sites with a Xenobiology lab on request. It is a temporary location and is mostly for roleplay. There will NOT be a job associated with it.
Added Barhandar's updated shieldgen stuff.
Copied icons to stationobjs.dmi for future shieldgen update.
Misc changes.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@666 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
noisomehollow@lycos.com
2010-12-19 02:39:56 +00:00
parent 7bfd296b70
commit 1a5a2ba826
15 changed files with 3979 additions and 3761 deletions

View File

@@ -97,11 +97,11 @@
/area/shuttle/prison/prison
icon_state = "shuttle2"
/area/shuttle/specialops/centcom
/area/shuttle/specops/centcom
name = "Special Ops Shuttle"
icon_state = "shuttlered"
/area/shuttle/specialops/station
/area/shuttle/specops/station
name = "Special Ops Shuttle"
icon_state = "shuttlered2"
@@ -711,6 +711,10 @@
name = "Toxin Lab"
icon_state = "toxlab"
/area/toxins/xenobiology
name = "Xenobiology Lab"
icon_state = "toxlab"
/area/toxins/storage
name = "Toxin Storage"
icon_state = "toxstorage"

View File

@@ -1651,8 +1651,8 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
name = "Plastic Explosives"
desc = "Used to put holes in specific areas without too much extra hole."
icon = 'assemblies.dmi'
icon_state = "timer-igniter-tank0"
item_state = "plasma-c"
icon_state = "plastic-explosive0"
item_state = "plasticx"
flags = FPRINT | TABLEPASS | USEDELAY
w_class = 2.0
var/timer = 10

View File

@@ -388,9 +388,9 @@
/proc/call_shuttle_proc(var/mob/user)
if ((!( ticker ) || emergency_shuttle.location))
return
// if(world.time < 6000) // Ten minute grace period to let the game get going without lolmetagaming. -- TLE
// user << "Centcomm will not allow the shuttle to be called."
// return
if(world.time < 6000) // Ten minute grace period to let the game get going without lolmetagaming. -- TLE
user << "The emergency shuttle is refueling. Please wait another [(6000-world.time)/10] seconds before trying again."
return
if(ticker.mode.name == "revolution" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "confliction")
user << "Centcom will not allow the shuttle to be called."
if(sent_strike_team == 1)

View File

@@ -22,7 +22,7 @@
var/Varedit_start = 0
var/Varpower = 0
var/active = 0
var/power = 1 //fuck that, powered forever for now
var/power = 0
var/state = 0
var/steps = 0
var/last_check = 0
@@ -30,6 +30,11 @@
var/recalc = 0
var/locked = 0
var/destroyed = 0
var/directwired = 1
// var/maxshieldload = 200
var/obj/cable/attached // the attached cable
var/storedpower = 0
var/maxstoredpower = 500
flags = FPRINT | CONDUCT
/obj/machinery/shield
@@ -165,10 +170,9 @@
shields_up()
////FIELD GEN START //shameless copypasta from fieldgen, yes
////FIELD GEN START //shameless copypasta from fieldgen, powersink, and grille
/* doesn't works for some reason.
/obj/machinery/shieldwallgen/proc/get_connection()
var/turf/T = src.loc
if(!istype(T, /turf/simulated/floor))
@@ -179,7 +183,29 @@
return C.netnum
return 0
*/
/obj/machinery/shieldwallgen/proc/power()
if(!anchored)
return 0
var/net = get_connection() // find the powernet of the connected cable
var/datum/powernet/PN // find the powernet
if(net)
PN = powernets[net]
var/shieldload = rand(50,200)
if((!PN || !PN.avail) && !storedpower) // no cable or no power, and no power stored
power = 0
return 0
else
power = 1 // IVE GOT THE POWER!
if(PN) //runtime errors fixer. They were caused by PN.newload trying to access missing network in case of working on stored power.
storedpower += shieldload
PN.newload += shieldload //uses powernet power.
// message_admins("[PN.load]", 1)
// use_power(250) //uses APC power
/obj/machinery/shieldwallgen/attack_hand(mob/user as mob)
if(state == 1)
@@ -189,7 +215,7 @@
src.active = 0
// icon_state = "Field_Gen"
user << "You turn off the shield generator."
// src.cleanup()
src.cleanup()
else
src.active = 1
// icon_state = "Field_Gen +a"
@@ -222,7 +248,18 @@
..()
return
/obj/machinery/shieldwallgen/process()
spawn(100)
power()
if(power == 1)
storedpower -= 50 //this way it can survive longer and survive at all
if(storedpower >= maxstoredpower)
storedpower = maxstoredpower
if(storedpower <= 0)
storedpower = 0
// if(shieldload >= maxshieldload) //there was a loop caused by specifics of process(), so this was needed.
// shieldload = maxshieldload
if(src.Varedit_start == 1)
if(src.active == 0)
@@ -439,12 +476,22 @@
src.gen_primary = A
src.gen_secondary = B
spawn(1)
src.sd_SetLuminosity(5)
src.sd_SetLuminosity(3)
/* for(var/mob/M as mob in src.loc) //does not work for some reason.
if(istype(M,/mob/living/carbon))
M.bruteloss += 100
M.updatehealth()
M << "\red <B>You feel as the very atoms of your body divide!</B>"
else
M.bruteloss += 50
M.updatehealth()
M << "\red <B>Strong energy field detected. Damage from field dampened.</B>"
*/
/obj/machinery/shieldwall/attack_hand(mob/user as mob)
return
/obj/machinery/shieldwall/process()
if(isnull(gen_primary)||isnull(gen_secondary))
del(src)
@@ -453,3 +500,8 @@
if(!(gen_primary.active)||!(gen_secondary.active))
del(src)
return
//
if(prob(50))
gen_primary.storedpower -= 10
else
gen_secondary.storedpower -=10

View File

@@ -12,7 +12,7 @@
var/location
if (isturf(target)) location = target
if (isobj(target)) location = target.loc
target.overlays += image('assemblies.dmi', "timer-igniter-tank2")
target.overlays += image('assemblies.dmi', "plastic-explosive2")
user << "Bomb has been planted. Timer counting down from [src.timer]."
spawn(src.timer*10)
explosion(location, -1, -1, 2, 3)

View File

@@ -9,7 +9,6 @@ var/prison_shuttle_at_station = 0
var/prison_shuttle_can_send = 1
var/prison_shuttle_time = 0
var/prison_shuttle_timeleft = 0
var/prison_shuttle_points = 50
/obj/machinery/computer/prison_shuttle
name = "Prison Shuttle Console"

View File

@@ -0,0 +1,144 @@
//Config stuff
#define SPECOPS_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves.
#define SPECOPS_STATION_AREATYPE "/area/shuttle/specops/station" //Type of the spec ops shuttle area for station
#define SPECOPS_DOCK_AREATYPE "/area/shuttle/specops/centcom" //Type of the spec ops shuttle area for dock
var/specops_shuttle_moving_to_station = 0
var/specops_shuttle_moving_to_centcom = 0
var/specops_shuttle_at_station = 0
var/specops_shuttle_can_send = 1
var/specops_shuttle_time = 0
var/specops_shuttle_timeleft = 0
/obj/machinery/computer/specops_shuttle
name = "Spec. Ops. Shuttle Console"
icon = 'computer.dmi'
icon_state = "shuttle"
req_access = list()
var/temp = null
var/hacked = 0
var/allowedtocall = 0
/proc/specops_process()
while(specops_shuttle_time - world.timeofday > 0)
var/ticksleft = specops_shuttle_time - world.timeofday
if(ticksleft > 1e5)
specops_shuttle_time = world.timeofday + 10 // midnight rollover
specops_shuttle_timeleft = (ticksleft / 10)
sleep(5)
specops_shuttle_moving_to_station = 0
specops_shuttle_moving_to_centcom = 0
specops_shuttle_at_station = 1
if (specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return
if (!specops_can_move())
usr << "\red The Special Operations shuttle is unable to leave."
return
var/area/start_location = locate(/area/shuttle/specops/centcom)
var/area/end_location = locate(/area/shuttle/specops/station)
var/list/dstturfs = list()
var/throwy = world.maxy
for(var/turf/T in end_location)
dstturfs += T
if(T.y < throwy)
throwy = T.y
// hey you, get out of the way!
for(var/turf/T in dstturfs)
// find the turf to move things to
var/turf/D = locate(T.x, throwy - 1, 1)
//var/turf/E = get_step(D, SOUTH)
for(var/atom/movable/AM as mob|obj in T)
AM.Move(D)
if(istype(T, /turf/simulated))
del(T)
start_location.move_contents_to(end_location)
for(var/turf/T in get_area_turfs(end_location) )
var/mob/M = locate(/mob) in T
M << "\red You have arrived to [station_name]. Commence operation!"
/proc/specops_can_move()
if(specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return 0
else return 1
/obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob)
return src.attack_hand(user)
/obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/specops_shuttle/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob)
if(istype(I,/obj/item/weapon/card/emag))
user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals."
else
return src.attack_hand(user)
/obj/machinery/computer/specops_shuttle/attack_hand(var/mob/user as mob)
if(!src.allowed(user))
user << "\red Access Denied."
return
if(..())
return
user.machine = src
var/dat
if (src.temp)
dat = src.temp
else
dat += {"<BR><B>Special Operations Shuttle</B><HR>
\nLocation: [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "Departing for [station_name] in ([specops_shuttle_timeleft] seconds.)":specops_shuttle_at_station ? "Station":"Dock"]<BR>
[specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*<BR>\n<BR>":specops_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle Offline</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [station_name]</A><BR>\n<BR>"]
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
user << browse(dat, "window=computer;size=575x450")
onclose(user, "computer")
return
/obj/machinery/computer/specops_shuttle/Topic(href, href_list)
if(..())
return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.machine = src
if (href_list["sendtodock"])
if(!specops_shuttle_at_station|| specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return
usr << "\blue Central Command will not allow the Special Operations shuttle to return."
return
else if (href_list["sendtostation"])
if(specops_shuttle_at_station || specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return
if (!specops_can_move())
usr << "\red The Special Operations shuttle is unable to leave."
return
usr << "\blue The Special Operations shuttle will arrive on [station_name] in [(SPECOPS_MOVETIME/10)] seconds."
src.temp += "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
src.updateUsrDialog()
specops_shuttle_moving_to_station = 1
specops_shuttle_time = world.timeofday + SPECOPS_MOVETIME
spawn(0)
specops_process()
else if (href_list["mainmenu"])
src.temp = null
src.add_fingerprint(usr)
src.updateUsrDialog()
return

View File

@@ -7,9 +7,9 @@ var/global/sent_strike_team = 0
if(!ticker)
alert("The game hasn't started yet!")
return
// if(world.time < 6000)
// alert("Not so fast, buddy. Wait a few (10) minutes until the game gets going.")
// return
if(world.time < 6000)
alert("Not so fast, buddy. Wait a few minutes until the game gets going. There are [(6000-world.time)/10] seconds remaining.")
return
if(sent_strike_team == 1)
alert("CentCom is already sending a team, Mr. Dumbass.")
return
@@ -24,7 +24,7 @@ var/global/sent_strike_team = 0
var/commando_number = 6 //for selecting a leader
var/leader_selected = 0 //when the leader is chosen. The last person spawned.
var/commando_leader_rank = pick("2nd Lieutenant", "1st Lieutenant", "Captain", "Major")
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major")
var/list/commando_names = dd_file2list("config/names/last.txt")
//Spawns commandos and equips them.
@@ -69,11 +69,17 @@ var/global/sent_strike_team = 0
new_commando.equip_if_possible(new /obj/item/clothing/glasses/thermal(new_commando), new_commando.slot_glasses)
new_commando.equip_if_possible(new /obj/item/weapon/storage/backpack(new_commando), new_commando.slot_back)
new_commando.equip_if_possible(new /obj/item/weapon/ammo/a357(new_commando), new_commando.slot_in_backpack)
new_commando.equip_if_possible(new /obj/item/weapon/ammo/a357(new_commando), new_commando.slot_in_backpack)
new_commando.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(new_commando), new_commando.slot_in_backpack)
new_commando.equip_if_possible(new /obj/item/weapon/storage/flashbang_kit(new_commando), new_commando.slot_in_backpack)
new_commando.equip_if_possible(new /obj/item/device/flashlight(new_commando), new_commando.slot_in_backpack)
if (leader_selected == 0)
new_commando.equip_if_possible(new /obj/item/weapon/plastique(new_commando), new_commando.slot_in_backpack)
else
new_commando.equip_if_possible(new /obj/item/weapon/pinpointer(new_commando), new_commando.slot_in_backpack)
if (leader_selected == 1)
new_commando.equip_if_possible(new /obj/item/weapon/disk/nuclear(new_commando), new_commando.slot_in_backpack)
new_commando.equip_if_possible(new /obj/item/weapon/sword(new_commando), new_commando.slot_l_store)
new_commando.equip_if_possible(new /obj/item/weapon/flashbang(new_commando), new_commando.slot_r_store)
@@ -82,7 +88,8 @@ var/global/sent_strike_team = 0
var/obj/item/weapon/gun/revolver/GUN = new /obj/item/weapon/gun/revolver/mateba(new_commando)
GUN.bullets = 7
new_commando.equip_if_possible(GUN, new_commando.slot_s_store)
new_commando.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle(new_commando), new_commando.slot_l_hand)
// new_commando.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle(new_commando), new_commando.slot_l_hand)
//Commented out because Commandos now have their rifles spawn in front of them, along with operation manuals.
var/obj/item/weapon/card/id/W = new(new_commando)
W.name = "[new_commando.real_name]'s ID Card"
@@ -116,7 +123,7 @@ var/global/sent_strike_team = 0
for (var/obj/landmark/MANUAL)
if (MANUAL.name == "Commando_Manual")
var/obj/item/weapon/paper/PAPER = new /obj/item/weapon/paper(MANUAL.loc)
PAPER.info = "<p><b>Good morning soldier!</b>. This compact guide will familiarize you with standard operating procedure. There are three basic rules to follow:<br>#1 Work as a team.<br>#2 Accomplish your objective at all costs.<br>#3 Leave no witnesses.<br>You are fully equipped and stocked for your mission--before departing on the Spec. Ops. Shuttle due South, make sure that all operatives are injected with an explosive implant in case of mission failure. Actual objectives will be relayed to you by CentCom.<br>If deemed appropriate, CentCom will also allow members of your team to equip assault power-armor for the mission. You will find the armor storage due West of your position.</p><p>In the event that the team does not accomplish their assigned objective in a timely manner, or finds no other way to do so, attached below are instructions on how to operate a Nanotrasen Nuclear Device. Your operations team is provided with a nuclear authentication disk and a pin-pointer for this reason. The nuclear device will be present somewhere on your destination.</p><p>Hello and thank you for choosing Nanotrasen for your nuclear information needs. Today's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.<br>First and foremost, <b>DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.</b> Pressing any button on the compacted bomb will cause it to extend and bolt itself into place. If this is done to unbolt it one must completely log in which at this time may not be possible.<br>To make the device functional:<br>#1 Place bomb in designated detonation zone<br> #2 Extend and anchor bomb (attack with hand).<br>#3 Insert Nuclear Auth. Disk into slot.<br>#4 Type numeric code into keypad ([nuke_code]).<br>Note: If you make a mistake press R to reset the device.<br>#5 Press the E button to log onto the device.<br>You now have activated the device. To deactivate the buttons at anytime, for example when you have already prepped the bomb for detonation, remove the authentication disk OR press the R on the keypad. Now the bomb CAN ONLY be detonated using the timer. A manual detonation is not an option.<br>Note: Toggle off the <b>SAFETY</b>.<br>Use the - - and + + to set a detonation time between 5 seconds and 10 minutes. Then press the timer toggle button to start the countdown. Now remove the authentication disk so that the buttons deactivate.<br>Note: <b>THE BOMB IS STILL SET AND WILL DETONATE</b><br>Now before you remove the disk if you need to move the bomb you can: Toggle off the anchor, move it, and re-anchor.</p><p>The nuclear authorization code is: <b>[nuke_code]</b></p><p><b>Good luck, soldier!</b></p>"
PAPER.info = "<p><b>Good morning soldier!</b>. This compact guide will familiarize you with standard operating procedure. There are three basic rules to follow:<br>#1 Work as a team.<br>#2 Accomplish your objective at all costs.<br>#3 Leave no witnesses.<br>You are fully equipped and stocked for your mission--before departing on the Spec. Ops. Shuttle due South, make sure that all operatives are ready. Actual mission objective will be relayed to you by Central Command through your headsets.<br>If deemed appropriate, Cent. Com will also allow members of your team to equip assault power-armor for the mission. You will find the armor storage due West of your position. Once you are ready to leave, utilize the Special Operations shuttle console and toggle the hull doors via the other console.</p><p>In the event that the team does not accomplish their assigned objective in a timely manner, or finds no other way to do so, attached below are instructions on how to operate a Nanotrasen Nuclear Device. Your operations <b>LEADER</b> is provided with a nuclear authentication disk and a pin-pointer for this reason. You may easily recognize them by their rank: Lieutenant, Captain, or Major. The nuclear device itself will be present somewhere on your destination.</p><p>Hello and thank you for choosing Nanotrasen for your nuclear information needs. Today's crash course will deal with the operation of a Fission Class Nanotrasen made Nuclear Device.<br>First and foremost, <b>DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.</b> Pressing any button on the compacted bomb will cause it to extend and bolt itself into place. If this is done to unbolt it one must completely log in which at this time may not be possible.<br>To make the device functional:<br>#1 Place bomb in designated detonation zone<br> #2 Extend and anchor bomb (attack with hand).<br>#3 Insert Nuclear Auth. Disk into slot.<br>#4 Type numeric code into keypad ([nuke_code]).<br>Note: If you make a mistake press R to reset the device.<br>#5 Press the E button to log onto the device.<br>You now have activated the device. To deactivate the buttons at anytime, for example when you have already prepped the bomb for detonation, remove the authentication disk OR press the R on the keypad. Now the bomb CAN ONLY be detonated using the timer. A manual detonation is not an option.<br>Note: Toggle off the <b>SAFETY</b>.<br>Use the - - and + + to set a detonation time between 5 seconds and 10 minutes. Then press the timer toggle button to start the countdown. Now remove the authentication disk so that the buttons deactivate.<br>Note: <b>THE BOMB IS STILL SET AND WILL DETONATE</b><br>Now before you remove the disk if you need to move the bomb you can: Toggle off the anchor, move it, and re-anchor.</p><p>The nuclear authorization code is: <b>[nuke_code]</b></p><p><b>Good luck, soldier!</b></p>"
PAPER.name = "Spec. Ops. Manual"
for (var/obj/landmark/BOMB in world)

View File

@@ -262,6 +262,7 @@
#include "code\game\prisonshuttle.dm"
#include "code\game\smoothwall.dm"
#include "code\game\sound.dm"
#include "code\game\specops_shuttle.dm"
#include "code\game\status.dm"
#include "code\game\supplyshuttle.dm"
#include "code\game\syndicate_shuttle.dm"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 56 KiB

File diff suppressed because it is too large Load Diff