Skip to content

Commit

Permalink
Merge branch 'master' into Thruster
Browse files Browse the repository at this point in the history
  • Loading branch information
Thera-Pissed authored Feb 2, 2024
2 parents d547e84 + 9d329c9 commit f733b02
Show file tree
Hide file tree
Showing 23 changed files with 371 additions and 70 deletions.
2 changes: 1 addition & 1 deletion _maps/RandomRuins/JungleRuins/jungle_demon.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/suit_storage_unit/inherit,
/obj/item/tank/internals/oxygen/red,
/obj/item/clothing/suit/space/hardsuit/syndi,
/obj/item/clothing/suit/space/hardsuit/syndi/ramzi,
/obj/item/clothing/mask/gas/syndicate,
/turf/open/floor/plasteel/dark,
/area/ruin/powered)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,7 @@
/area/overmap_encounter/planetoid/cave/explored)
"KT" = (
/obj/structure/safe/floor,
/obj/item/clothing/suit/space/hardsuit/syndi,
/obj/item/clothing/suit/space/hardsuit/syndi/ramzi,
/obj/item/documents/syndicate,
/turf/open/floor/plating{
icon_state = "panelscorched";
Expand Down
2 changes: 1 addition & 1 deletion _maps/RandomRuins/SpaceRuins/onehalf.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -920,7 +920,7 @@
/obj/structure/safe/floor,
/obj/item/tank/internals/oxygen/red,
/obj/item/clothing/mask/gas/syndicate,
/obj/item/clothing/suit/space/hardsuit/syndi,
/obj/item/clothing/suit/space/hardsuit/syndi/ramzi,
/obj/item/reagent_containers/food/drinks/bottle/rum,
/obj/item/reagent_containers/food/drinks/bottle/rum,
/obj/item/folder/syndicate/mining,
Expand Down
20 changes: 10 additions & 10 deletions _maps/shuttles/independent/independent_halftrack.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -200,16 +200,16 @@
/obj/machinery/airalarm/directional/south,
/obj/machinery/firealarm/directional/west,
/obj/structure/closet/crate/secure/weapon,
/obj/item/storage/box/lethalshot,
/obj/item/storage/box/lethalshot,
/obj/item/storage/box/lethalshot,
/obj/item/storage/box/lethalshot,
/obj/item/storage/box/lethalshot,
/obj/item/storage/box/beanbag,
/obj/item/storage/box/beanbag,
/obj/item/storage/box/beanbag,
/obj/item/storage/box/beanbag,
/obj/item/storage/box/beanbag,
/obj/item/ammo_box/a12g,
/obj/item/ammo_box/a12g,
/obj/item/ammo_box/a12g,
/obj/item/ammo_box/a12g,
/obj/item/ammo_box/a12g,
/obj/item/ammo_box/a12g/beanbag,
/obj/item/ammo_box/a12g/beanbag,
/obj/item/ammo_box/a12g/beanbag,
/obj/item/ammo_box/a12g/beanbag,
/obj/item/ammo_box/a12g/beanbag,
/obj/effect/turf_decal/box/red,
/turf/open/floor/plasteel/dark,
/area/ship/security)
Expand Down
11 changes: 10 additions & 1 deletion _maps/shuttles/independent/independent_mudskipper.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,10 @@
dir = 8
},
/obj/effect/turf_decal/corner/transparent/neutral,
/obj/machinery/light_switch{
pixel_y = 23;
pixel_x = -3
},
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"dQ" = (
Expand Down Expand Up @@ -970,7 +974,7 @@
"uW" = (
/obj/machinery/door/airlock/grunge{
name = "Bridge";
req_one_access_txt = "7"
req_one_access_txt = "20"
},
/obj/effect/turf_decal/industrial/warning,
/obj/effect/turf_decal/industrial/warning{
Expand Down Expand Up @@ -1058,6 +1062,11 @@
/obj/structure/dresser,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/light_switch{
dir = 8;
pixel_x = 22;
pixel_y = -6
},
/turf/open/floor/wood/walnut{
icon_state = "wood-broken7"
},
Expand Down
10 changes: 2 additions & 8 deletions _maps/shuttles/minutemen/minutemen_cepheus.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -4108,15 +4108,9 @@
/obj/item/ammo_box/magazine/m45{
pixel_x = 6
},
/obj/item/storage/box/rubbershot{
pixel_x = 3;
pixel_y = -3
},
/obj/item/ammo_box/a12g/rubbershot,
/obj/item/ammo_box/magazine/cm15_mag,
/obj/item/storage/box/rubbershot{
pixel_x = 3;
pixel_y = -3
},
/obj/item/ammo_box/a12g/rubbershot,
/turf/open/floor/plasteel/tech/grid,
/area/ship/security)
"RN" = (
Expand Down
2 changes: 1 addition & 1 deletion _maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/airalarm/directional/north,
/obj/effect/turf_decal/industrial/outline,
/obj/item/storage/box/lethalshot,
/obj/item/ammo_box/a12g,
/obj/item/ammo_box/c10mm,
/turf/open/floor/mineral/plastitanium,
/area/ship/security/armory)
Expand Down
6 changes: 3 additions & 3 deletions _maps/shuttles/syndicate/syndicate_twinkleshine.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -3719,9 +3719,9 @@
/obj/item/ammo_casing/caseless/rocket,
/obj/item/ammo_casing/caseless/rocket/hedp,
/obj/item/ammo_casing/caseless/rocket/hedp,
/obj/item/storage/box/lethalshot,
/obj/item/storage/box/lethalshot,
/obj/item/storage/box/lethalshot,
/obj/item/ammo_box/a12g,
/obj/item/ammo_box/a12g,
/obj/item/ammo_box/a12g,
/obj/item/gun/ballistic/rocketlauncher,
/obj/item/gun/ballistic/automatic/ebr,
/obj/item/gun/ballistic/automatic/ebr{
Expand Down
2 changes: 1 addition & 1 deletion code/datums/mapgen/planetary/BeachGenerator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@

/mob/living/simple_animal/butterfly = 4,
/mob/living/simple_animal/hostile/retaliate/poison/snake = 5,
/mob/living/simple_animal/hostile/poison/bees/toxin = 3,
/mob/living/simple_animal/hostile/poison/bees = 3,
)
mob_spawn_chance = 2
feature_spawn_chance = 0.1
Expand Down
2 changes: 1 addition & 1 deletion code/datums/mapgen/planetary/JungleGenerator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@
)
mob_spawn_chance = 1
mob_spawn_list = list(
/mob/living/simple_animal/hostile/poison/bees/toxin = 1,
/mob/living/simple_animal/hostile/poison/bees = 1,
/mob/living/simple_animal/hostile/mushroom = 1,
/mob/living/simple_animal/pet/dog/corgi/capybara = 1
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1512,6 +1512,15 @@
/obj/item/stock_parts/capacitor = 2
)

/obj/item/circuitboard/machine/printer
name = "Poster Printer (Machine Board)"
build_path = /obj/machinery/printer
req_components = list(
/obj/item/stock_parts/scanning_module = 2,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/manipulator = 2,
)

/obj/item/circuitboard/machine/coffeemaker
name = "Modello 3 Coffeemaker"
build_path = /obj/machinery/coffeemaker
Expand Down
185 changes: 185 additions & 0 deletions code/game/objects/structures/printer.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
/obj/machinery/printer
name = "poster printer"
desc = "Used to print out various posters using toner cartridges."
icon = 'icons/obj/printer.dmi'
icon_state = "printer"
density = TRUE
power_channel = AREA_USAGE_EQUIP
max_integrity = 100
pass_flags = PASSTABLE
circuit = /obj/item/circuitboard/machine/printer
var/busy = FALSE
var/datum/weakref/loaded_item_ref
var/datum/weakref/printed_poster
var/obj/item/toner/toner_cartridge
var/poster_type

/obj/machinery/printer/Initialize()
. = ..()
toner_cartridge = new(src)

/obj/machinery/printer/update_overlays()
. = ..()
if(panel_open)
. += mutable_appearance(icon, "printer_panel")
var/obj/item/loaded = loaded_item_ref?.resolve()
var/obj/item/poster = printed_poster?.resolve()
if(loaded)
. += mutable_appearance(icon, "contain_paper")
if(poster)
. += mutable_appearance(icon, "contain_poster")

/obj/machinery/printer/screwdriver_act(mob/living/user, obj/item/screwdriver)
. = ..()
default_deconstruction_screwdriver(user, icon_state, icon_state, screwdriver)
update_icon()
return TRUE

/obj/machinery/printer/Destroy()
QDEL_NULL(toner_cartridge)
QDEL_NULL(loaded_item_ref)
QDEL_NULL(printed_poster)
return ..()

/obj/machinery/printer/attackby(obj/item/item, mob/user, params)
if(panel_open)
if(is_wire_tool(item))
wires.interact(user)
return
if(can_load_item(item))
if(!loaded_item_ref?.resolve())
loaded_item_ref = WEAKREF(item)
item.forceMove(src)
update_icon()
return
else if(istype(item, /obj/item/toner))
if(toner_cartridge)
to_chat(user, "<span class='warning'>[src] already has a toner cartridge inserted. Remove that one first.</span>")
return
item.forceMove(src)
toner_cartridge = item
to_chat(user, "<span class='notice'>You insert [item] into [src].</span>")
else return ..()

/obj/machinery/printer/proc/can_load_item(obj/item/item)
if(busy)
return FALSE //no loading the printer if there's already a print job happening!
if(!istype(item, /obj/item/paper))
return FALSE
if(!istype(item, /obj/item/stack))
return TRUE
var/obj/item/stack/stack_item = item
return stack_item.amount == 1

/obj/machinery/printer/ui_data(mob/user)
var/list/data = list()
data["has_paper"] = !!loaded_item_ref?.resolve()
data["has_poster"] = !!printed_poster?.resolve()

if(toner_cartridge)
data["has_toner"] = TRUE
data["current_toner"] = toner_cartridge.charges
data["max_toner"] = toner_cartridge.max_charges
data["has_enough_toner"] = has_enough_toner()
else
data["has_toner"] = FALSE
data["has_enough_toner"] = FALSE

return data

/obj/machinery/printer/proc/has_enough_toner()
return toner_cartridge.charges >= 1

/obj/machinery/printer/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "PosterPrinter")
ui.open()

/obj/machinery/printer/ui_act(action, list/params)
. = ..()
if(.)
return
var/obj/item/poster = printed_poster?.resolve()
var/obj/item/loaded = loaded_item_ref?.resolve()
switch(action)
if("remove")
if(!loaded)
return
loaded.forceMove(drop_location())
loaded_item_ref = null
update_icon()
return TRUE
if("remove_poster")
if(!poster)
to_chat(usr, span_warning("No poster! waddaheeeeell"))
return
if(busy)
to_chat(usr, span_warning("[src] is still printing your poster! Please wait until it is finished."))
return FALSE
poster.forceMove(drop_location())
printed_poster = null
update_icon()
return TRUE
if("choose_type")
poster_type = params["poster_type"]
return TRUE
if("print")
if(busy)
to_chat(usr, span_warning("[src] is currently busy printing a poster. Please wait until it is finished."))
return FALSE
if(toner_cartridge.charges - 1 < 0)
to_chat(usr, span_warning("There is not enough toner in [src] to print the poster, please replace the cartridge."))
return FALSE
if(!loaded)
to_chat(usr, span_warning("[src] has no paper in it! Please insert a sheet of paper."))
return FALSE
if(!poster_type)
to_chat(usr, span_warning("[src] has no poster type selected! Please select a type first!"))
return FALSE
if(poster)
to_chat(usr, span_warning("[src] ejects its current poster before printing a new one."))
poster.forceMove(drop_location())
printed_poster = null
update_icon()
print_poster()
return TRUE
if("remove_toner")
if(issilicon(usr) || (ishuman(usr) && !usr.put_in_hands(toner_cartridge)))
toner_cartridge.forceMove(drop_location())
toner_cartridge = null
return TRUE

/obj/machinery/printer/proc/print_poster()
busy = TRUE
loaded_item_ref = null
playsound(src, 'sound/items/poster_being_created.ogg', 20, FALSE)
toner_cartridge.charges -= 1
icon_state = "print"
var/mutable_appearance/overlay = mutable_appearance(icon, "print_poster")
overlays += overlay
update_icon()
addtimer(CALLBACK(src, PROC_REF(print_complete), overlay), 2.6 SECONDS)

/obj/machinery/printer/proc/print_complete(mutable_appearance/remove_overlay)
icon_state = "printer"
overlays -= remove_overlay
switch(poster_type)
if("Syndicate")
var/obj/item/poster/random_contraband/poster = new()
printed_poster = WEAKREF(poster)
if("SolGov")
var/obj/item/poster/random_solgov/poster = new()
printed_poster = WEAKREF(poster)
if("Nanotrasen")
var/obj/item/poster/random_official/poster = new()
printed_poster = WEAKREF(poster)
if("RILENA")
var/obj/item/poster/random_rilena/poster = new()
printed_poster = WEAKREF(poster)
if("Nanotrasen (Retro)")
var/obj/item/poster/random_retro/poster = new()
printed_poster = WEAKREF(poster)
update_icon()
busy = FALSE
poster_type = null
Loading

0 comments on commit f733b02

Please sign in to comment.