Fixes reflection, various security level fixes, gamma armory update, communication console fixes

This commit is contained in:
Markolie
2014-11-29 02:05:42 +01:00
parent 7e544c17bc
commit ae8f08e2b8
18 changed files with 827 additions and 686 deletions

View File

@@ -423,6 +423,7 @@
#include "code\game\machinery\spaceheater.dm" #include "code\game\machinery\spaceheater.dm"
#include "code\game\machinery\status_display.dm" #include "code\game\machinery\status_display.dm"
#include "code\game\machinery\suit_storage_unit.dm" #include "code\game\machinery\suit_storage_unit.dm"
#include "code\game\machinery\supply_display.dm"
#include "code\game\machinery\syndicatebeacon.dm" #include "code\game\machinery\syndicatebeacon.dm"
#include "code\game\machinery\syndicatebomb.dm" #include "code\game\machinery\syndicatebomb.dm"
#include "code\game\machinery\telepad.dm" #include "code\game\machinery\telepad.dm"

View File

@@ -108,11 +108,12 @@ var/global/datum/crafting_controller/crafting_master
location.craft_holder = src location.craft_holder = src
holder = location holder = location
spawn(50) spawn(50)
crafting_master.all_crafting_points |= src if(crafting_master)
if(family_name) crafting_master.all_crafting_points |= src
family = crafting_master.get_family_by_name(family_name) if(family_name)
if(family) family = crafting_master.get_family_by_name(family_name)
recipes = family.recipes if(family)
recipes = family.recipes
/datum/crafting_holder/proc/add_recipe(recipe) /datum/crafting_holder/proc/add_recipe(recipe)
recipes |= recipe recipes |= recipe

View File

@@ -154,9 +154,9 @@
set category = "Malfunction" set category = "Malfunction"
set name = "System Override" set name = "System Override"
set desc = "Start the victory timer" set desc = "Start the victory timer"
if (!istype(ticker.mode,/datum/game_mode/malfunction)) //if (!istype(ticker.mode,/datum/game_mode/malfunction))
usr << "You cannot begin a takeover in this round type!." //usr << "You cannot begin a takeover in this round type!."
return //return
if (ticker.mode:malf_mode_declared) if (ticker.mode:malf_mode_declared)
usr << "You've already begun your takeover." usr << "You've already begun your takeover."
return return

View File

@@ -1027,7 +1027,7 @@ FIRE ALARM
*/ */
/obj/machinery/firealarm /obj/machinery/firealarm
name = "fire alarm" name = "fire alarm"
desc = "<i>\"Pull this in case of emergency\"<i>. Thus, keep pulling it forever." desc = "<i>\"Pull this in case of emergency\"</i>. Thus, keep pulling it forever."
icon = 'icons/obj/monitors.dmi' icon = 'icons/obj/monitors.dmi'
icon_state = "fire0" icon_state = "fire0"
var/detecting = 1.0 var/detecting = 1.0
@@ -1293,7 +1293,7 @@ FIRE ALARM
pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24)
pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0
if(z == 1) if(z == 1 || z == 5)
if(security_level) if(security_level)
src.overlays += image('icons/obj/monitors.dmi', "overlay_[get_security_level()]") src.overlays += image('icons/obj/monitors.dmi', "overlay_[get_security_level()]")
else else

View File

@@ -1,4 +1,3 @@
#define CHARS_PER_LINE 5
#define FONT_SIZE "5pt" #define FONT_SIZE "5pt"
#define FONT_COLOR "#09f" #define FONT_COLOR "#09f"
#define FONT_STYLE "Arial Black" #define FONT_STYLE "Arial Black"
@@ -10,7 +9,6 @@
// Use to show shuttle ETA/ETD times // Use to show shuttle ETA/ETD times
// Alert status // Alert status
// And arbitrary messages set by comms computer // And arbitrary messages set by comms computer
/obj/machinery/status_display /obj/machinery/status_display
icon = 'icons/obj/status_display.dmi' icon = 'icons/obj/status_display.dmi'
icon_state = "frame" icon_state = "frame"
@@ -32,202 +30,185 @@
var/index2 var/index2
var/frequency = 1435 // radio frequency var/frequency = 1435 // radio frequency
var/supply_display = 0 // true if a supply shuttle display
var/friendc = 0 // track if Friend Computer mode var/friendc = 0 // track if Friend Computer mode
var/ignore_friendc = 0
var/spookymode=0 // Ghosts. var/spookymode = 0
maptext_height = 26 maptext_height = 26
maptext_width = 32 maptext_width = 32
// new display var/const/CHARS_PER_LINE = 5
// register for radio system var/const/STATUS_DISPLAY_BLANK = 0
New() var/const/STATUS_DISPLAY_TRANSFER_SHUTTLE_TIME = 1
..() var/const/STATUS_DISPLAY_MESSAGE = 2
spawn(5) // must wait for map loading to finish var/const/STATUS_DISPLAY_ALERT = 3
if(radio_controller) var/const/STATUS_DISPLAY_TIME = 4
radio_controller.add_object(src, frequency) var/const/STATUS_DISPLAY_CUSTOM = 99
// register for radio system
/obj/machinery/status_display/initialize()
..()
if(radio_controller)
radio_controller.add_object(src, frequency)
// timed process // timed process
process() /obj/machinery/status_display/process()
if(stat & NOPOWER) if(stat & NOPOWER)
remove_display()
return
if(spookymode)
spookymode = 0
remove_display()
return
update()
emp_act(severity)
if(stat & (BROKEN|NOPOWER))
..(severity)
return
set_picture("ai_bsod")
..(severity)
// set what is displayed
proc/update()
if(friendc && mode!=4) //Makes all status displays except supply shuttle timer display the eye -- Urist
set_picture("ai_friend")
return
switch(mode)
if(0) //blank
remove_display()
if(1) //emergency shuttle timer
if(emergency_shuttle.waiting_to_leave())
var/line1 = "-ETD-"
var/line2
if (emergency_shuttle.shuttle.is_launching())
line2 = "Launch"
else
line2 = get_shuttle_timer_departure()
if(length(line2) > CHARS_PER_LINE)
line2 = "Error!"
update_display(line1, line2)
else if(emergency_shuttle.has_eta())
var/line1 = "-ETA-"
var/line2 = get_shuttle_timer_arrival()
if(length(line2) > CHARS_PER_LINE)
line2 = "Error!"
update_display(line1, line2)
else
remove_display()
if(2) //custom messages
var/line1
var/line2
if(!index1)
line1 = message1
else
line1 = copytext(message1+"|"+message1, index1, index1+CHARS_PER_LINE)
var/message1_len = length(message1)
index1 += SCROLL_SPEED
if(index1 > message1_len)
index1 -= message1_len
if(!index2)
line2 = message2
else
line2 = copytext(message2+"|"+message2, index2, index2+CHARS_PER_LINE)
var/message2_len = length(message2)
index2 += SCROLL_SPEED
if(index2 > message2_len)
index2 -= message2_len
update_display(line1, line2)
if(4) // supply shuttle timer
var/line1 = "SUPPLY"
var/line2 = ""
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
if (!shuttle)
line2 = "Error"
else if(shuttle.has_arrive_time())
line2 = get_supply_shuttle_timer()
if(lentext(line2) > CHARS_PER_LINE)
line2 = "Error"
else if (shuttle.is_launching())
if (shuttle.at_station())
line2 = "Launch"
else
line2 = "ETA"
else
if(shuttle.at_station())
line2 = "Docked"
else
line1 = ""
update_display(line1, line2)
examine()
set src in view()
. = ..()
switch(mode)
if(1,2,4)
usr << "The display says:<br>\t<xmp>[message1]</xmp><br>\t<xmp>[message2]</xmp>"
proc/set_message(m1, m2)
if(m1)
index1 = (length(m1) > CHARS_PER_LINE)
message1 = m1
else
message1 = ""
index1 = 0
if(m2)
index2 = (length(m2) > CHARS_PER_LINE)
message2 = m2
else
message2 = ""
index2 = 0
proc/set_picture(state)
picture_state = state
remove_display() remove_display()
overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) return
if(spookymode)
spookymode = 0
remove_display()
return
update()
proc/update_display(line1, line2) /obj/machinery/status_display/emp_act(severity)
var/new_text = {"<div style="font-size:[FONT_SIZE];color:[FONT_COLOR];font:'[FONT_STYLE]';text-align:center;" valign="top">[line1]<br>[line2]</div>"} if(stat & (BROKEN|NOPOWER))
if(maptext != new_text) ..(severity)
maptext = new_text return
set_picture("ai_bsod")
..(severity)
proc/get_shuttle_timer_arrival() // set what is displayed
var/timeleft = emergency_shuttle.estimate_arrival_time() /obj/machinery/status_display/proc/update()
if(timeleft < 0) if(friendc && !ignore_friendc)
return "" set_picture("ai_friend")
return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]" return 1
proc/get_shuttle_timer_departure() switch(mode)
var/timeleft = emergency_shuttle.estimate_launch_time() if(STATUS_DISPLAY_BLANK) //blank
if(timeleft < 0) remove_display()
return "" return 1
return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]" if(STATUS_DISPLAY_TRANSFER_SHUTTLE_TIME) //emergency shuttle timer
if(emergency_shuttle.waiting_to_leave())
message1 = "-ETD-"
if (emergency_shuttle.shuttle.is_launching())
message2 = "Launch"
else
message2 = get_shuttle_timer_departure()
if(length(message2) > CHARS_PER_LINE)
message2 = "Error"
update_display(message1, message2)
else if(emergency_shuttle.has_eta())
message1 = "-ETA-"
message2 = get_shuttle_timer_arrival()
if(length(message2) > CHARS_PER_LINE)
message2 = "Error"
update_display(message1, message2)
else
remove_display()
return 1
if(STATUS_DISPLAY_MESSAGE) //custom messages
var/line1
var/line2
proc/get_supply_shuttle_timer() if(!index1)
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle line1 = message1
if (!shuttle) else
return "Error" line1 = copytext(message1+"|"+message1, index1, index1+CHARS_PER_LINE)
var/message1_len = length(message1)
index1 += SCROLL_SPEED
if(index1 > message1_len)
index1 -= message1_len
if(shuttle.has_arrive_time()) if(!index2)
var/timeleft = round((shuttle.arrive_time - world.time) / 10,1) line2 = message2
if(timeleft < 0) else
return "Late" line2 = copytext(message2+"|"+message2, index2, index2+CHARS_PER_LINE)
return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]" var/message2_len = length(message2)
index2 += SCROLL_SPEED
if(index2 > message2_len)
index2 -= message2_len
update_display(line1, line2)
return 1
if(STATUS_DISPLAY_TIME)
message1 = "TIME"
message2 = worldtime2text()
update_display(message1, message2)
return 1
return 0
/obj/machinery/status_display/examine()
set src in view()
. = ..()
if(mode != STATUS_DISPLAY_BLANK && mode != STATUS_DISPLAY_ALERT)
usr << "The display says:<br>\t[sanitize(message1)]<br>\t[sanitize(message2)]"
/obj/machinery/status_display/proc/set_message(m1, m2)
if(m1)
index1 = (length(m1) > CHARS_PER_LINE)
message1 = m1
else
message1 = ""
index1 = 0
if(m2)
index2 = (length(m2) > CHARS_PER_LINE)
message2 = m2
else
message2 = ""
index2 = 0
/obj/machinery/status_display/proc/set_picture(state)
picture_state = state
remove_display()
overlays += image('icons/obj/status_display.dmi', icon_state=picture_state)
/obj/machinery/status_display/proc/update_display(line1, line2)
var/new_text = {"<div style="font-size:[FONT_SIZE];color:[FONT_COLOR];font:'[FONT_STYLE]';text-align:center;" valign="top">[line1]<br>[line2]</div>"}
if(maptext != new_text)
maptext = new_text
/obj/machinery/status_display/proc/get_shuttle_timer_arrival()
var/timeleft = emergency_shuttle.estimate_arrival_time()
if(timeleft < 0)
return "" return ""
return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]"
proc/remove_display() /obj/machinery/status_display/proc/get_shuttle_timer_departure()
if(overlays.len) var/timeleft = emergency_shuttle.estimate_launch_time()
overlays.Cut() if(timeleft < 0)
if(maptext) return ""
maptext = "" return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]"
/obj/machinery/status_display/proc/get_supply_shuttle_timer()
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
if (!shuttle)
return "Error"
receive_signal(datum/signal/signal) if(shuttle.has_arrive_time())
var/timeleft = round((shuttle.arrive_time - world.time) / 10,1)
if(timeleft < 0)
return "Late"
return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]"
return ""
switch(signal.data["command"]) /obj/machinery/status_display/proc/remove_display()
if("blank") if(overlays.len)
mode = 0 overlays.Cut()
if(maptext)
maptext = ""
if("shuttle") /obj/machinery/status_display/receive_signal(datum/signal/signal)
mode = 1 switch(signal.data["command"])
if("blank")
mode = STATUS_DISPLAY_BLANK
if("message") if("shuttle")
mode = 2 mode = STATUS_DISPLAY_TRANSFER_SHUTTLE_TIME
set_message(signal.data["msg1"], signal.data["msg2"])
if("alert") if("message")
mode = 3 mode = STATUS_DISPLAY_MESSAGE
set_picture(signal.data["picture_state"]) set_message(signal.data["msg1"], signal.data["msg2"])
if("supply")
if(supply_display)
mode = 4
if("alert")
mode = STATUS_DISPLAY_ALERT
set_picture(signal.data["picture_state"])
if("time")
mode = STATUS_DISPLAY_TIME
/obj/machinery/ai_status_display /obj/machinery/ai_status_display
icon = 'icons/obj/status_display.dmi' icon = 'icons/obj/status_display.dmi'
@@ -236,8 +217,8 @@
anchored = 1 anchored = 1
density = 0 density = 0
var/spookymode=0 // Ghosts var/spookymode = 0
var/mode = 0 // 0 = Blank var/mode = 0 // 0 = Blank
// 1 = AI emoticon // 1 = AI emoticon
// 2 = Blue screen of death // 2 = Blue screen of death
@@ -246,72 +227,74 @@
var/emotion = "Neutral" var/emotion = "Neutral"
/obj/machinery/ai_status_display/process()
if(stat & NOPOWER)
overlays.Cut()
return
if(spookymode)
spookymode = 0
overlays.Cut()
return
update()
process() /obj/machinery/ai_status_display/emp_act(severity)
if(stat & NOPOWER) if(stat & (BROKEN|NOPOWER))
overlays.Cut()
return
if(spookymode)
spookymode = 0
overlays.Cut()
return
update()
emp_act(severity)
if(stat & (BROKEN|NOPOWER))
..(severity)
return
set_picture("ai_bsod")
..(severity) ..(severity)
return
set_picture("ai_bsod")
..(severity)
proc/update() /obj/machinery/ai_status_display/proc/update()
if(mode==0) //Blank
overlays.Cut()
return
if(mode==0) //Blank if(mode==1) // AI emoticon
overlays.Cut() switch(emotion)
return if("Very Happy")
set_picture("ai_veryhappy")
if("Happy")
set_picture("ai_happy")
if("Neutral")
set_picture("ai_neutral")
if("Unsure")
set_picture("ai_unsure")
if("Confused")
set_picture("ai_confused")
if("Sad")
set_picture("ai_sad")
if("Surprised")
set_picture("ai_surprised")
if("Upset")
set_picture("ai_upset")
if("Angry")
set_picture("ai_angry")
if("BSOD")
set_picture("ai_bsod")
if("Blank")
set_picture("ai_off")
if("Problems?")
set_picture("ai_trollface")
if("Awesome")
set_picture("ai_awesome")
if("Dorfy")
set_picture("ai_urist")
if("Facepalm")
set_picture("ai_facepalm")
if("Friend Computer")
set_picture("ai_friend")
return
if(mode==1) // AI emoticon if(mode==2) // BSOD
switch(emotion) set_picture("ai_bsod")
if("Very Happy") return
set_picture("ai_veryhappy")
if("Happy")
set_picture("ai_happy")
if("Neutral")
set_picture("ai_neutral")
if("Unsure")
set_picture("ai_unsure")
if("Confused")
set_picture("ai_confused")
if("Sad")
set_picture("ai_sad")
if("BSOD")
set_picture("ai_bsod")
if("Blank")
set_picture("ai_off")
if("Problems?")
set_picture("ai_trollface")
if("Awesome")
set_picture("ai_awesome")
if("Dorfy")
set_picture("ai_urist")
if("Facepalm")
set_picture("ai_facepalm")
if("Friend Computer")
set_picture("ai_friend")
return
if(mode==2) // BSOD
set_picture("ai_bsod")
return
proc/set_picture(var/state) /obj/machinery/ai_status_display/proc/set_picture(var/state)
picture_state = state picture_state = state
if(overlays.len) if(overlays.len)
overlays.Cut() overlays.Cut()
overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) overlays += image('icons/obj/status_display.dmi', icon_state=picture_state)
#undef CHARS_PER_LINE #undef CHARS_PER_LINE
#undef FOND_SIZE #undef FOND_SIZE

View File

@@ -0,0 +1,34 @@
/obj/machinery/status_display/supply_display
ignore_friendc = 1
/obj/machinery/status_display/supply_display/update()
if(!..() && mode == STATUS_DISPLAY_CUSTOM)
message1 = "SUPPLY"
message2 = ""
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
if (!shuttle)
message2 = "Error"
else if(shuttle.has_arrive_time())
message2 = get_supply_shuttle_timer()
if(lentext(message2) > CHARS_PER_LINE)
message2 = "Error"
else if (shuttle.is_launching())
if (shuttle.at_station())
message2 = "Launch"
else
message2 = "ETA"
else
if(shuttle.at_station())
message2 = "Docked"
else
message1 = ""
update_display(message1, message2)
return 1
return 0
/obj/machinery/status_display/supply_display/receive_signal/(datum/signal/signal)
if(signal.data["command"] == "supply")
mode = STATUS_DISPLAY_CUSTOM
else
..(signal)

View File

@@ -413,9 +413,11 @@
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("aluminum", 25) B1.reagents.add_reagent("aluminum", 15)
B2.reagents.add_reagent("plasma", 25) B1.reagents.add_reagent("fuel",20)
B2.reagents.add_reagent("sacid", 25) B2.reagents.add_reagent("plasma", 15)
B2.reagents.add_reagent("sacid", 15)
B1.reagents.add_reagent("fuel",20)
beakers += B1 beakers += B1
beakers += B2 beakers += B2

View File

@@ -18,7 +18,7 @@ var/global/wcColored
wcColored = 1 wcColored = 1
var/list/wcBarAreas = list(/area/crew_quarters/bar) var/list/wcBarAreas = list(/area/crew_quarters/bar)
var/list/wcBrigAreas = list(/area/security,/area/security/main,/area/security/lobby,/area/security/brig,/area/security/permabrig,/area/security/prison,/area/security/prison/cell_block/A,/area/security/prison/cell_block/B,/area/security/prison/cell_block/C,/area/security/execution,/area/security/processing,/area/security/interrogation,/area/security/interrogationobs,/area/security/evidence,/area/security/prisonlockers,/area/security/medbay,/area/security/processing,/area/security/warden,/area/security/armoury,/area/security/securearmoury,/area/security/armoury/gamma,/area/security/securehallway,/area/security/hos,/area/security/podbay,/area/security/detectives_office,/area/security/range,/area/security/nuke_storage,/area/security/checkpoint,/area/security/checkpoint2,/area/security/checkpoint2,/area/security/checkpoint/supply,/area/security/checkpoint/engineering,/area/security/checkpoint/medical,/area/security/checkpoint/science,/area/security/vacantoffice,/area/security/vacantoffice2,/area/prison,/area/prison/arrival_airlock,/area/prison/control,/area/prison/crew_quarters,/area/prison/rec_room,/area/prison/closet,/area/prison/hallway/fore,/area/prison/hallway/aft,/area/prison/hallway/port,/area/prison/hallway/starboard,/area/prison/morgue,/area/prison/medical_research,/area/prison/medical,/area/prison/solar,/area/prison/podbay,/area/prison/solar_control,/area/prison/solitary,/area/prison/cell_block,/area/prison/cell_block/A,/area/prison/cell_block/B,/area/prison/cell_block/C) var/list/wcBrigAreas = list(/area/security,/area/security/main,/area/security/lobby,/area/security/brig,/area/security/permabrig,/area/security/prison,/area/security/prison/cell_block/A,/area/security/prison/cell_block/B,/area/security/prison/cell_block/C,/area/security/execution,/area/security/processing,/area/security/interrogation,/area/security/interrogationobs,/area/security/evidence,/area/security/prisonlockers,/area/security/medbay,/area/security/processing,/area/security/warden,/area/security/armoury,/area/security/securearmoury,/area/security/armoury/gamma,/area/security/securehallway,/area/security/hos,/area/security/podbay,/area/security/detectives_office,/area/security/range,/area/security/nuke_storage,/area/security/checkpoint,/area/security/checkpoint2,/area/security/checkpoint2,/area/security/checkpoint/supply,/area/security/checkpoint/engineering,/area/security/checkpoint/medical,/area/security/checkpoint/science,/area/security/vacantoffice,/area/security/vacantoffice2,/area/prison,/area/prison/arrival_airlock,/area/prison/control,/area/prison/crew_quarters,/area/prison/rec_room,/area/prison/closet,/area/prison/hallway/fore,/area/prison/hallway/aft,/area/prison/hallway/port,/area/prison/hallway/starboard,/area/prison/morgue,/area/prison/medical_research,/area/prison/medical,/area/prison/solar,/area/prison/podbay,/area/prison/solar_control,/area/prison/solitary,/area/prison/cell_block,/area/prison/cell_block/A,/area/prison/cell_block/B,/area/prison/cell_block/C,/area/shuttle/gamma/space,/area/shuttle/gamma/station)
var/newcolor var/newcolor
for(var/A in wcBarAreas) for(var/A in wcBarAreas)

View File

@@ -21,10 +21,10 @@ emp_act
var/turf/curloc = get_turf(src) var/turf/curloc = get_turf(src)
// redirect the projectile // redirect the projectile
P.firer = src
P.original = locate(new_x, new_y, P.z) P.original = locate(new_x, new_y, P.z)
P.starting = curloc P.starting = curloc
P.current = curloc P.current = curloc
P.firer = src
P.yo = new_y - curloc.y P.yo = new_y - curloc.y
P.xo = new_x - curloc.x P.xo = new_x - curloc.x

View File

@@ -39,8 +39,6 @@
ammo_type = "/obj/item/ammo_casing/c9mm" ammo_type = "/obj/item/ammo_casing/c9mm"
max_ammo = 36 max_ammo = 36
/obj/item/ammo_box/c45 /obj/item/ammo_box/c45
name = "Ammunition Box (.45)" name = "Ammunition Box (.45)"
icon_state = "9mm" icon_state = "9mm"

View File

@@ -135,8 +135,9 @@
if(M.ckey) if(M.ckey)
msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG
spawn(0)
if(A) if(A)
if (!forcedodge) if(!forcedodge)
forcedodge = A.bullet_act(src, def_zone) // searches for return value forcedodge = A.bullet_act(src, def_zone) // searches for return value
if(forcedodge == -1) // the bullet passes through a dense object! if(forcedodge == -1) // the bullet passes through a dense object!
bumped = 0 // reset bumped variable! bumped = 0 // reset bumped variable!

View File

@@ -29,6 +29,14 @@
icon_state = "heavylaser" icon_state = "heavylaser"
damage = 40 damage = 40
/obj/item/projectile/beam/sniper
name = "sniper beam"
icon_state = "sniperlaser"
damage = 60
stun = 5
weaken = 5
stutter = 5
/obj/item/projectile/beam/xray /obj/item/projectile/beam/xray
name = "xray beam" name = "xray beam"
icon_state = "xray" icon_state = "xray"
@@ -628,14 +636,6 @@ var/list/beam_master = list()
M.Weaken(5) M.Weaken(5)
return 1 return 1
/obj/item/projectile/beam/sniper
name = "sniper beam"
icon_state = "sniperlaser"
damage = 60
stun = 5
weaken = 5
stutter = 5
/obj/item/projectile/beam/stun /obj/item/projectile/beam/stun
name = "stun beam" name = "stun beam"

View File

@@ -27,76 +27,108 @@
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != security_level) if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != security_level)
switch(level) switch(level)
if(SEC_LEVEL_GREEN) if(SEC_LEVEL_GREEN)
world << "<font size=4 color='red'>Attention! Security level lowered to green</font>" world << "<font size=4 color='red'>Attention! Security level lowered to green.</font>"
world << "<font color='red'>[config.alert_desc_green]</font>" world << "<font color='red'>All threats to the station have passed. All weapons need to be holstered and privacy laws are once again fully enforced.</font>"
security_level = SEC_LEVEL_GREEN security_level = SEC_LEVEL_GREEN
for(var/obj/machinery/firealarm/FA in machines)
if(FA.z == 1) for(var/obj/machinery/firealarm/FA in world)
if(FA.z == 1 || FA.z == 5)
FA.overlays = list() FA.overlays = list()
FA.overlays += image('icons/obj/monitors.dmi', "overlay_green") FA.overlays += image('icons/obj/monitors.dmi', "overlay_green")
if(SEC_LEVEL_BLUE) if(SEC_LEVEL_BLUE)
if(security_level < SEC_LEVEL_BLUE) if(security_level < SEC_LEVEL_BLUE)
world << "<font size=4 color='red'>Attention! Security level elevated to blue</font>" world << "<font size=4 color='red'>Attention! Security level elevated to blue.</font>"
world << "<font color='red'>[config.alert_desc_blue_upto]</font>" world << "<font color='red'>The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible and random searches are permitted.</font>"
else else
world << "<font size=4 color='red'>Attention! Security level lowered to blue</font>" world << "<font size=4 color='red'>Attention! Security level lowered to blue.</font>"
world << "<font color='red'>[config.alert_desc_blue_downto]</font>" world << "<font color='red'>The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed.</font>"
security_level = SEC_LEVEL_BLUE security_level = SEC_LEVEL_BLUE
for(var/obj/machinery/firealarm/FA in machines)
if(FA.z == 1) for(var/obj/machinery/firealarm/FA in world)
if(FA.z == 1 || FA.z == 5)
FA.overlays = list() FA.overlays = list()
FA.overlays += image('icons/obj/monitors.dmi', "overlay_blue") FA.overlays += image('icons/obj/monitors.dmi', "overlay_blue")
if(SEC_LEVEL_RED) if(SEC_LEVEL_RED)
if(security_level < SEC_LEVEL_RED) if(security_level < SEC_LEVEL_RED)
world << "<font size=4 color='red'>Attention! Code red!</font>" world << "<font size=4 color='red'>Attention! Code Red!</font>"
world << "<font color='red'>[config.alert_desc_red_upto]</font>" world << "<font color='red'>There is an immediate and serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised. The station's secure armory has been unlocked and is ready for use.</font>"
else else
world << "<font size=4 color='red'>Attention! Code red!</font>" world << "<font size=4 color='red'>Attention! Code Red!</font>"
world << "<font color='red'>[config.alert_desc_red_downto]</font>" world << "<font color='red'>The station's self-destruct mechanism has been deactivated, but there is still an immediate and serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised.</font>"
security_level = SEC_LEVEL_RED security_level = SEC_LEVEL_RED
var/obj/machinery/door/airlock/highsecurity/red/R = locate(/obj/machinery/door/airlock/highsecurity/red) in world var/obj/machinery/door/airlock/highsecurity/red/R = locate(/obj/machinery/door/airlock/highsecurity/red) in world
message_admins("Found [R]")
if(R && R.z == 1) if(R && R.z == 1)
R.locked = 0 R.locked = 0
R.update_icon() R.update_icon()
/* - At the time of commit, setting status displays didn't work properly
var/obj/machinery/computer/communications/CC = locate(/obj/machinery/computer/communications,world) var/obj/machinery/computer/communications/CC = locate(/obj/machinery/computer/communications,world)
if(CC) if(CC)
CC.post_status("alert", "redalert")*/ CC.post_status("alert", "redalert")
for(var/obj/machinery/firealarm/FA in machines) for(var/obj/machinery/firealarm/FA in world)
if(FA.z == 1) if(FA.z == 1 || FA.z == 5)
FA.overlays = list() FA.overlays = list()
FA.overlays += image('icons/obj/monitors.dmi', "overlay_red") FA.overlays += icon('icons/obj/monitors.dmi', "overlay_red")
if(SEC_LEVEL_GAMMA) if(SEC_LEVEL_GAMMA)
world << "<font size=4 color='red'>Attention! GAMMA security level activated!</font>" world << "<font size=4 color='red'>Attention! Gamma security level activated!</font>"
world << "<font color='red'>[config.alert_desc_gamma]</font>" world << "<font color='red'>Central Command has ordered the Gamma security level on the station. Security is to have weapons equipped at all times, and all civilians are to immediately seek their nearest head for transportation to a secure location. The station's Gamma armory has been unlocked and is ready for use.</font>"
security_level = SEC_LEVEL_GAMMA
move_gamma_ship() move_gamma_ship()
if(security_level < SEC_LEVEL_RED) if(security_level < SEC_LEVEL_RED)
for(var/obj/machinery/door/airlock/highsecurity/red/R in world) for(var/obj/machinery/door/airlock/highsecurity/red/R in world)
if(R.z == 1) if(R.z == 1)
R.locked = 0 R.locked = 0
R.update_icon() R.update_icon()
for(var/obj/machinery/door/airlock/hatch/gamma/H in world) for(var/obj/machinery/door/airlock/hatch/gamma/H in world)
if(H.z == 1) if(H.z == 1)
H.locked = 0 H.locked = 0
H.update_icon() H.update_icon()
var/obj/machinery/computer/communications/CC = locate(/obj/machinery/computer/communications,world)
if(CC)
CC.post_status("alert", "redalert")
for(var/obj/machinery/firealarm/FA in world)
if(FA.z == 1 || FA.z == 5)
FA.overlays = list()
FA.overlays += image('icons/obj/monitors.dmi', "overlay_gamma")
FA.update_icon()
security_level = SEC_LEVEL_GAMMA
if(SEC_LEVEL_EPSILON) if(SEC_LEVEL_EPSILON)
world << "<font size=4 color='red'>Attention! EPSILON security level activated!</font>" world << "<font size=4 color='red'>Attention! Epsilon security level activated!</font>"
world << "<font color='red'>[config.alert_desc_epsilon]</font>" world << "<font color='red'>Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated.</font>"
security_level = SEC_LEVEL_EPSILON security_level = SEC_LEVEL_EPSILON
var/obj/machinery/computer/communications/CC = locate(/obj/machinery/computer/communications,world)
if(CC)
CC.post_status("alert", "redalert")
for(var/obj/machinery/firealarm/FA in world)
if(FA.z == 1 || FA.z == 5)
FA.overlays = list()
FA.overlays += image('icons/obj/monitors.dmi', "overlay_epsilon")
if(SEC_LEVEL_DELTA) if(SEC_LEVEL_DELTA)
world << "<font size=4 color='red'>Attention! Delta security level reached!</font>" world << "<font size=4 color='red'>Attention! Delta security level reached!</font>"
world << "<font color='red'>[config.alert_desc_delta]</font>" world << "<font color='red'>The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill.</font>"
security_level = SEC_LEVEL_DELTA security_level = SEC_LEVEL_DELTA
for(var/obj/machinery/firealarm/FA in machines)
if(FA.z == 1) var/obj/machinery/computer/communications/CC = locate(/obj/machinery/computer/communications,world)
if(CC)
CC.post_status("alert", "redalert")
for(var/obj/machinery/firealarm/FA in world)
if(FA.z == 1 || FA.z == 5)
FA.overlays = list() FA.overlays = list()
FA.overlays += image('icons/obj/monitors.dmi', "overlay_delta") FA.overlays += image('icons/obj/monitors.dmi', "overlay_delta")
else else
return return

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 44 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -71,13 +71,13 @@ Used In File(s): /code/game/machinery/computers/communications.dm
<h3>Presets</h3> <h3>Presets</h3>
{{for data.stat_display.presets}} {{for data.stat_display.presets}}
<div class="line"> <div class="line">
<div class="statusLabel">{{:helper.link(data.label,'info',{'operation':'setstat','statdisp':name},null,(name==data.stat_display.type?'linkOn':''))}}</div> <div class="statusLabel">{{:helper.link(value.label,'info',{'operation':'setstat','statdisp':value.name},null,(name==data.stat_display.type?'linkOn':''))}}</div>
</div> </div>
{{/for}} {{/for}}
<h3>Alerts</h3> <h3>Alerts</h3>
{{for data.stat_display.alerts}} {{for data.stat_display.alerts}}
<div class="line"> <div class="line">
<div class="statusLabel">{{:helper.link(data.label,'alert',{'operation':'setstat','statdisp':'alert','alert':alert},null,(name==data.stat_display.type?'linkOn':''))}}</div> <div class="statusLabel">{{:helper.link(value.label,'alert',{'operation':'setstat','statdisp':'alert','alert':value.alert},null,(value.alert==data.stat_display.type?'linkOn':''))}}</div>
</div> </div>
{{/for}} {{/for}}
<h3>Messages</h3> <h3>Messages</h3>
@@ -125,7 +125,7 @@ Used In File(s): /code/game/machinery/computers/communications.dm
<div class="itemLabel">Presets:</div> <div class="itemLabel">Presets:</div>
<div class="itemContents"> <div class="itemContents">
{{for data.levels}} {{for data.levels}}
{{:helper.link(name,'comment',{'operation':'newalertlevel','level':data.id},null,(data.id==data.security_level?'linkOn':''))}} {{:helper.link(value.name,'comment',{'operation':'newalertlevel','level':value.id},null,(value.id==data.security_level?'linkOn':''))}}
{{/for}} {{/for}}
</div> </div>
</div> </div>