This commit is contained in:
Gandalf
2021-05-07 02:40:44 +01:00
70 changed files with 436 additions and 147 deletions
-26
View File
@@ -66,32 +66,6 @@ ALTER TABLE `messages`
ALTER TABLE `round`
ADD COLUMN `server_name` VARCHAR(32) DEFAULT NULL AFTER `end_datetime`;
Version 5.13, 30 April 2021, by Atlanta Ned
Added the `citation` table for tracking security citations in the database.
```
CREATE TABLE `citation` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`round_id` INT(11) UNSIGNED NOT NULL,
`server_ip` INT(11) UNSIGNED NOT NULL,
`server_port` INT(11) UNSIGNED NOT NULL,
`citation` TEXT NOT NULL COLLATE 'utf8mb4_general_ci',
`action` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
`sender` VARCHAR(32) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
`sender_ic` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'Longer because this is the character name, not the ckey' COLLATE 'utf8mb4_general_ci',
`recipient` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'Longer because this is the character name, not the ckey' COLLATE 'utf8mb4_general_ci',
`crime` TEXT NOT NULL COLLATE 'utf8mb4_general_ci',
`fine` INT(4) NULL DEFAULT NULL,
`paid` INT(4) NULL DEFAULT '0',
`timestamp` DATETIME NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `idx_constraints` (`round_id`, `server_ip`, `server_port`, `citation`(100)) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;
```
-----------------------------------------------------
+3 -2
View File
@@ -2,5 +2,6 @@
#define JOB_UNAVAILABLE_SPECIES 7
#define JOB_UNAVAILABLE_LANGUAGE 7
#define SEC_RESTRICTED_QUIRKS "Blind" = TRUE, "Brain Tumor" = TRUE, "Deaf" = TRUE, "Paraplegic" = TRUE, "Mute" = TRUE, "Foreigner" = TRUE, "Pacifist" = TRUE
#define HEAD_RESTRICTED_QUIRKS "Blind" = TRUE, "Deaf" = TRUE, "Mute" = TRUE, "Foreigner" = TRUE
#define SEC_RESTRICTED_QUIRKS "Blind" = TRUE, "Brain Tumor" = TRUE, "Deaf" = TRUE, "Paraplegic" = TRUE, "Mute" = TRUE, "Foreigner" = TRUE, "Pacifist" = TRUE, "Chunky Fingers" = TRUE
#define HEAD_RESTRICTED_QUIRKS "Blind" = TRUE, "Deaf" = TRUE, "Mute" = TRUE, "Foreigner" = TRUE, "Chunky Fingers" = TRUE
#define TECH_RESTRICTED_QUIRKS "Chunky Fingers" = TRUE
+1
View File
@@ -161,6 +161,7 @@ SUBSYSTEM_DEF(ticker)
for(var/client/C in GLOB.clients)
window_flash(C, ignorepref = TRUE) //let them know lobby has opened up.
to_chat(world, "<span class='notice'><b>Welcome to [station_name()]!</b></span>")
//SKYRAT EDIT START - DISCORD SPAM PREVENTION
if(!discord_alerted)
discord_alerted = TRUE
send2chat("<@&[CONFIG_GET(string/game_alert_role_id)]> New round starting on [SSmapping.config.map_name], [CONFIG_GET(string/servername)]! \nIf you wish to be pinged for game related stuff, go to <#[CONFIG_GET(string/role_assign_channel_id)]> and assign yourself the roles.", CONFIG_GET(string/chat_announce_new_game)) // Skyrat EDIT -- role pingcurrent_state = GAME_STATE_PREGAME
+2 -2
View File
@@ -82,10 +82,10 @@
if(emote_type == EMOTE_AUDIBLE)
//SKYRAT EDIT CHANGE BEGIN
//user.audible_message(msg, audible_message_flags = EMOTE_MESSAGE) - SKYRAT EDIT - ORIGINAL
user.audible_message(msg, deaf_message = "You see how <b>[user]</b> [msg]", audible_message_flags = EMOTE_MESSAGE)
user.audible_message(msg, deaf_message = "<span class='emote'>You see how <b>[user]</b> [msg]</span>", audible_message_flags = EMOTE_MESSAGE)
else
//user.visible_message(msg, visible_message_flags = EMOTE_MESSAGE) - SKYRAT EDIT - ORIGINAL
user.visible_message(msg, blind_message = "You hear how <b>[user]</b> [msg]", visible_message_flags = EMOTE_MESSAGE)
user.visible_message(msg, blind_message = "<span class='emote'>You hear how <b>[user]</b> [msg]</span>", visible_message_flags = EMOTE_MESSAGE)
//SKYRAT EDIT CHANGE END
/// For handling emote cooldown, return true to allow the emote to happen
+3 -1
View File
@@ -178,7 +178,9 @@ GLOBAL_LIST_EMPTY(PDAs)
/obj/item/pda/update_overlays()
. = ..()
var/mutable_appearance/overlay = new(icon)
if(!initial(icon))
return
var/mutable_appearance/overlay = new(initial(icon))
overlay.pixel_x = overlays_x_offset
if(id)
overlay.icon_state = "id_overlay"
@@ -49,6 +49,8 @@
// Special AI/pAI PDAs that cannot explode.
/obj/item/pda/ai
icon = null
greyscale_config = null
greyscale_colors = null
ttone = "data"
@@ -21,7 +21,7 @@
new /obj/item/assembly/flash/handheld(src)
new /obj/item/clothing/glasses/meson/engine(src)
new /obj/item/door_remote/chief_engineer(src)
new /obj/item/pipe_dispenser(src)
new /obj/item/pipe_dispenser/bluespace(src) // SKYRAT EDIT -- BLUESPACE RPD -- ORIGINAL: new /obj/item/pipe_dispenser(src)
new /obj/item/circuitboard/machine/techfab/department/engineering(src)
new /obj/item/extinguisher/advanced(src)
new /obj/item/storage/photo_album/ce(src)
+30 -14
View File
@@ -1,5 +1,8 @@
//Fluff structures serve no purpose and exist only for enriching the environment. They can be destroyed with a wrench.
/**
* # Fluff structure
*
* Fluff structures serve no purpose and exist only for enriching the environment. By default, they can be deconstructed with a wrench.
*/
/obj/structure/fluff
name = "fluff structure"
desc = "Fluffier than a sheep. This shouldn't exist."
@@ -8,6 +11,7 @@
anchored = TRUE
density = FALSE
opacity = FALSE
///If true, the structure can be deconstructed into a metal sheet with a wrench.
var/deconstructible = TRUE
/obj/structure/fluff/attackby(obj/item/I, mob/living/user, params)
@@ -21,15 +25,19 @@
qdel(src)
return
..()
/obj/structure/fluff/empty_terrarium //Empty terrariums are created when a preserved terrarium in a lavaland seed vault is activated.
/**
* Empty terrariums are created when a preserved terrarium in a lavaland seed vault is activated.
*/
/obj/structure/fluff/empty_terrarium
name = "empty terrarium"
desc = "An ancient machine that seems to be used for storing plant matter. Its hatch is ajar."
icon = 'icons/obj/lavaland/spawners.dmi'
icon_state = "terrarium_open"
density = TRUE
/obj/structure/fluff/empty_sleeper //Empty sleepers are created by a good few ghost roles in lavaland.
/**
* Empty sleepers are created by a good few ghost roles in lavaland.
*/
/obj/structure/fluff/empty_sleeper
name = "empty sleeper"
desc = "An open sleeper. It looks as though it would be awaiting another patient, were it not broken."
icon = 'icons/obj/machines/sleeper.dmi'
@@ -43,8 +51,10 @@
/obj/structure/fluff/empty_sleeper/syndicate
icon_state = "sleeper_s-open"
/obj/structure/fluff/empty_cryostasis_sleeper //Empty cryostasis sleepers are created when a malfunctioning cryostasis sleeper in a lavaland shelter is activated
/**
* Empty cryostasis sleepers are created when a malfunctioning cryostasis sleeper in a lavaland shelter is activated.
*/
/obj/structure/fluff/empty_cryostasis_sleeper
name = "empty cryostasis sleeper"
desc = "Although comfortable, this sleeper won't function as anything but a bed ever again."
icon = 'icons/obj/lavaland/spawners.dmi'
@@ -55,8 +65,10 @@
desc = "A segment of broken flooring."
icon = 'icons/obj/brokentiling.dmi'
icon_state = "corner"
/obj/structure/fluff/drake_statue //Ash drake status spawn on either side of the necropolis gate in lavaland.
/**
* Ash drake status spawn on either side of the necropolis gate in lavaland.
*/
/obj/structure/fluff/drake_statue
name = "drake statue"
desc = "A towering basalt sculpture of a proud and regal drake. Its eyes are six glowing gemstones."
icon = 'icons/effects/64x64.dmi'
@@ -65,8 +77,10 @@
density = TRUE
deconstructible = FALSE
layer = EDGED_TURF_LAYER
/obj/structure/fluff/drake_statue/falling //A variety of statue in disrepair; parts are broken off and a gemstone is missing
/**
* A variety of statue in disrepair; parts are broken off and a gemstone is missing
*/
/obj/structure/fluff/drake_statue/falling
desc = "A towering basalt sculpture of a drake. Cracks run down its surface and parts of it have fallen off."
icon_state = "drake_statue_falling"
@@ -270,8 +284,10 @@
opacity = FALSE
else
return ..()
/obj/structure/fluff/hedge/opaque //useful for mazes and such
/**
* useful for mazes and such
*/
/obj/structure/fluff/hedge/opaque
opacity = TRUE
/obj/structure/fluff/tram_rail
@@ -17,11 +17,11 @@
/datum/antagonist/heretic_monster/greet()
owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ecult_op.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE)//subject to change
to_chat(owner, "<span class='boldannounce'>You became an Eldritch Horror!</span>")
to_chat(owner, "<span class='userdanger'>You became an Eldritch Horror!</span>")
/datum/antagonist/heretic_monster/on_removal()
if(master)
to_chat(master, "<span class='boldannounce'>Your master is no longer [master.owner.current.real_name]</span>")
to_chat(master, "<span class='deconversion_message'>Your master is no longer [master.owner.current.real_name]</span>")
master = null
return ..()
@@ -33,7 +33,7 @@
master_obj.completed = TRUE
objectives += master_obj
owner.announce_objectives()
to_chat(owner, "<span class='boldannounce'>Your master is [master.owner.current.real_name]</span>")
to_chat(owner, "<span class='notice'>Your master is [master.owner.current.real_name]</span>")
return
/datum/antagonist/heretic_monster/apply_innate_effects(mob/living/mob_override)
@@ -104,12 +104,17 @@
var/alternative_fire_sound
///If only our alternative ammuntion misfires and not our main ammunition, we set this to TRUE
var/alternative_ammo_misfires = FALSE
/// Misfire Variables ///
/// Whether our ammo misfires now or when it's set by the wrench_act. TRUE means it misfires.
var/can_misfire = FALSE
///How likely is our gun to misfire?
var/misfire_probability = 0
///How much does shooting the gun increment the misfire probability?
var/misfire_percentage_increment = 0
///What is the cap on our misfire probability? Do not set this to 100.
var/misfire_probability_cap = 25
/obj/item/gun/ballistic/Initialize()
. = ..()
@@ -358,6 +363,7 @@
/obj/item/gun/ballistic/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1)
if(can_misfire)
misfire_probability += misfire_percentage_increment
misfire_probability = clamp(misfire_probability, 0, misfire_probability_cap)
. = ..()
@@ -0,0 +1,5 @@
author: "Seris02"
delete-after: True
changes:
- bugfix: "various OOC messages going into unsorted now get sorted"
- bugfix: "various other miscellaneous unsorted messages now get sorted"
@@ -1,6 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- bugfix: "many of the toggle preferences in preferences_toggles.dm going into the unsorted chat log"
- bugfix: "many of the role greetings from sending to the wrong chat filters/ to unsorted"
- bugfix: "miscellaneous other strings getting sent to the unsorted chat filter"
@@ -0,0 +1,4 @@
author: "unit0016"
delete-after: True
changes:
- rscadd: "Lone Infiltrators are now on the prowl."
@@ -0,0 +1,4 @@
author: "KasparoVy"
delete-after: True
changes:
- rscadd: "Adds a new 8-point negative quirk preventing you from using most firearms, modular computers/tablets and laser pointers like an Ashwalker or Golem. KAs can be adapted w/ a modkit. You cannot be command, security, engineering, atmos, doctor, virologist, chemist, roboticist or scientist with this trait."
@@ -0,0 +1,5 @@
author: "thestubborn"
delete-after: True
changes:
- rscadd: "Two new colourable coats"
- rscadd: "Like five new collars"
@@ -1,4 +0,0 @@
author: "sqnztb"
delete-after: True
changes:
- bugfix: "icebox perma cabin has piped atmospherics again"
@@ -1,5 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- imageadd: "New candle animations"
- imageadd: "New animations for altar candles"
@@ -1,4 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- bugfix: "dogs now resist before fetching or harassing, to unbuckle from stuff if they need to"
@@ -1,4 +0,0 @@
author: "Celotajs"
delete-after: True
changes:
- bugfix: "GAGS-generated clothing can now have proper blood splatters and damage"
@@ -0,0 +1,4 @@
author: "ZephyrTFA"
delete-after: True
changes:
- rscadd: "Bluespace RPD"
@@ -1,4 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- imageadd: "centers hydroponic sprays, adds new sprites for plant-b-gone"
@@ -1,4 +0,0 @@
author: "tf-4"
delete-after: True
changes:
- bugfix: "a single space"
@@ -1,4 +0,0 @@
author: "tf-4"
delete-after: True
changes:
- bugfix: "the sec medic and HoP now get four mags in their gunsets, same as everyone else"
@@ -1,4 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- bugfix: "The cursed slot machine sprite in the Greed lavaland ruin is now slightly less cursed."
@@ -1,4 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- rscadd: "BBQ Sauce can now be ordered in the kitchen console."
@@ -1,4 +0,0 @@
author: "SparkezelPL"
delete-after: True
changes:
- bugfix: "Single tank bombs no longer just delete themselves"
@@ -1,5 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- bugfix: "Syndicate uplink types can now be changed again"
- bugfix: "Radio uplink frequencies are now random again"
@@ -1,4 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- bugfix: "spammable logging in chem grenades"
@@ -1,5 +0,0 @@
author: "SkyratBot"
delete-after: True
changes:
- bugfix: "fixed buggy organ fridges repair rate"
- bugfix: "fixed upgraded organ fridges not repairing organs"
@@ -0,0 +1,4 @@
author: "ORCACommander"
delete-after: True
changes:
- bugfix: "Cleaned up the SQL Changelog AGAIN"
@@ -0,0 +1,4 @@
author: "SkyratBot"
delete-after: True
changes:
- bugfix: "Messages related to becoming and ceasing to be a heretic monster are now more noticeable."
@@ -0,0 +1,4 @@
author: "Celotajs"
delete-after: True
changes:
- bugfix: "Fixed PDA overlays for GAGS PDAs"
+31
View File
@@ -245,3 +245,34 @@
unit0016:
- balance: The most involved balance change ever - NSS Journey's turf decals have
been changed up a lot. Also the aux base is a bit different, I suppose.
2021-05-07:
Celotajs:
- bugfix: GAGS-generated clothing can now have proper blood splatters and damage
SkyratBot:
- bugfix: dogs now resist before fetching or harassing, to unbuckle from stuff if
they need to
- bugfix: spammable logging in chem grenades
- bugfix: Syndicate uplink types can now be changed again
- bugfix: Radio uplink frequencies are now random again
- imageadd: New candle animations
- imageadd: New animations for altar candles
- bugfix: many of the toggle preferences in preferences_toggles.dm going into the
unsorted chat log
- bugfix: many of the role greetings from sending to the wrong chat filters/ to
unsorted
- bugfix: miscellaneous other strings getting sent to the unsorted chat filter
- bugfix: fixed buggy organ fridges repair rate
- bugfix: fixed upgraded organ fridges not repairing organs
- rscadd: BBQ Sauce can now be ordered in the kitchen console.
- bugfix: The cursed slot machine sprite in the Greed lavaland ruin is now slightly
less cursed.
- bugfix: Prevents guns that can misfire reaching 100% probability.
- imageadd: centers hydroponic sprays, adds new sprites for plant-b-gone
SparkezelPL:
- bugfix: Single tank bombs no longer just delete themselves
sqnztb:
- bugfix: icebox perma cabin has piped atmospherics again
tf-4:
- bugfix: the sec medic and HoP now get four mags in their gunsets, same as everyone
else
- bugfix: a single space
@@ -33,3 +33,12 @@
. = ..()
var/mob/living/carbon/human/H = quirk_holder
H?.cure_trauma_type(/datum/brain_trauma/severe/monophobia, TRAUMA_RESILIENCE_ABSOLUTE)
/datum/quirk/ashwalkertalons
name = "Chunky Fingers"
desc = "Your digits are thick and tough and unable to use modular computers including tablets, certain devices like laser pointers, and non-adapted firearms."
gain_text = "<span class='notice'>Your fingers feel thicker and slightly less dextrous. You expect you'll have a difficult time using computers, certain small devices and firearms.</span>"
lose_text = "<span class='notice'>Your digits feel lithe and capable once more.</span>"
medical_record_text = "Patient's digits are thick and lack the dexterity for operating some small devices, computers and non-adapted firearms."
value = -8
mob_trait = TRAIT_CHUNKYFINGERS
@@ -0,0 +1,10 @@
/datum/antagonist/traitor/infiltrator
name = "Infiltrator"
var/infil_outfit = /datum/outfit/syndicateinfiltrator
/datum/antagonist/traitor/infiltrator/on_gain()
var/mob/living/carbon/human/H = owner.current
H.equipOutfit(infil_outfit)
var/chosen_name = H.dna.species.random_name(H.gender,1,1)
H.fully_replace_character_name(H.real_name,chosen_name)
return ..()
@@ -0,0 +1,64 @@
/datum/dynamic_ruleset/midround/from_ghosts/lone_infiltrator
name = "Lone Infiltrator"
antag_datum = /datum/antagonist/traitor/infiltrator
antag_flag = ROLE_TRAITOR
restricted_roles = list("Cyborg", "AI", "Positronic Brain")
required_candidates = 1
weight = 5 //Slightly less common than normal midround traitors.
cost = 15 //But also slightly more costly.
requirements = list(50,40,30,20,10,10,10,10,10,10)
var/list/spawn_locs = list()
/datum/dynamic_ruleset/midround/from_ghosts/lone_infiltrator/execute()
for(var/obj/effect/landmark/carpspawn/C in GLOB.landmarks_list)
spawn_locs += (C.loc)
if(!spawn_locs.len)
message_admins("No valid spawn locations found, aborting...")
return MAP_ERROR
. = ..()
/datum/dynamic_ruleset/midround/from_ghosts/lone_infiltrator/generate_ruleset_body(mob/applicant)
var/datum/mind/player_mind = new /datum/mind(applicant.key)
var/mob/living/carbon/human/operative = new(pick(spawn_locs))
applicant.client.prefs.copy_to(operative)
operative.dna.update_dna_identity()
operative.dna.species.before_equip_job(null, operative)
operative.regenerate_icons()
SSquirks.AssignQuirks(operative, applicant.client, TRUE, TRUE, null, FALSE, operative)
player_mind.assigned_role = "Lone Infiltrator"
player_mind.special_role = "Lone Infiltrator"
player_mind.active = TRUE
player_mind.transfer_to(operative)
player_mind.add_antag_datum(/datum/antagonist/traitor/infiltrator)
message_admins("[ADMIN_LOOKUPFLW(operative)] has been made into lone infiltrator by midround ruleset.")
log_game("[key_name(operative)] was spawned as a lone infiltrator by midround ruleset.")
return operative
//OUTFIT//
/datum/outfit/syndicateinfiltrator
name = "Syndicate Operative - Infiltrator"
uniform = /obj/item/clothing/under/syndicate
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
back = /obj/item/storage/backpack/fireproof
ears = /obj/item/radio/headset/syndicate/alt
id = /obj/item/card/id/advanced/chameleon
glasses = /obj/item/clothing/glasses/night
mask = /obj/item/clothing/mask/gas/syndicate
suit = /obj/item/clothing/suit/space/hardsuit/syndi
r_pocket = /obj/item/tank/internals/emergency_oxygen/engi
internals_slot = ITEM_SLOT_RPOCKET
belt = /obj/item/storage/belt/military
backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\
/obj/item/tank/jetpack/oxygen/harness=1,\
/obj/item/gun/ballistic/automatic/pistol=1,\
/obj/item/kitchen/knife/combat/survival)
id_trim = /datum/id_trim/chameleon/operative
/datum/outfit/syndicateinfiltrator/post_equip(mob/living/carbon/human/H)
H.faction |= ROLE_SYNDICATE
H.update_icons()
+2 -2
View File
@@ -75,7 +75,7 @@ GLOBAL_LIST_EMPTY(ckey_to_aooc_name)
var/mode = listeners[c]
var/color = (!anon && CONFIG_GET(flag/allow_admin_ooccolor) && C.prefs.ooccolor) ? C.prefs.ooccolor : GLOB.AOOC_COLOR
var/name = (mode == AOOC_LISTEN_ADMIN && anon) ? "([key])[keyname]" : keyname
to_chat(C, "<font color='[color]'><b><span class='prefix'>AOOC:</span> <EM>[name]:</EM> <span class='message linkify'>[msg]</span></b></font>")
to_chat(C, "<span class='oocplain'><font color='[color]'><b><span class='prefix'>AOOC:</span> <EM>[name]:</EM> <span class='message linkify'>[msg]</span></b></font></span>")
#undef AOOC_LISTEN_PLAYER
#undef AOOC_LISTEN_ADMIN
@@ -101,7 +101,7 @@ GLOBAL_LIST_EMPTY(ckey_to_aooc_name)
listeners[M.client] = TRUE
for(var/c in listeners)
var/client/C = c
to_chat(C, "<B>The AOOC channel has been globally [GLOB.aooc_allowed ? "enabled" : "disabled"].</B>")
to_chat(C, "<span class='oocplain'><B>The AOOC channel has been globally [GLOB.aooc_allowed ? "enabled" : "disabled"].</B></span>")
/datum/admins/proc/toggleaooc()
set category = "Server"
+2 -2
View File
@@ -75,7 +75,7 @@ GLOBAL_LIST_EMPTY(ckey_to_sooc_name)
var/mode = listeners[c]
var/color = (!anon && CONFIG_GET(flag/allow_admin_ooccolor) && C.prefs.ooccolor) ? C.prefs.ooccolor : GLOB.SOOC_COLOR
var/name = (mode == SOOC_LISTEN_ADMIN && anon) ? "([key])[keyname]" : keyname
to_chat(C, "<font color='[color]'><b><span class='prefix'>SOOC:</span> <EM>[name]:</EM> <span class='message linkify'>[msg]</span></b></font>")
to_chat(C, "<span class='oocplain'><font color='[color]'><b><span class='prefix'>SOOC:</span> <EM>[name]:</EM> <span class='message linkify'>[msg]</span></b></font></span>")
#undef SOOC_LISTEN_PLAYER
#undef SOOC_LISTEN_ADMIN
@@ -101,7 +101,7 @@ GLOBAL_LIST_EMPTY(ckey_to_sooc_name)
listeners[M.client] = TRUE
for(var/c in listeners)
var/client/C = c
to_chat(C, "<B>The SOOC channel has been globally [GLOB.sooc_allowed ? "enabled" : "disabled"].</B>")
to_chat(C, "<span class='oocplain'><B>The SOOC channel has been globally [GLOB.sooc_allowed ? "enabled" : "disabled"].</B></span>")
/datum/admins/proc/togglesooc()
set category = "Server"
@@ -0,0 +1,64 @@
#define BSRPD_CAPAC_MAX 500
#define BSRPD_CAPAC_USE 10
#define BSRPD_CAPAC_NEW 250
/obj/item/pipe_dispenser/bluespace
name = "Bluespace RPD"
desc = "State of the art technology being tested by NT scientists; this is their only working prototype."
icon = 'modular_skyrat/modules/bsrpd/icons/bsrpd.dmi'
icon_state = "bsrpd"
lefthand_file = 'modular_skyrat/modules/bsrpd/icons/bsrpd_left.dmi'
righthand_file = 'modular_skyrat/modules/bsrpd/icons/bsrpd_right.dmi'
inhand_icon_state = "bsrpd"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
custom_materials = null
var/bs_capac = BSRPD_CAPAC_MAX
var/bs_use = BSRPD_CAPAC_USE
var/bs_prog = 0
/obj/item/pipe_dispenser/bluespace/attackby(obj/item/item, mob/user, param)
if(istype(item, /obj/item/stack/sheet/bluespace_crystal))
if(BSRPD_CAPAC_NEW > (BSRPD_CAPAC_MAX - bs_capac) || bs_use == 0)
to_chat(user, "<span class='warning'>You cannot recharge [src] anymore!</span>")
return
item.use(1)
to_chat(user, "<span class='notice'>You recharge the bluespace capacitor inside of [src]</span>")
bs_capac += BSRPD_CAPAC_NEW
return
if(istype(item, /obj/item/assembly/signaler/anomaly/bluespace))
if(bs_use)
to_chat(user, "<span class='notice'>You slot [item] into [src]; supercharging the bluespace capacitor!</span>")
bs_use = 0
qdel(item)
else
to_chat(user, "<span class='warning'>You cannot improve the [src] further.</span>")
return
return ..()
/obj/item/pipe_dispenser/bluespace/examine(mob/user)
. = ..()
if(user.Adjacent(src))
. += "Currently has [bs_use == 0 ? "infinite" : bs_capac / bs_use] charges remaining."
if(bs_use != 0)
. += "The Bluespace Anomaly Core slot is empty."
else
. += "You cannot see the charge capacity."
/obj/item/pipe_dispenser/bluespace/afterattack(atom/target, mob/user, prox)
if(prox) // If we are in proximity to the target, don't use charge and don't call this shitcode.
return ..()
if(bs_capac < (bs_use * (bs_prog + 1)))
to_chat(user, "<span class='warning'>The [src] lacks the charge to do that.</span>")
return FALSE
bs_prog++ // So people can't just spam click and get more uses
user.Beam(target, icon_state = "rped_upgrade", time = 1 SECONDS)
if(pre_attack(target, user))
bs_prog--
bs_capac -= bs_use
return TRUE
bs_prog--
return FALSE
#undef BSRPD_CAPAC_MAX
#undef BSRPD_CAPAC_USE
#undef BSRPD_CAPAC_NEW
Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

@@ -30,7 +30,7 @@ GLOBAL_VAR_INIT(combat_indicator_overlay, GenerateCombatOverlay())
nextcombatpopup = world.time + COMBAT_NOTICE_COOLDOWN
playsound(src, 'sound/machines/chime.ogg', 10, ignore_walls = FALSE)
flick_emote_popup_on_mob("combat", 20)
visible_message("<span class='boldwarning'>[src] gets ready for combat!</span>")
visible_message("<span class='warning'><b>[src] gets ready for combat!</b></span>")
add_overlay(GLOB.combat_indicator_overlay)
combat_indicator = TRUE
src.log_message("<font color='red'>has turned ON the combat indicator!</font>", INDIVIDUAL_ATTACK_LOG)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 584 KiB

After

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 610 KiB

After

Width:  |  Height:  |  Size: 612 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 266 KiB

@@ -193,4 +193,4 @@
/datum/loadout_item/backpack/donator/intern_hat
name = "Intern Hat"
path = /obj/item/clothing/head/intern/developer
ckeywhitelist = list("gandalf2k15", "yawet330", "junglerat", "theooz", "tf4", "cheshify", "swiftfeather", "spcr", "tygertac", "useroth")
ckeywhitelist = list("gandalf2k15", "yawet330", "junglerat", "theooz", "tf4", "cheshify", "swiftfeather", "spcr", "tygertac", "useroth", "slippyjoe")
@@ -21,6 +21,26 @@
path = /obj/item/clothing/neck/human_petcollar/leather
extra_info = LOADOUT_INFO_THREE_COLORS
/datum/loadout_item/neck/cbellcollar
name = "Cowbell collar"
path = /obj/item/clothing/neck/human_petcollar/locked/cowcollar
/datum/loadout_item/neck/bellcollar
name = "Bell collar"
path = /obj/item/clothing/neck/human_petcollar/locked/bellcollar
/datum/loadout_item/neck/spikecollar
name = "Spike collar"
path = /obj/item/clothing/neck/human_petcollar/locked/spikecollar
/datum/loadout_item/neck/hcollar
name = "Holocollar"
path = /obj/item/clothing/neck/human_petcollar/locked/holocollar
/datum/loadout_item/neck/crosscollar
name = "Cross collar"
path = /obj/item/clothing/neck/human_petcollar/locked/cross
/datum/loadout_item/neck/poly_cloak
name = "Polychromic Cloak"
path = /obj/item/clothing/neck/cloak/polychromic
@@ -36,6 +36,16 @@
name = "Tailcoat"
path = /obj/item/clothing/suit/costume/tailcoat
/datum/loadout_item/suit/duster
name = "Colorable Duster"
path = /obj/item/clothing/suit/duster/colorable
extra_info = LOADOUT_INFO_ONE_COLOR
/datum/loadout_item/suit/peacoat
name = "Colorable Peacoat"
path = /obj/item/clothing/suit/toggle/peacoat
extra_info = LOADOUT_INFO_ONE_COLOR
/datum/loadout_item/suit/dresscoat
name = "Black Dresscoat"
path = /obj/item/clothing/suit/costume/vic_dresscoat
@@ -2,6 +2,11 @@
category = LOADOUT_CATEGORY_UNIFORM
//MISC
/datum/loadout_item/uniform/gandalf
name = "Nostalgic Costume"
path = /obj/item/clothing/under/nostalgiacritic
ckeywhitelist = list("gandalf2k15")
/datum/loadout_item/uniform/assistantformal
name = "Assistant's formal uniform"
path = /obj/item/clothing/under/misc/assistantformal
@@ -90,3 +90,42 @@
/obj/item/key/collar
name = "Collar Key"
desc = "A key for a tiny lock on a collar or bag."
/obj/item/clothing/neck/human_petcollar/locked/cowcollar
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/neck.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/neck.dmi'
name = "cowbell collar"
desc = "Don't fear the ripper, now your pet doesn't have to."
icon_state = "collar_cowbell"
/obj/item/clothing/neck/human_petcollar/locked/bellcollar
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/neck.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/neck.dmi'
name = "bell collar"
desc = "A loud and annoying collar for your little kittens!"
icon_state = "collar_bell"
/obj/item/clothing/neck/human_petcollar/locked/spikecollar
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/neck.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/neck.dmi'
name = "spiked collar"
desc = "A collar for moody pets. Or pitbulls."
icon_state = "collar_spik"
/obj/item/clothing/neck/human_petcollar/locked/holocollar
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/neck.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/neck.dmi'
name = "holocollar"
desc = "A collar with holographic information, like a microchip, but around the neck."
icon_state = "collar_holo"
/obj/item/clothing/neck/human_petcollar/locked/cross
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/neck.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/neck.dmi'
name = "cross collar"
desc = "A religious punishment, probably."
icon_state = "collar_blk"
@@ -230,3 +230,30 @@
mutant_variants = NONE
/obj/item/clothing/suit/duster/colorable
name = "colorable duster"
desc = "This station aint big enough for the both of us."
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/suits.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/suit.dmi'
icon_state = "duster"
mutant_variants = NONE
/obj/item/clothing/suit/duster/colorable/ComponentInitialize()
. = ..()
AddElement(/datum/element/polychromic, list("5D5"))
/obj/item/clothing/suit/toggle/peacoat
name = "colorable peacoat"
desc = "The way you guys are blending in with the local colour. I mean, Flag Girl was bad enough, but U-Boat Captain?"
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/suits.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/suit.dmi'
icon_state = "peacoat"
mutant_variants = NONE
/obj/item/clothing/suit/toggle/peacoat/ComponentInitialize()
. = ..()
AddElement(/datum/element/polychromic, list("5D5"))
@@ -394,5 +394,12 @@
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/uniform.dmi'
icon_state = "rusuni"
/obj/item/clothing/under/nostalgiacritic
name = "nostalgic outfit"
desc = "He remembers it so you don't have to."
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/uniforms.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/uniform.dmi'
icon_state = "cia"
@@ -155,6 +155,10 @@
icon = 'modular_skyrat/modules/customization/icons/obj/clothing/uniforms.dmi'
worn_icon = 'modular_skyrat/modules/customization/icons/mob/clothing/uniform.dmi'
icon_state = "prisonerclassic"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
has_sensor = LOCKED_SENSORS
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
///CDO
/obj/item/clothing/under/rank/security/peacekeeper/junior/sol
@@ -11,7 +11,7 @@
var/list/species_whitelist
//Blacklist of species for this job.
var/list/species_blacklist
/// Which languages does the job require, associative to LANGUAGE_UNDERSTOOD or LANGUAGE_SPOKEN
/// Which languages does the job require, associative to LANGUAGE_UNDERSTOOD or LANGUAGE_SPOKEN
var/list/required_languages = list(/datum/language/common = LANGUAGE_SPOKEN)
/datum/job/proc/has_banned_quirk(datum/preferences/pref)
@@ -49,7 +49,7 @@
/datum/job/security_sergeant
banned_quirks = list(SEC_RESTRICTED_QUIRKS)
/datum/job/security_medic
banned_quirks = list(SEC_RESTRICTED_QUIRKS)
@@ -101,6 +101,27 @@
/datum/job/prisoner
required_languages = null
/datum/job/station_engineer
banned_quirks = list(TECH_RESTRICTED_QUIRKS)
/datum/job/atmospheric_technician
banned_quirks = list(TECH_RESTRICTED_QUIRKS)
/datum/job/doctor
banned_quirks = list(TECH_RESTRICTED_QUIRKS)
/datum/job/virologist
banned_quirks = list(TECH_RESTRICTED_QUIRKS)
/datum/job/chemist
banned_quirks = list(TECH_RESTRICTED_QUIRKS)
/datum/job/roboticist
banned_quirks = list(TECH_RESTRICTED_QUIRKS)
/datum/job/scientist
banned_quirks = list(TECH_RESTRICTED_QUIRKS)
/datum/job/proc/has_required_languages(datum/preferences/pref)
if(!required_languages)
return TRUE
@@ -34,7 +34,7 @@
/area/centcom/holding/cafebuild, /area/centcom/holding/cafevox, /area/centcom/holding/cafedorms, /area/centcom/holding/cafepark, /area/centcom/holding/cafeplumbing))
ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, GHOSTROLE_TRAIT)
ADD_TRAIT(new_spawn, TRAIT_FREE_GHOST, GHOSTROLE_TRAIT)
to_chat(new_spawn,"<span class='boldwarning'>Ghosting is free!</span>")
to_chat(new_spawn,"<span class='warning'><b>Ghosting is free!</b></span>")
var/datum/action/toggle_dead_chat_mob/D = new(new_spawn)
D.Grant(new_spawn)
@@ -64,7 +64,7 @@
/area/centcom/holding/cafebuild, /area/centcom/holding/cafevox, /area/centcom/holding/cafedorms, /area/centcom/holding/cafepark, /area/centcom/holding/cafeplumbing))
ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, GHOSTROLE_TRAIT)
ADD_TRAIT(new_spawn, TRAIT_FREE_GHOST, GHOSTROLE_TRAIT)
to_chat(new_spawn,"<span class='boldwarning'>Ghosting is free!</span>")
to_chat(new_spawn,"<span class='warning'><b>Ghosting is free!</b></span>")
//to_chat(new_spawn,"<span class='narsiesmall'>Be warned: People who opt out of EORG will come here. Do not make the area uninhabitable and do NOT commit EORG. This is a safe-zone. If you attack people in EORG, you will be banned for griefing.</span>")
var/datum/action/toggle_dead_chat_mob/D = new(new_spawn)
D.Grant(new_spawn)
@@ -92,8 +92,8 @@
locked = TRUE
log_combat(target, source, "locked onto with aiming")
playsound(get_turf(source), 'modular_skyrat/modules/gunpoint/sound/targeton.ogg', 50,1)
to_chat(source, "<span class='boldnotice'>You lock onto [target.name]!</span>")
target.visible_message("<span class='boldwarning'>[source.name] holds [target.name] at gunpoint with the [aimed_gun.name]!</span>", "<span class='userdanger'>[source.name] holds you at gunpoint with the [aimed_gun.name]!</span>")
to_chat(source, "<span class='notice'><b>You lock onto [target.name]!</b></span>")
target.visible_message("<span class='warning'><b>[source.name] holds [target.name] at gunpoint with the [aimed_gun.name]!</b></span>", "<span class='userdanger'>[source.name] holds you at gunpoint with the [aimed_gun.name]!</span>")
if(target.gunpointed.len == 1)//First case
to_chat(target, "<span class='danger'>You'll <b>get shot</b> if you <b>use radio</b>, <b>move</b> or <b>interact with items</b>!</span>")
to_chat(target, "<span class='notice'>You can however take items out, toss harmless items or drop them.</span>")
@@ -131,7 +131,7 @@
source.gunpointing = null
if(locked)
QDEL_NULL(gunpoint_gui)
target.visible_message("<span class='notice'>[source.name] no longer holds [target.name] at gunpoint.</span>", "<span class='boldnotice'>[source.name] no longer holds you at gunpoint.</span>")
target.visible_message("<span class='notice'>[source.name] no longer holds [target.name] at gunpoint.</span>", "<span class='notice'><b>[source.name] no longer holds you at gunpoint.</b></span>")
source = null
target = null
aimed_gun = null
@@ -38,9 +38,9 @@
var/datum/action/innate/turn_to_human
var/datum/action/innate/devour
var/transformed_time = 0
var/playstyle_string = "<b><font size=3 color='red'>We have entered our true form!</font> We are unbelievably powerful, and regenerate life at a steady rate. However, most of \
var/playstyle_string = "<span class=infoplain><b><font size=3 color='red'>We have entered our true form!</font> We are unbelievably powerful, and regenerate life at a steady rate. However, most of \
our abilities are useless in this form, and we must utilise the abilities that we have gained as a result of our transformation. Currently, we are incapable of returning to a human. \
After several minutes, we will once again be able to revert into a human. Taking too much damage will cause us to reach equilibrium and our cells will combust into a shower of gore, watch out!</b>"
After several minutes, we will once again be able to revert into a human. Taking too much damage will cause us to reach equilibrium and our cells will combust into a shower of gore, watch out!</b></span>"
var/mob/living/carbon/human/stored_changeling = null //The changeling that transformed
var/devouring = FALSE //If the true changeling is currently devouring a human
@@ -71,7 +71,7 @@
if(stat)
return
if(act == "scream")
message = "<B>[src]</B> makes a loud, bone-chilling roar!"
message = "<span class='emote'><B>[src]</B> makes a loud, bone-chilling roar!</span>"
act = "me"
scream(message)
return
@@ -79,7 +79,7 @@
/mob/living/simple_animal/hostile/true_changeling/proc/scream(message)
if(!message)
message = "<B>[src]</B> makes a loud, bone-chilling roar!"
message = "<span class='emote'><B>[src]</B> makes a loud, bone-chilling roar!</span>"
var/frequency = get_rand_frequency() //so sound frequency is consistent
for(var/mob/M in range(35, src)) //You can hear the scream 7 screens away
// Double check for client
@@ -15,7 +15,7 @@
return
var/show_char = CONFIG_GET(flag/mentors_mobname_only)
var/mentor_msg = "<span class='mentornotice'><b><font color='purple'>MENTORHELP:</b> <b>[key_name_mentor(src, 1, 0, 1, show_char)]</b>: [msg]</font></span>"
var/mentor_msg = "<span class='infoplain'><span class='mentornotice'><b><font color='purple'>MENTORHELP:</b> <b>[key_name_mentor(src, 1, 0, 1, show_char)]</b>: [msg]</font></span></span>"
log_mentor("MENTORHELP: [key_name_mentor(src, 0, 0, 0, 0)]: [msg]")
for(var/it in GLOB.mentors)
@@ -23,7 +23,7 @@
SEND_SOUND(X, 'sound/items/bikehorn.ogg')
to_chat(X, mentor_msg)
to_chat(src, "<span class='mentornotice'><font color='purple'>PM to-<b>Mentors</b>: [msg]</font></span>")
to_chat(src, "<span class='infoplain'><span class='mentornotice'><font color='purple'>PM to-<b>Mentors</b>: [msg]</font></span></span>")
return
/proc/get_mentor_counts()
+10 -10
View File
@@ -32,7 +32,7 @@
return
if(is_mentor(whom))
to_chat(GLOB.mentors, "<font color='purple'>[src] has started replying to [whom]'s mhelp.</font>")
to_chat(GLOB.mentors, "<span class='infoplain'><font color='purple'>[src] has started replying to [whom]'s mhelp.</font></span>")
//get message text, limit it's length.and clean/escape html
if(!msg)
@@ -40,7 +40,7 @@
if(!msg)
if (is_mentor(whom))
to_chat(GLOB.mentors, "<span class='purple'>[src] has stopped their reply to [whom]'s mhelp.</span>")
to_chat(GLOB.mentors, "<span class='infoplain'><span class='purple'>[src] has stopped their reply to [whom]'s mhelp.</span></span>")
return
if(!C)
@@ -57,7 +57,7 @@
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg)
if (is_mentor(whom))
to_chat(GLOB.mentors, "<span class='purple'>[src] has stopped their reply to [whom]'s mhelp.</span>")
to_chat(GLOB.mentors, "<span class='infoplain'><span class='purple'>[src] has stopped their reply to [whom]'s mhelp.</span></span>")
return
log_mentor("Mentor PM: [key_name(src)]->[key_name(C)]: [msg]")
@@ -66,17 +66,17 @@
var/show_char = CONFIG_GET(flag/mentors_mobname_only)
if(C.is_mentor())
if(is_mentor())//both are mentors
to_chat(C, "<span class='purple'>Mentor PM from-<b>[key_name_mentor(src, C, 1, 0, 0)]</b>: [msg]</span>")
to_chat(src, "<span class='blue'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, 0)]</b>: [msg]</font>")
to_chat(C, "<span class='infoplain'><span class='purple'>Mentor PM from-<b>[key_name_mentor(src, C, 1, 0, 0)]</b>: [msg]</span></span>")
to_chat(src, "<span class='infoplain'><span class='blue'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, 0)]</b>: [msg]</span></span>")
else //recipient is a mentor but sender is not
to_chat(C, "<span class='purple'>Reply PM from-<b>[key_name_mentor(src, C, 1, 0, show_char)]</b>: [msg]</span>")
to_chat(src, "<span class='pink'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, 0)]</b>: [msg]</span>")
to_chat(C, "<span class='infoplain'><span class='purple'>Reply PM from-<b>[key_name_mentor(src, C, 1, 0, show_char)]</b>: [msg]</span></span>")
to_chat(src, "<span class='infoplain'><span class='pink'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, 0)]</b>: [msg]</span></span>")
else
if(is_mentor()) //sender is a mentor but recipient is not.
to_chat(C, "<span class='purple'>Mentor PM from-<b>[key_name_mentor(src, C, 1, 0, 0)]</b>: [msg]</span>")
to_chat(src, "<span class='pink'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, show_char)]</b>: [msg]</span>")
to_chat(C, "<span class='infoplain'><span class='purple'>Mentor PM from-<b>[key_name_mentor(src, C, 1, 0, 0)]</b>: [msg]</span></span>")
to_chat(src, "<span class='infoplain'><span class='pink'>Mentor PM to-<b>[key_name_mentor(C, C, 1, 0, show_char)]</b>: [msg]</span></span>")
//we don't use message_Mentors here because the sender/receiver might get it too
var/show_char_sender = !is_mentor() && CONFIG_GET(flag/mentors_mobname_only)
@@ -84,4 +84,4 @@
for(var/it in GLOB.mentors)
var/client/X = it
if(X.key!=key && X.key!=C.key) //check client/X is an Mentor and isn't the sender or recipient
to_chat(X, "<B><span class='pink'>Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]-&gt;[key_name_mentor(C, X, 0, 0, show_char_recip)]:</span></B> <span class='blue'>[msg]</span>") //inform X
to_chat(X, "<span class='infoplain'><B><span class='pink'>Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]-&gt;[key_name_mentor(C, X, 0, 0, show_char_recip)]:</span></B> <span class='blue'>[msg]</span></span>") //inform X
@@ -13,7 +13,7 @@
log_mentor("MSAY: [key_name(src)] : [msg]")
if(check_rights_for(src, R_ADMIN,0))
msg = "<b><font color ='#8A2BE2'><span class='prefix'>MENTOR:</span> <EM>[key_name(src, 0, 0)]</EM>: <span class='message'>[msg]</span></font></b>"
msg = "<span class='infoplain'><b><font color ='#8A2BE2'><span class='prefix'>MENTOR:</span> <EM>[key_name(src, 0, 0)]</EM>: <span class='message'>[msg]</span></font></b></span>"
else
msg = "<b><font color ='#E236D8'><span class='prefix'>MENTOR:</span> <EM>[key_name(src, 0, 0)]</EM>: <span class='message'>[msg]</span></font></b>"
msg = "<span class='infoplain'><b><font color ='#E236D8'><span class='prefix'>MENTOR:</span> <EM>[key_name(src, 0, 0)]</EM>: <span class='message'>[msg]</span></font></b></span>"
to_chat(GLOB.admins | GLOB.mentors, msg)
@@ -18,5 +18,5 @@
if(C.is_afk())
suffix += " (AFK)"
msg += "\t[C][suffix]\n"
msg += "<span class='infoplain'>\t[C][suffix]\n</span>"
to_chat(src, msg)
@@ -34,5 +34,5 @@ GLOBAL_VAR_INIT(ssd_indicator_overlay, mutable_appearance('modular_skyrat/module
//This proc should stop mobs from having the overlay when someone keeps jumping control of mobs, unfortunately it causes Aghosts to have their character without the SSD overlay, I wasn't able to find a better proc unfortunately
/mob/living/transfer_ckey(mob/new_mob, send_signal = TRUE)
..()
set_ssd_indicator(FALSE)
set_ssd_indicator(FALSE)
*/
@@ -5,5 +5,5 @@
set desc = "Toggles seeing LocalOutOfCharacter chat"
usr.client.prefs.skyrat_toggles ^= CHAT_LOOC
usr.client.prefs.save_preferences()
to_chat(usr, "You will [(usr.client.prefs.skyrat_toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel.")
to_chat(usr, "<span class='infoplain'>You will [(usr.client.prefs.skyrat_toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel.</span>")
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Seeing LOOC", "[usr.client.prefs.skyrat_toggles & CHAT_LOOC ? "Enabled" : "Disabled"]"))
@@ -21,7 +21,7 @@
if(handle_spam_prevention(msg,MUTE_OOC))
return
if(findtext(msg, "byond://"))
to_chat(src, "<B>Advertising other servers is not allowed.</B>")
to_chat(src, "<span class='boldannounce'><B>Advertising other servers is not allowed.</B></span>")
log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]")
return
if(mob.stat)
@@ -65,5 +65,5 @@
return
prefs.skyrat_toggles ^= CHAT_LOOC_ADMIN
prefs.save_preferences()
to_chat(usr, "You will [(prefs.skyrat_toggles & CHAT_LOOC_ADMIN) ? "now" : "no longer"] hear LOOC globally.")
to_chat(usr, "<span class='infoplain'>You will [(prefs.skyrat_toggles & CHAT_LOOC_ADMIN) ? "now" : "no longer"] hear LOOC globally.</span>")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Togle Admin LOOC", "[usr.client.prefs.skyrat_toggles & CHAT_LOOC_ADMIN ? "Enabled" : "Disabled"]"))
+3
View File
@@ -3763,6 +3763,7 @@
#include "modular_skyrat\modules\brigoff\code\modules\jobs\job_types\brigoff.dm"
#include "modular_skyrat\modules\bsa_overhaul\code\bsa_cannon.dm"
#include "modular_skyrat\modules\bsa_overhaul\code\bsa_computer.dm"
#include "modular_skyrat\modules\bsrpd\code\bsrpd.dm"
#include "modular_skyrat\modules\bulletrebalance\sniper.dm"
#include "modular_skyrat\modules\cargo\code\bloat.dm"
#include "modular_skyrat\modules\cargo\code\goodies.dm"
@@ -4144,6 +4145,8 @@
#include "modular_skyrat\modules\mentor\code\mentorpm.dm"
#include "modular_skyrat\modules\mentor\code\mentorsay.dm"
#include "modular_skyrat\modules\mentor\code\mentorwho.dm"
#include "modular_skyrat\modules\Midroundtraitor\datum_traitor.dm"
#include "modular_skyrat\modules\Midroundtraitor\event.dm"
#include "modular_skyrat\modules\modular_items\code\datums\components\crafting\recipes\recipes_misc.dm"
#include "modular_skyrat\modules\modular_items\code\datums\components\crafting\recipes\tailoring.dm"
#include "modular_skyrat\modules\modular_items\code\game\modular_clothing.dm"
+1 -1
View File
@@ -82,7 +82,7 @@ export const MESSAGE_TYPES = [
type: MESSAGE_TYPE_OOC,
name: 'OOC',
description: 'The bluewall of global OOC messages',
selector: '.ooc, .adminooc, .oocplain, .looc',
selector: '.ooc, .adminooc, .oocplain, .looc, .rlooc',
},
{
type: MESSAGE_TYPE_ADMINPM,