Skip to content

Commit

Permalink
Merge branch 'master' into revert-1344-xmasmap
Browse files Browse the repository at this point in the history
  • Loading branch information
Repede committed Jan 3, 2024
2 parents bead4d6 + 9ee13fa commit 7fa59bc
Show file tree
Hide file tree
Showing 409 changed files with 61,218 additions and 178,575 deletions.
2 changes: 2 additions & 0 deletions code/__defines/chat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

#define MESSAGE_TYPE_SYSTEM "system"
#define MESSAGE_TYPE_LOCALCHAT "localchat"
#define MESSAGE_TYPE_NPCEMOTE "npcemote"
#define MESSAGE_TYPE_PLOCALCHAT "plocalchat"
#define MESSAGE_TYPE_RADIO "radio"
#define MESSAGE_TYPE_NIF "nif"
Expand All @@ -22,6 +23,7 @@
#define MESSAGE_TYPE_ADMINPM "adminpm"
#define MESSAGE_TYPE_MENTORPM "mentorpm"
#define MESSAGE_TYPE_COMBAT "combat"
#define MESSAGE_TYPE_CHATPRINT "chatexport"
#define MESSAGE_TYPE_ADMINCHAT "adminchat"
#define MESSAGE_TYPE_PRAYER "prayer"
#define MESSAGE_TYPE_MODCHAT "modchat"
Expand Down
26 changes: 18 additions & 8 deletions code/__defines/tgs.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// tgstation-server DMAPI

#define TGS_DMAPI_VERSION "6.7.0"
#define TGS_DMAPI_VERSION "7.0.1"

// All functions and datums outside this document are subject to change with any version and should not be relied on.

Expand Down Expand Up @@ -73,12 +73,12 @@
#define TGS_EVENT_REPO_MERGE_PULL_REQUEST 3
/// Before the repository makes a sychronize operation. Parameters: Absolute repostiory path.
#define TGS_EVENT_REPO_PRE_SYNCHRONIZE 4
/// Before a BYOND install operation begins. Parameters: [/datum/tgs_version] of the installing BYOND.
#define TGS_EVENT_BYOND_INSTALL_START 5
/// When a BYOND install operation fails. Parameters: Error message
#define TGS_EVENT_BYOND_INSTALL_FAIL 6
/// When the active BYOND version changes. Parameters: (Nullable) [/datum/tgs_version] of the current BYOND, [/datum/tgs_version] of the new BYOND.
#define TGS_EVENT_BYOND_ACTIVE_VERSION_CHANGE 7
/// Before a engine install operation begins. Parameters: Version string of the installing engine.
#define TGS_EVENT_ENGINE_INSTALL_START 5
/// When a engine install operation fails. Parameters: Error message
#define TGS_EVENT_ENGINE_INSTALL_FAIL 6
/// When the active engine version changes. Parameters: (Nullable) Version string of the current engine, version string of the new engine.
#define TGS_EVENT_ENGINE_ACTIVE_VERSION_CHANGE 7
/// When the compiler starts running. Parameters: Game directory path, origin commit SHA.
#define TGS_EVENT_COMPILE_START 8
/// When a compile is cancelled. No parameters.
Expand Down Expand Up @@ -108,7 +108,7 @@
// #define TGS_EVENT_DREAM_DAEMON_LAUNCH 22
/// After a single submodule update is performed. Parameters: Updated submodule name.
#define TGS_EVENT_REPO_SUBMODULE_UPDATE 23
/// After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, byond version.
/// After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, version string of the used engine.
#define TGS_EVENT_PRE_DREAM_MAKER 24
/// Whenever a deployment folder is deleted from disk. Parameters: Game directory path.
#define TGS_EVENT_DEPLOYMENT_CLEANUP 25
Expand All @@ -122,6 +122,7 @@
/// The watchdog will restart on reboot.
#define TGS_REBOOT_MODE_RESTART 2

// Note that security levels are currently meaningless in OpenDream
/// DreamDaemon Trusted security level.
#define TGS_SECURITY_TRUSTED 0
/// DreamDaemon Safe security level.
Expand All @@ -136,6 +137,11 @@
/// DreamDaemon invisible visibility level.
#define TGS_VISIBILITY_INVISIBLE 2

/// The Build Your Own Net Dream engine.
#define TGS_ENGINE_TYPE_BYOND 0
/// The OpenDream engine.
#define TGS_ENGINE_TYPE_OPENDREAM 1

//REQUIRED HOOKS

/**
Expand Down Expand Up @@ -450,6 +456,10 @@
/world/proc/TgsVersion()
return

/// Returns the running engine type
/world/proc/TgsEngine()
return

/// Returns the current [/datum/tgs_version] of the DMAPI being used if it was activated, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping!
/world/proc/TgsApiVersion()
return
Expand Down
2 changes: 2 additions & 0 deletions code/_global_vars/_regexes.dm
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
//These are a bunch of regex datums for use /((any|every|no|some|head|foot)where(wolf)?\sand\s)+(\.[\.\s]+\s?where\?)?/i
GLOBAL_DATUM_INIT(is_http_protocol, /regex, regex("^https?://"))

GLOBAL_DATUM_INIT(is_valid_url, /regex, regex("((?:https://)\[-a-zA-Z0-9@:%._+~#=]{1,256}.\[-a-zA-Z0-9@:%._+~#=]{1,256}\\b(?:\[-a-zA-Z0-9@():%_+.,~#?&/=]*\[^.,!?:; ()<>{}\\[]\n\"'´`]))", "gm"))
4 changes: 4 additions & 0 deletions code/_helpers/text.dm
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,10 @@
/proc/capitalize(var/t as text)
return uppertext(copytext(t, 1, 2)) + copytext(t, 2)

//Returns a unicode string with the first element of the string capitalized.
/proc/capitalize_utf(var/t as text)
return uppertext(copytext_char(t, 1, 2)) + copytext_char(t, 2)

//This proc strips html properly, remove < > and all text between
//for complete text sanitizing should be used sanitize()
/proc/strip_html_properly(var/input)
Expand Down
14 changes: 8 additions & 6 deletions code/game/jobs/job/special_vr.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,14 @@
departments = list(DEPARTMENT_CIVILIAN)
department_flag = ENGSEC
faction = "Station"
total_positions = -1 //YW EDIT
spawn_positions = -1 //YW EDIT
total_positions = 1 //YW EDIT
spawn_positions = 1 //YW EDIT
supervisors = "the spirit of laughter"
selection_color = "#515151"
economic_modifier = 1
job_description = "A Clown is there to entertain the crew and keep high morale using various harmless pranks and ridiculous jokes!"
whitelist_only = 1
whitelist_only = 0 //YW EDIT
minimal_player_age = 3 //YW EDIT
latejoin_only = 0
requestable = FALSE
outfit_type = /decl/hierarchy/outfit/job/clown
Expand All @@ -99,14 +100,15 @@
departments = list(DEPARTMENT_CIVILIAN)
department_flag = ENGSEC
faction = "Station"
total_positions = -1 //YW EDIT
spawn_positions = -1 //YW EDIT
total_positions = 1 //YW EDIT
spawn_positions = 1 //YW EDIT
supervisors = "the spirit of performance"
selection_color = "#515151"
economic_modifier = 1
job_description = "A Mime is there to entertain the crew and keep high morale using unbelievable performances and acting skills!"
alt_titles = list("Poseur" = /datum/alt_title/poseur)
whitelist_only = 1
whitelist_only = 0 //YW EDIT
minimal_player_age = 3 //YW EDIT
latejoin_only = 0
requestable = FALSE
outfit_type = /decl/hierarchy/outfit/job/mime
Expand Down
4 changes: 3 additions & 1 deletion code/game/objects/effects/effect_system.dm
Original file line number Diff line number Diff line change
Expand Up @@ -338,9 +338,11 @@ steam.start() -- spawns the effect
/obj/effect/effect/smoke/elemental/mist
name = "misty cloud"
desc = "A cloud filled with water vapor."
color = "#CCFFFF"
color = "#F0FFFF"
alpha = 128
strength = 1
plane = MOB_PLANE
layer = ABOVE_MOB_LAYER

/obj/effect/effect/smoke/elemental/mist/affect(mob/living/L)
L.water_act(strength)
Expand Down
3 changes: 1 addition & 2 deletions code/game/objects/effects/step_triggers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
L.stop_pulling()
P.forceMove(T)
L.forceMove(T)
L.start_pulling(P)
L.continue_pulling(P)
else
L.forceMove(T)
else
Expand Down Expand Up @@ -285,4 +285,3 @@ var/global/list/tele_landmarks = list() // Terrible, but the alternative is loop

/obj/effect/step_trigger/warning/train_edge
warningmessage = "The wind billowing alongside the train is extremely strong here! Any movement could easily pull you down beneath the carriages, return to the train immediately!"

1 change: 1 addition & 0 deletions code/game/objects/items/devices/radio/encryptionkey.dm
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@

/obj/item/device/encryptionkey/omni //Literally only for the admin intercoms
channels = list("Mercenary" = 1, "Raider" = 1, "Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1)
syndie = 1//Signifies that it de-crypts Syndicate transmissions

/obj/item/device/encryptionkey/ent
name = "entertainment encryption key"
Expand Down
27 changes: 10 additions & 17 deletions code/game/objects/items/weapons/RSF.dm
Original file line number Diff line number Diff line change
Expand Up @@ -71,25 +71,21 @@ RSF
mode = 2
to_chat(user,"<span class='notice'>Changed dispensing mode to 'Container'.</span>")
return
if(mode == 2)
if (mode == 2)
mode = 3
to_chat(user,"Changed dispensing mode to 'Metamorphic Glass: Pint'") //YW Changes begin
to_chat(user,"<span class='notice'>Changed dispensing mode to 'Paper'</span>")
return
if(mode == 3)
if (mode == 3)
mode = 4
to_chat(user,"Changed dispensing mode to 'Paper'")
to_chat(user,"<span class='notice'>Changed dispensing mode to 'Pen'</span>")
return
if(mode == 4)
if (mode == 4)
mode = 5
to_chat(user,"Changed dispensing mode to 'Pen'")
to_chat(user,"<span class='notice'>Changed dispensing mode to 'Dice Pack'</span>")
return
if(mode == 5)
mode = 6
to_chat(user,"Changed dispensing mode to 'Dice Pack'")
return
if(mode == 6)
if (mode == 5)
mode = 1
to_chat(user,"Changed dispensing mode to 'Cigarette'") // YW Changes end
to_chat(user,"<span class='notice'>Changed dispensing mode to 'Cigarette'</span>")
return

/obj/item/weapon/rsf/afterattack(atom/A, mob/user as mob, proximity)
Expand Down Expand Up @@ -119,15 +115,12 @@ RSF
product = new glasstype()
used_energy = 50
if(3)
product = new /obj/item/weapon/reagent_containers/food/drinks/metaglass() //YW Changes begin
used_energy = 50
if(4)
product = new /obj/item/weapon/paper()
used_energy = 10
if(5)
if(4)
product = new /obj/item/weapon/pen()
used_energy = 50
if(6) //YW Changes end
if(5)
product = new /obj/item/weapon/storage/pill_bottle/dice()
used_energy = 200

Expand Down
6 changes: 4 additions & 2 deletions code/game/objects/random/mapping.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@
prob(5);/obj/machinery/vending/sovietvend,
prob(5);/obj/machinery/vending/radren,
prob(3);/obj/machinery/vending/altevian,
prob(5);/obj/machinery/vending/desatti) //VOREStation Edit End
prob(5);/obj/machinery/vending/desatti,
prob(5);/obj/machinery/vending/nukie) //VOREStation Edit End

/obj/random/vendorfood //Random food vendors for station use
name = "random snack vending machine"
Expand Down Expand Up @@ -114,7 +115,8 @@
/obj/machinery/vending/cola/soft,
/obj/machinery/vending/bepis,
/obj/machinery/vending/sovietsoda,
/obj/machinery/vending/radren)
/obj/machinery/vending/radren,
/obj/machinery/vending/nukie)
//VOREStation Edit End

/obj/random/obstruction //Large objects to block things off in maintenance
Expand Down
21 changes: 3 additions & 18 deletions code/game/turfs/weird_turfs_vr.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@
i.plane = PLANE_LIGHTING_ABOVE
add_overlay(i)

/turf/simulated/floor/weird_things/dark/ChangeTurf()
. = ..()
cut_overlays()

/turf/unsimulated/wall/dark
name = "dark"
desc = "It's a strange, impenetrable darkness."
Expand All @@ -64,11 +60,6 @@
i.plane = PLANE_LIGHTING_ABOVE
add_overlay(i)

/turf/unsimulated/wall/dark/ChangeTurf()
. = ..()
cut_overlays()


/turf/unsimulated/floor/dark
name = "dark"
desc = "It's a strange, impenetrable darkness."
Expand All @@ -79,7 +70,7 @@
. = ..()
if(prob(5))
add_glow()

/turf/unsimulated/floor/dark/Crossed(O)
. = ..()
if(!isliving(O))
Expand Down Expand Up @@ -111,7 +102,7 @@
var/choiceb
if(flip == 1)
choice = "overlay-[rand(1,6)]"
if(flip == 2)
if(flip == 2)
choice = "overlay-[rand(7,12)]"
var/image/i = image('icons/turf/flooring/weird_vr.dmi', choice)
i.plane = PLANE_LIGHTING_ABOVE
Expand All @@ -122,10 +113,4 @@
if(flip == 2)
choiceb = "overlay-[rand(1,6)]"
var/image/ii = image('icons/turf/flooring/weird_vr.dmi', choiceb)
add_overlay(ii)



/turf/unsimulated/floor/dark/ChangeTurf()
. = ..()
cut_overlays()
add_overlay(ii)
15 changes: 7 additions & 8 deletions code/modules/admin/verbs/adminhelp.dm
Original file line number Diff line number Diff line change
Expand Up @@ -424,14 +424,13 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
message_admins(msg)
log_admin(msg)
AddInteraction("[key_name_admin(usr)] is now handling this ticket.")
var/query_string = "type=admintake"
query_string += "&key=[url_encode(config.chat_webhook_key)]"
query_string += "&admin=[url_encode(key_name_admin(usr))]"
query_string += "&user=[url_encode(key_name(initiator))]"
world.Export("[config.chat_webhook_url]?[query_string]")



SSwebhooks.send( // YW EDIT: Reverts to use SSwebhooks
WEBHOOK_AHELP_SENT,
list(
"name" = "Ticket ([id]) (Game ID: [game_id]) being handled.",
"body" = "[key_name(usr)] is now handling the ticket."
)
)

//Show the ticket panel
/datum/admin_help/proc/TicketPanel()
Expand Down
23 changes: 18 additions & 5 deletions code/modules/awaymissions/redgate.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
/obj/structure/redgate/proc/teleport(var/mob/M as mob)
var/keycheck = TRUE
if (!istype(M,/mob/living)) //We only want mob/living, no bullets or mechs or AI eyes or items
if(M.type in exceptions)
if(is_type_in_list(M, exceptions))
keycheck = FALSE //we'll allow it
else
return

if(M.type in restrictions) //Some stuff we don't want to bring EVEN IF it has a key.
if(is_type_in_list(M, restrictions)) //Some stuff we don't want to bring EVEN IF it has a key.
return

for(var/obj/O in M.contents)
Expand All @@ -54,9 +54,22 @@
var/turf/ourturf = find_our_turf(M) //Find the turf on the opposite side of the target
if(!ourturf.check_density(TRUE,TRUE)) //Make sure there isn't a wall there
M.unbuckle_all_mobs(TRUE)
M.stop_pulling()
playsound(src,'sound/effects/ominous-hum-2.ogg', 100,1)
M.forceMove(ourturf) //Let's just do forcemove, I don't really want people teleporting to weird places if they have bluespace stuff
if(istype(M,/mob/living) && M.pulling)
var/atom/movable/pulled = M.pulling
M.stop_pulling()
playsound(src,'sound/effects/ominous-hum-2.ogg', 100,1)
M.forceMove(ourturf)
if(is_type_in_list(pulled, exceptions))
for(var/mob/living/buckled_on in pulled.buckled_mobs)
if(!buckled_on.key || is_type_in_list(M, restrictions))
pulled.unbuckle_mob(buckled_on, TRUE)
pulled.forceMove(ourturf)
M.continue_pulling(pulled)
else
to_chat(M, "<span class='notice'>The redgate refused your pulled item.</span>")
else
playsound(src,'sound/effects/ominous-hum-2.ogg', 100,1)
M.forceMove(ourturf) //Let's just do forcemove, I don't really want people teleporting to weird places if they have bluespace stuff
else
to_chat(M, "<span class='notice'>Something blocks your way.</span>")

Expand Down
8 changes: 6 additions & 2 deletions code/modules/client/preference_setup/general/01_basic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -220,12 +220,16 @@
if(new_metadata && CanUseTopic(user))
pref.metadata = new_metadata
else if(href_list["edit_ooc_note_likes"])
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see relating to your LIKED roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel!", "Game Preference" , html_decode(pref.metadata_likes), multiline = TRUE, prevent_enter = TRUE))
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see relating to your LIKED roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(pref.metadata_likes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
if(new_metadata == "!clear")
new_metadata = ""
pref.metadata_likes = new_metadata
else if(href_list["edit_ooc_note_dislikes"])
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see relating to your DISLIKED roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel!", "Game Preference" , html_decode(pref.metadata_dislikes), multiline = TRUE, prevent_enter = TRUE))
var/new_metadata = strip_html_simple(tgui_input_text(usr, "Enter any information you'd like others to see relating to your DISLIKED roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(pref.metadata_dislikes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
if(new_metadata == "!clear")
new_metadata = ""
pref.metadata_dislikes = new_metadata
return ..()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/obj/item/clothing/accessory/medal/silver/achievement
name = "Medal of Achievement"
desc = "A silver medal awarded to corporate members who have achieved a corporate goal successfully."

/obj/item/clothing/accessory/medal/silver/achievement/twoshuttlesevent
desc = "A silver medal awarded to corporate members who have achieved a corporate goal successfully. - This one was awarded for bringing two damaged shuttles back to Cryogaia for rescue and salvage."

/datum/gear/fluff/event_medal_twoshuttles
path = /obj/item/clothing/accessory/medal/silver/achievement/twoshuttlesevent
display_name = "Medal of Achievement"
description = "A silver medal awarded to corporate members who have achieved a corporate goal successfully. - This one was awarded for bringing two damaged shuttles back to Cryogaia for rescue and salvage."
ckeywhitelist = list("snakewitharocketlauncher", "blackangelsace", "bielbr12312332", "hidingdan", "montessquio", "tinncatt")
character_name = list("Dakula", "Art Echard", "Dustin AltMann", "Sierra Ellis", "Elise Maschenny", "Kurkivor Snowstrider")
Loading

0 comments on commit 7fa59bc

Please sign in to comment.