Skip to content

Commit

Permalink
Merge branch 'shiptest-ss13:master' into Train-station
Browse files Browse the repository at this point in the history
  • Loading branch information
immortalartisan authored Jan 30, 2024
2 parents ed9e35e + d41cb1f commit ed633b6
Show file tree
Hide file tree
Showing 13 changed files with 347 additions and 46 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
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
Original file line number Diff line number Diff line change
Expand Up @@ -1496,6 +1496,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
39 changes: 4 additions & 35 deletions code/modules/clothing/spacesuits/hardsuit.dm
Original file line number Diff line number Diff line change
Expand Up @@ -423,17 +423,17 @@
//Ramzi Syndie suit
/obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi
name = "rusted-red hardsuit helmet"
desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Gorlex Marauders."
alt_desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in combat mode. Manufactured by Gorlex Marauders."
desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique."
alt_desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in combat mode. Manufactured by Ramzi Clique."
icon_state = "hardsuit1-ramzi"
item_state = "hardsuit1-ramzi"
hardsuit_type = "ramzi"
armor = list("melee" = 35, "bullet" = 25, "laser" = 20,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)

/obj/item/clothing/suit/space/hardsuit/syndi/ramzi
name = "rusted-red hardsuit"
desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Gorlex Marauders."
alt_desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in combat mode. Manufactured by Gorlex Marauders."
desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique."
alt_desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in combat mode. Manufactured by Ramzi Clique."
icon_state = "hardsuit1-ramzi"
item_state = "hardsuit1-ramzi"
hardsuit_type = "ramzi"
Expand All @@ -452,7 +452,6 @@
icon_state = "hardsuit1-sbg"
item_state = "hardsuit1-sbg"
hardsuit_type = "sbg"
armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90)

/obj/item/clothing/suit/space/hardsuit/syndi/sbg
name = "beige-red hardsuit"
Expand All @@ -464,10 +463,6 @@
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/sbg
lightweight = 1
jetpack = null
armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90)
combat_slowdown = 0
jetpack = null


//Hardliner Syndie suit
/obj/item/clothing/head/helmet/space/hardsuit/syndi/hl
Expand All @@ -477,7 +472,6 @@
icon_state = "hardsuit1-hl"
item_state = "hardsuit1-hl"
hardsuit_type = "hl"
armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90)

/obj/item/clothing/suit/space/hardsuit/syndi/hl
name = "white-red hardsuit"
Expand All @@ -489,9 +483,6 @@
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/hl
lightweight = 1
jetpack = null
armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90)
combat_slowdown = 0
jetpack = null


//Elite Syndie suit
Expand Down Expand Up @@ -530,28 +521,6 @@
/obj/item/clothing/suit/space/hardsuit/syndi/elite/debug
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/debug

//The Owl Hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/syndi/owl
name = "owl hardsuit helmet"
desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in travel mode."
alt_desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in combat mode."
icon_state = "hardsuit0-owl"
item_state = "s_helmet"
hardsuit_type = "owl"
visor_flags_inv = 0
visor_flags = 0
on = FALSE
full_retraction = TRUE

/obj/item/clothing/suit/space/hardsuit/syndi/owl
name = "owl hardsuit"
desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in travel mode."
alt_desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in combat mode."
icon_state = "hardsuit1-owl"
item_state = "s_suit"
hardsuit_type = "owl"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl

//Cybersun Hardsuit
/obj/item/clothing/suit/space/hardsuit/syndi/cybersun
name = "neutron-star combat hardsuit"
Expand Down
7 changes: 0 additions & 7 deletions code/modules/library/lib_machines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
dat += "<h3>NTGanda(tm) Universal Printing Module</h3>"
dat += "What would you like to print?<BR>"
dat += "<A href='?src=[REF(src)];printbible=1'>\[Bible\]</A><BR>"
dat += "<A href='?src=[REF(src)];printposter=1'>\[Poster\]</A><BR>"
dat += "<A href='?src=[REF(src)];switchscreen=0'>(Return to main menu)</A><BR>"
if(8)
dat += "<h3>Accessing Forbidden Lore Vault v 1.3</h3>"
Expand Down Expand Up @@ -524,12 +523,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
cooldown = world.time + PRINTER_COOLDOWN
else
say("Printer currently unavailable, please wait a moment.")
if(href_list["printposter"])
if(cooldown < world.time)
new /obj/item/poster/random_official(src.loc)
cooldown = world.time + PRINTER_COOLDOWN
else
say("Printer currently unavailable, please wait a moment.")
add_fingerprint(usr)
updateUsrDialog()

Expand Down
5 changes: 5 additions & 0 deletions html/changelogs/AutoChangeLog-pr-2355.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
author: goober3
changes:
- {tweak: Added more light switches to the Mudskipper.}
- {bugfix: The Mudskipper bridge now has proper access applied.}
delete-after: true
4 changes: 4 additions & 0 deletions html/changelogs/AutoChangeLog-pr-2600.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
author: FalloutFalcon
changes:
- {balance: reverts some blood red hard suits back to ramzi}
delete-after: true
Binary file added icons/obj/printer.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions shiptest.dme
Original file line number Diff line number Diff line change
Expand Up @@ -1351,6 +1351,7 @@
#include "code\game\objects\structures\petrified_statue.dm"
#include "code\game\objects\structures\plasticflaps.dm"
#include "code\game\objects\structures\poddoor_assembly.dm"
#include "code\game\objects\structures\printer.dm"
#include "code\game\objects\structures\radioactive.dm"
#include "code\game\objects\structures\railings.dm"
#include "code\game\objects\structures\reflector.dm"
Expand Down
Loading

0 comments on commit ed633b6

Please sign in to comment.