Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from goonstation:master #429

Merged
merged 47 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
70cb1fe
material speedup
ZeWaka Oct 19, 2024
6eaabd1
Improves descriptions for 3 hats (#21130)
MintyPhresh Oct 20, 2024
d8df0d8
Fixes Shitty Grill typo (#21124)
MintyPhresh Oct 20, 2024
0eedfa5
Fixes unintentional misplaced tile in Donut2 Kitchen (#21122)
MintyPhresh Oct 20, 2024
186e86f
another cobalt
ZeWaka Oct 20, 2024
eb7985f
cleaner tracy stuff and proper shutdown
ZeWaka Oct 20, 2024
fa51762
Merge branch 'master' of https://github.com/goonstation/goonstation
ZeWaka Oct 20, 2024
27198ea
fix error that wasn't happening on local for some reason
ZeWaka Oct 20, 2024
c786062
Fixes #21083
Azrun Oct 20, 2024
0eaa258
more time off init
ZeWaka Oct 20, 2024
9bf310b
highly illegal code
ZeWaka Oct 20, 2024
827f0a5
Allow 3 Security Officers to revoke armory access (#20898)
JORJ949 Oct 21, 2024
7654249
Changelog for #20898 [skip ci]
robuddybot Oct 21, 2024
eb348db
experimental exponential scaling of requisition payouts to make them …
Tarmunora Oct 21, 2024
4492ade
Merge branch 'master' of https://github.com/goonstation/goonstation
Tarmunora Oct 21, 2024
ca278ce
clog
Tarmunora Oct 21, 2024
05c69ab
preemtive nerf
Tarmunora Oct 21, 2024
9c6c0b8
Slightly lower gang event score (#21140)
TDHooligan Oct 21, 2024
c80abdd
Changelog for #21140 [skip ci]
robuddybot Oct 21, 2024
553042e
Add desc
flrsh Oct 21, 2024
4c1d846
fix nuke plant sites strict typecheck
TobleroneSwordfish Oct 21, 2024
7c71a9d
Probably fix runtime?
flrsh Oct 21, 2024
f8d1c11
Improve code
flrsh Oct 21, 2024
8d29352
Actually that was still a bad variable name
flrsh Oct 21, 2024
18a2b8c
refactor crushers into slow (station/etc) and instant(adventurezone) …
Tarmunora Oct 21, 2024
86e0e72
Merge branch 'master' of https://github.com/goonstation/goonstation
Tarmunora Oct 21, 2024
1a836c0
air monitor overlays (17 bajillion icon states later)
TobleroneSwordfish Oct 22, 2024
bc022d4
Fixes #21137
Azrun Oct 22, 2024
a57bb4c
add a few more air alarms to atlas
TobleroneSwordfish Oct 22, 2024
5eef343
donut 2 air monitors
TobleroneSwordfish Oct 22, 2024
4d682a4
Eject contents of recharger when it loses power (#21148)
pgmzeta Oct 22, 2024
5cfb550
Examining a vehicle when you can see the rider shows their name (#21147)
pgmzeta Oct 22, 2024
b840c6e
Changelog for #21147 [skip ci]
robuddybot Oct 22, 2024
7fcabb5
unfuck AI alarm code significantly
TobleroneSwordfish Oct 22, 2024
6e52274
Reorganize NTSC inventory (#21133)
JORJ949 Oct 22, 2024
85ed68b
Changelog for #21133 [skip ci]
robuddybot Oct 22, 2024
0cbb125
nerf req scaling
Tarmunora Oct 22, 2024
b1178eb
Fix antagonist panel nulls (#21157)
TobleroneSwordfish Oct 23, 2024
1bf4a7d
Typo Fix for bartender shaker (#21156)
MintyPhresh Oct 23, 2024
1590910
github issues template with bug type
ZeWaka Oct 23, 2024
5fe7e86
- maximum purchases on traitor items
UrsulaMejor Oct 23, 2024
a6faaea
- oops!
UrsulaMejor Oct 23, 2024
1d56e50
- clog
UrsulaMejor Oct 23, 2024
551fb4c
Security utility towel (#21116)
JORJ949 Oct 23, 2024
6a923c1
Changelog for #21116 [skip ci]
robuddybot Oct 23, 2024
ce6b839
AI players receive atmos alerts (#21149)
JORJ949 Oct 23, 2024
c525ed2
Changelog for #21149 [skip ci]
robuddybot Oct 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion +secret
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: Report a Bug
description: Report a bug here on our issue tracker.
type: Bug
body:
- type: "input"
id: "labels"
Expand Down
1 change: 1 addition & 0 deletions _std/__std.dme
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@
#include "defines\temperatures.dm"
#include "defines\time.dm"
#include "defines\tooltips.dm"
#include "defines\tracy.dm"
#include "defines\traits.dm"
#include "defines\turf.dm"
#include "defines\ui.dm"
Expand Down
4 changes: 2 additions & 2 deletions _std/defines/gang.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,11 @@


// CRATE DROP DEFINES
#define GANG_CRATE_SCORE 5000 //! how many points gang crates grant to each member, when opened
#define GANG_CRATE_SCORE 3000 //! how many points gang crates grant to each member, when opened
#define GANG_CRATE_DROP_TIME 300 SECONDS //! How long it takes for gang crates to arrive after being announced
#define GANG_CRATE_LOCK_TIME 10 SECONDS //! How long it takes for gang crates to unlock after arriving

#define GANG_LOOT_SCORE 1500 //! how many points gang duffel bags grant to each member when opened
#define GANG_LOOT_SCORE 1000 //! how many points gang duffel bags grant to each member when opened


// GANG TAG DEFINES:
Expand Down
2 changes: 2 additions & 0 deletions _std/defines/tracy.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#define TRACY_ENABLE_PATH "data/tracy_profiling_enabled"
#define TRACY_DLL_PATH (world.system_type == MS_WINDOWS ? "prof.dll" : "./libprof.so")
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
dir = 1;
color = "b4b4b4"
},
/obj/machinery/crusher,
/obj/machinery/crusher/slow,
/obj/map/light/dimreddish,
/turf/variableTurf/clear,
/area/noGenerate)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
name = "GLOMAR Salvager"
})
"m" = (
/obj/machinery/crusher,
/obj/machinery/crusher/slow,
/obj/disposalpipe/segment,
/turf/simulated/floor/plating/scorched,
/area/evilreaver/storage/engineering{
Expand Down Expand Up @@ -159,7 +159,7 @@
name = "GLOMAR Salvager"
})
"v" = (
/obj/machinery/crusher,
/obj/machinery/crusher/slow,
/turf/simulated/floor/plating/scorched,
/area/evilreaver/storage/engineering{
name = "GLOMAR Salvager"
Expand Down
2 changes: 1 addition & 1 deletion browserassets/tgui/tgui.bundle.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browserassets/tgui/tgui.bundle.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion code/datums/http.dm
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@
*/
/datum/cobalt_tools
/// The base API url to use.
var/base_url = "https://cobalt-backend.canine.tools" // api.cobalt.tools
var/base_url = "https://cobalt-api.kwiatekmiki.com" // api.cobalt.tools

/**
* Sends a request to the cobalt.tools API to fetch a tunnel for the audio file we want.
Expand Down
11 changes: 5 additions & 6 deletions code/datums/jobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2536,18 +2536,17 @@ ABSTRACT_TYPE(/datum/job/special/halloween/critter)
slot_back = list(/obj/item/storage/backpack/NT)
slot_belt = list(/obj/item/storage/belt/security/ntsc) //special secbelt subtype that spawns with the NTSO gear inside
slot_jump = list(/obj/item/clothing/under/misc/turds)
slot_suit = list(/obj/item/clothing/suit/space/ntso)
slot_head = list(/obj/item/clothing/head/NTberet)
slot_foot = list(/obj/item/clothing/shoes/swat)
slot_glov = list(/obj/item/clothing/gloves/swat/NT)
slot_eyes = list(/obj/item/clothing/glasses/sunglasses/sechud)
slot_ears = list(/obj/item/device/radio/headset/command/nt/consultant) //needs their own secret channel
slot_mask = list(/obj/item/clothing/mask/gas/NTSO)
slot_card = /obj/item/card/id/nt_specialist
slot_poc1 = list(/obj/item/device/pda2/ntso)
slot_poc2 = list(/obj/item/currency/spacecash/fivehundred)
items_in_backpack = list(/obj/item/storage/firstaid/regular,
/obj/item/clothing/head/helmet/space/ntso,
/obj/item/clothing/suit/space/ntso,
/obj/item/cloth/handkerchief/nt)
slot_poc1 = list(/obj/item/storage/ntsc_pouch)
slot_poc2 = list(/obj/item/device/pda2/ntso)
items_in_backpack = list(/obj/item/storage/firstaid/regular)
wiki_link = "https://wiki.ss13.co/Nanotrasen_Security_Consultant"

faction = list(FACTION_NANOTRASEN)
Expand Down
3 changes: 3 additions & 0 deletions code/datums/syndicate_buylist.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ ABSTRACT_TYPE(/datum/syndicate_buylist)
var/category
/// Bitflags for what uplinks can buy this item (see `_std/defines/uplink.dm` for flags)
var/can_buy
/// The maximum amount a given uplink can buy this item
var/max_buy = INFINITY

/**
* Runs on the purchase of the buylist datum
Expand Down Expand Up @@ -1058,6 +1060,7 @@ ABSTRACT_TYPE(/datum/syndicate_buylist/traitor)
job = list("Rancher")
not_in_crates = TRUE
can_buy = UPLINK_TRAITOR
max_buy = 3

/datum/syndicate_buylist/traitor/fishing_rod
name = "Barbed Fishing Rod"
Expand Down
89 changes: 45 additions & 44 deletions code/mob/living/silicon/ai.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ var/global/list/ai_emotions = list("Annoyed" = "ai_annoyed-dol", \
//var/list/connected_shells = list()
var/list/installed_modules = list()
var/aiRestorePowerRoutine = 0
///List of currently active alarms
var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list())
var/viewalerts = 0
var/printalerts = 1
Expand Down Expand Up @@ -901,60 +902,60 @@ or don't if it uses a custom topopen overlay
boutput(src,"You have no laws!")
return

/mob/living/silicon/ai/triggerAlarm(var/class, area/A, var/O, var/alarmsource)
/mob/living/silicon/ai/triggerAlarm(var/class, area/alarm_area, var/list/camera_list, var/alarmsource)
if (isdead(src))
return 1
var/list/L = src.alarms[class]
for (var/I in L)
if (I == A.name)
var/list/alarm = L[I]
return
var/list/active_alarms = src.alarms[class]
for (var/area_name in active_alarms)
if (area_name == alarm_area.name)
var/list/alarm = active_alarms[area_name]
var/list/sources = alarm[3]
if (!(alarmsource in sources))
sources += alarmsource
return 1
var/obj/machinery/camera/C = null
var/list/CL = null
if (O && istype(O, /list))
CL = O
if (length(CL) == 1)
C = CL[1]
else if (O && istype(O, /obj/machinery/camera))
C = O
L[A.name] = list(A, (C) ? C : O, list(alarmsource))
if (O)
if (printalerts)
if (C?.camera_status)
src.show_text("--- [class] alarm detected in [A.name]! ( <A HREF=\"?src=\ref[src];switchcamera=\ref[C]\">[C.c_tag]</A> )")
else if (length(CL))
var/foo = 0
var/dat2 = ""
for (var/obj/machinery/camera/I in CL)
dat2 += "[(!foo) ? " " : "| "]<A HREF=\"?src=\ref[src];switchcamera=\ref[I]\">[I.c_tag]</A>"
foo = 1
src.show_text("--- [class] alarm detected in [A.name]! ([dat2])")
else
src.show_text("--- [class] alarm detected in [A.name]! ( No Camera )")
else
if (printalerts)
src.show_text("--- [class] alarm detected in [A.name]! ( No Camera )")
if (src.viewalerts) src.ai_alerts()
return 1
return
var/obj/machinery/camera/single_camera = null
if (length(camera_list) == 1)
single_camera = camera_list[1]
active_alarms[alarm_area.name] = list(alarm_area, single_camera || camera_list, list(alarmsource))

/mob/living/silicon/ai/cancelAlarm(var/class, area/A as area, obj/origin)
var/list/L = src.alarms[class]
var/cleared = 0
for (var/I in L)
if (I == A.name)
var/list/alarm = L[I]
if (src.viewalerts)
src.ai_alerts()

if (!printalerts)
return

if (!single_camera && !camera_list)
src.show_text("--- [class] alarm detected in [alarm_area.name]! ( No Camera )")
return

if (single_camera?.camera_status)
src.show_text("--- [class] alarm detected in [alarm_area.name]! ( <A HREF=\"?src=\ref[src];switchcamera=\ref[single_camera]\">[single_camera.c_tag]</A> )")
else if (length(camera_list))
var/first_cam = TRUE
var/cameras_string = ""
for (var/obj/machinery/camera/camera in camera_list)
cameras_string += "[first_cam ? " " : "| "]<A HREF=\"?src=\ref[src];switchcamera=\ref[camera]\">[camera.c_tag]</A>"
first_cam = FALSE
src.show_text("--- [class] alarm detected in [alarm_area.name]! ([cameras_string])")
else
src.show_text("--- [class] alarm detected in [alarm_area.name]! ( No Camera )")

/mob/living/silicon/ai/cancelAlarm(var/class, area/alarm_area, obj/origin)
var/list/active_alarms = src.alarms[class]
var/cleared = FALSE
for (var/area_name in active_alarms)
if (area_name == alarm_area.name)
var/list/alarm = active_alarms[area_name]
var/list/srcs = alarm[3]
if (origin in srcs)
srcs -= origin
if (length(srcs) == 0)
cleared = 1
L -= I
cleared = TRUE
active_alarms -= area_name
if (cleared)
src.show_text("--- [class] alarm in [A.name] has been cleared.")
if (src.viewalerts) src.ai_alerts()
src.show_text("--- [class] alarm in [alarm_area.name] has been cleared.")
if (src.viewalerts)
src.ai_alerts()
return !cleared

/mob/living/silicon/ai/death(gibbed)
Expand Down
10 changes: 6 additions & 4 deletions code/modules/admin/randomverbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2013,7 +2013,9 @@
return

if (istype(src.mob, /mob/dead/target_observer))
qdel(src.mob)
var/mob/dead/target_observer/old_mob = src.mob
src.mob = src.mob.ghost // switch our mob to /mob/dead/observer
qdel(old_mob) // so we don't leave a bunch of these empty observers inside mobs

var/mob/dead/observer/O = src.mob
var/client/C
Expand All @@ -2029,7 +2031,7 @@
if (C?.mob)
M = C.mob

boutput(src, SPAN_NOTICE("Now observing <b>[M] ([C])</b>."))
boutput(src, SPAN_NOTICE("Now observing <b>[M] ([C])</b><br>") + M.get_desc())
O.insert_observer(M)


Expand Down Expand Up @@ -2788,9 +2790,9 @@ var/global/mirrored_physical_zone_created = FALSE //enables secondary code branc
if("Yes")
for(var/turf/simulated/wall/W in world)
if (W.z != 1) continue
var/obj/machinery/crusher/O = locate() in W.contents //in case someone presses it again
var/obj/machinery/crusher/slow/O = locate() in W.contents //in case someone presses it again
if (O) continue
new /obj/machinery/crusher/wall(locate(W.x, W.y, W.z))
new /obj/machinery/crusher/slow/wall(locate(W.x, W.y, W.z))
W.set_density(0)

logTheThing(LOG_ADMIN, src, "has turned every wall into a crusher! God damn.")
Expand Down
46 changes: 31 additions & 15 deletions code/modules/admin/tracy_profiling.dm
Original file line number Diff line number Diff line change
@@ -1,27 +1,43 @@
var/tracy_toggle_path = "data/tracy_profiling_enabled"
var/global/tracy_log = null
var/global/tracy_initialized = FALSE
var/global/tracy_init_error = null
var/global/tracy_init_reason = null

/proc/prof_init()
if(!fexists(TRACY_DLL_PATH))
world.log << "Error initializing byond-tracy: [TRACY_DLL_PATH] not found!"
CRASH("Error initializing byond-tracy: [TRACY_DLL_PATH] not found!")

world.log << "Enabling the Tracy Profiler Hook."
var/lib
switch(world.system_type)
if(MS_WINDOWS) lib = "prof.dll"
if(UNIX) lib = "./libprof.so"
else CRASH("unsupported platform")

var/init = LIBCALL(lib, "init")("block")
if("0" != init) CRASH("[lib] init error: [init]")
var/init_result = LIBCALL(TRACY_DLL_PATH , "init")("block")
if (length(init_result) != 0 && init_result[1] == ".") // if first character is ., then it returned the output filename
world.log << "byond-tracy initialized (logfile: [init_result])"
global.tracy_initialized = TRUE
return tracy_log = init_result
else if (init_result != "0")
global.tracy_init_error = init_result
world.log << "Error initializing byond-tracy: [init_result]"
CRASH("Error initializing byond-tracy: [init_result]")
else
global.tracy_initialized = TRUE
world.log << "byond-tracy initialized (no logfile)"

/proc/check_tracy_toggle()
if (fexists(tracy_toggle_path))
fdel(tracy_toggle_path)
prof_init()
/world/proc/shutdown_byond_tracy()
if (tracy_initialized)
world.log << "Shutting down byond-tracy"
message_admins("Shutting down byond-tracy")
global.tracy_initialized = FALSE
call_ext(TRACY_DLL_PATH, "destroy")()

/proc/toggle_tracy_profiling_file()
var/enabled = FALSE
if (fexists(tracy_toggle_path))
fdel(tracy_toggle_path)
if (fexists(TRACY_ENABLE_PATH))
fdel(TRACY_ENABLE_PATH)
else
var/file = file(tracy_toggle_path)
var/file = file(TRACY_ENABLE_PATH)
file << ""
enabled = TRUE
return enabled

#undef TRACY_DLL_PATH
4 changes: 2 additions & 2 deletions code/modules/antagonists/blob/abilities/blob_abilities.dm
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@
if (!T)
T = get_turf(owner)

if (istype(T, /turf/space))
if (istype(T, /turf/space) || (istype(T, /turf/unsimulated) && T.can_build))
var/datum/blob_ability/bridge/B = owner.get_ability(/datum/blob_ability/bridge)

if (B)
Expand Down Expand Up @@ -703,7 +703,7 @@
if (!T)
T = get_turf(owner)

if (!istype(T, /turf/space))
if (!istype(T, /turf/space) && !T.can_build)
boutput(owner, SPAN_ALERT("Bridges must be placed on space tiles."))
return 1

Expand Down
4 changes: 2 additions & 2 deletions code/modules/camera/motion.dm
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@
/obj/machinery/camera/motion/proc/cancelAlarm()
if (detectTime == -1)
for (var/mob/living/silicon/aiPlayer in mobs)
if (camera_status) aiPlayer.cancelAlarm("Motion", src.loc.loc)
if (camera_status) aiPlayer.cancelAlarm("Motion", get_area(src))
detectTime = 0
return 1

/obj/machinery/camera/motion/proc/triggerAlarm()
if (!detectTime) return 0
for (var/mob/living/silicon/aiPlayer in mobs)
if (camera_status) aiPlayer.triggerAlarm("Motion", src.loc.loc, src)
if (camera_status) aiPlayer.triggerAlarm("Motion", get_area(src), list(src))
detectTime = -1
return 1

Expand Down
2 changes: 1 addition & 1 deletion code/modules/chemistry/tools/food_and_drink.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2192,7 +2192,7 @@ ADMIN_INTERACT_PROCS(/obj/item/reagent_containers/food/drinks/drinkingglass, pro
if(src.reagents.has_reagent(O.ids[i]))
O.completed |= 1 << i-1
else
user.visible_message("<b>[user.name]</b> shakes the container, but it's empty!.")
user.visible_message("<b>[user.name]</b> shakes the container, but it's empty!")

/obj/item/reagent_containers/food/drinks/cocktailshaker/golden
name = "golden cocktail shaker"
Expand Down
Loading
Loading