Fixed cyborg rev heads counting as living and still being able to flash people.

Normal revs that get borged will be unrev'd.
Added a cooldown to the captains message system.
Cleaned up the Coms computer slightly.
Fixed a few runtimes.
More blob work.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2207 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
mport2004@gmail.com
2011-09-16 05:52:10 +00:00
parent b16a48067e
commit c471fde2f9
22 changed files with 2110 additions and 2162 deletions
+1
View File
@@ -549,6 +549,7 @@ datum
return 1
share(datum/gas_mixture/sharer)
if(!sharer) return 0
var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/5
var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/5
var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/5
-26
View File
@@ -107,32 +107,6 @@
circuit = "/obj/item/weapon/circuitboard/card/centcom"
req_access = list(access_cent_captain)
/obj/machinery/computer/communications
name = "Communications Console"
desc = "This can be used for various important functions. Still under developement."
icon_state = "comm"
req_access = list(access_heads)
circuit = "/obj/item/weapon/circuitboard/communications"
var/prints_intercept = 1
var/authenticated = 0
var/list/messagetitle = list()
var/list/messagetext = list()
var/currmsg = 0
var/aicurrmsg = 0
var/state = STATE_DEFAULT
var/aistate = STATE_DEFAULT
var/const
STATE_DEFAULT = 1
STATE_CALLSHUTTLE = 2
STATE_CANCELSHUTTLE = 3
STATE_MESSAGELIST = 4
STATE_VIEWMESSAGE = 5
STATE_DELMESSAGE = 6
STATE_STATUSDISPLAY = 7
var/status_display_freq = "1435"
var/stat_msg1
var/stat_msg2
/obj/machinery/computer/data
name = "data"
-18
View File
@@ -183,24 +183,6 @@
idle_power_usage = 2
active_power_usage = 4
/obj/machinery/nuclearbomb
desc = "Uh oh. RUN!!!!"
name = "Nuclear Fission Explosive"
icon = 'stationobjs.dmi'
icon_state = "nuclearbomb0"
density = 1
var/deployable = 0.0
var/extended = 0.0
var/timeleft = 60.0
var/timing = 0.0
var/r_code = "ADMIN"
var/code = ""
var/yes_code = 0.0
var/safety = 1.0
var/obj/item/weapon/disk/nuclear/auth = null
flags = FPRINT
use_power = 0
/obj/machinery/restruct
name = "DNA Physical Restructurization Accelerator"
desc = "This looks complex."
+78 -60
View File
@@ -7,9 +7,10 @@
var/const/waittime_h = 3000 //upper bound on time before intercept arrives (in tenths of seconds)
var
declared = 0
stage = 0
next_stage = 0
modestart = 0
autoexpand = 0
/datum/game_mode/blob/announce()
@@ -22,9 +23,10 @@
spawn(10)
start_state = new /datum/station_state()
start_state.count()
// spawn(100)
spawn(rand(waittime_l, waittime_h))
message_admins("Blob spawned and expanding, report created")
blobs = list()
active_blobs = list()
for(var/i = 1 to 3)
@@ -32,20 +34,22 @@
if(location)
if(!locate(/obj/blob in location))
var/obj/blob/blob = new/obj/blob(location)
spawn(100)
spawn(200)
if(blob)
if(blob.blobtype == "Blob")
blob.blobdebug = 1
spawn(40)
modestart = 1
autoexpand = 1
declared = 1
..()
/datum/game_mode/blob/process()
if(modestart)
spawn(0)
life()
stage()
if(declared)
stage()
if(autoexpand)
spawn(0)
life()
return
@@ -60,8 +64,6 @@
if(B.z != 1)
continue
// for (var/atom/A in B.loc)
// A.blob_act()
spawn(0)
B.Life()
@@ -72,37 +74,41 @@
switch(stage)
if (0)
send_intercept()
send_intercept(1)
for (var/mob/living/silicon/ai/aiPlayer in world)
if (aiPlayer.client)
var/law = "The station is under a quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving."
aiPlayer.set_zeroth_law(law)
aiPlayer << "Laws Updated: [law]"
stage = 1
// next stage 5-10 minutes later
next_stage = world.timeofday + 600*rand(2,8)
// next stage 3-6 minutes later
next_stage = world.timeofday + 600*rand(3,6)
if (1)
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
world << sound('outbreak5.ogg')
autoexpand = 0//The blob now has to live on its own
stage = 2
// now check every minute
next_stage = world.timeofday + 600
if (2)
if (blobs.len > 800)//Dono if this should be more or less yet
command_alert("Uncontrolled spread of the biohazard onboard the station. We have issued directive 7-12 for [station_name()].", "Biohazard Alert")
if((blobs.len > 500) && (declared == 1))
command_alert("Uncontrolled spread of the biohazard onboard the station. We have issued directive 7-12 for [station_name()]. Any living Heads of Staff are ordered to enact directive 7-12 at any cost, a print out with detailed instructions has been sent to your communications computers.", "Biohazard Alert")
send_intercept(2)
declared = 2
if(blobs.len > 700)
stage = 3
next_stage = world.timeofday + 600
else
next_stage = world.timeofday + 600
next_stage = world.timeofday + 600
/datum/game_mode/blob/check_finished()
if(!modestart)
if(!declared)
return 0
if(stage >= 3)
return 1
if(station_was_nuked)
return 1
for(var/obj/blob/B in blobs)
if(B.z == 1)
return 0
@@ -110,39 +116,14 @@
/datum/game_mode/blob/declare_completion()
if (stage >= 3)
world << "<FONT size = 3><B>The staff has lost!</B></FONT>"
world << "<B>The station was destroyed by NanoTrasen</B>"
var/numDead = 0
var/numAlive = 0
var/numSpace = 0
var/numOffStation = 0
for (var/mob/living/silicon/ai/aiPlayer in world)
for(var/mob/M in world)
if ((M != aiPlayer && M.client))
if (M.stat == 2)
numDead += 1
else
var/T = M.loc
if (istype(T, /turf/space))
numSpace += 1
else if(istype(T, /turf))
if (M.z!=1)
numOffStation += 1
else
numAlive += 1
if (numSpace==0 && numOffStation==0)
world << "<FONT size = 3><B>The AI has won!</B></FONT>"
world << "<B>The AI successfully maintained the quarantine - no players were in space or were off-station (as far as we can tell).</B>"
log_game("AI won at Blob mode despite overall loss.")
else
world << "<FONT size = 3><B>The AI has lost!</B></FONT>"
world << text("<B>The AI failed to maintain the quarantine - [] were in space and [] were off-station (as far as we can tell).</B>", numSpace, numOffStation)
log_game("AI lost at Blob mode.")
if(stage >= 3)
world << "<FONT size = 3><B>The blob has taken over the station!</B></FONT>"
world << "<B>The entire station was eaten by the Blob</B>"
check_quarantine()
log_game("Blob mode was lost.")
return 1
else if(station_was_nuked)
world << "<FONT size = 3><B>Partial Win: The station has been destroyed!</B></FONT>"
world << "<B>Directive 7-12 has been successfully carried out preventing the Blob from spreading.</B>"
else
world << "<FONT size = 3><B>The staff has won!</B></FONT>"
@@ -150,15 +131,10 @@
var/datum/station_state/end_state = new /datum/station_state()
end_state.count()
var/percent = round( 100.0 * start_state.score(end_state), 0.1)
world << "<B>The station is [percent]% intact.</B>"
log_game("Blob mode was won with station [percent]% intact.")
world << "\blue Rebooting in 30s"
..()
return 1
@@ -178,12 +154,23 @@
intercepttext += " 2. Locate any outbreaks of the organism on the station.<BR>"
intercepttext += " 3. If found, use any neccesary means to contain the organism.<BR>"
intercepttext += " 4. Avoid damage to the capital infrastructure of the station.<BR>"
intercepttext += "<BR>Note in the event of a quarantine breach or uncontrolled spread of the biohazard, the directive 7-10 may be upgraded to a directive 7-12 without further notice.<BR>"
intercepttext += "<BR>Note in the event of a quarantine breach or uncontrolled spread of the biohazard, the directive 7-10 may be upgraded to a directive 7-12.<BR>"
intercepttext += "Message ends."
if(2)
//Bomb code goes here
return
var/nukecode = "ERROR"
for(var/obj/machinery/nuclearbomb/bomb in world)
if(bomb && bomb.r_code)
if(bomb.z == 1)
nukecode = bomb.r_code
interceptname = "Directive 7-12"
intercepttext += "<FONT size = 3><B>NanoTrasen Update</B>: Biohazard Alert.</FONT><HR>"
intercepttext += "Directive 7-12 has been issued for [station_name()].<BR>"
intercepttext += "The biohazard has grown out of control and will soon reach critical mass.<BR>"
intercepttext += "Your orders are as follows:<BR>"
intercepttext += "1. Secure the Nuclear Authentication Disk.<BR>"
intercepttext += "2. Detonate the Nuke located in the Station's Vault.<BR>"
intercepttext += "Nuclear Authentication Code: [nukecode]"
intercepttext += "Message ends."
for(var/obj/machinery/computer/communications/comm in world)
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
@@ -195,7 +182,38 @@
comm.messagetext.Add(intercepttext)
// world << sound('outbreak5.ogg')Quiet printout for now
// command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.")
// world << sound('intercept.ogg')
/datum/game_mode/blob/proc/check_quarantine()
var/numDead = 0
var/numAlive = 0
var/numSpace = 0
var/numOffStation = 0
for (var/mob/living/silicon/ai/aiPlayer in world)
for(var/mob/M in world)
if ((M != aiPlayer && M.client))
if (M.stat == 2)
numDead += 1
else
var/T = M.loc
if (istype(T, /turf/space))
numSpace += 1
else if(istype(T, /turf))
if (M.z!=1)
numOffStation += 1
else
numAlive += 1
if (numSpace==0 && numOffStation==0)
world << "<FONT size = 3><B>The AI has won!</B></FONT>"
world << "<B>The AI successfully maintained the quarantine - no players were in space or were off-station (as far as we can tell).</B>"
log_game("AI won at Blob mode despite overall loss.")
else
world << "<FONT size = 3><B>The AI has lost!</B></FONT>"
world << text("<B>The AI failed to maintain the quarantine - [] were in space and [] were off-station (as far as we can tell).</B>", numSpace, numOffStation)
log_game("AI lost at Blob mode.")
log_game("Blob mode was lost.")
return 1
+28 -25
View File
@@ -9,7 +9,8 @@
anchored = 1
var
active = 1
health = 40
health = 30
brute_resist = 4
blobtype = "Blob"
blobdebug = 0
/*Types
@@ -20,7 +21,7 @@
*/
New(loc, var/h = 40)
New(loc, var/h = 30)
blobs += src
active_blobs += src
src.health = h
@@ -44,13 +45,14 @@
return 0
proc/check_mutations()
proc/check_mutations()//These could be their own objects I guess
if(blobtype != "Blob") return
desc = "This really needs a better sprite"
desc = "This really needs a better sprite."
//Spaceeeeeeblobbb
if(istype(src.loc, /turf/space))
active = 0
health += 40
brute_resist = 2
name = "strong blob"
icon_state = "blob_idle"//needs a new sprite
blobtype = "Shield"
@@ -84,29 +86,32 @@
proc/Life(var/pulse = 0)
set background = 1
if(blobtype == "Factory")
for(var/i = 1 to 2)
new/obj/critter/blob(src.loc)
return
if(check_mutations())
return
if(blobtype == "Factory")
for(var/i = 1 to 2)
new/obj/critter/blob(src.loc)
if(!pulse)
return
if(!prob(health)) return//Does not do much unless its healthy it seems, might want to change this later
for(var/dirn in cardinal)
// sleep(3) Due to the background we might not need this dono though
var/list/dirs = new/list(cardinal)
for(var/i = 1 to 4)
var/dirn = pick(dirs)
dirs.Remove(dirn)
var/turf/T = get_step(src, dirn)
if((locate(/obj/blob) in T))
if(((src.blobtype == "Node") || (pulse > 0))&& (pulse < 12))
if(((src.blobtype == "Node") || (pulse > 0))&& (pulse < 15))
var/obj/blob/E = (locate(/obj/blob) in T)
E.Life((pulse+1))
return//Pass it along and end
continue
var/obj/blob/B = new /obj/blob(src.loc, src.health)
var/obj/blob/B = new /obj/blob(src.loc, min(src.health, 40))//Currently capping blob health at 40 because thats very strong
if(T.Enter(B,src) && !(locate(/obj/blob) in T))
B.loc = T // open cell, so expand
else
@@ -138,10 +143,10 @@
del(src)
return
if(blobtype != "Blob") return
if(health<10)
if(health <= 10)
icon_state = "blob_damaged"
return
if(health<20)
if(health <= 20)
icon_state = "blob_damaged2"
return
@@ -155,21 +160,19 @@
attackby(var/obj/item/weapon/W, var/mob/user)
playsound(src.loc, 'attackblob.ogg', 50, 1)
src.visible_message("\red <B>The [src.name] has been attacked with \the [W][(user ? " by [user]." : ".")]")
var/damage = W.force / 4.0
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.welding)
damage = 15
playsound(src.loc, 'Welder.ogg', 100, 1)
var/damage = 0
switch(W.damtype)
if("fire")
damage = (W.force)
if(istype(W, /obj/item/weapon/weldingtool))
playsound(src.loc, 'Welder.ogg', 100, 1)
if("brute")
damage = (W.force / max(src.brute_resist,1))
src.health -= damage
src.update()
examine()
set src in oview(1)
usr << "Some blob thing."
/datum/station_state/proc/count()
for(var/turf/T in world)
@@ -2,7 +2,6 @@
name = "traitor+changeling"
config_tag = "traitorchan"
traitors_possible = 3 //hard limit on traitors if scaling is turned off
restricted_jobs = list("AI", "Cyborg")
required_players = 20
required_enemies = 2
+1 -22
View File
@@ -63,21 +63,7 @@
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round.
space_ninja_arrival()//Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like.
if(4)
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
world << sound('outbreak5.ogg')
var/turf/T = pick(blobstart)
var/obj/blob/bl = new /obj/blob( T.loc, 30 )
spawn(0)
bl.Life()
bl.Life()
bl.Life()
bl.Life()
bl.Life()
blobevent = 1
dotheblobbaby()
spawn(3000)
blobevent = 0
//start loop here
mini_blob_event()
if(5)
high_radiation_event()
@@ -98,13 +84,6 @@
if(13)
IonStorm()
/proc/dotheblobbaby()
if (blobevent)
for(var/obj/blob/B in world)
if (prob (40))
B.Life()
spawn(30)
dotheblobbaby()
/obj/bhole/New()
src.smoke = new /datum/effects/system/harmless_smoke_spread()
+23
View File
@@ -0,0 +1,23 @@
/proc/mini_blob_event()
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
world << sound('outbreak5.ogg')
var/turf/T = pick(blobstart)
var/obj/blob/bl = new /obj/blob( T.loc, 30 )
spawn(0)
bl.Life()
bl.Life()
bl.Life()
bl.Life()
bl.Life()
blobevent = 1
dotheblobbaby()
spawn(3000)
blobevent = 0
/proc/dotheblobbaby()
if (blobevent)
for(var/obj/blob/B in world)
if (prob (40))
B.Life()
spawn(30)
dotheblobbaby()
+30 -5
View File
@@ -1,3 +1,21 @@
/obj/machinery/nuclearbomb
desc = "Uh oh. RUN!!!!"
name = "Nuclear Fission Explosive"
icon = 'stationobjs.dmi'
icon_state = "nuclearbomb0"
density = 1
var/deployable = 0.0
var/extended = 0.0
var/timeleft = 60.0
var/timing = 0.0
var/r_code = "ADMIN"
var/code = ""
var/yes_code = 0.0
var/safety = 1.0
var/obj/item/weapon/disk/nuclear/auth = null
flags = FPRINT
use_power = 0
/obj/machinery/nuclearbomb/New()
..()
r_code = "[rand(10000, 99999.0)]"//Creates a random code upon object spawn.
@@ -58,9 +76,7 @@
..()
if (usr.stat || usr.restrained())
return
if ( ! (istype(usr, /mob/living/carbon/human) || \
istype(usr, /mob/living/silicon) || \
istype(usr, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") )
if (!ishuman(usr))
usr << "\red You don't have the dexterity to do this!"
return 1
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
@@ -121,11 +137,11 @@
return
return
//this whole thing is retarded???
/obj/machinery/nuclearbomb/ex_act(severity)
return
/obj/machinery/nuclearbomb/blob_act()
if (src.timing == -1.0)
return
@@ -133,6 +149,7 @@
return ..()
return
/obj/machinery/nuclearbomb/proc/explode()
if (src.safety)
src.timing = 0
@@ -152,6 +169,9 @@
*/
enter_allowed = 0
var/derp = 0
for (var/turf/T in range(1,src))
if (!is_type_in_list(T.loc, the_station_areas))
@@ -184,7 +204,12 @@
as it will return null). Leaving this for you since you apparently plan to work this further. /N
*/
ticker.mode.check_win()
if(!ticker.mode.check_win())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is
world << "<B>Resetting in 30 seconds!</B>"
sleep(300)
log_game("Rebooting due to nuclear detonation")
world.Reboot()
return
/obj/item/weapon/disk/nuclear/Del()
+12 -5
View File
@@ -177,6 +177,7 @@
for(var/mob/living/M in view(rev_mind.current))
M << "[rev_mind.current] looks like they just remembered their real allegiance!"
/////////////////////////////////////////////////////////////////////////////////////////////////
//Keeps track of players having the correct icons////////////////////////////////////////////////
//CURRENTLY CONTAINS BUGS:///////////////////////////////////////////////////////////////////////
@@ -291,8 +292,9 @@
/////////////////////////////
/datum/game_mode/revolution/proc/check_heads_victory()
for(var/datum/mind/rev_mind in head_revolutionaries)
if(rev_mind && rev_mind.current && rev_mind.current.stat != 2)
return 0
if((rev_mind) && (rev_mind.current) && ((rev_mind.current.stat != 2) || (rev_mind.current.z != 1)))
if(ishuman(rev_mind.current))
return 0
return 1
//////////////////////////////////////////////////////////////////////
@@ -311,7 +313,12 @@
var/list/names = new
for(var/datum/mind/i in head_revolutionaries)
if(i.current)
names += i.current.real_name + ((i.current.stat==2)?" (Dead)":"")
var/hstatus = ""
if(i.current.stat == 2)
hstatus = " Dead"
else if(i.current.z != 1)
hstatus = " Abandoned the station"
names += i.current.real_name + " ([hstatus])"
else
names += "[i.key] (character destroyed)"
world << "<FONT size = 2><B>The head revolutionaries were: </B></FONT>"
@@ -325,7 +332,7 @@
hstatus = " Dead"
else if(i.current.z != 1)
hstatus = " Abandoned the station"
names += i.current.real_name + " [hstatus]"
names += i.current.real_name + " ([hstatus])"
else
names += "[i.key] (character destroyed)"
if (revolutionaries.len!=0)
@@ -350,7 +357,7 @@
hstatus = " Dead"
else if(i.current.z != 1)
hstatus = " Abandoned the station"
names += i.current.real_name + " [hstatus]" + ((i in targets)?"(target)":"")
names += i.current.real_name + " ([hstatus])" + ((i in targets)?"(target)":"")
else
names += "[i.key] (character destroyed)" + ((i in targets)?"(target)":"")
if (heads.len!=0)
+18 -19
View File
@@ -748,9 +748,7 @@ Auto Patrol: []"},
/obj/machinery/bot/ed209/emp_act(severity)
if (cam)
cam.emp_act(severity)
if (severity > 2)
..(severity-1)
else if (severity==2 && prob(70))
if(severity==2 && prob(70))
..(severity-1)
else
var/obj/overlay/pulse2 = new/obj/overlay ( src.loc )
@@ -766,22 +764,23 @@ Auto Patrol: []"},
if (C.stat==2)
continue
targets += C
if (prob(50))
var/mob/toshoot = pick(targets)
if (toshoot)
targets-=toshoot
if (prob(50) && !emagged)
emagged = 1
shootAt(toshoot)
emagged = 0
else
shootAt(toshoot)
if (/*prob(50)*/ 1 )
var/mob/toarrest = pick(targets)
if (toarrest)
//targets-=toarrest
src.target = toarrest
src.mode = SECBOT_HUNT
if(targets.len)
if(prob(50))
var/mob/toshoot = pick(targets)
if (toshoot)
targets-=toshoot
if (prob(50) && !emagged)
emagged = 1
shootAt(toshoot)
emagged = 0
else
shootAt(toshoot)
else if(prob(50))
if(targets.len)
var/mob/toarrest = pick(targets)
if (toarrest)
src.target = toarrest
src.mode = SECBOT_HUNT
+49 -114
View File
@@ -1,10 +1,39 @@
// The communications computer
/obj/machinery/computer/communications
name = "Communications Console"
desc = "This can be used for various important functions. Still under developement."
icon_state = "comm"
req_access = list(access_heads)
circuit = "/obj/item/weapon/circuitboard/communications"
var/prints_intercept = 1
var/authenticated = 0
var/list/messagetitle = list()
var/list/messagetext = list()
var/currmsg = 0
var/aicurrmsg = 0
var/state = STATE_DEFAULT
var/aistate = STATE_DEFAULT
var/message_cooldown = 0
var/const
STATE_DEFAULT = 1
STATE_CALLSHUTTLE = 2
STATE_CANCELSHUTTLE = 3
STATE_MESSAGELIST = 4
STATE_VIEWMESSAGE = 5
STATE_DELMESSAGE = 6
STATE_STATUSDISPLAY = 7
var/status_display_freq = "1435"
var/stat_msg1
var/stat_msg2
/obj/machinery/computer/communications/process()
..()
if(state != STATE_STATUSDISPLAY)
src.updateDialog()
/obj/machinery/computer/communications/Topic(href, href_list)
if(..())
return
@@ -29,19 +58,20 @@
authenticated = 2
if("logout")
authenticated = 0
if("nolockdown")
disablelockdown(usr)
post_status("alert", "default")
if("announce")
if(src.authenticated==2)
if(message_cooldown) return
var/input = input(usr, "Please choose a message to announce to the station crew.", "What?", "")
if(!input)
return
captain_announce(input)
captain_announce(input)//This should really tell who is, IE HoP, CE, HoS, RD, Captain
log_say("[key_name(usr)] has made a captain announcement: [input]")
message_admins("[key_name_admin(usr)] has made a captain announcement.", 1)
if("call-prison")
call_prison_shuttle(usr)
message_cooldown = 1
spawn(600)//One minute cooldown
message_cooldown = 0
if("callshuttle")
src.state = STATE_DEFAULT
if(src.authenticated)
@@ -49,10 +79,8 @@
if("callshuttle2")
if(src.authenticated)
call_shuttle_proc(usr)
if(emergency_shuttle.online)
post_status("shuttle")
src.state = STATE_DEFAULT
if("cancelshuttle")
src.state = STATE_DEFAULT
@@ -142,26 +170,15 @@
src.aistate = STATE_STATUSDISPLAY
src.updateUsrDialog()
/proc/disablelockdown(var/mob/usr)
world << "\red Lockdown cancelled by [usr.name]!"
for(var/obj/machinery/firealarm/FA in world) //deactivate firealarms
spawn( 0 )
if(FA.lockdownbyai == 1)
FA.lockdownbyai = 0
FA.reset()
for(var/obj/machinery/door/airlock/AL in world) //open airlocks
spawn ( 0 )
if(AL.canAIControl() && AL.lockdownbyai == 1)
AL.open()
AL.lockdownbyai = 0
/obj/machinery/computer/communications/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/communications/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/communications/attack_hand(var/mob/user as mob)
if(..())
return
@@ -184,8 +201,6 @@
if(STATE_DEFAULT)
if (src.authenticated)
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=logout'>Log Out</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=call-prison'>Send Prison Shutle</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=nolockdown'>Disable Lockdown</A> \]"
if (src.authenticated==2)
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=announce'>Make An Announcement</A> \]"
if(emergency_shuttle.location==0)
@@ -245,9 +260,7 @@
if(STATE_DEFAULT)
if(emergency_shuttle.location==0 && !emergency_shuttle.online)
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-callshuttle'>Call Emergency Shuttle</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=call-prison'>Send Prison Shutle</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-messagelist'>Message List</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=nolockdown'>Disable Lockdown</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-status'>Set Status Display</A> \]"
if(STATE_CALLSHUTTLE)
dat += "Are you sure you want to call the shuttle? \[ <A HREF='?src=\ref[src];operation=ai-callshuttle2'>OK</A> | <A HREF='?src=\ref[src];operation=ai-main'>Cancel</A> \]"
@@ -303,53 +316,6 @@
return
/proc/call_prison_shuttle(var/mob/usr)
if ((!( ticker ) || emergency_shuttle.location == 1))
return
if(ticker.mode.name == "blob" || ticker.mode.name == "Corporate Restructuring" || ticker.mode.name == "sandbox")
usr << "Under directive 7-10, [station_name()] is quarantined until further notice."
return
if(ticker.mode.name == "revolution")
usr << "Centcom will not allow the shuttle to be called, due to the possibility of sabotage by revolutionaries."
return
if(ticker.mode.name == "AI malfunction")
usr << "Centcom will not allow the shuttle to be called."
return
for(var/obj/machinery/computer/prison_shuttle/PS in world)
if(!PS.allowedtocall)
usr << "\red Centcom will not allow the shuttle to be called"
return
if(PS.z == 3)
usr << "\red Already in transit! Please wait!"
return
var/A = locate(/area/shuttle/prison/)
for(var/mob/M in A)
M.show_message("\red Launch sequence initiated!")
spawn(0) shake_camera(M, 10, 1)
sleep(10)
if(PS.z == 2) //This is the laziest proc ever
for(var/atom/movable/AM as mob|obj in A)
AM.z = 3
AM.Move()
sleep(rand(600,1800))
for(var/atom/movable/AM as mob|obj in A)
AM.z = 1
AM.Move()
else
for(var/atom/movable/AM as mob|obj in A)
AM.z = 3
AM.Move()
sleep(rand(600,1800))
for(var/atom/movable/AM as mob|obj in A)
AM.z = 2
AM.Move()
for(var/mob/M in A)
M.show_message("\red Prison shuttle has arrived at destination!")
return
return
/proc/enable_prison_shuttle(var/mob/user)
for(var/obj/machinery/computer/prison_shuttle/PS in world)
PS.allowedtocall = !(PS.allowedtocall)
@@ -358,39 +324,27 @@
if ((!( ticker ) || emergency_shuttle.location))
return
if(sent_strike_team == 1)
user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated."
return
if(world.time < 6000) // Ten minute grace period to let the game get going without lolmetagaming. -- TLE
if(sent_strike_team == 1)
user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated."
return
else
user << "The emergency shuttle is refueling. Please wait another [(6000-world.time)/10] seconds before trying again."
return
user << "The emergency shuttle is refueling. Please wait another [(6000-world.time)/10] seconds before trying again."
return
if(emergency_shuttle.direction == -1)
user << "Shuttle may not be called while returning to CentCom."
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." //Old code
//if(sent_strike_team == 1)
// user << "Consider all contracts terminated."
//return
if(sent_strike_team == 1)
user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated."
return
if(ticker.mode.name == "revolution" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "sandbox")
//New version pretends to call the shuttle but cause the shuttle to return after a random duration.
emergency_shuttle.fake_recall = rand(300,500)
if(sent_strike_team == 1)
if(ticker.mode.name != "revolution" || ticker.mode.name != "AI malfunction")
user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated."
if(ticker.mode.name == "blob")
if(ticker.mode:declared)
user << "Under directive 7-10, [station_name()] is quarantined until further notice."
return
if(ticker.mode.name == "blob" || ticker.mode.name == "sandbox")
user << "Under directive 7-10, [station_name()] is quarantined until further notice."
return
emergency_shuttle.incall()
log_game("[key_name(user)] has called the shuttle.")
message_admins("[key_name_admin(user)] has called the shuttle.", 1)
@@ -399,6 +353,7 @@
return
/proc/cancel_call_proc(var/mob/user)
if ((!( ticker ) || emergency_shuttle.location || emergency_shuttle.direction == 0 || emergency_shuttle.timeleft() < 300))
return
@@ -417,8 +372,6 @@
if(!frequency) return
var/datum/signal/status_signal = new
status_signal.source = src
status_signal.transmission_method = 1
@@ -434,24 +387,6 @@
frequency.post_signal(src, status_signal)
/*
receive_signal(datum/signal/signal)
switch(signal.data["command"])
if("blank")
mode = 0
if("shuttle")
mode = 1
if("message")
set_message(signal.data["msg1"], signal.data["msg2"])
if("alert")
set_picture(signal.data["picture_state"])
*/
/obj/machinery/computer/communications/Del()
for(var/obj/machinery/computer/communications/commconsole in world)
+7 -6
View File
@@ -409,12 +409,13 @@ var/list/sacrificed = list()
while(this_rune && user && user.stat==0 && user.client && user.loc==this_rune.loc)
user.take_organ_damage(1, 0)
sleep(30)
D.visible_message("\red [D] slowly dissipates into dust and bones.", \
"\red You feel pain, as bonds formed between your soul and this homunculus break.", \
"\red You hear faint rustle.")
ghost.invisibility = 10
ghost.key = D.key
D.dust(1)
if(D)
D.visible_message("\red [D] slowly dissipates into dust and bones.", \
"\red You feel pain, as bonds formed between your soul and this homunculus break.", \
"\red You hear faint rustle.")
ghost.invisibility = 10
ghost.key = D.key
D.dust(1)
return
+1 -1
View File
@@ -45,7 +45,7 @@
M.weakened = 10
flick("e_flash", M.flash)
if(ishuman(M))
if(ishuman(M) && ishuman(user))
if(user.mind in ticker.mode.head_revolutionaries)
var/revsafe = 0
for(var/obj/item/weapon/implant/loyalty/L in M)
+4 -3
View File
@@ -260,9 +260,10 @@
Metroid.Discipline++
spawn()
Metroid.SStun = 1
sleep(rand(5,20))
Metroid.SStun = 0
if(Metroid)
Metroid.SStun = 1
sleep(rand(5,20))
Metroid.SStun = 0
spawn(0)
Metroid.canmove = 0
+2 -14
View File
@@ -1257,20 +1257,8 @@
spawn(rand(300,600))
del(P)
if("goblob")
command_alert("Confirmed anomaly type SPC-MGM-152 aboard [station_name()]. All personnel must destroy the anomaly.", "Anomaly Alert")
world << sound('outbreak5.ogg')
var/turf/T = pick(blobstart)
var/obj/blob/bl = new /obj/blob( T.loc, 30 )
spawn(0)
bl.Life()
bl.Life()
bl.Life()
bl.Life()
bl.Life()
blobevent = 1
dotheblobbaby()
spawn(3000)
blobevent = 0
mini_blob_event()
message_admins("[key_name_admin(usr)] has spawned blob", 1)
if("aliens")
if(aliens_allowed)
alien_infestation()
+6 -2
View File
@@ -40,8 +40,7 @@ var/mining_shuttle_moving = 0
var/mining_shuttle_location = 0 // 0 = station 13, 1 = mining station
proc/move_mining_shuttle()
if (mining_shuttle_moving)
return
if(mining_shuttle_moving) return
mining_shuttle_moving = 1
spawn(mining_shuttle_tickstomove*10)
var/area/fromArea
@@ -80,6 +79,11 @@ proc/move_mining_shuttle()
usr.machine = src
src.add_fingerprint(usr)
if(href_list["move"])
if(ticker.mode.name == "blob")
if(ticker.mode:declared)
usr << "Under directive 7-10, [station_name()] is quarantined until further notice."
return
if (!mining_shuttle_moving)
usr << "\blue shuttle called and will arrive shortly"
move_mining_shuttle()
+5 -1
View File
@@ -60,13 +60,17 @@
spawn(0)
ainame(src)
if(src.mind)
ticker.mode.remove_revolutionary(src.mind)
return
/mob/living/silicon/ai/verb/pick_icon()
set category = "AI Commands"
set name = "Change AI Core Display"
if(stat || aiRestorePowerRoutine)
return
//if(icon_state == initial(icon_state))
var/icontype = input("Please, select a display!", "AI", null/*, null*/) in list("Clown", "HAL9000", "Monochrome", "Blue", "HAL9000 Mark2", "Inverted", "Firewall", "Green")
if(icontype == "Clown")
@@ -35,6 +35,8 @@
var/obj/item/weapon/cell/C = new(src)
C.charge = 1500
cell = C
if(src.mind)
ticker.mode.remove_revolutionary(src.mind)
..()
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
+3 -1
View File
@@ -2245,8 +2245,10 @@ note dizziness decrements automatically in the mob's Life() proc.
if("nuclear emergency")
if (!derp) boom.icon_state = "loss_nuke"
else boom.icon_state = "loss_nuke2"
if("AI malfunction")
if("malfunction")
boom.icon_state = "loss_malf"
if("blob")
return//Nothin here yet and the general one does not fit.
else
boom.icon_state = "loss_general"
#elif
+1839 -1839
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -354,6 +354,7 @@
#include "code\game\gamemodes\cult\cult_items.dm"
#include "code\game\gamemodes\events\clang.dm"
#include "code\game\gamemodes\events\dust.dm"
#include "code\game\gamemodes\events\miniblob.dm"
#include "code\game\gamemodes\events\ninja_abilities.dm"
#include "code\game\gamemodes\events\ninja_equipment.dm"
#include "code\game\gamemodes\events\space_ninja.dm"