Skip to content

Commit 549152f

Browse files
committed
Merge remote-tracking branch 'upstream/master' into breathing-tube
2 parents e93e4ef + 4dcd54f commit 549152f

File tree

136 files changed

+1626
-893
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+1626
-893
lines changed

_maps/map_files/cyberiad/cyberiad.dmm

+2-2
Original file line numberDiff line numberDiff line change
@@ -2690,6 +2690,7 @@
26902690
"aZL" = (/obj/item/weapon/restraints/handcuffs/pinkcuffs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
26912691
"aZM" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
26922692
"aZN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
2693+
"aZO" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/twohanded/required/kirbyplants,/obj/structure/sign/bobross{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain)
26932694
"aZV" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar)
26942695
"aZW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
26952696
"aZX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (EAST)"; icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
@@ -3979,7 +3980,6 @@
39793980
"byW" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
39803981
"byX" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "north bump Important Area"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain)
39813982
"byY" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
3982-
"byZ" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/wood,/area/crew_quarters/captain)
39833983
"bza" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne)
39843984
"bzb" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne)
39853985
"bzc" = (/obj/structure/sign/directions/evac{dir = 4},/obj/structure/sign/directions/medical{dir = 4; pixel_y = 7},/obj/structure/sign/directions/science{dir = 4},/turf/simulated/wall,/area/crew_quarters/bar)
@@ -9107,7 +9107,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
91079107
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrNbtvbtybtCbtDbtDbtzbtDbtDbtDbtzbrQaSdaSdaSdaToboRbqrbrUbtFbtGbrUbtBbtAbtHbtEbqrbtLbtMbtIblQblMbtObtPbtKbtJbtQbtNbtSbtRbtRbtRbtUbtTblMbnKbsdbtYbtZbtVbubblTblTblTblTblTbucbudbtWbufbugbnTbnObssbgSbgSbgSbtXbuebuabuibuhbujbqSbunbukbumbulbupbuoburbuqbutbusbuubuhbuwbuvbuybuxbuAbuzbuEbuEbuBbhqbuCaUSbmqbuDbuIbpKbmqbuFbuGbmqbuHbuMbpKbmqbogbofbofbofboibofbuJbofbsWbrobuKbebbuPbrrboBboAboAboBbrubuLbebbuNbuQbuObuSbuRbuUbuTbuWbuVbuVbuVbuVbuVbuVbuXbuZbuYboJboJboJboJboJboJbvdbvabvcbvbbjKbjKbjKbvebltbjKbvgbqnbwDbvhcUBbjRblDblAbeCblCbnbblAbeCblCbnbblAbeCblCblDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
91089108
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvibvjbvjbvjbvjbvjbvjbvjbvjbvjbvjbvfbvlaOQbvlaSfboRbqrbvmbrUbvnbvnbvnbvkbrUbvobqrbvqbvrbtIbvsbvsbvsbvsbvpbvsbvtbnDbvvbvubvwbvwbvybvxblMbvzbvBbvAbvDbvCbvFbvGbvHbvIbvHbvJbvJbvJbvJbvJbvKbvEbnObvLbvNbvMbvPbvObvRbvQbvTbvSbuobvUbvVbvXbvXbvXbvXbvWbvXbvZbwabwbbvYbvUbwdbwcbmcbwebwgbwfbwibwhbwjbhqbhqbsNbmqbwkbmqbmqbmqaZVbmqbmqbwmbwmbmqbmqbwlbofbofbwnbwobofbofbofbwqbwpbwrbebbqabrrboBboBboBboBbrubwsbebbwtbwvbwvbwwbwvbwubljbljbljbljbwybljbljbljbwzbvaboJboJboJboJboJboJboJbvdbvabvcbvbbjKboMboMboNboMbjKbwxbjRbwBbwAbwCbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
91099109
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbwKblFbwLbrUbwMbvnbvnbvnbvkbwMbrUbqrbwNbwObtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbwWbwXbwZbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqbxybxzbmqbxAbmqbxBbxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbxObwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbxXbxYaYPbxZbcDbyaboJboJbyabcDbybaYPbycbvbbjKbqlbqlbqmbqlbjKbvgbqnbwDbvhcUBbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
9110-
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbrObrObrQbrObrObrObrRbrObrObydaabaSdbyebndbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbykbylbtIbvsbymbvsbynbyobvsbyqbypbyrblMbwWbwXbwZbskblMbnKbxabxbbytbysbyubyvbywbxbbyybyxbyAbyzbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXbyZbxvbzabzbbzbbzcaUSaUSaUSaUSbzdbsNbzdbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhbzibebbjBbzjbjBbzkbzkbjBbzjbjBbebbxObwvbwvbzlbxPbaubaubaubaubaubtfbaubaubaubauaYPaYOaYQaYQaYQaYQaYQaYQaYPaYPbznbzmbzobxKbjKbjMbjKbjKbzpbjRbjRbjRbjRbqnbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
9110+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbrObrObrQbrObrObrObrRbrObrObydaabaSdbyebndbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbykbylbtIbvsbymbvsbynbyobvsbyqbypbyrblMbwWbwXbwZbskblMbnKbxabxbbytbysbyubyvbywbxbbyybyxbyAbyzbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbzdbsNbzdbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhbzibebbjBbzjbjBbzkbzkbjBbzjbjBbebbxObwvbwvbzlbxPbaubaubaubaubaubtfbaubaubaubauaYPaYOaYQaYQaYQaYQaYQaYQaYPaYPbznbzmbzobxKbjKbjMbjKbjKbzpbjRbjRbjRbjRbqnbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
91119111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbzsbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbzwbvsbzubzvbynbzxbvsbzzbzybzAblMbwWbwXbwZbnDblMbnKbxabxbbzDbzBbzCbyvbzCbxbbyybzGbzEbzFbzIbzHbzKbzJbzMbzLbyFbzRbzNbzObzPbzQbzQbzPbzUbzSbvXbzTbxqbxqbyPbzWbyPbxqbxqbzVbwbbzXbAbbzYbzZbAabAdbzYbAcbxvbAlbAebAfbAgbAhbAibAjbAkbAkbAkbAkbAkbAkbAmbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAibAubAvbAvbAxbAwbAybAwbAzbAwbABbAAbACbAwbAFbADbAEbAHbAGbAGbAGbAGbAGbAGbAGbAIbALbAJbAJbAKbAJbBObjKbjKbrIbAMboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
91129112
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUkaSgbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBcbBbbvsbvsbvsbBdbyobvsblMblMblMblMbwWbBebBgbBfblMbBhbBibxbbBjbBkbyvbzCbBlbxbbyybBmbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbBrbBsbBtbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBIbBJbBKbBLbAGbAGbBMbwvbwvbwvbwvbwvbwwbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbBNbwvbDobBPbjKbjKbBQbjKbjKbjKbjKbBUbjRbqnbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
91139113
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdaTobCnbCfbCgbCfbCfbCfbCfbChbCtbCjblQblQbCkbCwbvsbwPbCmbCxbzxbvsbCobCpbCoblMblMblMblMbCqblMbCrbCsbxbbCybCubzCbCvbCzbxbbyybzJbCBbzFbBnbBnbCEbzJbCFbzLbyFbzRbCAbBsbBtbCGbCCbBwbzUbCDbvXbCHbCIbxqbCKbCJbCLbxqbCRbCNbCSbCMbCTbCObCPbCQbCUbzYbCVbxvbCYbCXbAfbAgbAhbAibAkbCZbAkbAkbAkbAkbCWbDbbDbbDbbDbbDcbAkbAkbAkbAkbDdbAkbCZbDabAkbAkbDebDgbDfbDhbDibDibDlbDjbDnbDmbwvbwvbwvbwvbwvbwvbwvbDkbDpbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbDrbDqbDqbDsbDubDtbDxbDvbDvbDybDAbEHbmZbAMboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

code/__DEFINES/combat.dm

+12-4
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,21 @@
6363
#define THROWN_PROJECTILE_ATTACK 4
6464
#define LEAP_ATTACK 5
6565

66+
//Embedded objects
67+
#define EMBEDDED_PAIN_CHANCE 15 //Chance for embedded objects to cause pain (damage user)
68+
#define EMBEDDED_ITEM_FALLOUT 5 //Chance for embedded object to fall out (causing pain but removing the object)
69+
#define EMBED_CHANCE 45 //Chance for an object to embed into somebody when thrown (if it's sharp)
70+
#define EMBEDDED_PAIN_MULTIPLIER 2 //Coefficient of multiplication for the damage the item does while embedded (this*item.w_class)
71+
#define EMBEDDED_FALL_PAIN_MULTIPLIER 5 //Coefficient of multiplication for the damage the item does when it falls out (this*item.w_class)
72+
#define EMBEDDED_IMPACT_PAIN_MULTIPLIER 4 //Coefficient of multiplication for the damage the item does when it first embeds (this*item.w_class)
73+
#define EMBED_THROWSPEED_THRESHOLD 4 //The minimum value of an item's throw_speed for it to embed (Unless it has embedded_ignore_throwspeed_threshold set to 1)
74+
#define EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER 8 //Coefficient of multiplication for the damage the item does when removed without a surgery (this*item.w_class)
75+
#define EMBEDDED_UNSAFE_REMOVAL_TIME 30 //A Time in ticks, total removal time = (this*item.w_class)
76+
6677
//Gun Stuff
6778
#define SAWN_INTACT 0
6879
#define SAWN_OFF 1
6980

7081
#define WEAPON_LIGHT 0
7182
#define WEAPON_MEDIUM 1
72-
#define WEAPON_HEAVY 2
73-
74-
// Embedded objects
75-
#define EMBED_THROWSPEED_THRESHOLD 15
83+
#define WEAPON_HEAVY 2

code/__DEFINES/is_helpers.dm

+11-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,19 @@
22
#define isatom(A) istype(A, /atom)
33
#define ismovableatom(A) istype(A, /atom/movable)
44

5-
// Mobs
5+
// Mobs
66
#define ismegafauna(A) istype(A, /mob/living/simple_animal/hostile/megafauna)
77

8+
//Objects
9+
10+
var/list/static/global/pointed_types = typecacheof(list(
11+
/obj/item/weapon/pen,
12+
/obj/item/weapon/screwdriver,
13+
/obj/item/weapon/reagent_containers/syringe,
14+
/obj/item/weapon/kitchen/utensil/fork))
15+
16+
#define is_pointed(W) (is_type_in_typecache(W, pointed_types))
17+
818
//Turfs
919
#define issimulatedturf(A) istype(A, /turf/simulated)
1020

code/__HELPERS/text.dm

+20-19
Original file line numberDiff line numberDiff line change
@@ -448,32 +448,32 @@ proc/checkhtml(var/t)
448448

449449

450450
// Pencode
451-
/proc/pencode_to_html(text, mob/user, obj/item/weapon/pen/P = null, sign = 1, fields = 1, deffont = PEN_FONT, signfont = SIGNFONT, crayonfont = CRAYON_FONT)
452-
text = replacetext(text, "\n", "<BR>")
453-
text = replacetext(text, "\[center\]", "<center>")
454-
text = replacetext(text, "\[/center\]", "</center>")
455-
text = replacetext(text, "\[br\]", "<BR>")
451+
/proc/pencode_to_html(text, mob/user, obj/item/weapon/pen/P = null, format = 1, sign = 1, fields = 1, deffont = PEN_FONT, signfont = SIGNFONT, crayonfont = CRAYON_FONT)
456452
text = replacetext(text, "\[b\]", "<B>")
457453
text = replacetext(text, "\[/b\]", "</B>")
458454
text = replacetext(text, "\[i\]", "<I>")
459455
text = replacetext(text, "\[/i\]", "</I>")
460456
text = replacetext(text, "\[u\]", "<U>")
461457
text = replacetext(text, "\[/u\]", "</U>")
462-
text = replacetext(text, "\[large\]", "<font size=\"4\">")
463-
text = replacetext(text, "\[/large\]", "</font>")
464458
if(sign)
465459
text = replacetext(text, "\[sign\]", "<font face=\"[signfont]\"><i>[user ? user.real_name : "Anonymous"]</i></font>")
466460
if(fields)
467461
text = replacetext(text, "\[field\]", "<span class=\"paper_field\"></span>")
468-
469-
text = replacetext(text, "\[h1\]", "<H1>")
470-
text = replacetext(text, "\[/h1\]", "</H1>")
471-
text = replacetext(text, "\[h2\]", "<H2>")
472-
text = replacetext(text, "\[/h2\]", "</H2>")
473-
text = replacetext(text, "\[h3\]", "<H3>")
474-
text = replacetext(text, "\[/h3\]", "</H3>")
475-
476-
if(istype(P, /obj/item/toy/crayon)) // If it is a crayon, and he still tries to use these, make them empty!
462+
if(format)
463+
text = replacetext(text, "\[h1\]", "<H1>")
464+
text = replacetext(text, "\[/h1\]", "</H1>")
465+
text = replacetext(text, "\[h2\]", "<H2>")
466+
text = replacetext(text, "\[/h2\]", "</H2>")
467+
text = replacetext(text, "\[h3\]", "<H3>")
468+
text = replacetext(text, "\[/h3\]", "</H3>")
469+
text = replacetext(text, "\n", "<BR>")
470+
text = replacetext(text, "\[center\]", "<center>")
471+
text = replacetext(text, "\[/center\]", "</center>")
472+
text = replacetext(text, "\[br\]", "<BR>")
473+
text = replacetext(text, "\[large\]", "<font size=\"4\">")
474+
text = replacetext(text, "\[/large\]", "</font>")
475+
476+
if(istype(P, /obj/item/toy/crayon) || !format) // If it is a crayon, and he still tries to use these, make them empty!
477477
text = replacetext(text, "\[*\]", "")
478478
text = replacetext(text, "\[hr\]", "")
479479
text = replacetext(text, "\[small\]", "")
@@ -485,7 +485,7 @@ proc/checkhtml(var/t)
485485
text = replacetext(text, "\[row\]", "")
486486
text = replacetext(text, "\[cell\]", "")
487487
text = replacetext(text, "\[logo\]", "")
488-
488+
if(istype(P, /obj/item/toy/crayon))
489489
text = "<font face=\"[crayonfont]\" color=[P ? P.colour : "black"]><b>[text]</b></font>"
490490
else // They are using "not a crayon" - formatting is OK and such
491491
text = replacetext(text, "\[*\]", "<li>")
@@ -501,9 +501,10 @@ proc/checkhtml(var/t)
501501
text = replacetext(text, "\[row\]", "</td><tr>")
502502
text = replacetext(text, "\[cell\]", "<td>")
503503
text = replacetext(text, "\[logo\]", "<img src = ntlogo.png>")
504-
504+
if(P)
505505
text = "<font face=\"[deffont]\" color=[P ? P.colour : "black"]>[text]</font>"
506-
506+
else
507+
text = "<font face=\"[deffont]\">[text]</font>"
507508
text = copytext(text, 1, MAX_PAPER_MESSAGE_LEN)
508509
return text
509510

code/__HELPERS/unsorted.dm

+16-17
Original file line numberDiff line numberDiff line change
@@ -1081,6 +1081,21 @@ proc/get_mob_with_client_list()
10811081
return get_turf(location)
10821082

10831083

1084+
//For objects that should embed, but make no sense being is_sharp or is_pointed()
1085+
//e.g: rods
1086+
var/list/can_embed_types = typecacheof(list(
1087+
/obj/item/stack/rods,
1088+
/obj/item/pipe))
1089+
1090+
/proc/can_embed(obj/item/W)
1091+
if(is_sharp(W))
1092+
return 1
1093+
if(is_pointed(W))
1094+
return 1
1095+
1096+
if(is_type_in_typecache(W, can_embed_types))
1097+
return 1
1098+
10841099
//Quick type checks for some tools
10851100
var/global/list/common_tools = list(
10861101
/obj/item/stack/cable_coil,
@@ -1199,22 +1214,6 @@ var/global/list/common_tools = list(
11991214
if(O.edge) return 1
12001215
return 0
12011216

1202-
//Returns 1 if the given item is capable of popping things like balloons, inflatable barriers, or cutting police tape.
1203-
/proc/can_puncture(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT?
1204-
if(!istype(W)) return 0
1205-
if(!W) return 0
1206-
if(W.sharp) return 1
1207-
return ( \
1208-
W.sharp || \
1209-
istype(W, /obj/item/weapon/screwdriver) || \
1210-
istype(W, /obj/item/weapon/pen) || \
1211-
istype(W, /obj/item/weapon/weldingtool) || \
1212-
istype(W, /obj/item/weapon/lighter/zippo) || \
1213-
istype(W, /obj/item/weapon/match) || \
1214-
istype(W, /obj/item/clothing/mask/cigarette) || \
1215-
istype(W, /obj/item/weapon/shovel) \
1216-
)
1217-
12181217
/proc/is_surgery_tool(obj/item/W as obj)
12191218
return ( \
12201219
istype(W, /obj/item/weapon/scalpel) || \
@@ -1891,4 +1890,4 @@ var/global/list/g_fancy_list_of_types = null
18911890
var/num = pick(num_sample)
18921891
num_sample -= num
18931892
result += (1 << num)
1894-
return result
1893+
return result

code/_globalvars/lists/objects.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@ var/global/list/global_radios = list() //list of all radios, across all z-lev
4242

4343
var/global/list/meteor_list = list() //list of all meteors
4444
var/global/list/poi_list = list() //list of points of interest for observe/follow
45-
45+
var/global/list/active_jammers = list() // List of active radio jammers

code/_onclick/ai.dm

+5
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,11 @@
199199
Topic(src, list("src" = UID(), "command"="lights", "activate" = "0"), 1)
200200
return
201201

202+
/obj/machinery/ai_slipper/AICtrlClick() //Turns liquid dispenser on or off
203+
ToggleOn()
204+
205+
/obj/machinery/ai_slipper/AIAltClick() //Dispenses liquid if on
206+
Activate()
202207

203208
//
204209
// Override AdjacentQuick for AltClicking

code/_onclick/cyborg.dm

+6
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,12 @@
169169
/obj/machinery/turretid/BorgAltClick() //turret lethal on/off. Forwards to AI code.
170170
AIAltClick()
171171

172+
/obj/machinery/ai_slipper/BorgCtrlClick() //Turns liquid dispenser on or off
173+
ToggleOn()
174+
175+
/obj/machinery/ai_slipper/BorgAltClick() //Dispenses liquid if on
176+
Activate()
177+
172178
/*
173179
As with AI, these are not used in click code,
174180
because the code for robots is specific, not generic.

code/_onclick/hud/alert.dm

+6
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,12 @@ or something covering your eyes."
235235
desc = "All that alcohol you've been drinking is impairing your speech, motor skills, and mental cognition. Make sure to act like it."
236236
icon_state = "drunk"
237237

238+
/obj/screen/alert/embeddedobject
239+
name = "Embedded Object"
240+
desc = "Something got lodged into your flesh and is causing major bleeding. It might fall out with time, but surgery is the safest way. \
241+
If you're feeling frisky, click yourself in help intent to pull the object out."
242+
icon_state = "embeddedobject"
243+
238244
/obj/screen/alert/embeddedobject/Click()
239245
if(isliving(usr))
240246
var/mob/living/carbon/human/M = usr

code/datums/spells/summonitem.dm

+8
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,14 @@
7979
add_logs(target, C, "magically debrained", addition="INTENT: [uppertext(target.a_intent)]")*/
8080
if(C.stomach_contents && item_to_retrive in C.stomach_contents)
8181
C.stomach_contents -= item_to_retrive
82+
for(var/X in C.bodyparts)
83+
var/obj/item/organ/external/part = X
84+
if(item_to_retrive in part.embedded_objects)
85+
part.embedded_objects -= item_to_retrive
86+
to_chat(C, "<span class='warning'>The [item_to_retrive] that was embedded in your [part] has mysteriously vanished. How fortunate!</span>")
87+
if(!C.has_embedded_objects())
88+
C.clear_alert("embeddedobject")
89+
break
8290

8391
else
8492
if(istype(item_to_retrive.loc,/obj/machinery/portable_atmospherics/)) //Edge cases for moved machinery

code/datums/uplink_item.dm

+16-1
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ var/list/uplink_items = list()
332332
reference = "TPB"
333333
item = /obj/item/weapon/reagent_containers/glass/bottle/traitor
334334
cost = 2
335-
job = list("Research Director", "Chief Medical Officer", "Medical Doctor", "Psychiatrist", "Paramedic", "Virologist", "Bartender", "Chef")
335+
job = list("Research Director", "Chief Medical Officer", "Medical Doctor", "Psychiatrist", "Chemist", "Paramedic", "Virologist", "Bartender", "Chef")
336336

337337
// Paper contact poison pen
338338

@@ -737,6 +737,14 @@ var/list/uplink_items = list()
737737
cost = 17
738738
excludefrom = list(/datum/game_mode/nuclear)
739739

740+
/datum/uplink_item/stealthy_weapons/throwingweapons
741+
name = "Box of Throwing Weapons"
742+
desc = "A box of shurikens and reinforced bolas from ancient Earth martial arts. They are highly effective \
743+
throwing weapons. The bolas can knock a target down and the shurikens will embed into limbs."
744+
reference = "STK"
745+
item = /obj/item/weapon/storage/box/syndie_kit/throwing_weapons
746+
cost = 3
747+
740748
/datum/uplink_item/stealthy_weapons/edagger
741749
name = "Energy Dagger"
742750
desc = "A dagger made of energy that looks and functions as a pen when off."
@@ -1116,6 +1124,13 @@ var/list/uplink_items = list()
11161124
cost = 1
11171125
surplus = 0
11181126

1127+
/datum/uplink_item/device_tools/jammer
1128+
name = "Radio Jammer"
1129+
desc = "This device will disrupt any nearby outgoing radio communication when activated."
1130+
reference = "RJ"
1131+
item = /obj/item/device/jammer
1132+
cost = 5
1133+
11191134
/datum/uplink_item/device_tools/teleporter
11201135
name = "Teleporter Circuit Board"
11211136
desc = "A printed circuit board that completes the teleporter onboard the mothership. Advise you test fire the teleporter before entering it, as malfunctions can occur."

0 commit comments

Comments
 (0)