Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into upstream-merge-33783

# Conflicts:
#	_maps/map_files/generic/CentCom.dmm
#	code/modules/mob/living/living.dm
This commit is contained in:
LetterJay
2017-12-29 01:34:17 -06:00
64 changed files with 1434 additions and 1415 deletions
+3
View File
@@ -76,6 +76,9 @@
/area/shuttle/escape
name = "Emergency Shuttle"
/area/shuttle/escape/backup
name = "Backup Emergency Shuttle"
/area/shuttle/escape/luxury
name = "Luxurious Emergency Shuttle"
noteleport = TRUE
@@ -83,12 +83,23 @@
if(!eyeobj.eye_initialized)
var/camera_location
for(var/obj/machinery/camera/C in GLOB.cameranet.cameras)
if(!C.can_use() || z_lock.len && !(C.z in z_lock))
continue
if(C.network & networks)
camera_location = get_turf(C)
break
var/turf/myturf = get_turf(src)
if(eyeobj.use_static)
if((!z_lock.len || (myturf.z in z_lock)) && GLOB.cameranet.checkTurfVis(myturf))
camera_location = myturf
else
for(var/obj/machinery/camera/C in GLOB.cameranet.cameras)
if(!C.can_use() || z_lock.len && !(C.z in z_lock))
continue
var/list/network_overlap = networks & C.network
if(network_overlap.len)
camera_location = get_turf(C)
break
else
camera_location = myturf
if(z_lock.len && !(myturf.z in z_lock))
camera_location = locate(round(world.maxx/2), round(world.maxy/2), z_lock[1])
if(camera_location)
eyeobj.eye_initialized = TRUE
give_eye_control(L)
+63 -61
View File
@@ -1,66 +1,68 @@
/obj/machinery/door/poddoor
name = "blast door"
desc = "A heavy duty blast door that opens mechanically."
icon = 'icons/obj/doors/blastdoor.dmi'
icon_state = "closed"
var/id = 1
/obj/machinery/door/poddoor
name = "blast door"
desc = "A heavy duty blast door that opens mechanically."
icon = 'icons/obj/doors/blastdoor.dmi'
icon_state = "closed"
var/id = 1
sub_door = TRUE
explosion_block = 3
explosion_block = 3
heat_proof = TRUE
safe = FALSE
max_integrity = 600
armor = list(melee = 50, bullet = 100, laser = 100, energy = 100, bomb = 50, bio = 100, rad = 100, fire = 100, acid = 70)
resistance_flags = FIRE_PROOF
damage_deflection = 70
/obj/machinery/door/poddoor/preopen
icon_state = "open"
max_integrity = 600
armor = list(melee = 50, bullet = 100, laser = 100, energy = 100, bomb = 50, bio = 100, rad = 100, fire = 100, acid = 70)
resistance_flags = FIRE_PROOF
damage_deflection = 70
/obj/machinery/door/poddoor/preopen
icon_state = "open"
density = FALSE
opacity = 0
/obj/machinery/door/poddoor/ert
desc = "A heavy duty blast door that only opens for dire emergencies."
//special poddoors that open when emergency shuttle docks at centcom
/obj/machinery/door/poddoor/shuttledock
var/checkdir = 4 //door won't open if turf in this dir is `turftype`
var/turftype = /turf/open/space
/obj/machinery/door/poddoor/shuttledock/proc/check()
var/turf/T = get_step(src, checkdir)
if(!istype(T, turftype))
INVOKE_ASYNC(src, .proc/open)
else
INVOKE_ASYNC(src, .proc/close)
opacity = 0
/obj/machinery/door/poddoor/ert
desc = "A heavy duty blast door that only opens for dire emergencies."
//special poddoors that open when emergency shuttle docks at centcom
/obj/machinery/door/poddoor/shuttledock
var/checkdir = 4 //door won't open if turf in this dir is `turftype`
var/turftype = /turf/open/space
/obj/machinery/door/poddoor/shuttledock/proc/check()
var/turf/T = get_step(src, checkdir)
if(!istype(T, turftype))
INVOKE_ASYNC(src, .proc/open)
else
INVOKE_ASYNC(src, .proc/close)
/obj/machinery/door/poddoor/CollidedWith(atom/movable/AM)
if(density)
return 0
else
return ..()
//"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS.
/obj/machinery/door/poddoor/ex_act(severity, target)
if(severity == 3)
return
..()
/obj/machinery/door/poddoor/do_animate(animation)
switch(animation)
if("opening")
flick("opening", src)
if("closing")
flick("closing", src)
/obj/machinery/door/poddoor/update_icon()
if(density)
icon_state = "closed"
else
icon_state = "open"
/obj/machinery/door/poddoor/try_to_activate_door(mob/user)
return
/obj/machinery/door/poddoor/try_to_crowbar(obj/item/I, mob/user)
if(stat & NOPOWER)
open(1)
if(density)
return 0
else
return ..()
//"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS.
/obj/machinery/door/poddoor/ex_act(severity, target)
if(severity == 3)
return
..()
/obj/machinery/door/poddoor/do_animate(animation)
switch(animation)
if("opening")
flick("opening", src)
playsound(src, 'sound/machines/blastdoor.ogg', 30, 1)
if("closing")
flick("closing", src)
playsound(src, 'sound/machines/blastdoor.ogg', 30, 1)
/obj/machinery/door/poddoor/update_icon()
if(density)
icon_state = "closed"
else
icon_state = "open"
/obj/machinery/door/poddoor/try_to_activate_door(mob/user)
return
/obj/machinery/door/poddoor/try_to_crowbar(obj/item/I, mob/user)
if(stat & NOPOWER)
open(1)
+30 -23
View File
@@ -10,65 +10,72 @@
density = TRUE
pixel_x = -16
layer = FLY_LAYER
var/cut = FALSE
var/log_amount = 10
/obj/structure/flora/tree/attackby(obj/item/W, mob/user, params)
if(!cut && log_amount && (!(flags_1 & NODECONSTRUCT_1)))
if(log_amount && (!(flags_1 & NODECONSTRUCT_1)))
if(W.sharpness && W.force > 0)
if(W.hitsound)
playsound(get_turf(src), W.hitsound, 100, 0, 0)
user.visible_message("<span class='notice'>[user] begins to cut down [src] with [W].</span>","<span class='notice'>You begin to cut down [src] with [W].</span>", "You hear the sound of sawing.")
if(do_after(user, 1000/W.force, target = user)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard.
if(cut)
return
if(do_after(user, 1000/W.force, target = src)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard.
user.visible_message("<span class='notice'>[user] fells [src] with the [W].</span>","<span class='notice'>You fell [src] with the [W].</span>", "You hear the sound of a tree falling.")
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
icon = 'icons/obj/flora/pinetrees.dmi'
icon_state = "tree_stump"
density = FALSE
pixel_x = -16
name += " stump"
cut = TRUE
for(var/i=1 to log_amount)
new /obj/item/grown/log/tree(get_turf(src))
var/obj/structure/flora/stump/S = new(loc)
S.name = "[name] stump"
qdel(src)
else
return ..()
/obj/structure/flora/stump
name = "stump"
desc = "This represents our promise to the crew, and the station itself, to cut down as many trees as possible." //running naked through the trees
icon = 'icons/obj/flora/pinetrees.dmi'
icon_state = "tree_stump"
density = FALSE
pixel_x = -16
/obj/structure/flora/tree/pine
name = "pine tree"
desc = "A coniferous pine tree."
icon = 'icons/obj/flora/pinetrees.dmi'
icon_state = "pine_1"
var/list/icon_states = list("pine_1", "pine_2", "pine_3")
/obj/structure/flora/tree/pine/Initialize()
icon_state = "pine_[rand(1, 3)]"
. = ..()
if(islist(icon_states && icon_states.len))
icon_state = pick(icon_states)
/obj/structure/flora/tree/pine/xmas
name = "xmas tree"
desc = "A wondrous decorated Christmas tree."
icon_state = "pine_c"
var/gifts_under_tree = FALSE
icon_states = null
/obj/structure/flora/tree/pine/xmas/presents
icon_state = "pinepresents"
desc = "A wondrous decorated Christmas tree. It has presents!"
var/gift_type = /obj/item/a_gift/anything
var/list/ckeys_that_took = list()
/obj/structure/flora/tree/pine/xmas/attack_hand(mob/living/user)
if(!gifts_under_tree)
return
/obj/structure/flora/tree/pine/xmas/presents/attack_hand(mob/living/user)
if(!user.ckey)
return
if(ckeys_that_took[user.ckey])
to_chat(user, "<span class='warning'>You already took your gift.</span>")
to_chat(user, "<span class='warning'>There are no presents with your name on.</span>")
return
to_chat(user, "<span class='warning'>After a bit of rummaging, you locate a gift with your name on it!</span>")
ckeys_that_took[user.ckey] = TRUE
var/obj/item/a_gift/anything/A = new
user.put_in_hands(A)
/obj/structure/flora/tree/pine/xmas/Initialize()
. = ..()
icon_state = "pine_c"
var/obj/item/G = new gift_type(src)
user.put_in_hands(G)
/obj/structure/flora/tree/dead
icon = 'icons/obj/flora/deadtrees.dmi'
+3
View File
@@ -37,6 +37,9 @@ GLOBAL_PROTECT(security_mode)
if(fexists(RESTART_COUNTER_PATH))
GLOB.restart_counter = text2num(trim(file2text(RESTART_COUNTER_PATH)))
fdel(RESTART_COUNTER_PATH)
if("no-init" in params)
return
Master.Initialize(10, FALSE)