Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into upstream-merge-28165

This commit is contained in:
LetterJay
2017-06-10 09:38:21 -05:00
72 changed files with 1213 additions and 1073 deletions
+2 -2
View File
@@ -3502,7 +3502,7 @@
/area/awaymission/centcomAway/general) /area/awaymission/centcomAway/general)
"kN" = ( "kN" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/clothing/tie/medal, /obj/item/clothing/accessory/medal,
/turf/open/floor/carpet, /turf/open/floor/carpet,
/area/awaymission/centcomAway/general) /area/awaymission/centcomAway/general)
"kO" = ( "kO" = (
@@ -3516,7 +3516,7 @@
/area/awaymission/centcomAway/general) /area/awaymission/centcomAway/general)
"kQ" = ( "kQ" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/clothing/tie/medal/gold, /obj/item/clothing/accessory/medal/gold,
/turf/open/floor/carpet, /turf/open/floor/carpet,
/area/awaymission/centcomAway/general) /area/awaymission/centcomAway/general)
"kR" = ( "kR" = (
+6 -10
View File
@@ -30611,11 +30611,11 @@
"blx" = ( "blx" = (
/obj/structure/table/reinforced, /obj/structure/table/reinforced,
/obj/item/weapon/clipboard, /obj/item/weapon/clipboard,
/obj/item/clothing/tie/armband/deputy, /obj/item/clothing/accessory/armband/deputy,
/obj/item/clothing/tie/armband/deputy, /obj/item/clothing/accessory/armband/deputy,
/obj/item/clothing/tie/armband/deputy, /obj/item/clothing/accessory/armband/deputy,
/obj/item/clothing/tie/armband/deputy, /obj/item/clothing/accessory/armband/deputy,
/obj/item/clothing/tie/armband/deputy, /obj/item/clothing/accessory/armband/deputy,
/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly, /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly,
/turf/open/floor/plasteel/red/side{ /turf/open/floor/plasteel/red/side{
dir = 8 dir = 8
@@ -52672,7 +52672,6 @@
/obj/machinery/camera/emp_proof{ /obj/machinery/camera/emp_proof{
c_tag = "Containment - Fore Starboard"; c_tag = "Containment - Fore Starboard";
dir = 8; dir = 8;
icon_state = "camera";
network = list("Singularity") network = list("Singularity")
}, },
/turf/open/floor/plating/airless, /turf/open/floor/plating/airless,
@@ -54400,7 +54399,6 @@
/obj/machinery/camera/emp_proof{ /obj/machinery/camera/emp_proof{
c_tag = "Containment - Fore Port"; c_tag = "Containment - Fore Port";
dir = 4; dir = 4;
icon_state = "camera";
network = list("Singularity") network = list("Singularity")
}, },
/turf/open/space, /turf/open/space,
@@ -62751,7 +62749,6 @@
/obj/machinery/camera/emp_proof{ /obj/machinery/camera/emp_proof{
c_tag = "Containment - Aft Port"; c_tag = "Containment - Aft Port";
dir = 4; dir = 4;
icon_state = "camera";
network = list("Singularity") network = list("Singularity")
}, },
/turf/open/space, /turf/open/space,
@@ -64431,7 +64428,6 @@
/obj/machinery/camera/emp_proof{ /obj/machinery/camera/emp_proof{
c_tag = "Containment - Aft Starboard"; c_tag = "Containment - Aft Starboard";
dir = 8; dir = 8;
icon_state = "camera";
network = list("Singularity") network = list("Singularity")
}, },
/turf/open/floor/plating/airless, /turf/open/floor/plating/airless,
@@ -103271,7 +103267,7 @@
/obj/item/weapon/wirerod, /obj/item/weapon/wirerod,
/obj/item/weapon/wrench, /obj/item/weapon/wrench,
/obj/item/clothing/under/waiter, /obj/item/clothing/under/waiter,
/obj/item/clothing/tie/waistcoat, /obj/item/clothing/accessory/waistcoat,
/obj/structure/sign/poster/contraband/random{ /obj/structure/sign/poster/contraband/random{
pixel_x = -32 pixel_x = -32
}, },
+23 -53
View File
@@ -13412,9 +13412,7 @@
"aza" = ( "aza" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 4; dir = 4;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/turf/open/floor/plasteel/black, /turf/open/floor/plasteel/black,
/area/engine/engineering) /area/engine/engineering)
@@ -14011,7 +14009,7 @@
name = "Station Intercom (General)"; name = "Station Intercom (General)";
pixel_y = 28 pixel_y = 28
}, },
/obj/item/clothing/tie/waistcoat, /obj/item/clothing/accessory/waistcoat,
/obj/item/clothing/suit/toggle/lawyer/black, /obj/item/clothing/suit/toggle/lawyer/black,
/obj/item/clothing/under/suit_jacket/red, /obj/item/clothing/under/suit_jacket/red,
/obj/item/clothing/neck/tie/black, /obj/item/clothing/neck/tie/black,
@@ -15128,7 +15126,7 @@
contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/weapon/gun/ballistic/automatic/pistol,/obj/item/weapon/suppressor,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/weapon/soap/nanotrasen) contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/weapon/gun/ballistic/automatic/pistol,/obj/item/weapon/suppressor,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/weapon/soap/nanotrasen)
}, },
/obj/item/weapon/storage/backpack/dufflebag{ /obj/item/weapon/storage/backpack/dufflebag{
contents = newlist(/obj/item/clothing/under/lawyer/blacksuit,/obj/item/clothing/tie/waistcoat,/obj/item/clothing/suit/toggle/lawyer/black,/obj/item/clothing/shoes/laceup,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/fedora); contents = newlist(/obj/item/clothing/under/lawyer/blacksuit,/obj/item/clothing/accessory/waistcoat,/obj/item/clothing/suit/toggle/lawyer/black,/obj/item/clothing/shoes/laceup,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/fedora);
desc = "A large dufflebag for holding extra things. There is a NanoTrasen logo on the back."; desc = "A large dufflebag for holding extra things. There is a NanoTrasen logo on the back.";
icon_state = "duffle-syndieammo"; icon_state = "duffle-syndieammo";
item_state = "duffle-syndieammo" item_state = "duffle-syndieammo"
@@ -31819,9 +31817,7 @@
"bhv" = ( "bhv" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 8; dir = 8;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/turf/open/floor/carpet, /turf/open/floor/carpet,
/area/crew_quarters/heads/captain/private) /area/crew_quarters/heads/captain/private)
@@ -34604,9 +34600,7 @@
"bmy" = ( "bmy" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 8; dir = 8;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/structure/cable/yellow{ /obj/structure/cable/yellow{
d1 = 1; d1 = 1;
@@ -38251,9 +38245,7 @@
"bsN" = ( "bsN" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 2; dir = 2;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/structure/cable/yellow{ /obj/structure/cable/yellow{
d1 = 1; d1 = 1;
@@ -38333,9 +38325,7 @@
req_access_txt = "19" req_access_txt = "19"
}, },
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/machinery/button/door{ /obj/machinery/button/door{
id = "council blast"; id = "council blast";
@@ -41604,11 +41594,6 @@
}, },
/area/engine/atmos) /area/engine/atmos)
"bzc" = ( "bzc" = (
/obj/machinery/atmospherics/components/binary/pump{
dir = 8;
name = "Distro to Waste";
on = 0
},
/obj/machinery/light{ /obj/machinery/light{
dir = 1 dir = 1
}, },
@@ -41616,6 +41601,11 @@
dir = 1; dir = 1;
on = 1 on = 1
}, },
/obj/machinery/atmospherics/components/binary/pump{
dir = 8;
name = "Distro to Waste";
on = 0
},
/turf/open/floor/plasteel/caution{ /turf/open/floor/plasteel/caution{
dir = 1 dir = 1
}, },
@@ -42035,9 +42025,7 @@
"bzT" = ( "bzT" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 8; dir = 8;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/machinery/vending/coffee{ /obj/machinery/vending/coffee{
pixel_x = -3 pixel_x = -3
@@ -42155,9 +42143,7 @@
"bAg" = ( "bAg" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 2; dir = 2;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/structure/extinguisher_cabinet{ /obj/structure/extinguisher_cabinet{
pixel_x = 27 pixel_x = 27
@@ -43639,9 +43625,7 @@
}, },
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 2; dir = 2;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/turf/open/floor/plasteel/neutral/corner{ /turf/open/floor/plasteel/neutral/corner{
dir = 1 dir = 1
@@ -43787,9 +43771,7 @@
}, },
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 2; dir = 2;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/turf/open/floor/plasteel/neutral/corner{ /turf/open/floor/plasteel/neutral/corner{
dir = 4 dir = 4
@@ -47556,9 +47538,7 @@
"bKz" = ( "bKz" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 8; dir = 8;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/atmos) /area/engine/atmos)
@@ -47986,9 +47966,7 @@
"bLs" = ( "bLs" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 1; dir = 1;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 8 dir = 8
@@ -50400,9 +50378,7 @@
"bQa" = ( "bQa" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 1; dir = 1;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 4 dir = 4
@@ -50531,9 +50507,7 @@
}, },
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 2; dir = 2;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/turf/open/floor/wood, /turf/open/floor/wood,
/area/bridge/showroom/corporate) /area/bridge/showroom/corporate)
@@ -50570,9 +50544,7 @@
"bQq" = ( "bQq" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 4; dir = 4;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/structure/cable/yellow{ /obj/structure/cable/yellow{
d1 = 1; d1 = 1;
@@ -50641,9 +50613,7 @@
"bQu" = ( "bQu" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber{ /obj/machinery/atmospherics/components/unary/vent_scrubber{
dir = 8; dir = 8;
on = 1; on = 1
scrub_N2O = 1;
scrub_Toxins = 1
}, },
/obj/structure/cable/yellow{ /obj/structure/cable/yellow{
d1 = 4; d1 = 4;
@@ -57182,7 +57152,7 @@
"ccz" = ( "ccz" = (
/obj/item/weapon/wrench, /obj/item/weapon/wrench,
/obj/item/clothing/suit/apron, /obj/item/clothing/suit/apron,
/obj/item/clothing/tie/armband/hydro, /obj/item/clothing/accessory/armband/hydro,
/obj/structure/table/glass, /obj/structure/table/glass,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 9 dir = 9
+7 -28
View File
@@ -2443,10 +2443,7 @@
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 2 dir = 2
}, },
/turf/open/floor/plating{ /turf/open/floor/plating,
tag = "icon-plating_warn_side (EAST)";
icon_state = "plating_warn_side"
},
/area/quartermaster/storage) /area/quartermaster/storage)
"aeg" = ( "aeg" = (
/obj/machinery/conveyor{ /obj/machinery/conveyor{
@@ -2457,10 +2454,7 @@
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 2 dir = 2
}, },
/turf/open/floor/plating{ /turf/open/floor/plating,
tag = "icon-plating_warn_side (EAST)";
icon_state = "plating_warn_side"
},
/area/quartermaster/storage) /area/quartermaster/storage)
"aeh" = ( "aeh" = (
/obj/machinery/conveyor{ /obj/machinery/conveyor{
@@ -2478,10 +2472,7 @@
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 2 dir = 2
}, },
/turf/open/floor/plating{ /turf/open/floor/plating,
tag = "icon-plating_warn_side (EAST)";
icon_state = "plating_warn_side"
},
/area/quartermaster/storage) /area/quartermaster/storage)
"aei" = ( "aei" = (
/obj/machinery/conveyor{ /obj/machinery/conveyor{
@@ -4417,10 +4408,7 @@
dir = 9 dir = 9
}, },
/obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plating{ /turf/open/floor/plating,
tag = "icon-plating_warn_end (WEST)";
icon_state = "plating_warn_end"
},
/area/quartermaster/storage) /area/quartermaster/storage)
"aho" = ( "aho" = (
/obj/machinery/conveyor{ /obj/machinery/conveyor{
@@ -4467,10 +4455,7 @@
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 1 dir = 1
}, },
/turf/open/floor/plating{ /turf/open/floor/plating,
tag = "icon-plating_warn_side (EAST)";
icon_state = "plating_warn_side"
},
/area/quartermaster/storage) /area/quartermaster/storage)
"ahr" = ( "ahr" = (
/obj/machinery/conveyor{ /obj/machinery/conveyor{
@@ -4485,10 +4470,7 @@
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 1 dir = 1
}, },
/turf/open/floor/plating{ /turf/open/floor/plating,
tag = "icon-plating_warn_side (EAST)";
icon_state = "plating_warn_side"
},
/area/quartermaster/storage) /area/quartermaster/storage)
"ahs" = ( "ahs" = (
/obj/machinery/conveyor{ /obj/machinery/conveyor{
@@ -4510,10 +4492,7 @@
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 1 dir = 1
}, },
/turf/open/floor/plating{ /turf/open/floor/plating,
tag = "icon-plating_warn_side (EAST)";
icon_state = "plating_warn_side"
},
/area/quartermaster/storage) /area/quartermaster/storage)
"aht" = ( "aht" = (
/obj/machinery/door/poddoor{ /obj/machinery/door/poddoor{
+8 -8
View File
@@ -5590,8 +5590,8 @@
/obj/item/clothing/under/skirt/black, /obj/item/clothing/under/skirt/black,
/obj/item/clothing/under/shorts/black, /obj/item/clothing/under/shorts/black,
/obj/item/clothing/under/pants/track, /obj/item/clothing/under/pants/track,
/obj/item/clothing/tie/armband/deputy, /obj/item/clothing/accessory/armband/deputy,
/obj/item/clothing/tie/waistcoat, /obj/item/clothing/accessory/waistcoat,
/obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/jackboots,
/obj/item/clothing/shoes/laceup, /obj/item/clothing/shoes/laceup,
/obj/item/clothing/neck/stripedredscarf, /obj/item/clothing/neck/stripedredscarf,
@@ -11175,7 +11175,7 @@
/obj/structure/rack, /obj/structure/rack,
/obj/item/clothing/head/that, /obj/item/clothing/head/that,
/obj/item/clothing/under/suit_jacket, /obj/item/clothing/under/suit_jacket,
/obj/item/clothing/tie/waistcoat, /obj/item/clothing/accessory/waistcoat,
/turf/open/floor/plasteel/cafeteria, /turf/open/floor/plasteel/cafeteria,
/area/centcom/holding) /area/centcom/holding)
"BI" = ( "BI" = (
@@ -11379,7 +11379,7 @@
/obj/structure/sign/goldenplaque{ /obj/structure/sign/goldenplaque{
pixel_y = 32 pixel_y = 32
}, },
/obj/item/clothing/tie/lawyers_badge{ /obj/item/clothing/accessory/lawyers_badge{
desc = "A badge of upmost glory."; desc = "A badge of upmost glory.";
name = "thunderdome badge" name = "thunderdome badge"
}, },
@@ -11400,7 +11400,7 @@
/obj/structure/sign/goldenplaque{ /obj/structure/sign/goldenplaque{
pixel_y = 32 pixel_y = 32
}, },
/obj/item/clothing/tie/medal/silver{ /obj/item/clothing/accessory/medal/silver{
pixel_y = 5 pixel_y = 5
}, },
/turf/open/floor/plasteel/grimy, /turf/open/floor/plasteel/grimy,
@@ -11605,11 +11605,11 @@
name = "Thunderdome Plaque"; name = "Thunderdome Plaque";
pixel_y = -32 pixel_y = -32
}, },
/obj/item/clothing/tie/medal/gold{ /obj/item/clothing/accessory/medal/gold{
pixel_x = 3; pixel_x = 3;
pixel_y = 5 pixel_y = 5
}, },
/obj/item/clothing/tie/medal/gold, /obj/item/clothing/accessory/medal/gold,
/turf/open/floor/plasteel/grimy, /turf/open/floor/plasteel/grimy,
/area/tdome/tdomeobserve) /area/tdome/tdomeobserve)
"CF" = ( "CF" = (
@@ -11625,7 +11625,7 @@
name = "Thunderdome Plaque"; name = "Thunderdome Plaque";
pixel_y = -32 pixel_y = -32
}, },
/obj/item/clothing/tie/medal{ /obj/item/clothing/accessory/medal{
pixel_y = 5 pixel_y = 5
}, },
/turf/open/floor/plasteel/grimy, /turf/open/floor/plasteel/grimy,
+5 -1
View File
@@ -429,4 +429,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
#define GIBTONITE_UNSTRUCK 0 #define GIBTONITE_UNSTRUCK 0
#define GIBTONITE_ACTIVE 1 #define GIBTONITE_ACTIVE 1
#define GIBTONITE_STABLE 2 #define GIBTONITE_STABLE 2
#define GIBTONITE_DETONATE 3 #define GIBTONITE_DETONATE 3
//Gangster starting influences
#define GANGSTER_SOLDIER_STARTING_INFLUENCE 5
#define GANGSTER_BOSS_STARTING_INFLUENCE 20
+1 -1
View File
@@ -33,7 +33,7 @@ SUBSYSTEM_DEF(dbcore)
//This is as close as we can get to the true round end before Disconnect() without changing where it's called, defeating the reason this is a subsystem //This is as close as we can get to the true round end before Disconnect() without changing where it's called, defeating the reason this is a subsystem
if(SSdbcore.Connect()) if(SSdbcore.Connect())
var/sql_station_name = sanitizeSQL(station_name()) var/sql_station_name = sanitizeSQL(station_name())
var/datum/DBQuery/query_round_end = SSdbcore.NewQuery("INSERT INTO [format_table_name("round")] (end_datetime, game_mode_result, end_state, station_name) VALUES (Now(), '[SSticker.mode_result]', '[SSticker.end_state]', '[sql_station_name]') WHERE id = [GLOB.round_id]") var/datum/DBQuery/query_round_end = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET end_datetime = Now(), game_mode_result = '[SSticker.mode_result]', end_state = '[SSticker.end_state]', station_name = '[sql_station_name]' WHERE id = [GLOB.round_id]")
query_round_end.Execute() query_round_end.Execute()
if(IsConnected()) if(IsConnected())
Disconnect() Disconnect()
@@ -161,7 +161,7 @@ PROCESSING_SUBSYSTEM_DEF(overlays)
if(NOT_QUEUED_ALREADY && need_compile) //have we caught more pokemon? if(NOT_QUEUED_ALREADY && need_compile) //have we caught more pokemon?
QUEUE_FOR_COMPILE QUEUE_FOR_COMPILE
/atom/proc/copy_overlays(atom/other, cut_old = FALSE) //copys our_overlays from another atom /atom/proc/copy_overlays(atom/other, cut_old) //copys our_overlays from another atom
if(!other) if(!other)
if(cut_old) if(cut_old)
cut_overlays() cut_overlays()
@@ -190,3 +190,18 @@ PROCESSING_SUBSYSTEM_DEF(overlays)
/image/proc/cut_overlays(x) /image/proc/cut_overlays(x)
overlays.Cut() overlays.Cut()
/image/proc/copy_overlays(atom/other, cut_old)
if(!other)
if(cut_old)
cut_overlays()
return
var/list/cached_other = other.our_overlays
if(cached_other)
if(cut_old || !overlays.len)
overlays = cached_other.Copy()
else
overlays |= cached_other
else if(cut_old)
cut_overlays()
-37
View File
@@ -581,43 +581,6 @@ SUBSYSTEM_DEF(ticker)
CHECK_TICK CHECK_TICK
//Borers
var/borerwin = FALSE
if(GLOB.borers.len)
var/borertext = "<br><font size=3><b>The borers were:</b></font>"
for(var/mob/living/simple_animal/borer/B in GLOB.borers)
if((B.key || B.controlling) && B.stat != DEAD)
borertext += "<br>[B.controlling ? B.victim.key : B.key] was [B.truename] ("
var/turf/location = get_turf(B)
if(location.z == ZLEVEL_CENTCOM && B.victim)
borertext += "escaped with host"
else
borertext += "failed"
borertext += ")"
to_chat(world, borertext)
var/total_borers = 0
for(var/mob/living/simple_animal/borer/B in GLOB.borers)
if((B.key || B.victim) && B.stat != DEAD)
total_borers++
if(total_borers)
var/total_borer_hosts = 0
for(var/mob/living/carbon/C in GLOB.mob_list)
var/mob/living/simple_animal/borer/D = C.has_brain_worms()
var/turf/location = get_turf(C)
if(location.z == ZLEVEL_CENTCOM && D && D.stat != DEAD)
total_borer_hosts++
if(GLOB.total_borer_hosts_needed <= total_borer_hosts)
borerwin = TRUE
to_chat(world, "<b>There were [total_borers] borers alive at round end!</b>")
to_chat(world, "<b>A total of [total_borer_hosts] borers with hosts escaped on the shuttle alive. The borers needed [GLOB.total_borer_hosts_needed] hosts to escape.</b>")
if(borerwin)
to_chat(world, "<b><font color='green'>The borers were successful!</font></b>")
else
to_chat(world, "<b><font color='red'>The borers have failed!</font></b>")
CHECK_TICK
mode.declare_station_goal_completion() mode.declare_station_goal_completion()
CHECK_TICK CHECK_TICK
+12 -5
View File
@@ -115,12 +115,19 @@
else else
return return
if(isturf(source.loc)) var/turf/T = source.loc
if(istype(T))
for(var/mob/living/carbon/C in oview(spread_range, source)) for(var/mob/living/carbon/C in oview(spread_range, source))
if(isturf(C.loc)) var/turf/V = get_turf(C)
if(AStar(source, C.loc,/turf/proc/Distance, spread_range, adjacent = (spread_flags & AIRBORNE) ? /turf/proc/reachableAdjacentAtmosTurfs : /turf/proc/reachableAdjacentTurfs)) if(V)
C.ContractDisease(src) while(TRUE)
if(V == T)
C.ContractDisease(src)
break
var/turf/Temp = get_step_towards(V, T)
if(!CANATMOSPASS(V, Temp))
break
V = Temp
/datum/disease/process() /datum/disease/process()
if(!holder) if(!holder)
+1 -1
View File
@@ -989,7 +989,7 @@
if(!G || (src in G.bosses)) if(!G || (src in G.bosses))
return return
SSticker.mode.remove_gangster(src,0,2,1) SSticker.mode.remove_gangster(src,0,2,1)
G.bosses += src G.bosses[src] = GANGSTER_BOSS_STARTING_INFLUENCE
gang_datum = G gang_datum = G
special_role = "[G.name] Gang Boss" special_role = "[G.name] Gang Boss"
G.add_gang_hud(src) G.add_gang_hud(src)
@@ -59,3 +59,6 @@
//changes construction value //changes construction value
/proc/change_construction_value(amount) /proc/change_construction_value(amount)
GLOB.clockwork_construction_value += amount GLOB.clockwork_construction_value += amount
/proc/can_recite_scripture(mob/living/L)
return (is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal() && (GLOB.ratvar_awakens || (ishuman(L) || issilicon(L))))
@@ -25,7 +25,7 @@
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
else else
armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
flags &= STOPSPRESSUREDMAGE flags &= ~STOPSPRESSUREDMAGE
max_heat_protection_temperature = initial(max_heat_protection_temperature) max_heat_protection_temperature = initial(max_heat_protection_temperature)
min_cold_protection_temperature = initial(min_cold_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature)
@@ -81,7 +81,7 @@
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
else else
armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
flags &= STOPSPRESSUREDMAGE flags &= ~STOPSPRESSUREDMAGE
max_heat_protection_temperature = initial(max_heat_protection_temperature) max_heat_protection_temperature = initial(max_heat_protection_temperature)
min_cold_protection_temperature = initial(min_cold_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature)
@@ -142,7 +142,7 @@
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
else else
armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
flags &= STOPSPRESSUREDMAGE flags &= ~STOPSPRESSUREDMAGE
max_heat_protection_temperature = initial(max_heat_protection_temperature) max_heat_protection_temperature = initial(max_heat_protection_temperature)
min_cold_protection_temperature = initial(min_cold_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature)
@@ -194,7 +194,7 @@
if(GLOB.ratvar_awakens) if(GLOB.ratvar_awakens)
flags |= NOSLIP flags |= NOSLIP
else else
flags &= NOSLIP flags &= ~NOSLIP
/obj/item/clothing/shoes/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) /obj/item/clothing/shoes/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0)
if(equipper && !is_servant_of_ratvar(equipper)) if(equipper && !is_servant_of_ratvar(equipper))
@@ -14,7 +14,6 @@
var/target_component_id //the target component ID to create, if any var/target_component_id //the target component ID to create, if any
var/no_cost = FALSE //If the slab is admin-only and needs no components and has no scripture locks var/no_cost = FALSE //If the slab is admin-only and needs no components and has no scripture locks
var/speed_multiplier = 1 //multiples how fast this slab recites scripture var/speed_multiplier = 1 //multiples how fast this slab recites scripture
var/nonhuman_usable = FALSE //if the slab can be used by nonhumans, defaults to off
var/produces_components = TRUE //if it produces components at all var/produces_components = TRUE //if it produces components at all
var/selected_scripture = SCRIPTURE_DRIVER var/selected_scripture = SCRIPTURE_DRIVER
var/recollecting = FALSE //if we're looking at fancy recollection var/recollecting = FALSE //if we're looking at fancy recollection
@@ -33,13 +32,9 @@
no_cost = TRUE no_cost = TRUE
produces_components = FALSE produces_components = FALSE
/obj/item/clockwork/slab/scarab
nonhuman_usable = TRUE
/obj/item/clockwork/slab/debug /obj/item/clockwork/slab/debug
speed_multiplier = 0 speed_multiplier = 0
no_cost = TRUE no_cost = TRUE
nonhuman_usable = TRUE
/obj/item/clockwork/slab/debug/attack_hand(mob/living/user) /obj/item/clockwork/slab/debug/attack_hand(mob/living/user)
..() ..()
@@ -49,7 +44,6 @@
/obj/item/clockwork/slab/cyborg //three scriptures, plus a spear and proselytizer /obj/item/clockwork/slab/cyborg //three scriptures, plus a spear and proselytizer
clockwork_desc = "A divine link to the Celestial Derelict, allowing for limited recital of scripture.\n\ clockwork_desc = "A divine link to the Celestial Derelict, allowing for limited recital of scripture.\n\
Hitting a slab, a Servant with a slab, or a cache will <b>transfer</b> this slab's components into the target, the target's slab, or the global cache, respectively." Hitting a slab, a Servant with a slab, or a cache will <b>transfer</b> this slab's components into the target, the target's slab, or the global cache, respectively."
nonhuman_usable = TRUE
quickbound = list(/datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard, \ quickbound = list(/datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard, \
/datum/clockwork_scripture/create_object/tinkerers_cache) /datum/clockwork_scripture/create_object/tinkerers_cache)
maximum_quickbound = 6 //we usually have one or two unique scriptures, so if ratvar is up let us bind one more maximum_quickbound = 6 //we usually have one or two unique scriptures, so if ratvar is up let us bind one more
@@ -106,12 +100,6 @@
slab_ability = null slab_ability = null
return ..() return ..()
/obj/item/clockwork/slab/ratvar_act()
if(GLOB.ratvar_awakens)
nonhuman_usable = TRUE
else
nonhuman_usable = initial(nonhuman_usable)
/obj/item/clockwork/slab/dropped(mob/user) /obj/item/clockwork/slab/dropped(mob/user)
. = ..() . = ..()
addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
@@ -138,7 +126,7 @@
production_time = world.time + SLAB_PRODUCTION_TIME + production_slowdown production_time = world.time + SLAB_PRODUCTION_TIME + production_slowdown
var/mob/living/L var/mob/living/L
L = get_atom_on_turf(src, /mob/living) L = get_atom_on_turf(src, /mob/living)
if(istype(L) && is_servant_of_ratvar(L) && (nonhuman_usable || ishuman(L))) if(istype(L) && can_recite_scripture(L))
var/component_to_generate = target_component_id var/component_to_generate = target_component_id
if(!component_to_generate) if(!component_to_generate)
component_to_generate = get_weighted_component_id(src) //more likely to generate components that we have less of component_to_generate = get_weighted_component_id(src) //more likely to generate components that we have less of
@@ -268,7 +256,7 @@
if(busy) if(busy)
to_chat(user, "<span class='warning'>[src] refuses to work, displaying the message: \"[busy]!\"</span>") to_chat(user, "<span class='warning'>[src] refuses to work, displaying the message: \"[busy]!\"</span>")
return 0 return 0
if(!nonhuman_usable && !ishuman(user)) if(!can_recite_scripture(user))
to_chat(user, "<span class='nezbere'>[src] hums fitfully in your hands, but doesn't seem to do anything...</span>") to_chat(user, "<span class='nezbere'>[src] hums fitfully in your hands, but doesn't seem to do anything...</span>")
return 0 return 0
access_display(user) access_display(user)
@@ -288,7 +276,7 @@
ui.open() ui.open()
/obj/item/clockwork/slab/proc/recite_scripture(datum/clockwork_scripture/scripture, mob/living/user) /obj/item/clockwork/slab/proc/recite_scripture(datum/clockwork_scripture/scripture, mob/living/user)
if(!scripture || !user || !user.canUseTopic(src) || (!nonhuman_usable && !ishuman(user))) if(!scripture || !user || !user.canUseTopic(src) || !can_recite_scripture(user))
return FALSE return FALSE
if(user.get_active_held_item() != src) if(user.get_active_held_item() != src)
to_chat(user, "<span class='warning'>You need to hold the slab in your active hand to recite scripture!</span>") to_chat(user, "<span class='warning'>You need to hold the slab in your active hand to recite scripture!</span>")
@@ -120,7 +120,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
if(multiple_invokers_used && !multiple_invokers_optional && !GLOB.ratvar_awakens && !slab.no_cost) if(multiple_invokers_used && !multiple_invokers_optional && !GLOB.ratvar_awakens && !slab.no_cost)
var/nearby_servants = 0 var/nearby_servants = 0
for(var/mob/living/L in range(1, get_turf(invoker))) for(var/mob/living/L in range(1, get_turf(invoker)))
if(is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal()) if(can_recite_scripture(L))
nearby_servants++ nearby_servants++
if(nearby_servants < invokers_required) if(nearby_servants < invokers_required)
to_chat(invoker, "<span class='warning'>There aren't enough non-mute servants nearby ([nearby_servants]/[invokers_required])!</span>") to_chat(invoker, "<span class='warning'>There aren't enough non-mute servants nearby ([nearby_servants]/[invokers_required])!</span>")
@@ -170,7 +170,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
if(!channel_time && invocations.len) if(!channel_time && invocations.len)
if(multiple_invokers_used) if(multiple_invokers_used)
for(var/mob/living/L in range(1, invoker)) for(var/mob/living/L in range(1, invoker))
if(is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal()) if(can_recite_scripture(L))
for(var/invocation in invocations) for(var/invocation in invocations)
clockwork_say(L, text2ratvar(invocation), whispered) clockwork_say(L, text2ratvar(invocation), whispered)
else else
@@ -185,7 +185,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
return FALSE return FALSE
if(multiple_invokers_used) if(multiple_invokers_used)
for(var/mob/living/L in range(1, get_turf(invoker))) for(var/mob/living/L in range(1, get_turf(invoker)))
if(is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal()) if(can_recite_scripture(L))
clockwork_say(L, text2ratvar(invocation), whispered) clockwork_say(L, text2ratvar(invocation), whispered)
else else
clockwork_say(invoker, text2ratvar(invocation), whispered) clockwork_say(invoker, text2ratvar(invocation), whispered)
@@ -53,7 +53,7 @@
/datum/clockwork_scripture/fellowship_armory/run_scripture() /datum/clockwork_scripture/fellowship_armory/run_scripture()
for(var/mob/living/L in orange(1, invoker)) for(var/mob/living/L in orange(1, invoker))
if(is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal()) if(can_recite_scripture(L))
channel_time = max(channel_time - 10, 0) channel_time = max(channel_time - 10, 0)
return ..() return ..()
File diff suppressed because it is too large Load Diff
+12 -2
View File
@@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/
for(var/n in 1 to 3) for(var/n in 1 to 3)
var/datum/mind/boss = pick(antag_candidates) var/datum/mind/boss = pick(antag_candidates)
antag_candidates -= boss antag_candidates -= boss
G.bosses += boss G.bosses[boss] = GANGSTER_BOSS_STARTING_INFLUENCE
boss.gang_datum = G boss.gang_datum = G
var/title var/title
if(n == 1) if(n == 1)
@@ -85,6 +85,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/
sleep(rand(10,100)) sleep(rand(10,100))
for(var/datum/gang/G in gangs) for(var/datum/gang/G in gangs)
for(var/datum/mind/boss_mind in G.bosses) for(var/datum/mind/boss_mind in G.bosses)
G.bosses[boss_mind] = GANGSTER_BOSS_STARTING_INFLUENCE //Force influence to be put on it.
G.add_gang_hud(boss_mind) G.add_gang_hud(boss_mind)
forge_gang_objectives(boss_mind) forge_gang_objectives(boss_mind)
greet_gang(boss_mind) greet_gang(boss_mind)
@@ -170,7 +171,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/
return 0 return 0
if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted
return 1 return 1
G.gangsters += gangster_mind G.gangsters[gangster_mind] = GANGSTER_SOLDIER_STARTING_INFLUENCE
gangster_mind.gang_datum = G gangster_mind.gang_datum = G
if(check) if(check)
if(iscarbon(gangster_mind.current)) if(iscarbon(gangster_mind.current))
@@ -209,15 +210,24 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/
if(!G.is_deconvertible && !remove_bosses) if(!G.is_deconvertible && !remove_bosses)
return 0 return 0
if(gangster_mind in G.gangsters) if(gangster_mind in G.gangsters)
G.reclaim_points(G.gangsters[gangster_mind])
G.gangsters -= gangster_mind G.gangsters -= gangster_mind
removed = 1 removed = 1
if(remove_bosses && (gangster_mind in G.bosses)) if(remove_bosses && (gangster_mind in G.bosses))
G.reclaim_points(G.bosses[gangster_mind])
G.bosses -= gangster_mind G.bosses -= gangster_mind
removed = 1 removed = 1
if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind]))
var/list/tags_cache = G.tags_by_mind[gangster_mind]
for(var/v in tags_cache)
var/obj/effect/decal/cleanable/crayon/gang/c = v
c.set_mind_owner(null)
G.tags_by_mind -= gangster_mind
if(!removed) if(!removed)
return 0 return 0
gangster_mind.special_role = null gangster_mind.special_role = null
gangster_mind.gang_datum = null gangster_mind.gang_datum = null
+86 -42
View File
@@ -8,6 +8,7 @@
var/list/datum/mind/gangsters = list() //gang B Members var/list/datum/mind/gangsters = list() //gang B Members
var/list/datum/mind/bosses = list() //gang A Bosses var/list/datum/mind/bosses = list() //gang A Bosses
var/list/obj/item/device/gangtool/gangtools = list() var/list/obj/item/device/gangtool/gangtools = list()
var/list/tags_by_mind = list() //Assoc list in format of tags_by_mind[mind_of_gangster] = list(tag1, tag2, tag3) where tags are the actual object decals.
var/style var/style
var/fighting_style = "normal" var/fighting_style = "normal"
var/list/territory = list() var/list/territory = list()
@@ -202,9 +203,9 @@
return return
var/added_names = "" var/added_names = ""
var/lost_names = "" var/lost_names = ""
SSticker.mode.shuttle_check() // See if its time to start wrapping things up SSticker.mode.shuttle_check() // See if its time to start wrapping things up
//Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report //Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report
var/list/reclaimed_territories = territory_new & territory_lost var/list/reclaimed_territories = territory_new & territory_lost
territory |= reclaimed_territories territory |= reclaimed_territories
@@ -245,47 +246,90 @@
set_domination_time(new_time) set_domination_time(new_time)
message += "<b>[seconds_remaining] seconds remain</b> in hostile takeover.<BR>" message += "<b>[seconds_remaining] seconds remain</b> in hostile takeover.<BR>"
else else
for(var/obj/item/device/gangtool/G in gangtools) pay_territory_income_to_bosses()
var/pmessage = message pay_territory_income_to_soldiers(sbonus)
var/points_new = 0 pay_all_clothing_bonuses()
if(istype(G, /obj/item/device/gangtool/soldier)) announce_all_influence()
points_new = max(0,round(3 - G.points/10)) + (sbonus) + (LAZYLEN(G.tags)/2) // Soldier points
pmessage += "Your influence has increased by [round(sbonus)] from your gang holding [LAZYLEN(territory)] territories, and a bonus of [round(LAZYLEN(G.tags)/2)] for territories you have personally marked and kept intact.<BR>"
else
points_new = max(0,round(5 - G.points/10)) + LAZYLEN(territory) // Boss points, more focused on big picture
pmessage += "Your influence has increased by [round(points_new)] from your gang holding [territory.len] territories<BR>"
G.points += points_new
var/mob/living/carbon/human/ganger = get(G.loc, /mob/living)
var/points_newer = 0
var/static/inner = inner_outfit
var/static/outer = outer_outfit
if(ishuman(ganger) && ganger.mind in (gangsters|bosses))
for(var/obj/C in ganger.contents)
if(C.type == inner_outfit)
points_newer += 2
continue
if(C.type == outer_outfit)
points_newer += 2
continue
switch(C.type)
if(/obj/item/clothing/neck/necklace/dope)
points_newer += 2
if(/obj/item/clothing/head/collectable/petehat/gang)
points_newer += 4
if(/obj/item/clothing/shoes/gang)
points_newer += 6
if(/obj/item/clothing/mask/gskull)
points_newer += 5
if(/obj/item/clothing/gloves/gang)
points_newer += 3
if(/obj/item/weapon/storage/belt/military/gang)
points_newer += 4
if(points_newer)
G.points += points_newer
pmessage += "Your influential choice of clothing has further increased your influence by [points_newer] points.<BR>"
pmessage += "You now have <b>[G.points] influence</b>.<BR>"
to_chat(ganger, "<span class='notice'>\icon[G] [pmessage]</span>")
/datum/gang/proc/pay_all_clothing_bonuses()
for(var/datum/mind/mind in gangsters|bosses)
pay_clothing_bonus(mind)
/datum/gang/proc/pay_clothing_bonus(var/datum/mind/gangsta)
var/mob/living/carbon/human/gangbanger = gangsta.current
. = 0
if(!istype(gangbanger) || gangbanger.stat == DEAD) //Dead gangsters aren't influential at all!
return 0
var/static/inner = inner_outfit
var/static/outer = outer_outfit
for(var/obj/item/C in gangbanger.contents)
if(C.type == inner_outfit)
. += 2
continue
else if(C.type == outer_outfit)
. += 2
continue
. += C.gang_contraband_value()
adjust_influence(gangsta, .)
if(.)
announce_to_mind(gangsta, "<span class='notice'>Your influential choice of clothing has increased your influence by [.] points!</span>")
else
announce_to_mind(gangsta, "<span class='warning'>Unfortunately, you have not gained any additional influence from your drab, old, boring clothing. Learn to dress like a gangsta, bro!</span>") //Kek
/datum/gang/proc/pay_soldier_territory_income(datum/mind/soldier, sbonus = 0)
. = 0
. = max(0,round(3 - gangsters[soldier]/10)) + (sbonus) + (get_soldier_territories(soldier)/2)
adjust_influence(soldier, .)
/datum/gang/proc/get_soldier_territories(datum/mind/soldier)
if(!islist(tags_by_mind[soldier])) //They have no tagged territories!
return 0
var/list/tags = tags_by_mind[soldier]
return tags.len
/datum/gang/proc/pay_territory_income_to_soldiers(sbonus = 0)
for(var/datum/mind/soldier in gangsters)
var/returned = pay_soldier_territory_income(soldier)
if(!returned)
announce_to_mind(soldier, "<span class='warning'>You have not gained any influence from territories you personally tagged. Get to work, soldier!</span>")
else
announce_to_mind(soldier, "<span class='notice'>You have gained [returned] influence from [get_soldier_territories(soldier)] territories you have personally tagged.</span>")
/datum/gang/proc/announce_all_influence()
for(var/datum/mind/MG in bosses|gangsters)
announce_total_influence(MG)
/datum/gang/proc/pay_territory_income_to_bosses()
. = 0
for(var/datum/mind/boss_mind in bosses)
var/inc = max(0,round(5 - bosses[boss_mind]/10)) + LAZYLEN(territory)
. += inc
adjust_influence(boss_mind, inc)
announce_to_mind(boss_mind, "<span class='boldnotice'>Your influence has increased by [inc] from your gang holding [LAZYLEN(territory)] territories!</span>")
/datum/gang/proc/get_influence(datum/mind/gangster_mind)
if(gangster_mind in gangsters)
return gangsters[gangster_mind]
if(gangster_mind in bosses)
return bosses[gangster_mind]
/datum/gang/proc/adjust_influence(datum/mind/gangster_mind, amount)
if(gangster_mind in gangsters)
gangsters[gangster_mind] += amount
if(gangster_mind in bosses)
bosses[gangster_mind] += amount
/datum/gang/proc/announce_to_mind(datum/mind/gangster_mind, message)
if(gangster_mind.current && gangster_mind.current.stat != DEAD)
to_chat(gangster_mind.current, message)
/datum/gang/proc/announce_total_influence(datum/mind/gangster_mind)
announce_to_mind(gangster_mind, "<span class='boldnotice'>[name] Gang: You now have a total of [get_influence(gangster_mind)] influence!</span>")
/datum/gang/proc/reclaim_points(amount)
for(var/datum/mind/bawss in bosses)
adjust_influence(bawss, amount/bosses.len)
announce_to_mind(bawss, "<span class='notice'>[name] Gang: [amount/bosses.len] influence given from internal automatic restructuring.</span>")
//Multiverse //Multiverse
+16 -4
View File
@@ -11,7 +11,7 @@
if(check_canbuy && !can_buy(user, gang, gangtool)) if(check_canbuy && !can_buy(user, gang, gangtool))
return FALSE return FALSE
var/real_cost = get_cost(user, gang, gangtool) var/real_cost = get_cost(user, gang, gangtool)
gangtool.points -= real_cost gang.adjust_influence(user.mind, -real_cost)
spawn_item(user, gang, gangtool) spawn_item(user, gang, gangtool)
return TRUE return TRUE
@@ -23,7 +23,7 @@
to_chat(user, spawn_msg) to_chat(user, spawn_msg)
/datum/gang_item/proc/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) /datum/gang_item/proc/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool)
return gang && (gangtool.points >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) return gang && (gang.get_influence(user.mind) >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool)
/datum/gang_item/proc/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) /datum/gang_item/proc/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool)
return TRUE return TRUE
@@ -118,6 +118,9 @@
name = "pimpin' hat" name = "pimpin' hat"
desc = "The undisputed king of style." desc = "The undisputed king of style."
/obj/item/clothing/head/collectable/petehat/gang/gang_contraband_value()
return 4
/datum/gang_item/clothing/mask /datum/gang_item/clothing/mask
name = "Golden Death Mask" name = "Golden Death Mask"
id = "mask" id = "mask"
@@ -129,6 +132,8 @@
icon_state = "gskull" icon_state = "gskull"
desc = "Strike terror, and envy, into the hearts of your enemies." desc = "Strike terror, and envy, into the hearts of your enemies."
/obj/item/clothing/mask/gskull/gang_contraband_value()
return 5
/datum/gang_item/clothing/shoes /datum/gang_item/clothing/shoes
name = "Bling Boots" name = "Bling Boots"
@@ -141,13 +146,15 @@
desc = "Stand aside peasants." desc = "Stand aside peasants."
icon_state = "bling" icon_state = "bling"
/obj/item/clothing/shoes/gang/gang_contraband_value()
return 6
/datum/gang_item/clothing/neck /datum/gang_item/clothing/neck
name = "Gold Necklace" name = "Gold Necklace"
id = "necklace" id = "necklace"
cost = 9 cost = 9
item_path = /obj/item/clothing/neck/necklace/dope item_path = /obj/item/clothing/neck/necklace/dope
/datum/gang_item/clothing/hands /datum/gang_item/clothing/hands
name = "Decorative Brass Knuckles" name = "Decorative Brass Knuckles"
id = "hand" id = "hand"
@@ -160,6 +167,9 @@
icon_state = "knuckles" icon_state = "knuckles"
w_class = 3 w_class = 3
/obj/item/clothing/gloves/gang/gang_contraband_value()
return 3
/datum/gang_item/clothing/belt /datum/gang_item/clothing/belt
name = "Badass Belt" name = "Badass Belt"
id = "belt" id = "belt"
@@ -173,7 +183,8 @@
desc = "The belt buckle simply reads 'BAMF'." desc = "The belt buckle simply reads 'BAMF'."
storage_slots = 1 storage_slots = 1
/obj/item/weapon/storage/belt/military/gang/gang_contraband_value()
return 4
/////////////////// ///////////////////
//WEAPONS //WEAPONS
@@ -215,6 +226,7 @@
name = "Sawn-Off Improvised Shotgun" name = "Sawn-Off Improvised Shotgun"
id = "sawn" id = "sawn"
cost = 6 cost = 6
item_path = /obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised/sawn
/datum/gang_item/weapon/ammo/improvised_ammo /datum/gang_item/weapon/ammo/improvised_ammo
name = "Box of Buckshot" name = "Box of Buckshot"
+4 -7
View File
@@ -15,7 +15,6 @@
var/outfits = 2 var/outfits = 2
var/free_pen = 0 var/free_pen = 0
var/promotable = 0 var/promotable = 0
var/points = 15
var/list/tags = list() var/list/tags = list()
/obj/item/device/gangtool/Initialize() //Initialize supply point income if it hasn't already been started /obj/item/device/gangtool/Initialize() //Initialize supply point income if it hasn't already been started
@@ -50,7 +49,7 @@
var/isboss = (user.mind == gang.bosses[1]) var/isboss = (user.mind == gang.bosses[1])
dat += "Registration: <B>[gang.name] Gang [isboss ? "Boss" : "Lieutenant"]</B><br>" dat += "Registration: <B>[gang.name] Gang [isboss ? "Boss" : "Lieutenant"]</B><br>"
dat += "Organization Size: <B>[gang.gangsters.len + gang.bosses.len]</B> | Station Control: <B>[round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%</B><br>" dat += "Organization Size: <B>[gang.gangsters.len + gang.bosses.len]</B> | Station Control: <B>[round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%</B><br>"
dat += "Your Influence: <B>[points]</B><br>" dat += "Your Influence: <B>[gang.get_influence(user.mind)]</B><br>"
dat += "Time until Influence grows: <B>[time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]</B><br>" dat += "Time until Influence grows: <B>[time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]</B><br>"
dat += "<hr>" dat += "<hr>"
@@ -147,8 +146,9 @@
gang.gangtools += src gang.gangtools += src
icon_state = "gangtool-[gang.color]" icon_state = "gangtool-[gang.color]"
if(!(user.mind in gang.bosses)) if(!(user.mind in gang.bosses))
var/cached_influence = gang.gangsters[user.mind]
SSticker.mode.remove_gangster(user.mind, 0, 2) SSticker.mode.remove_gangster(user.mind, 0, 2)
gang.bosses += user.mind gang.bosses[user.mind] = cached_influence
user.mind.gang_datum = gang user.mind.gang_datum = gang
user.mind.special_role = "[gang.name] Gang Lieutenant" user.mind.special_role = "[gang.name] Gang Lieutenant"
gang.add_gang_hud(user.mind) gang.add_gang_hud(user.mind)
@@ -246,9 +246,6 @@
///////////// Internal tool used by gang regulars /////////// ///////////// Internal tool used by gang regulars ///////////
/obj/item/device/gangtool/soldier
points = 5
/obj/item/device/gangtool/soldier/New(mob/user) /obj/item/device/gangtool/soldier/New(mob/user)
. = ..() . = ..()
gang = user.mind.gang_datum gang = user.mind.gang_datum
@@ -264,7 +261,7 @@
dat += "<center><font color='red'>Takeover In Progress:<br><B>[gang.domination_time_remaining()] seconds remain</B></font></center>" dat += "<center><font color='red'>Takeover In Progress:<br><B>[gang.domination_time_remaining()] seconds remain</B></font></center>"
dat += "Registration: <B>[gang.name] - Foot Soldier</B><br>" dat += "Registration: <B>[gang.name] - Foot Soldier</B><br>"
dat += "Organization Size: <B>[gang.gangsters.len + gang.bosses.len]</B> | Station Control: <B>[round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%</B><br>" dat += "Organization Size: <B>[gang.gangsters.len + gang.bosses.len]</B> | Station Control: <B>[round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%</B><br>"
dat += "Your Influence: <B>[points]</B><br>" dat += "Your Influence: <B>[gang.get_influence(user.mind)]</B><br>"
if(LAZYLEN(tags)) if(LAZYLEN(tags))
dat += "Your tags generate bonus influence for you.<br> You have tagged the following territories:" dat += "Your tags generate bonus influence for you.<br> You have tagged the following territories:"
for(var/obj/effect/decal/cleanable/crayon/gang/T in tags) for(var/obj/effect/decal/cleanable/crayon/gang/T in tags)
+1 -1
View File
@@ -43,7 +43,7 @@
/datum/objective_item/steal/capmedal /datum/objective_item/steal/capmedal
name = "the medal of captaincy" name = "the medal of captaincy"
targetitem = /obj/item/clothing/tie/medal/gold/captain targetitem = /obj/item/clothing/accessory/medal/gold/captain
difficulty = 5 difficulty = 5
excludefromjob = list("Captain") excludefromjob = list("Captain")
+1 -1
View File
@@ -243,7 +243,7 @@
if(!is_gangster(user)) if(!is_gangster(user))
var/datum/gang/multiverse/G = new(src, "[user.real_name]") var/datum/gang/multiverse/G = new(src, "[user.real_name]")
SSticker.mode.gangs += G SSticker.mode.gangs += G
G.bosses += user.mind G.bosses[user.mind] = 0
G.add_gang_hud(user.mind) G.add_gang_hud(user.mind)
user.mind.gang_datum = G user.mind.gang_datum = G
to_chat(user, "<span class='warning'><B>With your new found power you could easily conquer the station!</B></span>") to_chat(user, "<span class='warning'><B>With your new found power you could easily conquer the station!</B></span>")
+1 -1
View File
@@ -1,7 +1,7 @@
// The communications computer // The communications computer
/obj/machinery/computer/communications /obj/machinery/computer/communications
name = "communications console" name = "communications console"
desc = "This can be used for various important functions. Still under developement." desc = "A console used for high-priority announcements and emergencies."
icon_screen = "comm" icon_screen = "comm"
icon_keyboard = "tech_key" icon_keyboard = "tech_key"
req_access = list(GLOB.access_heads) req_access = list(GLOB.access_heads)
+2 -2
View File
@@ -620,7 +620,7 @@ What a mess.*/
if("mi_crim_add") if("mi_crim_add")
if(istype(active1, /datum/data/record)) if(istype(active1, /datum/data/record))
var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null)
var/t2 = stripped_multiline_input(usr, "Please input minor crime details:", "Secure. records", "", null) var/t2 = stripped_input(usr, "Please input minor crime details:", "Secure. records", "", null)
if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) if(!canUseSecurityRecordsConsole(usr, t1, null, a2))
return return
var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text())
@@ -634,7 +634,7 @@ What a mess.*/
if("ma_crim_add") if("ma_crim_add")
if(istype(active1, /datum/data/record)) if(istype(active1, /datum/data/record))
var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null) var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null)
var/t2 = stripped_multiline_input(usr, "Please input major crime details:", "Secure. records", "", null) var/t2 = stripped_input(usr, "Please input major crime details:", "Secure. records", "", null)
if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) if(!canUseSecurityRecordsConsole(usr, t1, null, a2))
return return
var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text())
+2 -2
View File
@@ -995,7 +995,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/clothing/head/helmet/gladiator = 1,/obj/item/clothing/under/gimmick/rank/captain/suit = 1,/obj/item/clothing/head/flatcap = 1, /obj/item/clothing/head/helmet/gladiator = 1,/obj/item/clothing/under/gimmick/rank/captain/suit = 1,/obj/item/clothing/head/flatcap = 1,
/obj/item/clothing/suit/toggle/labcoat/mad = 1,/obj/item/clothing/shoes/jackboots = 1, /obj/item/clothing/suit/toggle/labcoat/mad = 1,/obj/item/clothing/shoes/jackboots = 1,
/obj/item/clothing/under/schoolgirl = 1,/obj/item/clothing/under/schoolgirl/red = 1,/obj/item/clothing/under/schoolgirl/green = 1,/obj/item/clothing/under/schoolgirl/orange = 1,/obj/item/clothing/head/kitty = 1,/obj/item/clothing/under/skirt/black = 1,/obj/item/clothing/head/beret = 1, /obj/item/clothing/under/schoolgirl = 1,/obj/item/clothing/under/schoolgirl/red = 1,/obj/item/clothing/under/schoolgirl/green = 1,/obj/item/clothing/under/schoolgirl/orange = 1,/obj/item/clothing/head/kitty = 1,/obj/item/clothing/under/skirt/black = 1,/obj/item/clothing/head/beret = 1,
/obj/item/clothing/tie/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/tie/waistcoat = 1, /obj/item/clothing/accessory/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/accessory/waistcoat = 1,
/obj/item/clothing/glasses/monocle =1,/obj/item/clothing/head/bowler = 1,/obj/item/weapon/cane = 1,/obj/item/clothing/under/sl_suit = 1, /obj/item/clothing/glasses/monocle =1,/obj/item/clothing/head/bowler = 1,/obj/item/weapon/cane = 1,/obj/item/clothing/under/sl_suit = 1,
/obj/item/clothing/mask/fakemoustache = 1,/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1,/obj/item/clothing/head/plaguedoctorhat = 1,/obj/item/clothing/mask/gas/plaguedoctor = 1, /obj/item/clothing/mask/fakemoustache = 1,/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1,/obj/item/clothing/head/plaguedoctorhat = 1,/obj/item/clothing/mask/gas/plaguedoctor = 1,
/obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1, /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1,
@@ -1136,7 +1136,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/clothing/neck/scarf/purple=1,/obj/item/clothing/neck/scarf/yellow=1,/obj/item/clothing/neck/scarf/orange=1, /obj/item/clothing/neck/scarf/purple=1,/obj/item/clothing/neck/scarf/yellow=1,/obj/item/clothing/neck/scarf/orange=1,
/obj/item/clothing/neck/scarf/cyan=1,/obj/item/clothing/neck/scarf=1,/obj/item/clothing/neck/scarf/black=1, /obj/item/clothing/neck/scarf/cyan=1,/obj/item/clothing/neck/scarf=1,/obj/item/clothing/neck/scarf/black=1,
/obj/item/clothing/neck/scarf/zebra=1,/obj/item/clothing/neck/scarf/christmas=1,/obj/item/clothing/neck/stripedredscarf=1, /obj/item/clothing/neck/scarf/zebra=1,/obj/item/clothing/neck/scarf/christmas=1,/obj/item/clothing/neck/stripedredscarf=1,
/obj/item/clothing/neck/stripedbluescarf=1,/obj/item/clothing/neck/stripedgreenscarf=1,/obj/item/clothing/tie/waistcoat=1, /obj/item/clothing/neck/stripedbluescarf=1,/obj/item/clothing/neck/stripedgreenscarf=1,/obj/item/clothing/accessory/waistcoat=1,
/obj/item/clothing/under/skirt/black=1,/obj/item/clothing/under/skirt/blue=1,/obj/item/clothing/under/skirt/red=1,/obj/item/clothing/under/skirt/purple=1, /obj/item/clothing/under/skirt/black=1,/obj/item/clothing/under/skirt/blue=1,/obj/item/clothing/under/skirt/red=1,/obj/item/clothing/under/skirt/purple=1,
/obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1, /obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1,
/obj/item/clothing/under/plaid_skirt=1,/obj/item/clothing/under/plaid_skirt/blue=1,/obj/item/clothing/under/plaid_skirt/purple=1,/obj/item/clothing/under/plaid_skirt/green=1, /obj/item/clothing/under/plaid_skirt=1,/obj/item/clothing/under/plaid_skirt/blue=1,/obj/item/clothing/under/plaid_skirt/purple=1,/obj/item/clothing/under/plaid_skirt/green=1,
+14 -6
View File
@@ -30,27 +30,35 @@
layer = HIGH_OBJ_LAYER //Harder to hide layer = HIGH_OBJ_LAYER //Harder to hide
do_icon_rotate = FALSE //These are designed to always face south, so no rotation please. do_icon_rotate = FALSE //These are designed to always face south, so no rotation please.
var/datum/gang/gang var/datum/gang/gang
var/obj/item/device/gangtool/linked_tool var/datum/mind/user_mind
var/area/territory var/area/territory
/obj/effect/decal/cleanable/crayon/gang/Initialize(mapload, var/datum/gang/G, var/e_name = "gang tag", var/rotation = 0, var/mob/user) /obj/effect/decal/cleanable/crayon/gang/Initialize(mapload, var/datum/gang/G, var/e_name = "gang tag", var/rotation = 0, var/mob/user)
if(!type || !G) if(!type || !G)
qdel(src) qdel(src)
user_mind = user.mind
territory = get_area(src) territory = get_area(src)
gang = G gang = G
var/newcolor = G.color_hex var/newcolor = G.color_hex
icon_state = G.name icon_state = G.name
G.territory_new |= list(territory.type = territory.name) G.territory_new |= list(territory.type = territory.name)
linked_tool = locate(/obj/item/device/gangtool) in user.contents //If this isn't tagged by a specific gangster there's no bonus income.
if(linked_tool) set_mind_owner(user_mind)
linked_tool.tags += src
..(mapload, newcolor, icon_state, e_name, rotation) ..(mapload, newcolor, icon_state, e_name, rotation)
/obj/effect/decal/cleanable/crayon/gang/proc/set_mind_owner(datum/mind/mind)
if(istype(user_mind) && istype(gang) && islist(gang.tags_by_mind[user_mind])) //Clear us out of old ownership
gang.tags_by_mind[user_mind] -= src
if(istype(mind))
if(!islist(gang.tags_by_mind[mind]))
gang.tags_by_mind[mind] = list()
gang.tags_by_mind[mind] += src
user_mind = mind
/obj/effect/decal/cleanable/crayon/gang/Destroy() /obj/effect/decal/cleanable/crayon/gang/Destroy()
if(linked_tool)
linked_tool.tags -= src
if(gang) if(gang)
gang.territory -= territory.type gang.territory -= territory.type
set_mind_owner(null)
gang.territory_new -= territory.type gang.territory_new -= territory.type
gang.territory_lost |= list(territory.type = territory.name) gang.territory_lost |= list(territory.type = territory.name)
return ..() return ..()
+2 -2
View File
@@ -60,7 +60,7 @@
/obj/effect/spawner/bundle/costume/butler /obj/effect/spawner/bundle/costume/butler
name = "butler costume spawner" name = "butler costume spawner"
items = list( items = list(
/obj/item/clothing/tie/waistcoat, /obj/item/clothing/accessory/waistcoat,
/obj/item/clothing/under/suit_jacket, /obj/item/clothing/under/suit_jacket,
/obj/item/clothing/head/that) /obj/item/clothing/head/that)
@@ -73,7 +73,7 @@
/obj/effect/spawner/bundle/costume/prig /obj/effect/spawner/bundle/costume/prig
name = "prig costume spawner" name = "prig costume spawner"
items = list( items = list(
/obj/item/clothing/tie/waistcoat, /obj/item/clothing/accessory/waistcoat,
/obj/item/clothing/glasses/monocle, /obj/item/clothing/glasses/monocle,
/obj/effect/spawner/lootdrop/minor/bowler_or_that, /obj/effect/spawner/lootdrop/minor/bowler_or_that,
/obj/item/clothing/shoes/sneakers/black, /obj/item/clothing/shoes/sneakers/black,
@@ -112,6 +112,9 @@
icon_state = "tile-carpet-black" icon_state = "tile-carpet-black"
turf_type = /turf/open/floor/carpet/black turf_type = /turf/open/floor/carpet/black
/obj/item/stack/tile/carpet/black/fifty
amount = 50
/obj/item/stack/tile/fakespace /obj/item/stack/tile/fakespace
name = "astral carpet" name = "astral carpet"
-1
View File
@@ -273,7 +273,6 @@
force = 0 force = 0
throwforce = 6 throwforce = 6
w_class = WEIGHT_CLASS_BULKY w_class = WEIGHT_CLASS_BULKY
flags = NODROP
var/revivecost = 1000 var/revivecost = 1000
var/cooldown = 0 var/cooldown = 0
@@ -568,7 +568,7 @@
/obj/item/weapon/storage/box/deputy/PopulateContents() /obj/item/weapon/storage/box/deputy/PopulateContents()
for(var/i in 1 to 7) for(var/i in 1 to 7)
new /obj/item/clothing/tie/armband/deputy(src) new /obj/item/clothing/accessory/armband/deputy(src)
/obj/item/weapon/storage/box/metalfoam /obj/item/weapon/storage/box/metalfoam
name = "box of metal foam grenades" name = "box of metal foam grenades"
+157 -116
View File
@@ -1,116 +1,157 @@
/obj/item/weapon/storage/lockbox /obj/item/weapon/storage/lockbox
name = "lockbox" name = "lockbox"
desc = "A locked box." desc = "A locked box."
icon_state = "lockbox+l" icon_state = "lockbox+l"
item_state = "syringe_kit" item_state = "syringe_kit"
w_class = WEIGHT_CLASS_BULKY w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item.
storage_slots = 4 storage_slots = 4
req_access = list(GLOB.access_armory) req_access = list(GLOB.access_armory)
var/locked = 1 var/locked = 1
var/broken = 0 var/broken = 0
var/icon_locked = "lockbox+l" var/icon_locked = "lockbox+l"
var/icon_closed = "lockbox" var/icon_closed = "lockbox"
var/icon_broken = "lockbox+b" var/icon_broken = "lockbox+b"
/obj/item/weapon/storage/lockbox/attackby(obj/item/weapon/W, mob/user, params) /obj/item/weapon/storage/lockbox/attackby(obj/item/weapon/W, mob/user, params)
if(W.GetID()) if(W.GetID())
if(broken) if(broken)
to_chat(user, "<span class='danger'>It appears to be broken.</span>") to_chat(user, "<span class='danger'>It appears to be broken.</span>")
return return
if(allowed(user)) if(allowed(user))
locked = !locked locked = !locked
if(locked) if(locked)
icon_state = icon_locked icon_state = icon_locked
to_chat(user, "<span class='danger'>You lock the [src.name]!</span>") to_chat(user, "<span class='danger'>You lock the [src.name]!</span>")
close_all() close_all()
return return
else else
icon_state = icon_closed icon_state = icon_closed
to_chat(user, "<span class='danger'>You unlock the [src.name]!</span>") to_chat(user, "<span class='danger'>You unlock the [src.name]!</span>")
return return
else else
to_chat(user, "<span class='danger'>Access Denied.</span>") to_chat(user, "<span class='danger'>Access Denied.</span>")
return return
if(!locked) if(!locked)
return ..() return ..()
else else
to_chat(user, "<span class='danger'>It's locked!</span>") to_chat(user, "<span class='danger'>It's locked!</span>")
/obj/item/weapon/storage/lockbox/MouseDrop(over_object, src_location, over_location) /obj/item/weapon/storage/lockbox/MouseDrop(over_object, src_location, over_location)
if (locked) if (locked)
src.add_fingerprint(usr) src.add_fingerprint(usr)
to_chat(usr, "<span class='warning'>It's locked!</span>") to_chat(usr, "<span class='warning'>It's locked!</span>")
return 0 return 0
..() ..()
/obj/item/weapon/storage/lockbox/emag_act(mob/user) /obj/item/weapon/storage/lockbox/emag_act(mob/user)
if(!broken) if(!broken)
broken = 1 broken = 1
locked = 0 locked = 0
desc += "It appears to be broken." desc += "It appears to be broken."
icon_state = src.icon_broken icon_state = src.icon_broken
if(user) if(user)
visible_message("<span class='warning'>\The [src] has been broken by [user] with an electromagnetic card!</span>") visible_message("<span class='warning'>\The [src] has been broken by [user] with an electromagnetic card!</span>")
return return
/obj/item/weapon/storage/lockbox/show_to(mob/user) /obj/item/weapon/storage/lockbox/show_to(mob/user)
if(locked) if(locked)
to_chat(user, "<span class='warning'>It's locked!</span>") to_chat(user, "<span class='warning'>It's locked!</span>")
else else
..() ..()
return return
//Check the destination item type for contentto. //Check the destination item type for contentto.
/obj/item/weapon/storage/lockbox/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) /obj/item/weapon/storage/lockbox/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
if(locked) if(locked)
to_chat(user, "<span class='warning'>It's locked!</span>") to_chat(user, "<span class='warning'>It's locked!</span>")
return 0 return 0
return ..() return ..()
/obj/item/weapon/storage/lockbox/can_be_inserted(obj/item/W, stop_messages = 0) /obj/item/weapon/storage/lockbox/can_be_inserted(obj/item/W, stop_messages = 0)
if(locked) if(locked)
return 0 return 0
return ..() return ..()
/obj/item/weapon/storage/lockbox/loyalty /obj/item/weapon/storage/lockbox/loyalty
name = "lockbox of mindshield implants" name = "lockbox of mindshield implants"
req_access = list(GLOB.access_security) req_access = list(GLOB.access_security)
/obj/item/weapon/storage/lockbox/loyalty/PopulateContents() /obj/item/weapon/storage/lockbox/loyalty/PopulateContents()
for(var/i in 1 to 3) for(var/i in 1 to 3)
new /obj/item/weapon/implantcase/mindshield(src) new /obj/item/weapon/implantcase/mindshield(src)
new /obj/item/weapon/implanter/mindshield(src) new /obj/item/weapon/implanter/mindshield(src)
/obj/item/weapon/storage/lockbox/clusterbang /obj/item/weapon/storage/lockbox/clusterbang
name = "lockbox of clusterbangs" name = "lockbox of clusterbangs"
desc = "You have a bad feeling about opening this." desc = "You have a bad feeling about opening this."
req_access = list(GLOB.access_security) req_access = list(GLOB.access_security)
/obj/item/weapon/storage/lockbox/clusterbang/PopulateContents() /obj/item/weapon/storage/lockbox/clusterbang/PopulateContents()
new /obj/item/weapon/grenade/clusterbuster(src) new /obj/item/weapon/grenade/clusterbuster(src)
/obj/item/weapon/storage/lockbox/medal /obj/item/weapon/storage/lockbox/medal
name = "medal box" name = "medal box"
desc = "A locked box used to store medals of honor." desc = "A locked box used to store medals of honor."
icon_state = "medalbox+l" icon_state = "medalbox+l"
item_state = "syringe_kit" item_state = "syringe_kit"
w_class = WEIGHT_CLASS_NORMAL w_class = WEIGHT_CLASS_NORMAL
max_w_class = WEIGHT_CLASS_SMALL max_w_class = WEIGHT_CLASS_SMALL
storage_slots = 10 storage_slots = 10
req_access = list(GLOB.access_captain) max_combined_w_class = 20
icon_locked = "medalbox+l" req_access = list(GLOB.access_captain)
icon_closed = "medalbox" icon_locked = "medalbox+l"
icon_broken = "medalbox+b" icon_closed = "medalbox"
icon_broken = "medalbox+b"
/obj/item/weapon/storage/lockbox/medal/PopulateContents() can_hold = list(/obj/item/clothing/accessory/medal)
new /obj/item/clothing/tie/medal/silver/valor(src)
new /obj/item/clothing/tie/medal/bronze_heart(src) /obj/item/weapon/storage/lockbox/medal/PopulateContents()
for(var/i in 1 to 3) new /obj/item/clothing/accessory/medal/silver/valor(src)
new /obj/item/clothing/tie/medal/conduct(src) new /obj/item/clothing/accessory/medal/bronze_heart(src)
new /obj/item/clothing/tie/medal/gold/captain(src) for(var/i in 1 to 3)
new /obj/item/clothing/tie/medal/silver/security(src) new /obj/item/clothing/accessory/medal/conduct(src)
new /obj/item/clothing/tie/medal/nobel_science(src) new /obj/item/clothing/accessory/medal/gold/captain(src)
new /obj/item/clothing/tie/medal/gold/heroism(src) new /obj/item/clothing/accessory/medal/silver/security(src)
new /obj/item/clothing/accessory/medal/plasma(src)
new /obj/item/clothing/accessory/medal/plasma/nobel_science(src)
new /obj/item/clothing/accessory/medal/gold/heroism(src)
/obj/item/weapon/storage/lockbox/secmedal
name = "security medal box"
desc = "A locked box used to store medals to be given to members of the security department."
icon_state = "medalbox+l"
item_state = "syringe_kit"
w_class = WEIGHT_CLASS_NORMAL
max_w_class = WEIGHT_CLASS_SMALL
storage_slots = 10
max_combined_w_class = 20
req_access = list(GLOB.access_hos)
icon_locked = "medalbox+l"
icon_closed = "medalbox"
icon_broken = "medalbox+b"
can_hold = list(/obj/item/clothing/accessory/medal)
/obj/item/weapon/storage/lockbox/secmedal/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/accessory/medal/silver/security(src)
/obj/item/weapon/storage/lockbox/scimedal
name = "science medal box"
desc = "A locked box used to store medals to be given to members of the science department."
icon_state = "medalbox+l"
item_state = "syringe_kit"
w_class = WEIGHT_CLASS_NORMAL
max_w_class = WEIGHT_CLASS_SMALL
storage_slots = 10
max_combined_w_class = 20
req_access = list(GLOB.access_rd)
icon_locked = "medalbox+l"
icon_closed = "medalbox"
icon_broken = "medalbox+b"
can_hold = list(/obj/item/clothing/accessory/medal)
/obj/item/weapon/storage/lockbox/scimedal/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/accessory/medal/plasma/nobel_science(src)
@@ -151,7 +151,7 @@
new /obj/item/weapon/weldingtool/experimental/brass(src) new /obj/item/weapon/weldingtool/experimental/brass(src)
/obj/item/weapon/storage/toolbox/brass/prefilled/ratvar /obj/item/weapon/storage/toolbox/brass/prefilled/ratvar
var/slab_type = /obj/item/clockwork/slab/scarab var/slab_type = /obj/item/clockwork/slab
/obj/item/weapon/storage/toolbox/brass/prefilled/ratvar/PopulateContents() /obj/item/weapon/storage/toolbox/brass/prefilled/ratvar/PopulateContents()
..() ..()
+3
View File
@@ -193,3 +193,6 @@
..() ..()
if(unique_rename) if(unique_rename)
to_chat(user, "<span class='notice'>Use a pen on it to rename it or change its description.</span>") to_chat(user, "<span class='notice'>Use a pen on it to rename it or change its description.</span>")
/obj/proc/gang_contraband_value()
return 0
@@ -15,8 +15,8 @@
new /obj/item/clothing/under/sl_suit(src) new /obj/item/clothing/under/sl_suit(src)
new /obj/item/clothing/under/rank/bartender(src) new /obj/item/clothing/under/rank/bartender(src)
new /obj/item/clothing/under/rank/bartender(src) new /obj/item/clothing/under/rank/bartender(src)
new /obj/item/clothing/tie/waistcoat(src) new /obj/item/clothing/accessory/waistcoat(src)
new /obj/item/clothing/tie/waistcoat(src) new /obj/item/clothing/accessory/waistcoat(src)
new /obj/item/clothing/head/soft/black(src) new /obj/item/clothing/head/soft/black(src)
new /obj/item/clothing/head/soft/black(src) new /obj/item/clothing/head/soft/black(src)
new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/shoes/sneakers/black(src)
@@ -39,8 +39,8 @@
new /obj/item/clothing/under/waiter(src) new /obj/item/clothing/under/waiter(src)
new /obj/item/device/radio/headset/headset_srv(src) new /obj/item/device/radio/headset/headset_srv(src)
new /obj/item/device/radio/headset/headset_srv(src) new /obj/item/device/radio/headset/headset_srv(src)
new /obj/item/clothing/tie/waistcoat(src) new /obj/item/clothing/accessory/waistcoat(src)
new /obj/item/clothing/tie/waistcoat(src) new /obj/item/clothing/accessory/waistcoat(src)
for(var/i in 1 to 3) for(var/i in 1 to 3)
new /obj/item/clothing/suit/apron/chef(src) new /obj/item/clothing/suit/apron/chef(src)
new /obj/item/clothing/head/soft/mime(src) new /obj/item/clothing/head/soft/mime(src)
@@ -95,8 +95,8 @@
new /obj/item/clothing/suit/toggle/lawyer/black(src) new /obj/item/clothing/suit/toggle/lawyer/black(src)
new /obj/item/clothing/shoes/laceup(src) new /obj/item/clothing/shoes/laceup(src)
new /obj/item/clothing/shoes/laceup(src) new /obj/item/clothing/shoes/laceup(src)
new /obj/item/clothing/tie/lawyers_badge(src) new /obj/item/clothing/accessory/lawyers_badge(src)
new /obj/item/clothing/tie/lawyers_badge(src) new /obj/item/clothing/accessory/lawyers_badge(src)
/obj/structure/closet/wardrobe/chaplain_black /obj/structure/closet/wardrobe/chaplain_black
name = "chapel wardrobe" name = "chapel wardrobe"
@@ -24,3 +24,4 @@
new /obj/item/device/laser_pointer(src) new /obj/item/device/laser_pointer(src)
new /obj/item/weapon/door_remote/research_director(src) new /obj/item/weapon/door_remote/research_director(src)
new /obj/item/weapon/storage/box/firingpins(src) new /obj/item/weapon/storage/box/firingpins(src)
new /obj/item/weapon/storage/lockbox/scimedal(src)
@@ -11,7 +11,7 @@
else else
new /obj/item/weapon/storage/backpack/satchel/cap(src) new /obj/item/weapon/storage/backpack/satchel/cap(src)
new /obj/item/clothing/neck/cloak/cap(src) new /obj/item/clothing/neck/cloak/cap(src)
new /obj/item/weapon/storage/daki(src) new /obj/item/weapon/storage/daki(src)
new /obj/item/weapon/storage/backpack/dufflebag/captain(src) new /obj/item/weapon/storage/backpack/dufflebag/captain(src)
new /obj/item/clothing/head/crown/fancy(src) new /obj/item/clothing/head/crown/fancy(src)
new /obj/item/clothing/suit/captunic(src) new /obj/item/clothing/suit/captunic(src)
@@ -83,6 +83,8 @@
new /obj/item/weapon/gun/energy/e_gun/hos(src) new /obj/item/weapon/gun/energy/e_gun/hos(src)
new /obj/item/device/flashlight/seclite(src) new /obj/item/device/flashlight/seclite(src)
new /obj/item/weapon/pinpointer(src) new /obj/item/weapon/pinpointer(src)
new /obj/item/clothing/under/rank/head_of_security/grey(src)
new /obj/item/weapon/storage/lockbox/secmedal(src)
/obj/structure/closet/secure_closet/warden /obj/structure/closet/secure_closet/warden
name = "\proper warden's locker" name = "\proper warden's locker"
@@ -106,7 +108,7 @@
new /obj/item/device/flashlight/seclite(src) new /obj/item/device/flashlight/seclite(src)
new /obj/item/clothing/gloves/krav_maga/sec(src) new /obj/item/clothing/gloves/krav_maga/sec(src)
new /obj/item/weapon/door_remote/head_of_security(src) new /obj/item/weapon/door_remote/head_of_security(src)
new /obj/item/weapon/gun/ballistic/shotgun/automatic/combat/compact(src) new /obj/item/weapon/gun/ballistic/shotgun/automatic/combat/compact(src)
/obj/structure/closet/secure_closet/security /obj/structure/closet/secure_closet/security
name = "security officer's locker" name = "security officer's locker"
@@ -132,28 +134,28 @@
/obj/structure/closet/secure_closet/security/cargo/PopulateContents() /obj/structure/closet/secure_closet/security/cargo/PopulateContents()
..() ..()
new /obj/item/clothing/tie/armband/cargo(src) new /obj/item/clothing/accessory/armband/cargo(src)
new /obj/item/device/encryptionkey/headset_cargo(src) new /obj/item/device/encryptionkey/headset_cargo(src)
/obj/structure/closet/secure_closet/security/engine /obj/structure/closet/secure_closet/security/engine
/obj/structure/closet/secure_closet/security/engine/PopulateContents() /obj/structure/closet/secure_closet/security/engine/PopulateContents()
..() ..()
new /obj/item/clothing/tie/armband/engine(src) new /obj/item/clothing/accessory/armband/engine(src)
new /obj/item/device/encryptionkey/headset_eng(src) new /obj/item/device/encryptionkey/headset_eng(src)
/obj/structure/closet/secure_closet/security/science /obj/structure/closet/secure_closet/security/science
/obj/structure/closet/secure_closet/security/science/PopulateContents() /obj/structure/closet/secure_closet/security/science/PopulateContents()
..() ..()
new /obj/item/clothing/tie/armband/science(src) new /obj/item/clothing/accessory/armband/science(src)
new /obj/item/device/encryptionkey/headset_sci(src) new /obj/item/device/encryptionkey/headset_sci(src)
/obj/structure/closet/secure_closet/security/med /obj/structure/closet/secure_closet/security/med
/obj/structure/closet/secure_closet/security/med/PopulateContents() /obj/structure/closet/secure_closet/security/med/PopulateContents()
..() ..()
new /obj/item/clothing/tie/armband/medblue(src) new /obj/item/clothing/accessory/armband/medblue(src)
new /obj/item/device/encryptionkey/headset_med(src) new /obj/item/device/encryptionkey/headset_med(src)
/obj/structure/closet/secure_closet/detective /obj/structure/closet/secure_closet/detective
@@ -171,7 +173,7 @@
new /obj/item/clothing/head/det_hat(src) new /obj/item/clothing/head/det_hat(src)
new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/gloves/color/black(src)
new /obj/item/clothing/under/rank/det/grey(src) new /obj/item/clothing/under/rank/det/grey(src)
new /obj/item/clothing/tie/waistcoat(src) new /obj/item/clothing/accessory/waistcoat(src)
new /obj/item/clothing/suit/det_suit/grey(src) new /obj/item/clothing/suit/det_suit/grey(src)
new /obj/item/clothing/head/fedora(src) new /obj/item/clothing/head/fedora(src)
new /obj/item/clothing/shoes/laceup(src) new /obj/item/clothing/shoes/laceup(src)
+1 -1
View File
@@ -38,7 +38,7 @@
if(M.client) if(M.client)
body += "<br>\[<b>First Seen:</b> [M.client.player_join_date]\]\[<b>Byond account registered on:</b> [M.client.account_join_date]\]" body += "<br>\[<b>First Seen:</b> [M.client.player_join_date]\]\[<b>Byond account registered on:</b> [M.client.account_join_date]\]"
body += "<br><b>Show related accounts by:</b> " body += "<br><br><b>Show related accounts by:</b> "
body += "\[ <a href='?_src_=holder;showrelatedacc=cid;client=\ref[M.client]'>CID</a> | " body += "\[ <a href='?_src_=holder;showrelatedacc=cid;client=\ref[M.client]'>CID</a> | "
body += "<a href='?_src_=holder;showrelatedacc=ip;client=\ref[M.client]'>IP</a> \]" body += "<a href='?_src_=holder;showrelatedacc=ip;client=\ref[M.client]'>IP</a> \]"
+3 -3
View File
@@ -6,6 +6,6 @@
set name = "Player Panel" set name = "Player Panel"
set desc = "Player Panel" set desc = "Player Panel"
set category = "Admin" set category = "Admin"
usr.client.holder.player_panel_new() if(usr.client.holder)
SSblackbox.add_details("admin_verb","Player Panel New") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! usr.client.holder.player_panel_new()
return SSblackbox.add_details("admin_verb","Player Panel New") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+4 -5
View File
@@ -2239,7 +2239,7 @@
error_viewer.show_to(owner, null, href_list["viewruntime_linear"]) error_viewer.show_to(owner, null, href_list["viewruntime_linear"])
else if(href_list["showrelatedacc"]) else if(href_list["showrelatedacc"])
var/client/C = locate(href_list["client"]) in GLOB.clients var/client/C = locate(href_list["client"]) in GLOB.clients
var/list/thing_to_check var/thing_to_check
if(href_list["showrelatedacc"] == "cid") if(href_list["showrelatedacc"] == "cid")
thing_to_check = C.related_accounts_cid thing_to_check = C.related_accounts_cid
else else
@@ -2247,9 +2247,8 @@
thing_to_check = splittext(thing_to_check, ", ") thing_to_check = splittext(thing_to_check, ", ")
var/dat = "Related accounts by [uppertext(href_list["showrelatedacc"])]:<br>" var/list/dat = list("Related accounts by [uppertext(href_list["showrelatedacc"])]:")
for(var/thing in thing_to_check) dat += thing_to_check
dat += "[thing]<br>"
usr << browse(dat, "size=420x300") usr << browse(dat.Join("<br>"), "window=related_[C];size=420x300")
+1 -1
View File
@@ -99,7 +99,7 @@ GLOBAL_VAR_INIT(highlander, FALSE)
var/datum/gang/multiverse/G = new(src, "[H.real_name]") var/datum/gang/multiverse/G = new(src, "[H.real_name]")
SSticker.mode.gangs += G SSticker.mode.gangs += G
G.bosses += H.mind G.bosses[H.mind] = 0 //No they don't use influence but this prevents runtimes.
G.add_gang_hud(H.mind) G.add_gang_hud(H.mind)
H.mind.gang_datum = G H.mind.gang_datum = G
+1 -1
View File
@@ -10,7 +10,7 @@ GLOBAL_PROTECT(whitelist)
continue continue
if(findtextEx(line,"#",1,2)) if(findtextEx(line,"#",1,2))
continue continue
GLOB.whitelist += line GLOB.whitelist += ckey(line)
if(!GLOB.whitelist.len) if(!GLOB.whitelist.len)
GLOB.whitelist = null GLOB.whitelist = null
+1 -1
View File
@@ -1630,7 +1630,7 @@
/obj/item/clothing/suit/toggle/lawyer/purple, /obj/item/clothing/suit/toggle/lawyer/purple,
/obj/item/clothing/under/lawyer/blacksuit, /obj/item/clothing/under/lawyer/blacksuit,
/obj/item/clothing/suit/toggle/lawyer/black, /obj/item/clothing/suit/toggle/lawyer/black,
/obj/item/clothing/tie/waistcoat, /obj/item/clothing/accessory/waistcoat,
/obj/item/clothing/neck/tie/blue, /obj/item/clothing/neck/tie/blue,
/obj/item/clothing/neck/tie/red, /obj/item/clothing/neck/tie/red,
/obj/item/clothing/neck/tie/black, /obj/item/clothing/neck/tie/black,
+33 -32
View File
@@ -529,7 +529,7 @@ BLIND // can't see anything
var/can_adjust = 1 var/can_adjust = 1
var/adjusted = NORMAL_STYLE var/adjusted = NORMAL_STYLE
var/alt_covers_chest = 0 // for adjusted/rolled-down jumpsuits, 0 = exposes chest and arms, 1 = exposes arms only var/alt_covers_chest = 0 // for adjusted/rolled-down jumpsuits, 0 = exposes chest and arms, 1 = exposes arms only
var/obj/item/clothing/tie/hastie = null var/obj/item/clothing/accessory/attached_accessory
var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to.
/obj/item/clothing/under/worn_overlays(isinhands = FALSE) /obj/item/clothing/under/worn_overlays(isinhands = FALSE)
@@ -541,14 +541,14 @@ BLIND // can't see anything
. += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
if(blood_DNA) if(blood_DNA)
. += mutable_appearance('icons/effects/blood.dmi', "uniformblood") . += mutable_appearance('icons/effects/blood.dmi', "uniformblood")
if(hastie) if(attached_accessory)
var/tie_color = hastie.item_color var/accessory_color = attached_accessory.item_color
if(!tie_color) if(!accessory_color)
tie_color = hastie.icon_state accessory_color = attached_accessory.icon_state
var/mutable_appearance/tie = mutable_appearance('icons/mob/ties.dmi', "[tie_color]") var/mutable_appearance/accessory = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]")
tie.alpha = hastie.alpha accessory.alpha = attached_accessory.alpha
tie.color = hastie.color accessory.color = attached_accessory.color
. += tie . += accessory
/obj/item/clothing/under/attackby(obj/item/W, mob/user, params) /obj/item/clothing/under/attackby(obj/item/W, mob/user, params)
if((has_sensor == BROKEN_SENSORS) && istype(W, /obj/item/stack/cable_coil)) if((has_sensor == BROKEN_SENSORS) && istype(W, /obj/item/stack/cable_coil))
@@ -587,29 +587,30 @@ BLIND // can't see anything
adjusted = DIGITIGRADE_STYLE adjusted = DIGITIGRADE_STYLE
H.update_inv_w_uniform() H.update_inv_w_uniform()
if(hastie && slot != slot_hands) if(attached_accessory && slot != slot_hands)
hastie.on_uniform_equip(src, user) attached_accessory.on_uniform_equip(src, user)
/obj/item/clothing/under/dropped(mob/user) /obj/item/clothing/under/dropped(mob/user)
if(hastie) if(attached_accessory)
hastie.on_uniform_dropped(src, user) attached_accessory.on_uniform_dropped(src, user)
..() ..()
/obj/item/clothing/under/attackby(obj/item/I, mob/user, params) /obj/item/clothing/under/attackby(obj/item/I, mob/user, params)
if(!attachTie(I, user)) if(!attach_accessory(I, user))
..() ..()
/obj/item/clothing/under/proc/attachTie(obj/item/I, mob/user, notifyAttach = 1) /obj/item/clothing/under/proc/attach_accessory(obj/item/I, mob/user, notifyAttach = 1)
if(istype(I, /obj/item/clothing/tie)) . = FALSE
var/obj/item/clothing/tie/T = I if(istype(I, /obj/item/clothing/accessory))
if(hastie) var/obj/item/clothing/accessory/A = I
if(attached_accessory)
if(user) if(user)
to_chat(user, "<span class='warning'>[src] already has an accessory.</span>") to_chat(user, "<span class='warning'>[src] already has an accessory.</span>")
return 0 return
else else
if(user && !user.drop_item()) if(user && !user.drop_item())
return return
if(!T.attach(src, user)) if(!A.attach(src, user))
return return
if(user && notifyAttach) if(user && notifyAttach)
@@ -619,21 +620,21 @@ BLIND // can't see anything
var/mob/living/carbon/human/H = loc var/mob/living/carbon/human/H = loc
H.update_inv_w_uniform() H.update_inv_w_uniform()
return 1 return TRUE
/obj/item/clothing/under/proc/removetie(mob/user) /obj/item/clothing/under/proc/remove_accessory(mob/user)
if(!isliving(user)) if(!isliving(user))
return return
if(!can_use(user)) if(!can_use(user))
return return
if(hastie) if(attached_accessory)
var/obj/item/clothing/tie/T = hastie var/obj/item/clothing/accessory/A = attached_accessory
hastie.detach(src, user) attached_accessory.detach(src, user)
if(user.put_in_hands(T)) if(user.put_in_hands(A))
to_chat(user, "<span class='notice'>You detach [T] from [src].</span>") to_chat(user, "<span class='notice'>You detach [A] from [src].</span>")
else else
to_chat(user, "<span class='notice'>You detach [T] from [src] and it falls on the floor.</span>") to_chat(user, "<span class='notice'>You detach [A] from [src] and it falls on the floor.</span>")
if(ishuman(loc)) if(ishuman(loc))
var/mob/living/carbon/human/H = loc var/mob/living/carbon/human/H = loc
@@ -659,8 +660,8 @@ BLIND // can't see anything
to_chat(user, "Its vital tracker appears to be enabled.") to_chat(user, "Its vital tracker appears to be enabled.")
if(SENSOR_COORDS) if(SENSOR_COORDS)
to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.") to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.")
if(hastie) if(attached_accessory)
to_chat(user, "\A [hastie] is attached to it.") to_chat(user, "\A [attached_accessory] is attached to it.")
/proc/generate_female_clothing(index,t_color,icon,type) /proc/generate_female_clothing(index,t_color,icon,type)
var/icon/female_clothing_icon = icon("icon"=icon, "icon_state"=t_color) var/icon/female_clothing_icon = icon("icon"=icon, "icon_state"=t_color)
@@ -721,8 +722,8 @@ BLIND // can't see anything
to_chat(user, "<span class='warning'>You can't do that right now!</span>") to_chat(user, "<span class='warning'>You can't do that right now!</span>")
return return
else else
if(hastie) if(attached_accessory)
removetie(user) remove_accessory(user)
else else
rolldown() rolldown()
@@ -160,17 +160,6 @@
/obj/item/clothing/neck/necklace/dope /obj/item/clothing/neck/necklace/dope
name = "gold necklace" name = "gold necklace"
desc = "Damn, it feels good to be a gangster." desc = "Damn, it feels good to be a gangster."
icon = 'icons/obj/clothing/ties.dmi' icon = 'icons/obj/clothing/neck.dmi'
icon_state = "bling" icon_state = "bling"
item_color = "bling" item_color = "bling"
////////////////
//OONGA BOONGA//
////////////////
/obj/item/clothing/neck/talisman
name = "bone talisman"
desc = "A hunter's talisman, some say the old gods smile on those who wear it."
icon_state = "talisman"
item_color = "talisman"
armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25)
+1 -1
View File
@@ -154,7 +154,7 @@
/datum/outfit/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) /datum/outfit/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
var/obj/item/clothing/under/U = H.w_uniform var/obj/item/clothing/under/U = H.w_uniform
U.attachTie(new /obj/item/clothing/tie/waistcoat(H)) U.attach_accessory(new /obj/item/clothing/accessory/waistcoat(H))
if(visualsOnly) if(visualsOnly)
return return
@@ -1,23 +1,23 @@
/obj/item/clothing/tie //Ties moved to neck slot items, but as there are still things like medals and armbands, this accessory system is being kept as-is /obj/item/clothing/accessory //Ties moved to neck slot items, but as there are still things like medals and armbands, this accessory system is being kept as-is
name = "tie" name = "Accessory"
desc = "A neosilk clip-on tie." desc = "Something has gone wrong!"
icon = 'icons/obj/clothing/ties.dmi' icon = 'icons/obj/clothing/accessories.dmi'
icon_state = "bluetie" icon_state = "plasma"
item_state = "" //no inhands item_state = "" //no inhands
item_color = "bluetie" item_color = "plasma" //On accessories, this controls the worn sprite. That's a bit weird.
slot_flags = 0 slot_flags = 0
w_class = WEIGHT_CLASS_SMALL w_class = WEIGHT_CLASS_SMALL
var/minimize_when_attached = TRUE // TRUE if shown as a small icon in corner, FALSE if overlayed var/minimize_when_attached = TRUE // TRUE if shown as a small icon in corner, FALSE if overlayed
/obj/item/clothing/tie/proc/attach(obj/item/clothing/under/U, user) /obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user)
if(pockets) // Attach storage to jumpsuit if(pockets) // Attach storage to jumpsuit
if(U.pockets) // storage items conflict if(U.pockets) // storage items conflict
return 0 return FALSE
pockets.loc = U pockets.loc = U
U.pockets = pockets U.pockets = pockets
U.hastie = src U.attached_accessory = src
loc = U loc = U
layer = FLOAT_LAYER layer = FLOAT_LAYER
plane = FLOAT_PLANE plane = FLOAT_PLANE
@@ -30,10 +30,13 @@
for(var/armor_type in armor) for(var/armor_type in armor)
U.armor[armor_type] += armor[armor_type] U.armor[armor_type] += armor[armor_type]
return 1 if(isliving(user))
on_uniform_equip(U, user)
return TRUE
/obj/item/clothing/tie/proc/detach(obj/item/clothing/under/U, user) /obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user)
if(pockets && pockets == U.pockets) if(pockets && pockets == U.pockets)
pockets.loc = src pockets.loc = src
U.pockets = null U.pockets = null
@@ -41,6 +44,9 @@
for(var/armor_type in armor) for(var/armor_type in armor)
U.armor[armor_type] -= armor[armor_type] U.armor[armor_type] -= armor[armor_type]
if(isliving(user))
on_uniform_dropped(U, user)
if(minimize_when_attached) if(minimize_when_attached)
transform *= 2 transform *= 2
pixel_x -= 8 pixel_x -= 8
@@ -48,27 +54,31 @@
layer = initial(layer) layer = initial(layer)
plane = initial(plane) plane = initial(plane)
U.cut_overlays() U.cut_overlays()
U.hastie = null U.attached_accessory = null
/obj/item/clothing/tie/proc/on_uniform_equip(obj/item/clothing/under/U, user) /obj/item/clothing/accessory/proc/on_uniform_equip(obj/item/clothing/under/U, user)
return return
/obj/item/clothing/tie/proc/on_uniform_dropped(obj/item/clothing/under/U, user) /obj/item/clothing/accessory/proc/on_uniform_dropped(obj/item/clothing/under/U, user)
return return
/obj/item/clothing/tie/waistcoat /obj/item/clothing/accessory/examine(mob/user)
..()
to_chat(user, "<span class='notice'>\The [src] can be attached to a uniform. Alt-click to remove it once attached.</span>")
/obj/item/clothing/accessory/waistcoat
name = "waistcoat" name = "waistcoat"
desc = "For some classy, murderous fun." desc = "For some classy, murderous fun."
icon_state = "waistcoat" icon_state = "waistcoat"
item_state = "waistcoat" item_state = "waistcoat"
item_color = "waistcoat" item_color = "waistcoat"
minimize_when_attached = FALSE minimize_when_attached = FALSE
////////// //////////
//Medals// //Medals//
////////// //////////
/obj/item/clothing/tie/medal /obj/item/clothing/accessory/medal
name = "bronze medal" name = "bronze medal"
desc = "A bronze medal." desc = "A bronze medal."
icon_state = "bronze" icon_state = "bronze"
@@ -77,7 +87,7 @@
resistance_flags = FIRE_PROOF resistance_flags = FIRE_PROOF
//Pinning medals on people //Pinning medals on people
/obj/item/clothing/tie/medal/attack(mob/living/carbon/human/M, mob/living/user) /obj/item/clothing/accessory/medal/attack(mob/living/carbon/human/M, mob/living/user)
if(ishuman(M) && (user.a_intent == INTENT_HELP)) if(ishuman(M) && (user.a_intent == INTENT_HELP))
if(M.wear_suit) if(M.wear_suit)
@@ -94,7 +104,7 @@
user.visible_message("[user] is trying to pin [src] on [M]'s chest.", \ user.visible_message("[user] is trying to pin [src] on [M]'s chest.", \
"<span class='notice'>You try to pin [src] on [M]'s chest.</span>") "<span class='notice'>You try to pin [src] on [M]'s chest.</span>")
if(do_after(user, delay, target = M)) if(do_after(user, delay, target = M))
if(U.attachTie(src, user, 0)) //Attach it, do not notify the user of the attachment if(U.attach_accessory(src, user, 0)) //Attach it, do not notify the user of the attachment
if(user == M) if(user == M)
to_chat(user, "<span class='notice'>You attach [src] to [U].</span>") to_chat(user, "<span class='notice'>You attach [src] to [U].</span>")
else else
@@ -104,95 +114,111 @@
else to_chat(user, "<span class='warning'>Medals can only be pinned on jumpsuits!</span>") else to_chat(user, "<span class='warning'>Medals can only be pinned on jumpsuits!</span>")
else ..() else ..()
/obj/item/clothing/tie/medal/conduct /obj/item/clothing/accessory/medal/conduct
name = "distinguished conduct medal" name = "distinguished conduct medal"
desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is the most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew." desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is the most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew."
/obj/item/clothing/tie/medal/bronze_heart /obj/item/clothing/accessory/medal/bronze_heart
name = "bronze heart medal" name = "bronze heart medal"
desc = "A bronze heart-shaped medal awarded for sacrifice. It is often awarded posthumously or for severe injury in the line of duty." desc = "A bronze heart-shaped medal awarded for sacrifice. It is often awarded posthumously or for severe injury in the line of duty."
icon_state = "bronze_heart" icon_state = "bronze_heart"
/obj/item/clothing/tie/medal/nobel_science /obj/item/clothing/accessory/medal/silver
name = "nobel sciences award"
desc = "A bronze medal which represents significant contributions to the field of science or engineering."
/obj/item/clothing/tie/medal/silver
name = "silver medal" name = "silver medal"
desc = "A silver medal." desc = "A silver medal."
icon_state = "silver" icon_state = "silver"
item_color = "silver" item_color = "silver"
materials = list(MAT_SILVER=1000) materials = list(MAT_SILVER=1000)
/obj/item/clothing/tie/medal/silver/valor /obj/item/clothing/accessory/medal/silver/valor
name = "medal of valor" name = "medal of valor"
desc = "A silver medal awarded for acts of exceptional valor." desc = "A silver medal awarded for acts of exceptional valor."
/obj/item/clothing/tie/medal/silver/security /obj/item/clothing/accessory/medal/silver/security
name = "robust security award" name = "robust security award"
desc = "An award for distinguished combat and sacrifice in defence of Nanotrasen's commercial interests. Often awarded to security staff." desc = "An award for distinguished combat and sacrifice in defence of Nanotrasen's commercial interests. Often awarded to security staff."
/obj/item/clothing/tie/medal/gold /obj/item/clothing/accessory/medal/gold
name = "gold medal" name = "gold medal"
desc = "A prestigious golden medal." desc = "A prestigious golden medal."
icon_state = "gold" icon_state = "gold"
item_color = "gold" item_color = "gold"
materials = list(MAT_GOLD=1000) materials = list(MAT_GOLD=1000)
/obj/item/clothing/tie/medal/gold/captain /obj/item/clothing/accessory/medal/gold/captain
name = "medal of captaincy" name = "medal of captaincy"
desc = "A golden medal awarded exclusively to those promoted to the rank of captain. It signifies the codified responsibilities of a captain to Nanotrasen, and their undisputable authority over their crew." desc = "A golden medal awarded exclusively to those promoted to the rank of captain. It signifies the codified responsibilities of a captain to Nanotrasen, and their undisputable authority over their crew."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/clothing/tie/medal/gold/heroism /obj/item/clothing/accessory/medal/gold/heroism
name = "medal of exceptional heroism" name = "medal of exceptional heroism"
desc = "An extremely rare golden medal awarded only by Centcom. To receive such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but commanders." desc = "An extremely rare golden medal awarded only by Centcom. To receive such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but commanders."
/obj/item/clothing/accessory/medal/plasma
name = "plasma medal"
desc = "An eccentric medal made of plasma."
icon_state = "plasma"
item_color = "plasma"
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = -10, acid = 0) //It's made of plasma. Of course it's flammable.
materials = list(MAT_PLASMA=1000)
/obj/item/clothing/accessory/medal/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
atmos_spawn_air("plasma=20;TEMP=[exposed_temperature]")
visible_message("<span class='danger'> \The [src] bursts into flame!</span>","<span class='userdanger'>Your [src] bursts into flame!</span>")
qdel(src)
/obj/item/clothing/accessory/medal/plasma/nobel_science
name = "nobel sciences award"
desc = "A plasma medal which represents significant contributions to the field of science or engineering."
//////////// ////////////
//Armbands// //Armbands//
//////////// ////////////
/obj/item/clothing/tie/armband /obj/item/clothing/accessory/armband
name = "red armband" name = "red armband"
desc = "An fancy red armband!" desc = "An fancy red armband!"
icon_state = "redband" icon_state = "redband"
item_color = "redband" item_color = "redband"
/obj/item/clothing/tie/armband/deputy /obj/item/clothing/accessory/armband/deputy
name = "security deputy armband" name = "security deputy armband"
desc = "An armband, worn by personnel authorized to act as a deputy of station security." desc = "An armband, worn by personnel authorized to act as a deputy of station security."
/obj/item/clothing/tie/armband/cargo /obj/item/clothing/accessory/armband/cargo
name = "cargo bay guard armband" name = "cargo bay guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is brown." desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is brown."
icon_state = "cargoband" icon_state = "cargoband"
item_color = "cargoband" item_color = "cargoband"
/obj/item/clothing/tie/armband/engine /obj/item/clothing/accessory/armband/engine
name = "engineering guard armband" name = "engineering guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is orange with a reflective strip!" desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is orange with a reflective strip!"
icon_state = "engieband" icon_state = "engieband"
item_color = "engieband" item_color = "engieband"
/obj/item/clothing/tie/armband/science /obj/item/clothing/accessory/armband/science
name = "science guard armband" name = "science guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is purple." desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is purple."
icon_state = "rndband" icon_state = "rndband"
item_color = "rndband" item_color = "rndband"
/obj/item/clothing/tie/armband/hydro /obj/item/clothing/accessory/armband/hydro
name = "hydroponics guard armband" name = "hydroponics guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is green and blue." desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is green and blue."
icon_state = "hydroband" icon_state = "hydroband"
item_color = "hydroband" item_color = "hydroband"
/obj/item/clothing/tie/armband/med /obj/item/clothing/accessory/armband/med
name = "medical guard armband" name = "medical guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white." desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white."
icon_state = "medband" icon_state = "medband"
item_color = "medband" item_color = "medband"
/obj/item/clothing/tie/armband/medblue /obj/item/clothing/accessory/armband/medblue
name = "medical guard armband" name = "medical guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and blue." desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and blue."
icon_state = "medblueband" icon_state = "medblueband"
@@ -202,29 +228,29 @@
//OBJECTION!// //OBJECTION!//
////////////// //////////////
/obj/item/clothing/tie/lawyers_badge /obj/item/clothing/accessory/lawyers_badge
name = "attorney's badge" name = "attorney's badge"
desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet." desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet."
icon_state = "lawyerbadge" icon_state = "lawyerbadge"
item_color = "lawyerbadge" item_color = "lawyerbadge"
/obj/item/clothing/tie/lawyers_badge/attach(obj/item/clothing/under/U, user) /obj/item/clothing/accessory/lawyers_badge/on_uniform_equip(obj/item/clothing/under/U, user)
if(!..())
return 0
if(isliving(U.loc))
on_uniform_equip(U, user)
/obj/item/clothing/tie/lawyers_badge/detach(obj/item/clothing/under/U, user)
..()
if(isliving(U.loc))
on_uniform_dropped(U, user)
/obj/item/clothing/tie/lawyers_badge/on_uniform_equip(obj/item/clothing/under/U, user)
var/mob/living/L = user var/mob/living/L = user
if(L) if(L)
L.bubble_icon = "lawyer" L.bubble_icon = "lawyer"
/obj/item/clothing/tie/lawyers_badge/on_uniform_dropped(obj/item/clothing/under/U, user) /obj/item/clothing/accessory/lawyers_badge/on_uniform_dropped(obj/item/clothing/under/U, user)
var/mob/living/L = user var/mob/living/L = user
if(L) if(L)
L.bubble_icon = initial(L.bubble_icon) L.bubble_icon = initial(L.bubble_icon)
////////////////
//OONGA BOONGA//
////////////////
/obj/item/clothing/accessory/talisman
name = "bone talisman"
desc = "A hunter's talisman, some say the old gods smile on those who wear it."
icon_state = "talisman"
item_color = "talisman"
armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25)
+2 -2
View File
@@ -382,7 +382,7 @@
/datum/crafting_recipe/blackcarpet /datum/crafting_recipe/blackcarpet
name = "Black Carpet" name = "Black Carpet"
reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1)
result = /obj/item/stack/tile/carpet/black result = /obj/item/stack/tile/carpet/black/fifty
category = CAT_MISC category = CAT_MISC
/datum/crafting_recipe/showercurtain /datum/crafting_recipe/showercurtain
@@ -427,7 +427,7 @@
/datum/crafting_recipe/bonetalisman /datum/crafting_recipe/bonetalisman
name = "Bone Talisman" name = "Bone Talisman"
result = /obj/item/clothing/neck/talisman result = /obj/item/clothing/accessory/talisman
time = 20 time = 20
reqs = list(/obj/item/stack/sheet/bone = 2, reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1) /obj/item/stack/sheet/sinew = 1)
+1 -1
View File
@@ -186,7 +186,7 @@ Lawyer
shoes = /obj/item/clothing/shoes/laceup shoes = /obj/item/clothing/shoes/laceup
l_hand = /obj/item/weapon/storage/briefcase/lawyer l_hand = /obj/item/weapon/storage/briefcase/lawyer
l_pocket = /obj/item/device/laser_pointer l_pocket = /obj/item/device/laser_pointer
r_pocket = /obj/item/clothing/tie/lawyers_badge r_pocket = /obj/item/clothing/accessory/lawyers_badge
/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) /datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+7 -7
View File
@@ -195,7 +195,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S
else else
department = pick_n_take(GLOB.available_depts) department = pick_n_take(GLOB.available_depts)
var/ears = null var/ears = null
var/tie = null var/accessory = null
var/list/dep_access = null var/list/dep_access = null
var/destination = null var/destination = null
var/spawn_point = null var/spawn_point = null
@@ -205,29 +205,29 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S
dep_access = list(GLOB.access_mailsorting, GLOB.access_mining, GLOB.access_mining_station) dep_access = list(GLOB.access_mailsorting, GLOB.access_mining, GLOB.access_mining_station)
destination = /area/security/checkpoint/supply destination = /area/security/checkpoint/supply
spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns
tie = /obj/item/clothing/tie/armband/cargo accessory = /obj/item/clothing/accessory/armband/cargo
if(SEC_DEPT_ENGINEERING) if(SEC_DEPT_ENGINEERING)
ears = /obj/item/device/radio/headset/headset_sec/alt/department/engi ears = /obj/item/device/radio/headset/headset_sec/alt/department/engi
dep_access = list(GLOB.access_construction, GLOB.access_engine) dep_access = list(GLOB.access_construction, GLOB.access_engine)
destination = /area/security/checkpoint/engineering destination = /area/security/checkpoint/engineering
spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns
tie = /obj/item/clothing/tie/armband/engine accessory = /obj/item/clothing/accessory/armband/engine
if(SEC_DEPT_MEDICAL) if(SEC_DEPT_MEDICAL)
ears = /obj/item/device/radio/headset/headset_sec/alt/department/med ears = /obj/item/device/radio/headset/headset_sec/alt/department/med
dep_access = list(GLOB.access_medical) dep_access = list(GLOB.access_medical)
destination = /area/security/checkpoint/medical destination = /area/security/checkpoint/medical
spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns
tie = /obj/item/clothing/tie/armband/medblue accessory = /obj/item/clothing/accessory/armband/medblue
if(SEC_DEPT_SCIENCE) if(SEC_DEPT_SCIENCE)
ears = /obj/item/device/radio/headset/headset_sec/alt/department/sci ears = /obj/item/device/radio/headset/headset_sec/alt/department/sci
dep_access = list(GLOB.access_research) dep_access = list(GLOB.access_research)
destination = /area/security/checkpoint/science destination = /area/security/checkpoint/science
spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns
tie = /obj/item/clothing/tie/armband/science accessory = /obj/item/clothing/accessory/armband/science
if(tie) if(accessory)
var/obj/item/clothing/under/U = H.w_uniform var/obj/item/clothing/under/U = H.w_uniform
U.attachTie(new tie) U.attach_accessory(new accessory)
if(ears) if(ears)
if(H.ears) if(H.ears)
qdel(H.ears) qdel(H.ears)
@@ -72,6 +72,8 @@
if(!brainmob.stored_dna) if(!brainmob.stored_dna)
brainmob.stored_dna = new /datum/dna/stored(brainmob) brainmob.stored_dna = new /datum/dna/stored(brainmob)
C.dna.copy_dna(brainmob.stored_dna) C.dna.copy_dna(brainmob.stored_dna)
if(L.disabilities & NOCLONE)
brainmob.disabilities |= NOCLONE //This is so you can't just decapitate a husked guy and clone them without needing to get a new body
var/obj/item/organ/zombie_infection/ZI = L.getorganslot("zombie_infection") var/obj/item/organ/zombie_infection/ZI = L.getorganslot("zombie_infection")
if(ZI) if(ZI)
brainmob.set_species(ZI.old_species) //For if the brain is cloned brainmob.set_species(ZI.old_species) //For if the brain is cloned
@@ -14,17 +14,17 @@
//uniform //uniform
if(w_uniform && !(slot_w_uniform in obscured)) if(w_uniform && !(slot_w_uniform in obscured))
//Ties //accessory
var/tie_msg var/accessory_msg
if(istype(w_uniform,/obj/item/clothing/under)) if(istype(w_uniform,/obj/item/clothing/under))
var/obj/item/clothing/under/U = w_uniform var/obj/item/clothing/under/U = w_uniform
if(U.hastie) if(U.attached_accessory)
tie_msg += " with \icon[U.hastie] \a [U.hastie]" accessory_msg += " with \icon[U.attached_accessory] \a [U.attached_accessory]"
if(w_uniform.blood_DNA) if(w_uniform.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][tie_msg]!</span>\n" msg += "<span class='warning'>[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][accessory_msg]!</span>\n"
else else
msg += "[t_He] [t_is] wearing \icon[w_uniform] \a [w_uniform][tie_msg].\n" msg += "[t_He] [t_is] wearing \icon[w_uniform] \a [w_uniform][accessory_msg].\n"
//head //head
if(head) if(head)
+1
View File
@@ -95,6 +95,7 @@
message_simple = S.deathmessage message_simple = S.deathmessage
. = ..() . = ..()
message_simple = initial(message_simple) message_simple = initial(message_simple)
playsound(user.loc, 'sound/voice/oof.ogg', 80, 1, 1)//Defenitley not copypasta
if(. && isalienadult(user)) if(. && isalienadult(user))
playsound(user.loc, 'sound/voice/hiss6.ogg', 80, 1, 1) playsound(user.loc, 'sound/voice/hiss6.ogg', 80, 1, 1)
@@ -1140,7 +1140,7 @@
return return
if(incapacitated()) if(incapacitated())
return return
if(M.restrained()) if(M.incapacitated())
return return
if(module) if(module)
if(!module.allow_riding) if(!module.allow_riding)
@@ -613,9 +613,8 @@
/datum/reagent/toxin/amanitin/on_mob_delete(mob/living/M) /datum/reagent/toxin/amanitin/on_mob_delete(mob/living/M)
var/toxdamage = current_cycle*3*REM var/toxdamage = current_cycle*3*REM
M.log_message("has taken [toxdamage] toxin damage from amanitin toxin", INDIVIDUAL_ATTACK_LOG)
M.adjustToxLoss(toxdamage) M.adjustToxLoss(toxdamage)
if(M)
add_logs(M, get_turf(M), "has taken [toxdamage] toxin damage from amanitin toxin")
..() ..()
/datum/reagent/toxin/lipolicide /datum/reagent/toxin/lipolicide
@@ -18,7 +18,7 @@
new /obj/item/weapon/coin/gold(user.loc), new /obj/item/weapon/coin/gold(user.loc),
new /obj/item/weapon/coin/diamond(user.loc), new /obj/item/weapon/coin/diamond(user.loc),
new /obj/item/weapon/coin/silver(user.loc), new /obj/item/weapon/coin/silver(user.loc),
new /obj/item/clothing/tie/medal/gold(user.loc), new /obj/item/clothing/accessory/medal/gold(user.loc),
new /obj/item/stack/sheet/mineral/gold(user.loc), new /obj/item/stack/sheet/mineral/gold(user.loc),
new /obj/item/stack/sheet/mineral/silver(user.loc), new /obj/item/stack/sheet/mineral/silver(user.loc),
new /obj/item/stack/sheet/mineral/diamond(user.loc), new /obj/item/stack/sheet/mineral/diamond(user.loc),
@@ -0,0 +1,5 @@
author: "Goodstuff"
delete-after: True
changes:
- bugfix: "Fixes the crafting recipe for black carpet"
- bugfix: "Removed a random white dot on the black carpet sprite"
+11
View File
@@ -0,0 +1,11 @@
author: "CitadelStationBot"
delete-after: True
changes:
- rscadd: "New plasma medals have been added to the Captain's medal box. Don't get them too warm."
- imageadd: "New sprites for plasma medals."
- imageadd: "Icon and worn sprites for all medals and the lawyer's badge have been improved. Worn medals more closely match their icons."
- tweak: "The bone talisman is an accessory again, so it's not useless."
- imageadd: "It also has a new worn sprite, based on an arm band."
- imagedel: "Ties have been removed from accessories.dmi and vice versa. Same for
the explorer's webbing sprites that were in there. ties.dmi is now neck.dmi, and has sprites for scarves, ties, sthetoscopes, etc."
- tweak: "Examining an accessory now tells you how to use it."
@@ -0,0 +1,4 @@
author: "Xhuis"
delete-after: True
changes:
- tweak: "Defibrillator paddles will no longer stick to your hands, and will snap back onto the unit if you drop them somehow."
@@ -0,0 +1,4 @@
author: "oranges"
delete-after: True
changes:
- tweak: "Security minor and major crime descriptors are now a single line input, making it easier to add them"
@@ -0,0 +1,4 @@
author: "CitadelStationBot"
delete-after: True
changes:
- bugfix: "Cloning dismembered heads and brains now respects husking and other clone preventing disabilities."
@@ -0,0 +1,4 @@
author: "CitadelStationBot"
delete-after: True
changes:
- imageadd: "Glass tables are shinier"
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.
+3 -3
View File
@@ -1210,7 +1210,7 @@
#include "code\modules\clothing\masks\hailer.dm" #include "code\modules\clothing\masks\hailer.dm"
#include "code\modules\clothing\masks\miscellaneous.dm" #include "code\modules\clothing\masks\miscellaneous.dm"
#include "code\modules\clothing\masks\vg_masks.dm" #include "code\modules\clothing\masks\vg_masks.dm"
#include "code\modules\clothing\neck\ties.dm" #include "code\modules\clothing\neck\neck.dm"
#include "code\modules\clothing\outfits\ert.dm" #include "code\modules\clothing\outfits\ert.dm"
#include "code\modules\clothing\outfits\standard.dm" #include "code\modules\clothing\outfits\standard.dm"
#include "code\modules\clothing\shoes\bananashoes.dm" #include "code\modules\clothing\shoes\bananashoes.dm"
@@ -1235,12 +1235,12 @@
#include "code\modules\clothing\suits\utility.dm" #include "code\modules\clothing\suits\utility.dm"
#include "code\modules\clothing\suits\vg_suits.dm" #include "code\modules\clothing\suits\vg_suits.dm"
#include "code\modules\clothing\suits\wiz_robe.dm" #include "code\modules\clothing\suits\wiz_robe.dm"
#include "code\modules\clothing\under\accessories.dm"
#include "code\modules\clothing\under\color.dm" #include "code\modules\clothing\under\color.dm"
#include "code\modules\clothing\under\miscellaneous.dm" #include "code\modules\clothing\under\miscellaneous.dm"
#include "code\modules\clothing\under\pants.dm" #include "code\modules\clothing\under\pants.dm"
#include "code\modules\clothing\under\shorts.dm" #include "code\modules\clothing\under\shorts.dm"
#include "code\modules\clothing\under\syndicate.dm" #include "code\modules\clothing\under\syndicate.dm"
#include "code\modules\clothing\under\ties.dm"
#include "code\modules\clothing\under\trek.dm" #include "code\modules\clothing\under\trek.dm"
#include "code\modules\clothing\under\vg_under.dm" #include "code\modules\clothing\under\vg_under.dm"
#include "code\modules\clothing\under\jobs\civilian.dm" #include "code\modules\clothing\under\jobs\civilian.dm"
@@ -1495,8 +1495,8 @@
#include "code\modules\mining\equipment\lazarus_injector.dm" #include "code\modules\mining\equipment\lazarus_injector.dm"
#include "code\modules\mining\equipment\marker_beacons.dm" #include "code\modules\mining\equipment\marker_beacons.dm"
#include "code\modules\mining\equipment\mineral_scanner.dm" #include "code\modules\mining\equipment\mineral_scanner.dm"
#include "code\modules\mining\equipment\regenerative_core.dm"
#include "code\modules\mining\equipment\mining_tools.dm" #include "code\modules\mining\equipment\mining_tools.dm"
#include "code\modules\mining\equipment\regenerative_core.dm"
#include "code\modules\mining\equipment\resonator.dm" #include "code\modules\mining\equipment\resonator.dm"
#include "code\modules\mining\equipment\survival_pod.dm" #include "code\modules\mining\equipment\survival_pod.dm"
#include "code\modules\mining\equipment\vendor_items.dm" #include "code\modules\mining\equipment\vendor_items.dm"
+10
View File
@@ -0,0 +1,10 @@
diff a/tgstation.dme b/tgstation.dme (rejected hunks)
@@ -1169,7 +1169,7 @@
#include "code\modules\clothing\masks\gasmask.dm"
#include "code\modules\clothing\masks\hailer.dm"
#include "code\modules\clothing\masks\miscellaneous.dm"
-#include "code\modules\clothing\neck\ties.dm"
+#include "code\modules\clothing\neck\neck.dm"
#include "code\modules\clothing\outfits\ert.dm"
#include "code\modules\clothing\outfits\standard.dm"
#include "code\modules\clothing\shoes\bananashoes.dm"