mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 12:08:55 +01:00
Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts: # _maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm # _maps/RandomRuins/SpaceRuins/garbagetruck2.dmm # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # _maps/map_files/tramstation/tramstation.dmm # code/_onclick/hud/new_player.dm # code/datums/components/squashable.dm # code/datums/diseases/advance/symptoms/heal.dm # code/datums/diseases/chronic_illness.dm # code/datums/status_effects/buffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/stamcrit.dm # code/game/machinery/computer/crew.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/wall_mounted.dm # code/game/turfs/closed/indestructible.dm # code/modules/admin/view_variables/filterrific.dm # code/modules/antagonists/heretic/influences.dm # code/modules/cargo/orderconsole.dm # code/modules/client/preferences.dm # code/modules/events/space_vines/vine_mutations.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/carbon/human/death.dm # code/modules/mob/living/carbon/human/species_types/jellypeople.dm # code/modules/mob/living/damage_procs.dm # code/modules/mob/living/living.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mob_spawn/mob_spawn.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/projectiles/guns/ballistic/launchers.dm # code/modules/projectiles/guns/energy/laser.dm # code/modules/reagents/chemistry/machinery/chem_dispenser.dm # code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/medicine_reagents.dm # code/modules/surgery/healing.dm # code/modules/unit_tests/designs.dm # icons/mob/inhands/items_lefthand.dmi # icons/mob/inhands/items_righthand.dmi # tgui/packages/tgui/interfaces/ChemDispenser.tsx
This commit is contained in:
@@ -175,19 +175,12 @@
|
||||
|
||||
/obj/machinery/power/apc/Initialize(mapload)
|
||||
. = ..()
|
||||
setDir(dir)
|
||||
|
||||
//APCs get added to their own processing tasks for the machines subsystem.
|
||||
if (!(datum_flags & DF_ISPROCESSING))
|
||||
datum_flags |= DF_ISPROCESSING
|
||||
SSmachines.processing_apcs += src
|
||||
|
||||
var/image/hud_image = image(icon = 'icons/mob/huds/hud.dmi', icon_state = "apc_hacked")
|
||||
hud_image.pixel_w = pixel_x
|
||||
hud_image.pixel_z = pixel_y
|
||||
hud_list = list(
|
||||
MALF_APC_HUD = hud_image
|
||||
)
|
||||
|
||||
//Assign it to its area. If mappers already assigned an area string fast load the area from it else get the current area
|
||||
var/area/our_area = get_area(loc)
|
||||
if(areastring)
|
||||
@@ -221,8 +214,10 @@
|
||||
cell.charge = start_charge * cell.maxcharge / 100 // (convert percentage to actual value)
|
||||
make_terminal()
|
||||
///This is how we test to ensure that mappers use the directional subtypes of APCs, rather than use the parent and pixel-shift it themselves.
|
||||
setDir(dir)
|
||||
if(abs(offset_old) != APC_PIXEL_OFFSET)
|
||||
log_mapping("APC: ([src]) at [AREACOORD(src)] with dir ([dir] | [uppertext(dir2text(dir))]) has pixel_[dir & (WEST|EAST) ? "x" : "y"] value [offset_old] - should be [dir & (SOUTH|EAST) ? "-" : ""][APC_PIXEL_OFFSET]. Use the directional/ helpers!")
|
||||
find_and_hang_on_atom()
|
||||
// For apcs created during the round players need to configure them from scratch
|
||||
else
|
||||
opened = APC_COVER_OPENED
|
||||
@@ -246,8 +241,6 @@
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_bare_hands, rmb_text = "Toggle interface lock")
|
||||
AddElement(/datum/element/contextual_screentip_mob_typechecks, hovering_mob_typechecks)
|
||||
if(mapload)
|
||||
find_and_hang_on_wall()
|
||||
|
||||
/obj/machinery/power/apc/Destroy()
|
||||
if(malfai)
|
||||
@@ -265,6 +258,7 @@
|
||||
|
||||
/obj/machinery/power/apc/setDir(newdir)
|
||||
. = ..()
|
||||
|
||||
switch(newdir)
|
||||
if(NORTH)
|
||||
offset_old = pixel_y
|
||||
@@ -279,6 +273,13 @@
|
||||
offset_old = pixel_x
|
||||
pixel_x = -APC_PIXEL_OFFSET
|
||||
|
||||
var/image/hud_image = image(icon = 'icons/mob/huds/hud.dmi', icon_state = "apc_hacked")
|
||||
hud_image.pixel_w = pixel_x
|
||||
hud_image.pixel_z = pixel_y
|
||||
hud_list = list(
|
||||
MALF_APC_HUD = hud_image
|
||||
)
|
||||
|
||||
/obj/machinery/power/apc/on_saboteur(datum/source, disrupt_duration)
|
||||
. = ..()
|
||||
disrupt_duration *= 0.1 // so, turns out, failure timer is in seconds, not deciseconds; without this, disruptions last 10 times as long as they probably should
|
||||
|
||||
@@ -99,6 +99,10 @@
|
||||
name = "pulse pistol power cell"
|
||||
maxcharge = STANDARD_CELL_CHARGE * 2
|
||||
|
||||
/obj/item/stock_parts/power_store/cell/laser_pistol
|
||||
name = "laser pistol power cell"
|
||||
chargerate = STANDARD_CELL_RATE * 3
|
||||
|
||||
/obj/item/stock_parts/power_store/cell/ninja
|
||||
name = "black power cell"
|
||||
icon_state = "bscell"
|
||||
|
||||
@@ -121,9 +121,9 @@
|
||||
AddElement(/datum/element/atmos_sensitive, mapload)
|
||||
AddElement(/datum/element/contextual_screentip_bare_hands, rmb_text = "Remove bulb")
|
||||
if(mapload)
|
||||
find_and_hang_on_wall()
|
||||
find_and_hang_on_atom(mark_for_late_init = TRUE)
|
||||
|
||||
/obj/machinery/light/find_and_hang_on_wall()
|
||||
/obj/machinery/light/find_and_hang_on_atom(mark_for_late_init = FALSE, late_init = FALSE)
|
||||
if(break_if_moved)
|
||||
return ..()
|
||||
|
||||
@@ -753,6 +753,9 @@
|
||||
nightshift_brightness = 4
|
||||
fire_brightness = 4.5
|
||||
|
||||
/obj/machinery/light/floor/find_and_hang_on_atom(mark_for_late_init = FALSE, late_init = FALSE)
|
||||
return //its a floor light not a wall light
|
||||
|
||||
/obj/machinery/light/floor/get_light_offset()
|
||||
return list(0, 0)
|
||||
|
||||
|
||||
@@ -30,8 +30,11 @@
|
||||
|
||||
/obj/structure/light_construct/Initialize(mapload)
|
||||
. = ..()
|
||||
if(mapload)
|
||||
find_and_hang_on_wall()
|
||||
if(mapload && !find_and_hang_on_atom(mark_for_late_init = TRUE))
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/structure/light_construct/LateInitialize()
|
||||
find_and_hang_on_atom(late_init = TRUE)
|
||||
|
||||
/obj/structure/light_construct/Destroy()
|
||||
QDEL_NULL(cell)
|
||||
@@ -147,7 +150,7 @@
|
||||
if("floor")
|
||||
new_light = new /obj/machinery/light/floor/empty(loc)
|
||||
new_light.setDir(dir)
|
||||
new_light.find_and_hang_on_wall()
|
||||
new_light.find_and_hang_on_atom()
|
||||
transfer_fingerprints_to(new_light)
|
||||
if(!QDELETED(cell))
|
||||
new_light.cell = cell
|
||||
|
||||
@@ -109,6 +109,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light, 0)
|
||||
// ---- Broken tube
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/broken, 0)
|
||||
|
||||
// ---- Burned tube
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/burned, 0)
|
||||
|
||||
// ---- Tube construct
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/light_construct, 0)
|
||||
|
||||
@@ -161,6 +164,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/small/empty, 0)
|
||||
// ---- Broken bulbs
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/small/broken, 0)
|
||||
|
||||
// ---- Burned bulb
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/small/burned, 0)
|
||||
|
||||
// ---- Red bulbs
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/small/dim, 0)
|
||||
|
||||
|
||||
@@ -6,6 +6,16 @@
|
||||
result_path = /obj/structure/light_construct
|
||||
wall_external = TRUE
|
||||
|
||||
/obj/item/wallframe/light_fixture/find_support_structure(atom/structure)
|
||||
return istype(structure, /obj/structure/window) ? structure : ..()
|
||||
|
||||
/obj/item/wallframe/light_fixture/try_build(atom/support, mob/user)
|
||||
var/area/A = get_area(user)
|
||||
if(A.always_unpowered)
|
||||
balloon_alert(user, "cannot place in this area!")
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/wallframe/light_fixture/small
|
||||
name = "small light fixture frame"
|
||||
icon_state = "bulb-construct-item"
|
||||
|
||||
@@ -52,10 +52,8 @@
|
||||
if (override_maxcharge)
|
||||
maxcharge = override_maxcharge
|
||||
rating = max(round(maxcharge / (rating_base * 10), 1), 1)
|
||||
if(!charge)
|
||||
if(!empty && !charge)
|
||||
charge = maxcharge
|
||||
if(empty)
|
||||
charge = 0
|
||||
if(ratingdesc)
|
||||
desc += " This one has a rating of [display_energy(maxcharge)][prob(10) ? ", and you should not swallow it" : ""]." //joke works better if it's not on every cell
|
||||
update_appearance()
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
investigate_log("was entered by [key_name(consumed_mob)].", INVESTIGATE_ENGINE)
|
||||
consumed_mob.forceMove(arrival_turf)
|
||||
consumed_mob.Paralyze(100)
|
||||
consumed_mob.adjustBruteLoss(30)
|
||||
consumed_mob.adjust_brute_loss(30)
|
||||
consumed_mob.flash_act(1, TRUE, TRUE)
|
||||
|
||||
new /obj/effect/particle_effect/sparks(consumed_object)
|
||||
|
||||
Reference in New Issue
Block a user