Reee mirror bot. Hard syncs some missed PR stuff + maps (#5951)

* maps and tgui

* missed defines and helpsers

* controller things

* datums

* game folder stuff

* module things

* icons

* stragglers

* map sync and updating

wew lad
This commit is contained in:
Poojawa
2018-03-14 16:49:40 -05:00
committed by GitHub
parent be23070f67
commit 6c7da493d9
122 changed files with 12848 additions and 12563 deletions
+12 -3
View File
@@ -530,6 +530,7 @@
/atom/movable/proc/relay_container_resist(mob/living/user, obj/O)
return
// CITADEL CHANGE - adds final_pixel_y and final_pixel_x to do_attack_animation args
/atom/movable/proc/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect, end_pixel_y, final_pixel_y, final_pixel_x)
if(!no_effect && (visual_effect_icon || used_item))
@@ -693,10 +694,18 @@
message_admins("[src] has been moved out of bounds in [ADMIN_COORDJMP(currentturf)]. Moving it to [ADMIN_COORDJMP(targetturf)].")
/atom/movable/proc/in_bounds()
. = FALSE
var/static/list/allowed_shuttles = typecacheof(list(/area/shuttle/syndicate, /area/shuttle/escape, /area/shuttle/pod_1, /area/shuttle/pod_2, /area/shuttle/pod_3, /area/shuttle/pod_4))
var/turf/T = get_turf(src)
if (T && (is_centcom_level(T.z) || is_station_level(T.z) || is_transit_level(T.z)))
. = TRUE
if (!T)
return FALSE
if (is_station_level(T.z) || is_centcom_level(T.z))
return TRUE
if (is_transit_level(T.z))
var/area/A = T.loc
if (is_type_in_typecache(A, allowed_shuttles))
return TRUE
return FALSE
/* Language procs */
+1 -1
View File
@@ -172,7 +172,7 @@
/obj/machinery/button/door
name = "door button"
desc = "A door remote control switch."
var/normaldoorcontrol = 0
var/normaldoorcontrol = FALSE
var/specialfunctions = OPEN // Bitflag, see assembly file
/obj/machinery/button/door/setup_device()
+3 -1
View File
@@ -49,7 +49,9 @@
/obj/item/toy/toy_dagger = 2,
/obj/item/extendohand/acme = 1,
/obj/item/hot_potato/harmless/toy = 1,
/obj/item/card/emagfake = 1)
/obj/item/card/emagfake = 1,
/obj/item/clothing/shoes/wheelys = 2,
/obj/item/clothing/shoes/kindleKicks = 2)
light_color = LIGHT_COLOR_GREEN
+12 -14
View File
@@ -50,6 +50,12 @@
integrity_failure = 70
damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_N
interact_open = TRUE
autoclose = TRUE
secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it.
assemblytype = /obj/structure/door_assembly
normalspeed = 1
explosion_block = 1
hud_possible = list(DIAG_AIRLOCK_HUD)
var/security_level = 0 //How much are wires secured
var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in.
@@ -58,21 +64,16 @@
var/secondsBackupPowerLost = 0 //The number of seconds until power is restored.
var/spawnPowerRestoreRunning = FALSE
var/lights = TRUE // bolt lights show by default
secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it.
var/aiDisabledIdScanner = FALSE
var/aiHacking = FALSE
var/obj/machinery/door/airlock/closeOther = null
var/closeOtherId = null
var/lockdownbyai = FALSE
assemblytype = /obj/structure/door_assembly
var/closeOtherId //Cyclelinking for airlocks that aren't on the same x or y coord as the target.
var/obj/machinery/door/airlock/closeOther
var/justzap = FALSE
normalspeed = 1
var/obj/item/electronics/airlock/electronics = null
var/obj/item/electronics/airlock/electronics
var/shockCooldown = FALSE //Prevents multiple shocks from happening
autoclose = TRUE
var/obj/item/device/doorCharge/charge = null //If applied, causes an explosion upon opening the door
var/obj/item/device/doorCharge/charge //If applied, causes an explosion upon opening the door
var/obj/item/note //Any papers pinned to the airlock
var/detonated = 0
var/detonated = FALSE
var/abandoned = FALSE
var/doorOpen = 'sound/machines/airlock.ogg'
var/doorClose = 'sound/machines/airlockclose.ogg'
@@ -81,7 +82,7 @@
var/boltDown = 'sound/machines/boltsdown.ogg'
var/noPower = 'sound/machines/doorclick.ogg'
var/previous_airlock = /obj/structure/door_assembly //what airlock assembly mineral plating was applied to
var/airlock_material = null //material of inner filling; if its an airlock with glass, this should be set to "glass"
var/airlock_material //material of inner filling; if its an airlock with glass, this should be set to "glass"
var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
var/note_overlay_file = 'icons/obj/doors/airlocks/station/overlays.dmi' //Used for papers and photos pinned to the airlock
@@ -90,9 +91,6 @@
var/shuttledocked = 0
var/delayed_close_requested = FALSE // TRUE means the door will automatically close the next time it's opened.
explosion_block = 1
hud_possible = list(DIAG_AIRLOCK_HUD)
var/air_tight = FALSE //TRUE means density will be set as soon as the door begins to close
var/prying_so_hard = FALSE
+2 -2
View File
@@ -404,7 +404,7 @@
overlays_file = 'icons/obj/doors/airlocks/cult/runed/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_cult
hackProof = TRUE
aiControlDisabled = TRUE
aiControlDisabled = 1
req_access = list(ACCESS_BLOODCULT)
damage_deflection = 10
var/openingoverlaytype = /obj/effect/temp_visual/cult/door
@@ -511,7 +511,7 @@
icon = 'icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi'
overlays_file = 'icons/obj/doors/airlocks/clockwork/overlays.dmi'
hackProof = TRUE
aiControlDisabled = TRUE
aiControlDisabled = 1
req_access = list(ACCESS_CLOCKCULT)
use_power = FALSE
resistance_flags = FIRE_PROOF | ACID_PROOF
-1
View File
@@ -28,7 +28,6 @@
var/safe = TRUE //whether the door detects things and mobs in its way and reopen or crushes them.
var/locked = FALSE //whether the door is bolted or not.
var/assemblytype //the type of door frame to drop during deconstruction
var/auto_close //TO BE REMOVED, no longer used, it's just preventing a runtime with a map var edit.
var/datum/effect_system/spark_spread/spark_system
var/damage_deflection = 10
var/real_explosion_block //ignore this, just use explosion_block
+12 -5
View File
@@ -193,11 +193,8 @@ Buildable meters
w_class = WEIGHT_CLASS_BULKY
var/piping_layer = PIPING_LAYER_DEFAULT
/obj/item/pipe_meter/attackby(obj/item/I, mob/user, params)
..()
obj/item/pipe_meter/wrench_act(mob/living/user, obj/item/wrench/W)
if (!istype(I, /obj/item/wrench))
return ..()
var/obj/machinery/atmospherics/pipe/pipe
for(var/obj/machinery/atmospherics/pipe/P in loc)
if(P.piping_layer == piping_layer)
@@ -207,10 +204,20 @@ Buildable meters
to_chat(user, "<span class='warning'>You need to fasten it to a pipe!</span>")
return TRUE
new /obj/machinery/meter(loc, piping_layer)
I.play_tool_sound(src)
W.play_tool_sound(src)
to_chat(user, "<span class='notice'>You fasten the meter to the pipe.</span>")
qdel(src)
obj/item/pipe_meter/screwdriver_act(mob/living/user, obj/item/S)
if(!isturf(loc))
to_chat(user, "<span class='warning'>You need to fasten it to the floor!</span>")
return TRUE
new /obj/machinery/meter/turf(loc, piping_layer)
S.play_tool_sound(src)
to_chat(user, "<span class='notice'>You fasten the meter to the [loc.name].</span>")
qdel(src)
/obj/item/pipe_meter/dropped()
. = ..()
if(loc)
@@ -381,7 +381,7 @@
if(iscyborg(sillycone))
var/mob/living/silicon/robot/sillyconerobot = A
if(faction == "syndicate" && sillyconerobot.emagged == 1)
if(LAZYLEN(faction) && (ROLE_SYNDICATE in faction) && sillyconerobot.emagged == TRUE)
continue
targets += sillycone
+2 -2
View File
@@ -890,8 +890,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_deny = "wallmed-deny"
density = FALSE
products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 5,
/obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/reagent_containers/pill/charcoal = 2,
/obj/item/reagent_containers/medspray/sterilizine = 1)
/obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/reagent_containers/medspray/styptic = 2, /obj/item/reagent_containers/medspray/silver_sulf = 2,
/obj/item/reagent_containers/pill/charcoal = 2, /obj/item/reagent_containers/medspray/sterilizine = 1)
contraband = list(/obj/item/reagent_containers/pill/tox = 2, /obj/item/reagent_containers/pill/morphine = 2)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
+24 -31
View File
@@ -6,9 +6,8 @@ RPD
#define PAINT_MODE -2
#define EATING_MODE -1
#define ATMOS_MODE 0
#define METER_MODE 1
#define DISPOSALS_MODE 2
#define TRANSIT_MODE 3
#define DISPOSALS_MODE 1
#define TRANSIT_MODE 2
GLOBAL_LIST_INIT(atmos_pipe_recipes, list(
@@ -318,7 +317,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
var/queued_p_flipped = p_flipped
// clicking on an existing component puts the new one on the same layer
if ((mode == ATMOS_MODE || mode == METER_MODE) && istype(A, /obj/machinery/atmospherics))
if (mode == ATMOS_MODE && istype(A, /obj/machinery/atmospherics))
var/obj/machinery/atmospherics/AM = A
temp_piping_layer = AM.piping_layer
A = get_turf(user)
@@ -352,35 +351,30 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
if(ATMOS_MODE) //Making pipes
if(!can_make_pipe)
return ..()
to_chat(user, "<span class='notice'>You start building a pipe...</span>")
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 2, target = A))
activate()
if (recipe.type == /datum/pipe_info/meter)
to_chat(user, "<span class='notice'>You start building a meter...</span>")
if(do_after(user, 2, target = A))
activate()
var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(get_turf(A))
PM.setAttachLayer(temp_piping_layer)
else
to_chat(user, "<span class='notice'>You start building a pipe...</span>")
if(do_after(user, 2, target = A))
activate()
var/obj/machinery/atmospherics/path = queued_p_type
var/pipe_item_type = initial(path.construction_type) || /obj/item/pipe
var/obj/item/pipe/P = new pipe_item_type(get_turf(A), queued_p_type, queued_p_dir)
var/obj/machinery/atmospherics/path = queued_p_type
var/pipe_item_type = initial(path.construction_type) || /obj/item/pipe
var/obj/item/pipe/P = new pipe_item_type(get_turf(A), queued_p_type, queued_p_dir)
if(queued_p_flipped && istype(P, /obj/item/pipe/trinary/flippable))
var/obj/item/pipe/trinary/flippable/F = P
F.flipped = queued_p_flipped
P.update()
P.add_fingerprint(usr)
P.setPipingLayer(temp_piping_layer)
P.add_atom_colour(GLOB.pipe_paint_colors[paint_color], FIXED_COLOUR_PRIORITY)
if(METER_MODE) //Making pipe meters
if(!can_make_pipe)
return ..()
to_chat(user, "<span class='notice'>You start building a meter...</span>")
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 2, target = A))
activate()
var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(get_turf(A))
PM.setAttachLayer(temp_piping_layer)
if(queued_p_flipped && istype(P, /obj/item/pipe/trinary/flippable))
var/obj/item/pipe/trinary/flippable/F = P
F.flipped = queued_p_flipped
P.update()
P.add_fingerprint(usr)
P.setPipingLayer(temp_piping_layer)
P.add_atom_colour(GLOB.pipe_paint_colors[paint_color], FIXED_COLOUR_PRIORITY)
if(DISPOSALS_MODE) //Making disposals pipes
if(!can_make_pipe)
return ..()
@@ -439,5 +433,4 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
#undef PAINT_MODE
#undef EATING_MODE
#undef ATMOS_MODE
#undef METER_MODE
#undef DISPOSALS_MODE
@@ -9,7 +9,7 @@
new /obj/item/storage/lockbox/medal/cargo(src)
new /obj/item/clothing/under/rank/cargo(src)
new /obj/item/clothing/shoes/sneakers/brown(src)
// new /obj/item/device/radio/headset/headset_cargo(src)
new /obj/item/device/radio/headset/headset_cargo(src)
new /obj/item/clothing/suit/fire/firefighter(src)
new /obj/item/clothing/gloves/fingerless(src)
new /obj/item/device/megaphone/cargo(src)
@@ -12,6 +12,7 @@
var/list/tube_dirs //list of directions this tube section can connect to.
var/exit_delay = 1
var/enter_delay = 0
var/const/time_to_unwrench = 2 SECONDS
/obj/structure/transit_tube/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && (mover.pass_flags & PASSGLASS))
@@ -42,7 +43,7 @@
to_chat(user, "<span class='warning'>Remove the pod first!</span>")
return
user.visible_message("[user] starts to deattach \the [src].", "<span class='notice'>You start to deattach the [name]...</span>")
if(W.use_tool(src, user, 40, volume=50))
if(W.use_tool(src, user, time_to_unwrench, volume=50))
to_chat(user, "<span class='notice'>You deattach the [name].</span>")
var/obj/structure/c_transit_tube/R = new tube_construction(loc)
R.setDir(dir)
@@ -9,6 +9,7 @@
density = FALSE
layer = LOW_ITEM_LAYER //same as the built tube
anchored = FALSE
var/const/time_to_unwrench = 2 SECONDS
var/flipped = 0
var/build_type = /obj/structure/transit_tube
var/flipped_build_type
@@ -33,7 +34,7 @@
/obj/structure/c_transit_tube/wrench_act(mob/living/user, obj/item/I)
to_chat(user, "<span class='notice'>You start attaching the [name]...</span>")
add_fingerprint(user)
if(I.use_tool(src, user, 40, volume=50))
if(I.use_tool(src, user, time_to_unwrench, volume=50))
to_chat(user, "<span class='notice'>You attach the [name].</span>")
var/obj/structure/transit_tube/R = new build_type(loc, dir)
transfer_fingerprints_to(R)
+18 -1
View File
@@ -130,7 +130,24 @@
return
if(destination_z && destination_x && destination_y)
A.forceMove(locate(destination_x, destination_y, destination_z))
var/tx = destination_x
var/ty = destination_y
var/turf/DT = locate(tx, ty, destination_z)
var/itercount = 0
while(DT.density || istype(DT.loc,/area/shuttle)) // Extend towards the center of the map, trying to look for a better place to arrive
if (itercount++ >= 100)
log_game("SPACE Z-TRANSIT ERROR: Could not not find a safe place to land [A] within 100 iterations.")
break
if (tx < 128)
tx++
else
tx--
if (ty < 128)
ty++
else
ty--
DT = locate(tx, ty, destination_z)
A.forceMove(DT)
if(isliving(A))
var/mob/living/L = A