"}
/obj/item/paper/fluff/awaymissions/snowdin/secnotice
name = "Security Notice"
- info = {"YOu have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital infomation is kept secure while the stationed crew obeys protocal. The picked
+ info = {"YOu have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital information is kept secure while the stationed crew obeys protocol. The picked
staff for this post have been pre-screened with no prior incidients on record, but incase of an issue you have been given a single holding cell and instructions to contact Central to terminate the
offending crewmember."}
/obj/item/paper/fluff/awaymissions/snowdin/mining
name = "Assignment Notice"
- info = {"This cold-ass planet is the new-age equivilant of striking gold. Huge deposits of plasma and literal streams of plasma run through the caverns under all this ice and we're here to mine it all.\
+ info = {"This cold-ass planet is the new-age equivalent of striking gold. Huge deposits of plasma and literal streams of plasma run through the caverns under all this ice and we're here to mine it all.\
Nanotrasen pays by the pound, so get minin' boys!"}
/obj/item/paper/crumpled/ruins/snowdin/lootstructures
name = "scribbled note"
- info = {"There's some ruins scattered along the cavern, their walls seem to be made of some sort of super-condensned mixture of ice and snow. We've already barricaded up the ones we've found so far,
+ info = {"There's some ruins scattered along the cavern, their walls seem to be made of some sort of super-condensed mixture of ice and snow. We've already barricaded up the ones we've found so far,
since we keep hearing some strange noises from inside. Besides, what sort of fool would wrecklessly run into ancient ruins full of monsters for some old gear, anyway?"}
/obj/item/paper/crumpled/ruins/snowdin/shovel
@@ -388,7 +389,7 @@
DELAY 30
SAY Nanotrasen is pleased to have you working in one of the many top-of-the-line research posts within the $%@!! sector!
DELAY 30
- SAY Further job assignment infomation can be found at your local security post! Have a secure day!
+ SAY Further job assignment information can be found at your local security post! Have a secure day!
DELAY 20;"}
/obj/item/disk/holodisk/snowdin/overrun
@@ -529,7 +530,7 @@
/obj/item/gun/ballistic/automatic/c20r/unrestricted = 16,
/obj/item/gun/magic/wand/resurrection/inert = 15,
/obj/item/gun/magic/wand/resurrection = 10,
- /obj/item/radio/uplink/old = 2,
+ /obj/item/uplink/old = 2,
/obj/item/book/granter/spell/charge = 12,
/obj/item/grenade/clusterbuster/spawner_manhacks = 15,
/obj/item/book/granter/spell/fireball = 10,
@@ -558,7 +559,7 @@
/obj/item/clothing/under/syndicate/coldres
name = "insulated tactical turtleneck"
- desc = "A non-descript and slightly suspicious-looking turtleneck with digital camouflage cargo pants. The interior has been padded with special insulation for both warmth and protection."
+ desc = "A nondescript and slightly suspicious-looking turtleneck with digital camouflage cargo pants. The interior has been padded with special insulation for both warmth and protection."
armor = list("melee" = 20, "bullet" = 10, "laser" = 0,"energy" = 5, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
cold_protection = CHEST|GROIN|ARMS|LEGS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm
index 8d0157ad86..42c9ab8202 100644
--- a/code/modules/cargo/bounties/special.dm
+++ b/code/modules/cargo/bounties/special.dm
@@ -1,6 +1,6 @@
/datum/bounty/item/alien_organs
name = "Alien Organs"
- description = "Nanotrasen is interested in studying Xenomorph biology. Ship a set of organs to be thouroughly compensated."
+ description = "Nanotrasen is interested in studying Xenomorph biology. Ship a set of organs to be thoroughly compensated."
reward = 25000
required_count = 3
wanted_types = list(/obj/item/organ/brain/alien, /obj/item/organ/alien, /obj/item/organ/body_egg/alien_embryo)
diff --git a/code/modules/cargo/bounties/virus.dm b/code/modules/cargo/bounties/virus.dm
index e046e09af2..8f078a2668 100644
--- a/code/modules/cargo/bounties/virus.dm
+++ b/code/modules/cargo/bounties/virus.dm
@@ -73,7 +73,7 @@
return A.totalStealth() == stat_value
/datum/bounty/virus/transmit
- stat_name = "transmittable"
+ stat_name = "transmissible"
/datum/bounty/virus/transmit/accepts_virus(V)
var/datum/disease/advance/A = V
diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm
index e493f96c6e..2113696e90 100644
--- a/code/modules/cargo/export_scanner.dm
+++ b/code/modules/cargo/export_scanner.dm
@@ -6,7 +6,7 @@
item_state = "radio"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
w_class = WEIGHT_CLASS_SMALL
siemens_coefficient = 1
var/obj/machinery/computer/cargo/cargo_console = null
diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm
index 28b55a2c8f..0d363f7132 100644
--- a/code/modules/cargo/exports/weapons.dm
+++ b/code/modules/cargo/exports/weapons.dm
@@ -69,29 +69,29 @@
unit_name = "pair"
message = "of handcuffs"
export_types = list(/obj/item/restraints/handcuffs)
-
+
// relics of lavaland
/datum/export/weapon/hierophant
cost = 40000
unit_name = "Hierophant Club"
export_types = list(/obj/item/hierophant_club)
-
+
/datum/export/weapon/lava
cost = 40000
unit_name = "Lava Staff"
export_types = list(/obj/item/lava_staff)
-
+
/datum/export/weapon/cleaving_saw
cost = 40000
unit_name = "Cleaving Saw"
export_types = list(/obj/item/melee/transforming/cleaving_saw)
-
+
/datum/export/weapon/mayhem
cost = 40000
unit_name = "Mayhem in a bottle"
export_types = list(/obj/item/mayhem)
-
+
/datum/export/weapon/blood_contract
cost = 40000
unit_name = "Blood Contract"
@@ -103,22 +103,22 @@
cost = 10000
unit_name = "Immortality Talisman"
export_types = list(/obj/item/immortality_talisman)
-
+
/datum/export/weapon/babel
cost = 10000
unit_name = "Book of Babel"
export_types = list(/obj/item/book_of_babel)
-
+
/datum/export/weapon/hook
cost = 10000
unit_name = "Meat hook"
export_types = list(/obj/item/gun/magic/hook)
-
+
/datum/export/weapon/shipbottle //the price for not breaking the bottle.
cost = 20000
unit_name = "Ship in a bottle"
export_types = list(/obj/item/ship_in_a_bottle)
-
+
/datum/export/weapon/tarot //price for sacraficing a very profitiable ally
cost = 20000
unit_name = "Tarot cards"
@@ -128,37 +128,37 @@
cost = 5000
unit_name = "Red Cube"
export_types = list(/obj/item/warp_cube/red)
-
+
/datum/export/weapon/blue //first half of telecube
cost = 5000
unit_name = "Blue Cube"
export_types = list(/obj/item/warp_cube)
-
+
/datum/export/weapon/wisplantern //thermals on lavaland
cost = 10000
unit_name = "Wisp Lantern"
export_types = list(/obj/item/wisp_lantern)
-
+
/datum/export/weapon/flight //if xenobiology ever reaches the point to get these without shuttle being called they deserve it
cost = 10000
- unit_name = "Strange Elixer"
+ unit_name = "Strange Elixir"
export_types = list(/obj/item/reagent_containers/glass/bottle/potion/flight)
-
+
/datum/export/weapon/cheart //is a very powerfull healing artifact in the robust hands
cost = 10000
unit_name = "Cursed Heart"
export_types = list(/obj/item/organ/heart/cursed/wizard)
-
+
/datum/export/weapon/ckatana
cost = 10000
unit_name = "Katana"
export_types = list(/obj/item/katana/cursed)
-
+
/datum/export/weapon/geye //xray
cost = 10000
unit_name = "God eye"
export_types = list(/obj/item/clothing/glasses/godeye)
-
+
/datum/export/weapon/spectral
cost = 10000
unit_name = "Spectral Sword"
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index cffd954b0e..e27cb8f56e 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -60,15 +60,6 @@
crate_name = "Biker Kit"
crate_type = /obj/structure/closet/crate/large
-/datum/supply_pack/emergency/droneshells
- name = "Drone Shell Crate"
- desc = "The station's little helpers. Contains three Drone Shells."
- cost = 1000
- contains = list(/obj/item/drone_shell,
- /obj/item/drone_shell,
- /obj/item/drone_shell)
- crate_name = "drone shell crate"
-
/datum/supply_pack/emergency/equipment
name = "Emergency Bot/Internals Crate"
desc = "Explosions got you down? These supplies are guaranteed to patch up holes, in stations and people alike! Comes with two floorbots, two medbots, five oxygen masks and five small oxygen tanks."
@@ -181,7 +172,7 @@
/datum/supply_pack/emergency/radiation
name = "Radiation Protection Crate"
- desc = "Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and geiger counter. We'll even throw in a bottle of vodka and some glasses too, considering the life-expectancy of people who order this."
+ desc = "Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and Geiger counter. We'll even throw in a bottle of vodka and some glasses too, considering the life-expectancy of people who order this."
cost = 1000
contains = list(/obj/item/clothing/head/radiation,
/obj/item/clothing/head/radiation,
@@ -225,7 +216,7 @@
/datum/supply_pack/emergency/weedcontrol
name = "Weed Control Crate"
- desc = "Keep those invasive species OUT. Contains a scythe, gasmask, and two anti-weed chemical grenades. Warrenty void if used on ambrosia. Requires Hydroponics access to open."
+ desc = "Keep those invasive species OUT. Contains a scythe, gasmask, and two anti-weed chemical grenades. Warranty void if used on ambrosia. Requires Hydroponics access to open."
cost = 1500
access = ACCESS_HYDROPONICS
contains = list(/obj/item/scythe,
@@ -631,7 +622,7 @@
/datum/supply_pack/engineering/shuttle_engine
name = "Shuttle Engine Crate"
- desc = "Through advanced bluespace-shenanigins, our engineers have managed to fit an entire shuttle engine into one tiny little crate. Requires CE access to open."
+ desc = "Through advanced bluespace-shenanigans, our engineers have managed to fit an entire shuttle engine into one tiny little crate. Requires CE access to open."
cost = 5000
access = ACCESS_CE
contains = list(/obj/structure/shuttle/engine/propulsion/burst/cargo)
@@ -1134,24 +1125,24 @@
desc = "Contains refills for medical vending machines."
cost = 2000
contains = list(/obj/item/vending_refill/medical,
- /obj/item/vending_refill/medical,
- /obj/item/vending_refill/medical)
+ /obj/item/vending_refill/wallmed)
crate_name = "medical vending crate"
/datum/supply_pack/medical/virus
name = "Virus Crate"
- desc = "Contains twelve different bottles, each filled with a different chemical compound, each useful for virology. Also includes seven beakers and syringes. Balled-up jeans not included. Requires CMO access to open."
+ desc = "Contains twelve different bottles, containing several viral samples for virology research. Also includes seven beakers and syringes. Balled-up jeans not included. Requires CMO access to open."
cost = 2500
access = ACCESS_CMO
contains = list(/obj/item/reagent_containers/glass/bottle/flu_virion,
/obj/item/reagent_containers/glass/bottle/cold,
- /obj/item/reagent_containers/glass/bottle/epiglottis_virion,
- /obj/item/reagent_containers/glass/bottle/liver_enhance_virion,
+ /obj/item/reagent_containers/glass/bottle/random_virus,
+ /obj/item/reagent_containers/glass/bottle/random_virus,
+ /obj/item/reagent_containers/glass/bottle/random_virus,
+ /obj/item/reagent_containers/glass/bottle/random_virus,
/obj/item/reagent_containers/glass/bottle/fake_gbs,
/obj/item/reagent_containers/glass/bottle/magnitis,
/obj/item/reagent_containers/glass/bottle/pierrot_throat,
/obj/item/reagent_containers/glass/bottle/brainrot,
- /obj/item/reagent_containers/glass/bottle/hallucigen_virion,
/obj/item/reagent_containers/glass/bottle/anxiety,
/obj/item/reagent_containers/glass/bottle/beesease,
/obj/item/storage/box/syringes,
@@ -1367,53 +1358,41 @@
/datum/supply_pack/service/vending/bartending
name = "Bartending Supply Crate"
- desc = "Bring on the booze with six vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!"
+ desc = "Bring on the booze with vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!"
cost = 2000
contains = list(/obj/item/vending_refill/boozeomat,
- /obj/item/vending_refill/boozeomat,
- /obj/item/vending_refill/boozeomat,
- /obj/item/vending_refill/coffee,
- /obj/item/vending_refill/coffee,
/obj/item/vending_refill/coffee,
/obj/item/book/granter/action/drink_fling)
crate_name = "bartending supply crate"
/datum/supply_pack/service/vending/cigarette
name = "Cigarette Supply Crate"
- desc = "Don't believe the reports - smoke today! Contains cigarette vending machine refills."
+ desc = "Don't believe the reports - smoke today! Contains a cigarette vending machine refill."
cost = 1500
- contains = list(/obj/item/vending_refill/cigarette,
- /obj/item/vending_refill/cigarette,
- /obj/item/vending_refill/cigarette)
+ contains = list(/obj/item/vending_refill/cigarette)
crate_name = "cigarette supply crate"
crate_type = /obj/structure/closet/crate
/datum/supply_pack/service/vending/games
name = "Games Supply Crate"
- desc = "Get your game on with these three game vending machine refills."
+ desc = "Get your game on with this game vending machine refill."
cost = 1000
- contains = list(/obj/item/vending_refill/games,
- /obj/item/vending_refill/games,
- /obj/item/vending_refill/games)
+ contains = list(/obj/item/vending_refill/games)
crate_name = "games supply crate"
crate_type = /obj/structure/closet/crate
/datum/supply_pack/service/vending/snack
name = "Snack Supply Crate"
- desc = "Three vending machine refills of cavity-bringin' goodness! The number one dentist recommended order!"
+ desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!"
cost = 1500
- contains = list(/obj/item/vending_refill/snack,
- /obj/item/vending_refill/snack,
- /obj/item/vending_refill/snack)
+ contains = list(/obj/item/vending_refill/snack)
crate_name = "snacks supply crate"
/datum/supply_pack/service/vending/cola
name = "Softdrinks Supply Crate"
- desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with these three soda machine refills, today!"
+ desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with this soda machine refill, today!"
cost = 1500
- contains = list(/obj/item/vending_refill/cola,
- /obj/item/vending_refill/cola,
- /obj/item/vending_refill/cola)
+ contains = list(/obj/item/vending_refill/cola)
crate_name = "soft drinks supply crate"
//////////////////////////////////////////////////////////////////////////////
@@ -1957,10 +1936,9 @@
/datum/supply_pack/costumes_toys/wardrobes/autodrobe
name = "Autodrobe Supply Crate"
- desc = "Autodrobe missing your favorite dress? Solve that issue today with these two autodrobe refills."
+ desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill."
cost = 1500
- contains = list(/obj/item/vending_refill/autodrobe,
- /obj/item/vending_refill/autodrobe)
+ contains = list(/obj/item/vending_refill/autodrobe)
crate_name = "autodrobe supply crate"
/datum/supply_pack/costumes_toys/wardrobes/cargo
@@ -2083,7 +2061,7 @@
/datum/supply_pack/misc/paper
name = "Bureaucracy Crate"
- desc = "High stacks of papers on your desk Are a big problem - make it Pea-sized with these bureacratic supplies! Contains six pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps."//that was too forced
+ desc = "High stacks of papers on your desk Are a big problem - make it Pea-sized with these bureaucratic supplies! Contains six pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps."//that was too forced
cost = 1500
contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled,
/obj/item/camera_film,
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index fdcb27ad75..2ae00f9348 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -217,7 +217,9 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
new /datum/admins(localhost_rank, ckey, 1, 1)
//preferences datum - also holds some persistent data for the client (because we may as well keep these datums to a minimum)
prefs = GLOB.preferences_datums[ckey]
- if(!prefs)
+ if(prefs)
+ prefs.parent = src
+ else
prefs = new /datum/preferences(src)
GLOB.preferences_datums[ckey] = prefs
prefs.last_ip = address //these are gonna be used for banning
@@ -465,12 +467,14 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
related_accounts_ip = ""
while(query_get_related_ip.NextRow())
related_accounts_ip += "[query_get_related_ip.item[1]], "
+ qdel(query_get_related_ip)
var/datum/DBQuery/query_get_related_cid = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE computerid = '[computer_id]' AND ckey != '[sql_ckey]'")
if(!query_get_related_cid.Execute())
return
related_accounts_cid = ""
while (query_get_related_cid.NextRow())
related_accounts_cid += "[query_get_related_cid.item[1]], "
+ qdel(query_get_related_cid)
var/admin_rank = "Player"
if (src.holder && src.holder.rank)
admin_rank = src.holder.rank.name
@@ -483,6 +487,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
var/new_player
var/datum/DBQuery/query_client_in_db = SSdbcore.NewQuery("SELECT 1 FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'")
if(!query_client_in_db.Execute())
+ qdel(query_client_in_db)
return
if(!query_client_in_db.NextRow())
if (CONFIG_GET(flag/panic_bunker) && !holder && !GLOB.deadmins[ckey])
@@ -496,6 +501,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
to_chat(src, "Sending you to [panic_name ? panic_name : panic_addr].")
winset(src, null, "command=.options")
src << link("[panic_addr]?redirect=1")
+ qdel(query_client_in_db)
qdel(src)
return
@@ -503,12 +509,17 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
account_join_date = sanitizeSQL(findJoinDate())
var/datum/DBQuery/query_add_player = SSdbcore.NewQuery("INSERT INTO [format_table_name("player")] (`ckey`, `firstseen`, `firstseen_round_id`, `lastseen`, `lastseen_round_id`, `ip`, `computerid`, `lastadminrank`, `accountjoindate`) VALUES ('[sql_ckey]', Now(), '[GLOB.round_id]', Now(), '[GLOB.round_id]', INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]', [account_join_date ? "'[account_join_date]'" : "NULL"])")
if(!query_add_player.Execute())
+ qdel(query_client_in_db)
+ qdel(query_add_player)
return
+ qdel(query_add_player)
if(!account_join_date)
account_join_date = "Error"
account_age = -1
+ qdel(query_client_in_db)
var/datum/DBQuery/query_get_client_age = SSdbcore.NewQuery("SELECT firstseen, DATEDIFF(Now(),firstseen), accountjoindate, DATEDIFF(Now(),accountjoindate) FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'")
if(!query_get_client_age.Execute())
+ qdel(query_get_client_age)
return
if(query_get_client_age.NextRow())
player_join_date = query_get_client_age.item[1]
@@ -523,17 +534,23 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
else
var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),'[account_join_date]')")
if(!query_datediff.Execute())
+ qdel(query_datediff)
return
if(query_datediff.NextRow())
account_age = text2num(query_datediff.item[1])
+ qdel(query_datediff)
+ qdel(query_get_client_age)
if(!new_player)
var/datum/DBQuery/query_log_player = SSdbcore.NewQuery("UPDATE [format_table_name("player")] SET lastseen = Now(), lastseen_round_id = '[GLOB.round_id]', ip = INET_ATON('[sql_ip]'), computerid = '[sql_computerid]', lastadminrank = '[sql_admin_rank]', accountjoindate = [account_join_date ? "'[account_join_date]'" : "NULL"] WHERE ckey = '[sql_ckey]'")
if(!query_log_player.Execute())
+ qdel(query_log_player)
return
+ qdel(query_log_player)
if(!account_join_date)
account_join_date = "Error"
var/datum/DBQuery/query_log_connection = SSdbcore.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`round_id`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')),'[world.port]','[GLOB.round_id]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')")
query_log_connection.Execute()
+ qdel(query_log_connection)
if(new_player)
player_age = -1
. = player_age
@@ -569,6 +586,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
var/lastcid
if (query_cidcheck.NextRow())
lastcid = query_cidcheck.item[1]
+ qdel(query_cidcheck)
var/oldcid = cidcheck[ckey]
if (oldcid)
@@ -642,16 +660,22 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
//check to see if we noted them in the last day.
var/datum/DBQuery/query_get_notes = SSdbcore.NewQuery("SELECT id FROM [format_table_name("messages")] WHERE type = 'note' AND targetckey = '[sql_ckey]' AND adminckey = '[sql_system_ckey]' AND timestamp + INTERVAL 1 DAY < NOW() AND deleted = 0")
if(!query_get_notes.Execute())
+ qdel(query_get_notes)
return
if(query_get_notes.NextRow())
+ qdel(query_get_notes)
return
+ qdel(query_get_notes)
//regardless of above, make sure their last note is not from us, as no point in repeating the same note over and over.
query_get_notes = SSdbcore.NewQuery("SELECT adminckey FROM [format_table_name("messages")] WHERE targetckey = '[sql_ckey]' AND deleted = 0 ORDER BY timestamp DESC LIMIT 1")
if(!query_get_notes.Execute())
+ qdel(query_get_notes)
return
if(query_get_notes.NextRow())
if (query_get_notes.item[1] == system_ckey)
+ qdel(query_get_notes)
return
+ qdel(query_get_notes)
create_message("note", ckey, system_ckey, message, null, null, 0, 0)
@@ -797,6 +821,8 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
if (isliving(mob))
var/mob/living/M = mob
M.update_damage_hud()
+ if (prefs.auto_fit_viewport)
+ fit_viewport()
/client/proc/generate_clickcatcher()
if(!void)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 5c6c0a8229..088c75a1b5 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -36,7 +36,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
//autocorrected this round, not that you'd need to check that.
- var/UI_style = "Midnight"
+ var/UI_style = null
var/buttons_locked = FALSE
var/hotkeys = FALSE
var/tgui_fancy = TRUE
@@ -121,6 +121,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/parallax
var/ambientocclusion = TRUE
+ var/auto_fit_viewport = FALSE
var/uplink_spawn_loc = UPLINK_PDA
@@ -133,9 +134,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
parent = C
custom_names["human"] = random_unique_name()
custom_names["ai"] = pick(GLOB.ai_names)
- custom_names["cyborg"] = pick(GLOB.ai_names)
+ custom_names["cyborg"] = DEFAULT_CYBORG_NAME
custom_names["clown"] = pick(GLOB.clown_names)
custom_names["mime"] = pick(GLOB.mime_names)
+ UI_style = GLOB.available_ui_styles[1]
if(istype(C))
if(!IsGuestKey(C.key))
load_path(C.ckey)
@@ -213,10 +215,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Special Names:
"
dat += "Backup Human Name: [custom_names["human"]] "
+ dat += "
"
dat += "Clown: [custom_names["clown"]] "
- dat += "Mime:[custom_names["mime"]]
"
+ dat += "Mime: [custom_names["mime"]]"
+ dat += "
"
dat += "AI: [custom_names["ai"]] "
- dat += "Cyborg: [custom_names["cyborg"]]
"
+ dat += "Cyborg: [custom_names["cyborg"]]"
+ dat += "
"
dat += "Chaplain religion: [custom_names["religion"]] "
dat += "Chaplain deity: [custom_names["deity"]]
"
@@ -457,24 +462,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
button_name = GHOST_OTHERS_SIMPLE_NAME
dat += "Ghosts of Others: [button_name]
"
-
- if (CONFIG_GET(flag/maprotation))
- var/p_map = preferred_map
- if (!p_map)
- p_map = "Default"
- if (config.defaultmap)
- p_map += " ([config.defaultmap.map_name])"
- else
- if (p_map in config.maplist)
- var/datum/map_config/VM = config.maplist[p_map]
- if (!VM)
- p_map += " (No longer exists)"
- else
- p_map = VM.map_name
- else
- p_map += " (No longer exists)"
- if(CONFIG_GET(flag/allow_map_voting))
- dat += "Preferred Map: [p_map]
"
+ dat += "
"
dat += "FPS: [clientfps]
"
@@ -493,6 +481,25 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "
"
dat += "Ambient Occlusion: [ambientocclusion ? "Enabled" : "Disabled"]
"
+ dat += "Fit Viewport: [auto_fit_viewport ? "Auto" : "Manual"]
"
+
+ if (CONFIG_GET(flag/maprotation))
+ var/p_map = preferred_map
+ if (!p_map)
+ p_map = "Default"
+ if (config.defaultmap)
+ p_map += " ([config.defaultmap.map_name])"
+ else
+ if (p_map in config.maplist)
+ var/datum/map_config/VM = config.maplist[p_map]
+ if (!VM)
+ p_map += " (No longer exists)"
+ else
+ p_map = VM.map_name
+ else
+ p_map += " (No longer exists)"
+ if(CONFIG_GET(flag/allow_map_voting))
+ dat += "Preferred Map: [p_map]
"
dat += ""
@@ -1101,11 +1108,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_age)
age = max(min( round(text2num(new_age)), AGE_MAX),AGE_MIN)
- if("metadata")
- var/new_metadata = input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , metadata) as message|null
- if(new_metadata)
- metadata = sanitize(copytext(new_metadata,1,MAX_MESSAGE_LEN))
-
/* if("hair")
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference","#"+hair_color) as color|null
if(new_hair)
@@ -1326,7 +1328,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
to_chat(user, "Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, 0-9, -, ' and .")
if("cyborg_name")
- var/new_cyborg_name = reject_bad_name( input(user, "Choose your character's cyborg name:", "Character Preference") as text|null, 1 )
+ var/raw_name = input(user, "Choose your character's cyborg name (Leave empty to use default naming scheme):", "Character Preference") as text|null
+ var/new_cyborg_name
+ if(!raw_name)
+ new_cyborg_name = DEFAULT_CYBORG_NAME
+ else
+ new_cyborg_name = reject_bad_name(raw_name,1 )
if(new_cyborg_name)
custom_names["cyborg"] = new_cyborg_name
else
@@ -1372,13 +1379,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if (!isnull(desiredfps))
clientfps = desiredfps
parent.fps = desiredfps
- else
- clientfps = 0
- parent.fps = 0
if("ui")
- var/pickedui = input(user, "Choose your UI style.", "Character Preference") as null|anything in list("Midnight", "Plasmafire", "Retro", "Slimecore", "Operative", "Clockwork")
+ var/pickedui = input(user, "Choose your UI style.", "Character Preference", UI_style) as null|anything in GLOB.available_ui_styles
if(pickedui)
UI_style = pickedui
+ if (parent && parent.mob && parent.mob.hud_used)
+ parent.mob.hud_used.update_ui_style(ui_style2icon(UI_style))
if("pda_style")
var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference", pda_style) as null|anything in GLOB.pda_styles
if(pickedPDAStyle)
@@ -1468,6 +1474,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
toggles ^= SOUND_ADMINHELP
if("announce_login")
toggles ^= ANNOUNCE_LOGIN
+ if("combohud_lighting")
+ toggles ^= COMBOHUD_LIGHTING
if("be_special")
var/be_special_type = href_list["be_special_type"]
@@ -1487,7 +1495,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("lobby_music")
toggles ^= SOUND_LOBBY
- if((toggles & SOUND_LOBBY) && user.client)
+ if((toggles & SOUND_LOBBY) && user.client && isnewplayer(user))
user.client.playtitlemusic()
else
user.stop_sound_channel(CHANNEL_LOBBYMUSIC)
@@ -1539,6 +1547,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/obj/screen/plane_master/game_world/PM = locate(/obj/screen/plane_master/game_world) in parent.screen
PM.backdrop(parent.mob)
+ if("auto_fit_viewport")
+ auto_fit_viewport = !auto_fit_viewport
+ if(auto_fit_viewport && parent)
+ parent.fit_viewport()
+
if("save")
save_preferences()
save_character()
@@ -1600,7 +1613,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(be_random_body)
random_character(gender)
- if(CONFIG_GET(flag/humans_need_surnames))
+ if(CONFIG_GET(flag/humans_need_surnames) && (pref_species.id == "human"))
var/firstspace = findtext(real_name, " ")
var/name_length = length(real_name)
if(!firstspace) //we need a surname
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index ad53f8f0dd..4c2cdbb074 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -131,6 +131,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["clientfps"] >> clientfps
S["parallax"] >> parallax
S["ambientocclusion"] >> ambientocclusion
+ S["auto_fit_viewport"] >> auto_fit_viewport
S["menuoptions"] >> menuoptions
S["enable_tips"] >> enable_tips
S["tip_delay"] >> tip_delay
@@ -151,7 +152,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//Sanitize
ooccolor = sanitize_ooccolor(sanitize_hexcolor(ooccolor, 6, 1, initial(ooccolor)))
lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog))
- UI_style = sanitize_inlist(UI_style, list("Midnight", "Plasmafire", "Retro", "Slimecore", "Operative", "Clockwork"), initial(UI_style))
+ UI_style = sanitize_inlist(UI_style, GLOB.available_ui_styles, GLOB.available_ui_styles[1])
hotkeys = sanitize_integer(hotkeys, 0, 1, initial(hotkeys))
tgui_fancy = sanitize_integer(tgui_fancy, 0, 1, initial(tgui_fancy))
tgui_lock = sanitize_integer(tgui_lock, 0, 1, initial(tgui_lock))
@@ -162,6 +163,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
clientfps = sanitize_integer(clientfps, 0, 1000, 0)
parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null)
ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion))
+ auto_fit_viewport = sanitize_integer(auto_fit_viewport, 0, 1, initial(auto_fit_viewport))
ghost_form = sanitize_inlist(ghost_form, GLOB.ghost_forms, initial(ghost_form))
ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit))
ghost_accs = sanitize_inlist(ghost_accs, GLOB.ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION)
@@ -213,6 +215,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["clientfps"], clientfps)
WRITE_FILE(S["parallax"], parallax)
WRITE_FILE(S["ambientocclusion"], ambientocclusion)
+ WRITE_FILE(S["auto_fit_viewport"], auto_fit_viewport)
WRITE_FILE(S["menuoptions"], menuoptions)
WRITE_FILE(S["enable_tips"], enable_tips)
WRITE_FILE(S["tip_delay"], tip_delay)
@@ -260,7 +263,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["features["mcolor"]"] , "#FFF")
//Character
- S["OOC_Notes"] >> metadata
S["real_name"] >> real_name
S["name_is_always_random"] >> be_random_name
S["body_is_always_random"] >> be_random_body
@@ -374,7 +376,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
update_character(needs_update, S) //needs_update == savefile_version if we need an update (positive integer)
//Sanitize
- metadata = sanitize_text(metadata, initial(metadata))
real_name = reject_bad_name(real_name)
if(!features["mcolor"] || features["mcolor"] == "#000")
features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
@@ -444,7 +445,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["version"] , SAVEFILE_VERSION_MAX) //load_character will sanitize any bad data, so assume up-to-date.)
//Character
- WRITE_FILE(S["OOC_Notes"] , metadata)
WRITE_FILE(S["real_name"] , real_name)
WRITE_FILE(S["name_is_always_random"] , be_random_name)
WRITE_FILE(S["body_is_always_random"] , be_random_body)
diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm
index 0bcfac811e..2f4922fddf 100644
--- a/code/modules/client/verbs/ooc.dm
+++ b/code/modules/client/verbs/ooc.dm
@@ -22,6 +22,8 @@
if(jobban_isbanned(src.mob, "OOC"))
to_chat(src, "You have been banned from OOC.")
return
+ if(QDELETED(src))
+ return
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
var/raw_msg = msg
@@ -56,21 +58,19 @@
if(prefs.unlock_content)
if(prefs.toggles & MEMBER_PUBLIC)
keyname = "[icon2html('icons/member_content.dmi', world, "blag")][keyname]"
-
+ //The linkify span classes and linkify=TRUE below make ooc text get clickable chat href links if you pass in something resembling a url
for(var/client/C in GLOB.clients)
if(C.prefs.chat_toggles & CHAT_OOC)
if(holder)
if(!holder.fakekey || C.holder)
if(check_rights_for(src, R_ADMIN))
- to_chat(C, "[CONFIG_GET(flag/allow_admin_ooccolor) && prefs.ooccolor ? "" :"" ]OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]")
+ to_chat(C, "[CONFIG_GET(flag/allow_admin_ooccolor) && prefs.ooccolor ? "" :"" ]OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]")
else
- to_chat(C, "OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]")
+ to_chat(C, "OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]")
else
- to_chat(C, "OOC: [holder.fakekey ? holder.fakekey : key]: [msg]")
- else if(is_mentor()) // Citadel Mentors
- to_chat(C, "OOC: [keyname]: [msg]") // hippie end
+ to_chat(C, "OOC: [holder.fakekey ? holder.fakekey : key]: [msg]")
else if(!(key in C.prefs.ignoring))
- to_chat(C, "OOC: [keyname]: [msg]")
+ to_chat(C, "OOC: [keyname]: [msg]")
/proc/toggle_ooc(toggle = null)
if(toggle != null) //if we're specifically en/disabling ooc
@@ -301,3 +301,49 @@ GLOBAL_VAR_INIT(normal_ooc_colour, OOC_COLOR)
set desc = "View the last round end report you've seen"
SSticker.show_roundend_report(src, TRUE)
+
+/client/verb/fit_viewport()
+ set name = "Fit Viewport"
+ set category = "OOC"
+ set desc = "Fit the width of the map window to match the viewport"
+
+ // Fetch aspect ratio
+ var/view_size = getviewsize(view)
+ var/aspect_ratio = view_size[1] / view_size[2]
+
+ // Calculate desired pixel width using window size and aspect ratio
+ var/sizes = params2list(winget(src, "mainwindow.split;mapwindow", "size"))
+ var/map_size = splittext(sizes["mapwindow.size"], "x")
+ var/height = text2num(map_size[2])
+ var/desired_width = round(height * aspect_ratio)
+ if (text2num(map_size[1]) == desired_width)
+ // Nothing to do
+ return
+
+ var/split_size = splittext(sizes["mainwindow.split.size"], "x")
+ var/split_width = text2num(split_size[1])
+
+ // Calculate and apply a best estimate
+ // +4 pixels are for the width of the splitter's handle
+ var/pct = 100 * (desired_width + 4) / split_width
+ winset(src, "mainwindow.split", "splitter=[pct]")
+
+ // Apply an ever-lowering offset until we finish or fail
+ var/delta
+ for(var/safety in 1 to 10)
+ var/after_size = winget(src, "mapwindow", "size")
+ map_size = splittext(after_size, "x")
+ var/got_width = text2num(map_size[1])
+
+ if (got_width == desired_width)
+ // success
+ return
+ else if (isnull(delta))
+ // calculate a probable delta value based on the difference
+ delta = 100 * (desired_width - got_width) / split_width
+ else if ((delta > 0 && got_width > desired_width) || (delta < 0 && got_width < desired_width))
+ // if we overshot, halve the delta and reverse direction
+ delta = -delta/2
+
+ pct += delta
+ winset(src, "mainwindow.split", "splitter=[pct]")
diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm
index 06e555bb32..6b273cb818 100644
--- a/code/modules/client/verbs/suicide.dm
+++ b/code/modules/client/verbs/suicide.dm
@@ -19,7 +19,7 @@
if(damagetype & SHAME)
adjustStaminaLoss(200)
suiciding = FALSE
- SendSignal(COMSIG_ADD_MOOD_EVENT, "shameful_suicide", /datum/mood_event/shameful_suicide)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "shameful_suicide", /datum/mood_event/shameful_suicide)
return
suicide_log()
@@ -219,7 +219,4 @@
if(!canmove || restrained()) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide
to_chat(src, "You can't commit suicide whilst restrained! ((You can type Ghost instead however.))")
return
-// if(has_brain_worms())
-// to_chat(src, "You can't bring yourself to commit suicide!")
-// return
return TRUE
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 9d4983ed57..e4cc477f11 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -170,7 +170,7 @@
for(var/V in typesof(chameleon_type))
if(ispath(V) && ispath(V, /obj/item))
var/obj/item/I = V
- if(chameleon_blacklist[V] || (initial(I.flags_1) & ABSTRACT_1) || !initial(I.icon_state))
+ if(chameleon_blacklist[V] || (initial(I.item_flags) & ABSTRACT) || !initial(I.icon_state))
continue
var/chameleon_item_name = "[initial(I.name)] ([initial(I.icon_state)])"
chameleon_list[chameleon_item_name] = I
@@ -405,7 +405,7 @@
/obj/item/clothing/head/chameleon/drone
// The camohat, I mean, holographic hat projection, is part of the
// drone itself.
- flags_1 = NODROP_1
+ item_flags = NODROP
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
// which means it offers no protection, it's just air and light
@@ -459,7 +459,7 @@
/obj/item/clothing/mask/chameleon/drone
//Same as the drone chameleon hat, undroppable and no protection
- flags_1 = NODROP_1
+ item_flags = NODROP
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
// Can drones use the voice changer part? Let's not find out.
vchange = 0
diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm
index bb2a489030..1dcaeb35fa 100644
--- a/code/modules/clothing/ears/_ears.dm
+++ b/code/modules/clothing/ears/_ears.dm
@@ -1,50 +1,50 @@
-
-//Ears: currently only used for headsets and earmuffs
-/obj/item/clothing/ears
- name = "ears"
- w_class = WEIGHT_CLASS_TINY
- throwforce = 0
- slot_flags = ITEM_SLOT_EARS
- resistance_flags = NONE
-
-/obj/item/clothing/ears/earmuffs
- name = "earmuffs"
- desc = "Protects your hearing from loud noises, and quiet ones as well."
- icon_state = "earmuffs"
- item_state = "earmuffs"
- strip_delay = 15
- equip_delay_other = 25
- resistance_flags = FLAMMABLE
-
-/obj/item/clothing/ears/earmuffs/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/earhealing)
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
-
-/obj/item/clothing/ears/headphones
- name = "headphones"
- desc = "Unce unce unce unce. Boop!"
- icon = 'icons/obj/clothing/accessories.dmi'
- icon_state = "headphones"
- item_state = "headphones"
- slot_flags = ITEM_SLOT_EARS | ITEM_SLOT_HEAD | ITEM_SLOT_NECK //Fluff item, put it whereever you want!
- actions_types = list(/datum/action/item_action/toggle_headphones)
- var/headphones_on = FALSE
-
-/obj/item/clothing/ears/headphones/Initialize()
- . = ..()
- update_icon()
-
-/obj/item/clothing/ears/headphones/update_icon()
- icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]"
- item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]"
-
-/obj/item/clothing/ears/headphones/proc/toggle(owner)
- headphones_on = !headphones_on
- update_icon()
- var/mob/living/carbon/human/H = owner
- if(istype(H))
- H.update_inv_ears()
- H.update_inv_neck()
- H.update_inv_head()
- to_chat(owner, "You turn the music [headphones_on? "on. Untz Untz Untz!" : "off."]")
+
+//Ears: currently only used for headsets and earmuffs
+/obj/item/clothing/ears
+ name = "ears"
+ w_class = WEIGHT_CLASS_TINY
+ throwforce = 0
+ slot_flags = ITEM_SLOT_EARS
+ resistance_flags = NONE
+
+/obj/item/clothing/ears/earmuffs
+ name = "earmuffs"
+ desc = "Protects your hearing from loud noises, and quiet ones as well."
+ icon_state = "earmuffs"
+ item_state = "earmuffs"
+ strip_delay = 15
+ equip_delay_other = 25
+ resistance_flags = FLAMMABLE
+
+/obj/item/clothing/ears/earmuffs/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/earhealing)
+ AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
+
+/obj/item/clothing/ears/headphones
+ name = "headphones"
+ desc = "Unce unce unce unce. Boop!"
+ icon = 'icons/obj/clothing/accessories.dmi'
+ icon_state = "headphones"
+ item_state = "headphones"
+ slot_flags = ITEM_SLOT_EARS | ITEM_SLOT_HEAD | ITEM_SLOT_NECK //Fluff item, put it whereever you want!
+ actions_types = list(/datum/action/item_action/toggle_headphones)
+ var/headphones_on = FALSE
+
+/obj/item/clothing/ears/headphones/Initialize()
+ . = ..()
+ update_icon()
+
+/obj/item/clothing/ears/headphones/update_icon()
+ icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]"
+ item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]"
+
+/obj/item/clothing/ears/headphones/proc/toggle(owner)
+ headphones_on = !headphones_on
+ update_icon()
+ var/mob/living/carbon/human/H = owner
+ if(istype(H))
+ H.update_inv_ears()
+ H.update_inv_neck()
+ H.update_inv_head()
+ to_chat(owner, "You turn the music [headphones_on? "on. Untz Untz Untz!" : "off."]")
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index c64ecc0e0f..bbb8d687d9 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -367,7 +367,7 @@
vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS
darkness_view = 8
scan_reagents = 1
- flags_1 = NODROP_1
+ item_flags = NODROP
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
resistance_flags = LAVA_PROOF | FIRE_PROOF
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 2d60c7d236..25e0dbe886 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -150,7 +150,7 @@
dog_fashion = null
/obj/item/clothing/head/helmet/roman
- name = "roman helmet"
+ name = "\improper Roman helmet"
desc = "An ancient helmet made of bronze and leather."
flags_inv = HIDEEARS|HIDEHAIR
flags_cover = HEADCOVERSEYES
@@ -165,13 +165,13 @@
desc = "An ancient helmet made of plastic and leather."
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
-/obj/item/clothing/head/helmet/roman/legionaire
- name = "roman legionaire helmet"
+/obj/item/clothing/head/helmet/roman/legionnaire
+ name = "\improper Roman legionnaire helmet"
desc = "An ancient helmet made of bronze and leather. Has a red crest on top of it."
icon_state = "roman_c"
item_state = "roman_c"
-/obj/item/clothing/head/helmet/roman/legionaire/fake
+/obj/item/clothing/head/helmet/roman/legionnaire/fake
desc = "An ancient helmet made of plastic and leather. Has a red crest on top of it."
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 18521b7dc9..faa3ebdb0f 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -100,7 +100,7 @@
/obj/item/clothing/head/beret/highlander
desc = "That was white fabric. Was."
- flags_1 = NODROP_1
+ item_flags = NODROP
dog_fashion = null //THIS IS FOR SLAUGHTER, NOT PUPPIES
//Security
@@ -136,7 +136,7 @@
/obj/item/clothing/head/beret/sec
name = "security beret"
- desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficent protection."
+ desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection."
icon_state = "beret_badge"
armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index d7a7e7f5e2..ba23338415 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -221,7 +221,7 @@
icon_state = "shamebrero"
item_state = "shamebrero"
desc = "Once it's on, it never comes off."
- flags_1 = NODROP_1
+ item_flags = NODROP
dog_fashion = null
/obj/item/clothing/head/cone
@@ -305,8 +305,8 @@
icon_state = "drfreeze_hat"
flags_inv = HIDEHAIR
-/obj/item/clothing/head/pharoah
- name = "pharoah hat"
+/obj/item/clothing/head/pharaoh
+ name = "pharaoh hat"
desc = "Walk like an Egyptian."
icon_state = "pharoah_hat"
icon_state = "pharoah_hat"
@@ -318,7 +318,7 @@
dynamic_hair_suffix = ""
/obj/item/clothing/head/nemes
- name = "headress of Nemes"
+ name = "headdress of Nemes"
desc = "Lavish space tomb not included."
icon_state = "nemes_headdress"
icon_state = "nemes_headdress"
@@ -344,4 +344,4 @@
if(prob(3))
M += pick(" Honh honh honh!"," Honh!"," Zut Alors!")
- return trim(M)
\ No newline at end of file
+ return trim(M)
diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm
index 0d78e11874..3f21780f15 100644
--- a/code/modules/clothing/masks/hailer.dm
+++ b/code/modules/clothing/masks/hailer.dm
@@ -3,7 +3,7 @@
/obj/item/clothing/mask/gas/sechailer
name = "security gas mask"
- desc = "A standard issue Security gas mask with integrated 'Compli-o-nator 3000' device. Plays over a dozen pre-recorded compliance phrases designed to get scumbags to stand still whilst you taze them. Do not tamper with the device."
+ desc = "A standard issue Security gas mask with integrated 'Compli-o-nator 3000' device. Plays over a dozen pre-recorded compliance phrases designed to get scumbags to stand still whilst you tase them. Do not tamper with the device."
actions_types = list(/datum/action/item_action/halt, /datum/action/item_action/adjust)
icon_state = "sechailer"
item_state = "sechailer"
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 667bc7fc78..c0d41aeb68 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -123,7 +123,7 @@
return message
/obj/item/clothing/mask/frog/cursed
- flags_1 = NODROP_1 //reee!!
+ item_flags = NODROP //reee!!
/obj/item/clothing/mask/frog/cursed/attack_self(mob/user)
return //no voicebox to alter.
diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm
index 37a06046b5..347fc5c2d7 100644
--- a/code/modules/clothing/outfits/event.dm
+++ b/code/modules/clothing/outfits/event.dm
@@ -26,5 +26,5 @@
var/obj/item/storage/backpack/bag = H.back
var/obj/item/a_gift/gift = new(H)
- while(bag.SendSignal(COMSIG_TRY_STORAGE_INSERT, gift, null, TRUE, FALSE))
+ while(SEND_SIGNAL(bag, COMSIG_TRY_STORAGE_INSERT, gift, null, TRUE, FALSE))
gift = new(H)
diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm
index 88752f7415..88b51963e5 100644
--- a/code/modules/clothing/outfits/standard.dm
+++ b/code/modules/clothing/outfits/standard.dm
@@ -182,11 +182,11 @@
for(var/obj/item/briefcase_item in sec_briefcase)
qdel(briefcase_item)
for(var/i = 3 to 0 step -1)
- sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/stack/spacecash/c1000, null, TRUE, TRUE)
- sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/energy/kinetic_accelerator/crossbow, null, TRUE, TRUE)
- sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/ballistic/revolver/mateba, null, TRUE, TRUE)
- sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE)
- sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/plastic/x4, null, TRUE, TRUE)
+ SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/stack/spacecash/c1000, null, TRUE, TRUE)
+ SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/energy/kinetic_accelerator/crossbow, null, TRUE, TRUE)
+ SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/ballistic/revolver/mateba, null, TRUE, TRUE)
+ SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE)
+ SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/plastic/x4, null, TRUE, TRUE)
var/obj/item/pda/heads/pda = H.belt
pda.owner = H.real_name
diff --git a/code/modules/clothing/outfits/vr.dm b/code/modules/clothing/outfits/vr.dm
index 48b69c9568..cd8930641f 100644
--- a/code/modules/clothing/outfits/vr.dm
+++ b/code/modules/clothing/outfits/vr.dm
@@ -27,7 +27,7 @@
/datum/outfit/vr/syndicate/post_equip(mob/living/carbon/human/H)
. = ..()
- var/obj/item/radio/uplink/U = new /obj/item/radio/uplink/nuclear_restricted(H, H.key, 80)
+ var/obj/item/uplink/U = new /obj/item/uplink/nuclear_restricted(H, H.key, 80)
H.equip_to_slot_or_del(U, SLOT_IN_BACKPACK)
var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H)
W.implant(H)
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 9f0d8358ac..c81505d8e8 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -1,5 +1,5 @@
/obj/item/clothing/shoes/proc/step_action() //this was made to rewrite clown shoes squeaking
- SendSignal(COMSIG_SHOES_STEP_ACTION)
+ SEND_SIGNAL(src, COMSIG_SHOES_STEP_ACTION)
/obj/item/clothing/shoes/sneakers/mime
name = "mime shoes"
@@ -64,7 +64,7 @@
/obj/item/clothing/shoes/galoshes/dry/step_action()
var/turf/open/t_loc = get_turf(src)
- t_loc.SendSignal(COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY)
+ SEND_SIGNAL(t_loc, COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY)
/obj/item/clothing/shoes/clown_shoes
desc = "The prankster's standard-issue clowning shoes. Damn, they're huge!"
@@ -82,12 +82,12 @@
/obj/item/clothing/shoes/clown_shoes/equipped(mob/user, slot)
. = ..()
if(user.mind && user.mind.assigned_role == "Clown")
- user.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "noshoes")
+ SEND_SIGNAL(user, COMSIG_CLEAR_MOOD_EVENT, "noshoes")
/obj/item/clothing/shoes/clown_shoes/dropped(mob/user)
. = ..()
if(user.mind && user.mind.assigned_role == "Clown")
- user.SendSignal(COMSIG_ADD_MOOD_EVENT, "noshoes", /datum/mood_event/noshoes)
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "noshoes", /datum/mood_event/noshoes)
/obj/item/clothing/shoes/clown_shoes/jester
name = "jester shoes"
@@ -157,7 +157,7 @@
icon_state = "cultalt"
/obj/item/clothing/shoes/cult/alt/ghost
- flags_1 = NODROP_1|DROPDEL_1
+ item_flags = NODROP | DROPDEL
/obj/item/clothing/shoes/cyborg
name = "cyborg boots"
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index b3b74446ec..d0820304fe 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -98,7 +98,7 @@
teleporting = 0
for(var/obj/item/I in user.held_items)
if(I in hands_nodrop)
- I.flags_1 &= ~NODROP_1
+ I.item_flags &= ~NODROP
if(camera)
camera.remove_target_ui()
camera.forceMove(user)
@@ -133,9 +133,9 @@
hands_nodrop = list()
for(var/obj/item/I in user.held_items)
- if(!(I.flags_1 & NODROP_1))
+ if(!(I.item_flags & NODROP))
hands_nodrop += I
- I.flags_1 |= NODROP_1
+ I.item_flags |= NODROP
user.animate_movement = NO_STEPS
user.changeNext_move(8 + phase_in_ds)
user.notransform = 1
@@ -194,9 +194,9 @@
if(user.head && istype(user.head, /obj/item/clothing/head/helmet/space/chronos))
to_chat(user, "\[ ok \] Mounting /dev/helm")
helmet = user.head
- helmet.flags_1 |= NODROP_1
+ helmet.item_flags |= NODROP
helmet.suit = src
- src.flags_1 |= NODROP_1
+ src.item_flags |= NODROP
to_chat(user, "\[ ok \] Starting brainwave scanner")
to_chat(user, "\[ ok \] Starting ui display driver")
to_chat(user, "\[ ok \] Initializing chronowalk4-view")
@@ -215,7 +215,7 @@
activating = 1
var/mob/living/carbon/human/user = src.loc
var/hard_landing = teleporting && force
- src.flags_1 &= ~NODROP_1
+ item_flags &= ~NODROP
cooldown = world.time + cooldowntime * 1.5
activated = 0
activating = 0
@@ -236,7 +236,7 @@
to_chat(user, "\[ ok \] Unmounting /dev/helmet")
to_chat(user, "logout")
if(helmet)
- helmet.flags_1 &= ~NODROP_1
+ helmet.item_flags &= ~NODROP
helmet.suit = null
helmet = null
if(camera)
diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm
index d117bf482b..176bc81665 100644
--- a/code/modules/clothing/spacesuits/flightsuit.dm
+++ b/code/modules/clothing/spacesuits/flightsuit.dm
@@ -302,7 +302,7 @@
if(suit && !suit.deployedshoes && (brake || stabilizer))
brake = FALSE
stabilizer = FALSE
- usermessage("Warning: Sensor data is not being recieved from flight shoes. Stabilizers and airbrake modules deactivated!", "boldwarning")
+ usermessage("Warning: Sensor data is not being received from flight shoes. Stabilizers and airbrake modules deactivated!", "boldwarning")
/obj/item/flightpack/process()
@@ -897,7 +897,7 @@
usermessage("You're already wearing something on your back!", "boldwarning")
return FALSE
user.equip_to_slot_if_possible(pack,SLOT_BACK,0,0,1)
- pack.flags_1 |= NODROP_1
+ pack.item_flags |= NODROP
resync()
user.visible_message("A [pack.name] extends from [user]'s [name] and clamps to [user.p_their()] back!")
user.update_inv_wear_suit()
@@ -911,7 +911,7 @@
return FALSE
if(pack.flight && forced)
pack.disable_flight(1)
- pack.flags_1 &= ~NODROP_1
+ pack.item_flags &= ~NODROP
resync()
if(user)
user.transferItemToLoc(pack, src, TRUE)
@@ -935,14 +935,14 @@
usermessage("You're already wearing something on your feet!", "boldwarning")
return FALSE
user.equip_to_slot_if_possible(shoes,SLOT_SHOES,0,0,1)
- shoes.flags_1 |= NODROP_1
+ shoes.item_flags |= NODROP
user.visible_message("[user]'s [name] extends a pair of [shoes.name] over [user.p_their()] feet!")
user.update_inv_wear_suit()
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
deployedshoes = TRUE
/obj/item/clothing/suit/space/hardsuit/flightsuit/proc/retract_flightshoes(forced = FALSE)
- shoes.flags_1 &= ~NODROP_1
+ shoes.item_flags &= ~NODROP
playsound(src, 'sound/mecha/mechmove03.ogg', 50, 1)
if(user)
user.transferItemToLoc(shoes, src, TRUE)
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 0667f2be6f..2e5896098f 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -713,7 +713,7 @@
icon_state = "ert_medical"
item_state = "ert_medical"
item_color = "ert_medical"
- flags_1 = NODROP_1 //Dont want people changing into the other teams gear
+ item_flags = NODROP //Dont want people changing into the other teams gear
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf
armor = list("melee" = 0, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 95)
slowdown = 0
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index f3975d1f81..a4b82c8234 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -165,7 +165,7 @@ Contains:
item_color = "ert_commander"
armor = list("melee" = 65, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80)
strip_delay = 130
- flags_1 = NODROP_1
+ item_flags = NODROP
brightness_on = 7
/obj/item/clothing/suit/space/hardsuit/ert
@@ -265,7 +265,7 @@ Contains:
armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy as a space carp
brightness_on = 0 //luminosity when on
actions_types = list()
- flags_1 = NODROP_1
+ item_flags = NODROP
/obj/item/clothing/suit/space/hardsuit/carp
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index ea300aaf13..f73ca30fb0 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -53,7 +53,7 @@
/obj/item/clothing/suit/armor/hos/trenchcoat
name = "armored trenchoat"
- desc = "A trenchcoat enchanced with a special lightweight kevlar. The epitome of tactical plainclothes."
+ desc = "A trenchcoat enhanced with a special lightweight kevlar. The epitome of tactical plainclothes."
icon_state = "hostrench"
item_state = "hostrench"
flags_inv = 0
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index d38c625ee2..1c24ee17a7 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -2,7 +2,7 @@
/obj/item/clothing/head/bio_hood
name = "bio hood"
icon_state = "bio"
- desc = "A hood that protects the head and face from biological comtaminants."
+ desc = "A hood that protects the head and face from biological contaminants."
permeability_coefficient = 0.01
clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 80, "fire" = 30, "acid" = 100)
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index 8b87cf6f6e..85767852e4 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -15,7 +15,7 @@
icon_state = "golhood"
desc = "A hood for a cloak."
body_parts_covered = HEAD
- flags_1 = NODROP_1
+ item_flags = NODROP
flags_inv = HIDEHAIR|HIDEEARS
/obj/item/clothing/neck/cloak/suicide_act(mob/user)
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 1b28c71c4b..a598bd0959 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -17,13 +17,13 @@
item_state = "labcoat_cmo"
/obj/item/clothing/suit/toggle/labcoat/emt
- name = "EMT's jacket"
+ name = "\improper EMT's jacket"
desc = "A dark blue jacket with reflective strips for emergency medical technicians."
icon_state = "labcoat_emt"
item_state = "labcoat_cmo"
/obj/item/clothing/suit/toggle/labcoat/mad
- name = "\improper The Mad's labcoat"
+ name = "\proper The Mad's labcoat"
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
icon_state = "labgreen"
item_state = "labgreen"
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index f6cb6a44ad..112a2790af 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -222,7 +222,7 @@
desc = "Forced to live on your shameful acting as a fake Mexican, you and your poncho have grown inseparable. Literally."
icon_state = "ponchoshame"
item_state = "ponchoshame"
- flags_1 = NODROP_1
+ item_flags = NODROP
/obj/item/clothing/suit/whitedress
name = "white dress"
@@ -311,7 +311,7 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/suit/security/officer/russian
- name = "russian officer's jacket"
+ name = "\improper Russian officer's jacket"
desc = "This jacket is for those special occasions when a russian officer isn't required to wear their armor."
icon_state = "officertanjacket"
item_state = "officertanjacket"
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 0ac6dba14e..59f7a1c387 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -81,7 +81,7 @@
/obj/item/clothing/suit/wizrobe/yellow
name = "yellow wizard robe"
- desc = "A magnificant yellow gem-lined robe that seems to radiate power."
+ desc = "A magnificent yellow gem-lined robe that seems to radiate power."
icon_state = "yellowwizard"
item_state = "yellowwizrobe"
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index 235eac6704..8d250ab766 100644
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -14,7 +14,7 @@
/obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user)
GET_COMPONENT(storage, /datum/component/storage)
if(storage)
- if(U.SendSignal(COMSIG_CONTAINS_STORAGE))
+ if(SEND_SIGNAL(U, COMSIG_CONTAINS_STORAGE))
return FALSE
U.TakeComponent(storage)
detached_pockets = storage
diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm
index afb9bff1c1..324c16fec7 100644
--- a/code/modules/clothing/under/color.dm
+++ b/code/modules/clothing/under/color.dm
@@ -22,7 +22,7 @@
resistance_flags = NONE
/obj/item/clothing/under/color/black/ghost
- flags_1 = NODROP_1|DROPDEL_1
+ item_flags = NODROP | DROPDEL
/obj/item/clothing/under/color/grey
name = "grey jumpsuit"
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 8c85f414e6..57ead15de8 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -38,7 +38,7 @@
can_adjust = FALSE
/obj/item/clothing/under/roman
- name = "roman armor"
+ name = "\improper Roman armor"
desc = "Ancient Roman armor. Made of metallic and leather straps."
icon_state = "roman"
item_color = "roman"
@@ -388,7 +388,7 @@
/obj/item/clothing/under/kilt/highlander
desc = "You're the only one worthy of this kilt."
- flags_1 = NODROP_1
+ item_flags = NODROP
/obj/item/clothing/under/sexymime
name = "sexy mime outfit"
@@ -667,7 +667,7 @@
icon = 'icons/obj/device.dmi'
/obj/item/clothing/under/rank/security/navyblue/russian
- name = "russian officer's uniform"
+ name = "\improper Russian officer's uniform"
desc = "The latest in fashionable russian outfits."
icon_state = "hostanclothes"
item_state = "hostanclothes"
diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm
index 7d309bd9c7..ea1db981e5 100644
--- a/code/modules/crafting/craft.dm
+++ b/code/modules/crafting/craft.dm
@@ -100,6 +100,7 @@
.["other"][I.type] += S.amount
else if(I.tool_behaviour)
.["tool_behaviour"] += I.tool_behaviour
+ .["other"][I.type] += 1
else
if(istype(I, /obj/item/reagent_containers))
var/obj/item/reagent_containers/RC = I
@@ -182,7 +183,7 @@
After its done loop over deletion list and delete all the shit that wasnt taken by parts loop
- del_reqs return the list of parts resulting object will recieve as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already
+ del_reqs return the list of parts resulting object will receive as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already
*/
/datum/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, mob/user)
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index d17090816c..a97758e294 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -40,8 +40,8 @@
return
if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up.
- if(I.loc.SendSignal(COMSIG_CONTAINS_STORAGE)) //in a container.
- I.loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, I, src)
+ if(SEND_SIGNAL(I.loc, COMSIG_CONTAINS_STORAGE)) //in a container.
+ SEND_SIGNAL(I.loc, COMSIG_TRY_STORAGE_TAKE, I, src)
if(!user.dropItemToGround(I))
return
diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm
index 5f4603e35e..50a845a689 100644
--- a/code/modules/detectivework/footprints_and_rag.dm
+++ b/code/modules/detectivework/footprints_and_rag.dm
@@ -12,7 +12,7 @@
w_class = WEIGHT_CLASS_TINY
icon = 'icons/obj/toy.dmi'
icon_state = "rag"
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
container_type = OPENCONTAINER
amount_per_transfer_from_this = 5
possible_transfer_amounts = list()
@@ -46,5 +46,5 @@
user.visible_message("[user] starts to wipe down [A] with [src]!", "You start to wipe down [A] with [src]...")
if(do_after(user,30, target = A))
user.visible_message("[user] finishes wiping off [A]!", "You finish wiping off [A].")
- A.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
+ SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
return
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index c323f1edf2..e8847adb11 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -11,7 +11,8 @@
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
- flags_1 = CONDUCT_1 | NOBLUDGEON_1
+ flags_1 = CONDUCT_1
+ item_flags = NOBLUDGEON
slot_flags = ITEM_SLOT_BELT
var/scanning = 0
var/list/log = list()
@@ -200,4 +201,4 @@
return
to_chat(user, "Scanner Report")
for(var/iterLog in log)
- to_chat(user, iterLog)
\ No newline at end of file
+ to_chat(user, iterLog)
diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm
index 745e8a6ac3..89a84d3494 100644
--- a/code/modules/events/aurora_caelus.dm
+++ b/code/modules/events/aurora_caelus.dm
@@ -14,8 +14,8 @@
announceWhen = 1
startWhen = 9
endWhen = 50
- var/list/aurora_colors = list("#A2FF80", "#A2FF8B", "#A2FF96", "#A2FFA5", "#A2FFB6", "#A2FFC7", "#A2FFDE")
- var/aurora_progress = 0 //this cycles from 1 to 7, slowly changing colors from gentle green to gentle blue
+ var/list/aurora_colors = list("#A2FF80", "#A2FF8B", "#A2FF96", "#A2FFA5", "#A2FFB6", "#A2FFC7", "#A2FFDE", "#A2FFEE")
+ var/aurora_progress = 0 //this cycles from 1 to 8, slowly changing colors from gentle green to gentle blue
/datum/round_event/aurora_caelus/announce()
priority_announce("[station_name()]: A harmless cloud of ions is approaching your station, and will exhaust their energy battering the hull. Nanotrasen has approved a short break for all employees to relax and observe this very rare event. During this time, starlight will be bright but gentle, shifting between quiet green and blue colors. Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. We hope you enjoy the lights.",
diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm
index 81e93244ea..f09c0481f6 100644
--- a/code/modules/events/disease_outbreak.dm
+++ b/code/modules/events/disease_outbreak.dm
@@ -61,7 +61,7 @@
else
D = new virus_type()
else
- D = make_virus(max_severity, max_severity)
+ D = new /datum/disease/advance/random(max_severity, max_severity)
D.carrier = TRUE
H.ForceContractDisease(D, FALSE, TRUE)
@@ -73,23 +73,3 @@
message_admins("An event has triggered a random advanced virus outbreak on [ADMIN_LOOKUPFLW(H)]! It has these symptoms: [english_list(name_symptoms)]")
log_game("An event has triggered a random advanced virus outbreak on [key_name(H)]! It has these symptoms: [english_list(name_symptoms)]")
break
-
-/datum/round_event/disease_outbreak/proc/make_virus(max_symptoms, max_level)
- if(max_symptoms > VIRUS_SYMPTOM_LIMIT)
- max_symptoms = VIRUS_SYMPTOM_LIMIT
- var/datum/disease/advance/A = new /datum/disease/advance()
- var/list/datum/symptom/possible_symptoms = list()
- for(var/symptom in subtypesof(/datum/symptom))
- var/datum/symptom/S = symptom
- if(initial(S.level) > max_level)
- continue
- if(initial(S.level) <= 0) //unobtainable symptoms
- continue
- possible_symptoms += S
- for(var/i in 1 to max_symptoms)
- var/datum/symptom/chosen_symptom = pick_n_take(possible_symptoms)
- if(chosen_symptom)
- var/datum/symptom/S = new chosen_symptom
- A.symptoms += S
- A.Refresh() //just in case someone already made and named the same disease
- return A
diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm
index 180589b4f1..a6e08fbd8c 100644
--- a/code/modules/events/wizard/curseditems.dm
+++ b/code/modules/events/wizard/curseditems.dm
@@ -50,7 +50,7 @@
var/obj/item/I = new J //dumb but required because of byond throwing a fit anytime new gets too close to a list
H.dropItemToGround(H.get_item_by_slot(i), TRUE)
H.equip_to_slot_or_del(I, i)
- I.flags_1 |= NODROP_1 | DROPDEL_1
+ I.item_flags |= NODROP | DROPDEL
I.name = "cursed " + I.name
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm
index 08cfe7aeea..d94ee0e212 100644
--- a/code/modules/events/wizard/rpgloot.dm
+++ b/code/modules/events/wizard/rpgloot.dm
@@ -16,7 +16,7 @@
GET_COMPONENT_FROM(STR, /datum/component/storage, S)
if(prob(upgrade_scroll_chance) && S.contents.len < STR.max_items && !S.invisibility)
var/obj/item/upgradescroll/scroll = new
- S.SendSignal(COMSIG_TRY_STORAGE_INSERT, scroll, null, TRUE, TRUE)
+ SEND_SIGNAL(S, COMSIG_TRY_STORAGE_INSERT, scroll, null, TRUE, TRUE)
upgrade_scroll_chance = max(0,upgrade_scroll_chance-100)
upgrade_scroll_chance += 25
@@ -77,7 +77,7 @@
attached = null
/datum/rpg_loot/proc/randomise()
- var/static/list/prefixespositive = list("greater", "major", "blessed", "superior", "enpowered", "honed", "true", "glorious", "robust")
+ var/static/list/prefixespositive = list("greater", "major", "blessed", "superior", "empowered", "honed", "true", "glorious", "robust")
var/static/list/prefixesnegative = list("lesser", "minor", "blighted", "inferior", "enfeebled", "rusted", "unsteady", "tragic", "gimped")
var/static/list/suffixes = list("orc slaying", "elf slaying", "corgi slaying", "strength", "dexterity", "constitution", "intelligence", "wisdom", "charisma", "the forest", "the hills", "the plains", "the sea", "the sun", "the moon", "the void", "the world", "the fool", "many secrets", "many tales", "many colors", "rending", "sundering", "the night", "the day")
diff --git a/code/modules/fields/gravity.dm b/code/modules/fields/gravity.dm
new file mode 100644
index 0000000000..8b16bb6487
--- /dev/null
+++ b/code/modules/fields/gravity.dm
@@ -0,0 +1,17 @@
+/datum/proximity_monitor/advanced/gravity
+ name = "modified gravity zone"
+ setup_field_turfs = TRUE
+ var/gravity_value = 0
+ var/list/grav_components = list()
+ field_shape = FIELD_SHAPE_RADIUS_SQUARE
+
+/datum/proximity_monitor/advanced/gravity/setup_field_turf(turf/T)
+ . = ..()
+ grav_components[T] = T.AddComponent(/datum/component/forced_gravity,gravity_value)
+
+/datum/proximity_monitor/advanced/gravity/cleanup_field_turf(turf/T)
+ . = ..()
+ var/datum/component/forced_gravity/G = grav_components[T]
+ grav_components -= T
+ if(G)
+ qdel(G)
\ No newline at end of file
diff --git a/code/modules/fields/turf_objects.dm b/code/modules/fields/turf_objects.dm
index 7d7454f46a..d37036d83c 100644
--- a/code/modules/fields/turf_objects.dm
+++ b/code/modules/fields/turf_objects.dm
@@ -6,7 +6,7 @@
icon_state = null
alpha = 0
invisibility = INVISIBILITY_ABSTRACT
- flags_1 = ABSTRACT_1|ON_BORDER_1
+ flags_1 = ON_BORDER_1
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/datum/proximity_monitor/advanced/parent = null
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 1ade5070a7..a21747837b 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -915,7 +915,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
/datum/hallucination/fake_alert/New(mob/living/carbon/C, forced = TRUE, specific, duration = 150)
set waitfor = FALSE
..()
- var/alert_type = pick("not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","weightless","fire","locked","hacked","temphot","tempcold","pressure")
+ var/alert_type = pick("not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","gravity","fire","locked","hacked","temphot","tempcold","pressure")
if(specific)
alert_type = specific
feedback_details += "Type: [alert_type]"
@@ -937,7 +937,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
target.throw_alert(alert_type, /obj/screen/alert/fat, override = TRUE)
else
target.throw_alert(alert_type, /obj/screen/alert/starving, override = TRUE)
- if("weightless")
+ if("gravity")
target.throw_alert(alert_type, /obj/screen/alert/weightless, override = TRUE)
if("fire")
target.throw_alert(alert_type, /obj/screen/alert/fire, override = TRUE)
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index dc903dce85..d84deb8132 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -250,6 +250,11 @@
list_reagents = list("beer" = 30)
foodtype = GRAIN | ALCOHOL
+/obj/item/reagent_containers/food/drinks/beer/light
+ name = "Carp Lite"
+ desc = "Brewed with \"Pure Ice Asteroid Spring Water\"."
+ list_reagents = list("light_beer" = 30)
+
/obj/item/reagent_containers/food/drinks/ale
name = "Magm-Ale"
desc = "A true dorf's drink of choice."
diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm
index 375ce80f96..f9d9a3d85a 100644
--- a/code/modules/food_and_drinks/food.dm
+++ b/code/modules/food_and_drinks/food.dm
@@ -23,15 +23,15 @@
if(foodtype & H.dna.species.toxic_food)
to_chat(H,"What the hell was that thing?!")
H.adjust_disgust(25 + 30 * fraction)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "toxic_food", /datum/mood_event/disgusting_food)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "toxic_food", /datum/mood_event/disgusting_food)
else if(foodtype & H.dna.species.disliked_food)
to_chat(H,"That didn't taste very good...")
H.adjust_disgust(11 + 15 * fraction)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "gross_food", /datum/mood_event/gross_food)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "gross_food", /datum/mood_event/gross_food)
else if(foodtype & H.dna.species.liked_food)
to_chat(H,"I love this taste!")
H.adjust_disgust(-5 + -2.5 * fraction)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "fav_food", /datum/mood_event/favorite_food)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "fav_food", /datum/mood_event/favorite_food)
else
if(foodtype & H.dna.species.toxic_food)
to_chat(H, "You don't feel so good...")
diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm
index 3df4ca4bd0..e98aae37e3 100644
--- a/code/modules/food_and_drinks/food/customizables.dm
+++ b/code/modules/food_and_drinks/food/customizables.dm
@@ -118,8 +118,8 @@
if(INGREDIENTS_STACKPLUSTOP)
filling.pixel_x = rand(-1,1)
filling.pixel_y = 2 * ingredients.len - 1
- if(our_overlays)
- our_overlays.Cut(ingredients.len) //???, add overlay calls later in this proc will queue the compile if necessary
+ if(overlays)
+ overlays -= overlays[ingredients.len]
var/mutable_appearance/TOP = mutable_appearance(icon, "[icon_state]_top")
TOP.pixel_y = 2 * ingredients.len + 3
add_overlay(filling)
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 85371e0875..a74c7c6f69 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -109,7 +109,7 @@
M.satiety -= junkiness
playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
if(reagents.total_volume)
- SendSignal(COMSIG_FOOD_EATEN, M, user)
+ SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user)
var/fraction = min(bitesize / reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
reagents.trans_to(M, bitesize)
diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm
index 01105cf6d3..80aa588bae 100644
--- a/code/modules/food_and_drinks/food/snacks_pastry.dm
+++ b/code/modules/food_and_drinks/food/snacks_pastry.dm
@@ -406,8 +406,8 @@
name = "stack of pancakes"
else
name = initial(name)
- if(contents.len < LAZYLEN(our_overlays))
- cut_overlay(our_overlays[our_overlays.len])
+ if(contents.len < LAZYLEN(overlays))
+ overlays-=overlays[overlays.len]
/obj/item/reagent_containers/food/snacks/pancakes/examine(mob/user)
var/ingredients_listed = ""
diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm
index 5efcb98faf..04177783e6 100644
--- a/code/modules/food_and_drinks/food/snacks_pie.dm
+++ b/code/modules/food_and_drinks/food/snacks_pie.dm
@@ -56,7 +56,7 @@
if(!H.creamed) // one layer at a time
H.add_overlay(creamoverlay)
H.creamed = TRUE
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "creampie", /datum/mood_event/creampie)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "creampie", /datum/mood_event/creampie)
qdel(src)
/obj/item/reagent_containers/food/snacks/pie/cream/nostun
diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm
index bdcc8e14ac..5e7a3db504 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm
@@ -95,7 +95,7 @@ God bless America.
else if(default_deconstruction_screwdriver(user, "fryer_off", "fryer_off" ,I)) //where's the open maint panel icon?!
return
else
- if(is_type_in_typecache(I, deepfry_blacklisted_items) || (I.flags_1 & (ABSTRACT_1 | NODROP_1 | DROPDEL_1)))
+ if(is_type_in_typecache(I, deepfry_blacklisted_items) || (I.item_flags & (ABSTRACT | NODROP | DROPDEL)))
return ..()
else if(!frying && user.transferItemToLoc(I, src))
to_chat(user, "You put [I] into [src].")
diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm
index 42da7e226b..b1da39daf3 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm
@@ -92,7 +92,7 @@
to_chat(user, "[src] is at full capacity.")
break
else
- if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src))
+ if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src))
if(stored_food[sanitize(S.name)])
stored_food[sanitize(S.name)]++
else
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index d960d9945b..e6734b4b58 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -78,7 +78,7 @@
if(!ignore_clothing)
for(var/obj/item/I in C.held_items + C.get_equipped_items())
- if(!(I.flags_1 & NODROP_1))
+ if(!(I.item_flags & NODROP))
to_chat(user, "Subject may not have abiotic items on.")
return
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index ee04e73fbe..8c4e0eaae0 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -129,7 +129,7 @@
if (contents.len>=max_n_of_items)
to_chat(user, "[src] is full, you can't put anything in!")
return 1
- if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src))
+ if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src))
loaded++
if(loaded)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
index 2ec1e56adb..3f917273b4 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
@@ -60,7 +60,7 @@
for(var/obj/item/reagent_containers/food/snacks/S in T.contents)
var/datum/food_processor_process/P = select_recipe(S)
if(P)
- if(T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src))
+ if(SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src))
loaded++
if(loaded)
@@ -106,7 +106,7 @@
for(var/O in src.contents)
var/datum/food_processor_process/P = select_recipe(O)
if (!P)
- log_admin("DEBUG: [O] in processor hasnt got a suitable recipe. How did it get in there? Please report it immediatly!!!")
+ log_admin("DEBUG: [O] in processor doesn't have a suitable recipe. How did it get in there? Please report it immediately!!!")
continue
total_time += P.time
var/offset = prob(50) ? -2 : 2
@@ -115,7 +115,7 @@
for(var/atom/movable/O in src.contents)
var/datum/food_processor_process/P = select_recipe(O)
if (!P)
- log_admin("DEBUG: [O] in processor havent suitable recipe. How do you put it in?")
+ log_admin("DEBUG: [O] in processor doesn't have a suitable recipe. How do you put it in?")
continue
process_food(P, O)
pixel_x = initial(pixel_x) //return to its spot after shaking
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 11da92dce0..79202e8190 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -125,8 +125,8 @@
else
return TRUE
else
- if(O.loc.SendSignal(COMSIG_CONTAINS_STORAGE))
- return O.loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, O, src)
+ if(SEND_SIGNAL(O.loc, COMSIG_CONTAINS_STORAGE))
+ return SEND_SIGNAL(O.loc, COMSIG_TRY_STORAGE_TAKE, O, src)
else
O.forceMove(src)
return TRUE
@@ -327,7 +327,7 @@
desc = "A refrigerated storage unit for tasty tasty alcohol."
/obj/machinery/smartfridge/drinks/accept_check(obj/item/O)
- if(!istype(O, /obj/item/reagent_containers) || (O.flags_1 & ABSTRACT_1) || !O.reagents || !O.reagents.reagent_list.len)
+ if(!istype(O, /obj/item/reagent_containers) || (O.item_flags & ABSTRACT) || !O.reagents || !O.reagents.reagent_list.len)
return FALSE
if(istype(O, /obj/item/reagent_containers/glass) || istype(O, /obj/item/reagent_containers/food/drinks) || istype(O, /obj/item/reagent_containers/food/condiment))
return TRUE
@@ -375,7 +375,7 @@
return FALSE
return TRUE
return FALSE
- if(!istype(O, /obj/item/reagent_containers) || (O.flags_1 & ABSTRACT_1))
+ if(!istype(O, /obj/item/reagent_containers) || (O.item_flags & ABSTRACT))
return FALSE
if(istype(O, /obj/item/reagent_containers/pill)) // empty pill prank ok
return TRUE
@@ -415,6 +415,7 @@
/obj/machinery/smartfridge/disks
name = "disk compartmentalizer"
desc = "A machine capable of storing a variety of disks. Denoted by most as the DSU (disk storage unit)."
+ icon_state = "disktoaster"
/obj/machinery/smartfridge/disks/accept_check(obj/item/O)
if(istype(O, /obj/item/disk/))
diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm
index d6e3232baa..55d5a806bd 100644
--- a/code/modules/goonchat/browserOutput.dm
+++ b/code/modules/goonchat/browserOutput.dm
@@ -208,7 +208,18 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
for(var/I in targets)
//Grab us a client if possible
- var/client/C = grab_client(I)
+ var/client/C
+ if (ismob(I))
+ var/mob/M = I
+ if(M.client)
+ C = M.client
+ else if(istype(I, /client))
+ C = I
+ else if(istype(I, /datum/mind))
+ var/datum/mind/M = I
+ if(M.current && M.current.client)
+ C = M.current.client
+
if (!C)
continue
@@ -226,15 +237,3 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
// url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript.
C << output(url_encode(url_encode(message)), "browseroutput:output")
-
-/proc/grab_client(target)
- if(istype(target, /client))
- return target
- else if(ismob(target))
- var/mob/M = target
- if(M.client)
- return M.client
- else if(istype(target, /datum/mind))
- var/datum/mind/M = target
- if(M.current && M.current.client)
- return M.current.client
diff --git a/code/modules/goonchat/browserassets/js/browserOutput.js b/code/modules/goonchat/browserassets/js/browserOutput.js
index 045177c92d..15265b2a93 100644
--- a/code/modules/goonchat/browserassets/js/browserOutput.js
+++ b/code/modules/goonchat/browserassets/js/browserOutput.js
@@ -95,8 +95,53 @@ if (typeof String.prototype.trim !== 'function') {
};
}
+// Linkify the contents of a node, within its parent.
+function linkify(parent, insertBefore, text) {
+ var start = 0;
+ var match;
+ var regex = /(?:(?:https?:\/\/)|(?:www\.))(?:[^ ]*?\.[^ ]*?)+[-A-Za-z0-9+&@#\/%?=~_|$!:,.;()]+/ig;
+ while ((match = regex.exec(text)) !== null) {
+ // add the unmatched text
+ parent.insertBefore(document.createTextNode(text.substring(start, match.index)), insertBefore);
+
+ var href = match[0];
+ if (!/^https?:\/\//i.test(match[0])) {
+ href = "http://" + match[0];
+ }
+
+ // add the link
+ var link = document.createElement("a");
+ link.href = href;
+ link.textContent = match[0];
+ parent.insertBefore(link, insertBefore);
+
+ start = regex.lastIndex;
+ }
+ if (start !== 0) {
+ // add the remaining text and remove the original text node
+ parent.insertBefore(document.createTextNode(text.substring(start)), insertBefore);
+ parent.removeChild(insertBefore);
+ }
+}
+
+// Recursively linkify the children of a given node.
+function linkify_node(node) {
+ var children = node.childNodes;
+ // work backwards to avoid the risk of looping forever on our own output
+ for (var i = children.length - 1; i >= 0; --i) {
+ var child = children[i];
+ if (child.nodeType == Node.TEXT_NODE) {
+ // text is to be linkified
+ linkify(node, child, child.textContent);
+ } else if (child.nodeName != "A" && child.nodeName != "a") {
+ // do not linkify existing links
+ linkify_node(child);
+ }
+ }
+}
+
//Shit fucking piece of crap that doesn't work god fuckin damn it
-function linkify(text) {
+function linkify_fallback(text) {
var rex = /((?: 0) {
diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm
index 6cc3f56461..829cb55312 100644
--- a/code/modules/holiday/easter.dm
+++ b/code/modules/holiday/easter.dm
@@ -147,7 +147,7 @@
desc = "The Cross represents the Assistants that died for your sins."
icon_state = "hotcrossbun"
-/datum/crafting_recipe/food/food/hotcrossbun
+/datum/crafting_recipe/food/hotcrossbun
name = "Hot-Cross Bun"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/bread/plain = 1,
@@ -171,7 +171,7 @@
icon_state = "briochecake_slice"
filling_color = "#FFD700"
-/datum/crafting_recipe/food/food/briochecake
+/datum/crafting_recipe/food/briochecake
name = "Brioche cake"
reqs = list(
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index a1f1394e16..4590d58174 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -136,7 +136,7 @@
if(prob(30))
do_sparks(2, 1, T)
T.ex_act(EXPLODE_LIGHT)
- T.hotspot_expose(1000,500,1)
+ T.hotspot_expose(700,25,1)
if(!(obj_flags & EMAGGED))
for(var/item in spawned)
diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm
index c83e7d5520..4134b0516f 100644
--- a/code/modules/holodeck/holo_effect.dm
+++ b/code/modules/holodeck/holo_effect.dm
@@ -100,6 +100,11 @@
/obj/effect/holodeck_effect/mobspawner/penguin
mobtype = /mob/living/simple_animal/pet/penguin/emperor
+
+/obj/effect/holodeck_effect/mobspawner/penguin/Initialize()
+ if(prob(1))
+ mobtype = /mob/living/simple_animal/pet/penguin/emperor/shamebrero
+ return ..()
/obj/effect/holodeck_effect/mobspawner/penguin_baby
mobtype = /mob/living/simple_animal/pet/penguin/baby
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index c7a775523a..c94e0ad32e 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -112,7 +112,7 @@
for(var/obj/item/reagent_containers/food/snacks/grown/G in PB.contents)
if(i >= max_items)
break
- if(PB.SendSignal(COMSIG_TRY_STORAGE_TAKE, G, src))
+ if(SEND_SIGNAL(PB, COMSIG_TRY_STORAGE_TAKE, G, src))
i++
if(iYou empty the plant bag into the biogenerator.")
diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm
index 89206342b1..6f5a1a0ee4 100644
--- a/code/modules/hydroponics/grown/towercap.dm
+++ b/code/modules/hydroponics/grown/towercap.dm
@@ -146,7 +146,7 @@
if(W.is_hot())
StartBurning()
if(grill)
- if(user.a_intent != INTENT_HARM && !(W.flags_1 & ABSTRACT_1))
+ if(user.a_intent != INTENT_HARM && !(W.item_flags & ABSTRACT))
if(user.temporarilyRemoveItemFromInventory(W))
W.forceMove(get_turf(src))
var/list/click_params = params2list(params)
@@ -203,7 +203,7 @@
/obj/structure/bonfire/proc/Burn()
var/turf/current_location = get_turf(src)
- current_location.hotspot_expose(1000,500,1)
+ current_location.hotspot_expose(1000,100,1)
for(var/A in current_location)
if(A == src)
continue
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 5e75a57c32..f464fccf91 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -779,7 +779,7 @@
else if(istype(O, /obj/item/storage/bag/plants))
attack_hand(user)
for(var/obj/item/reagent_containers/food/snacks/grown/G in locate(user.x,user.y,user.z))
- O.SendSignal(COMSIG_TRY_STORAGE_INSERT, G, user, TRUE)
+ SEND_SIGNAL(O, COMSIG_TRY_STORAGE_INSERT, G, user, TRUE)
else if(default_unfasten_wrench(user, O))
return
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 4ba1aa0c33..2a28b7b097 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -9,7 +9,7 @@
resistance_flags = FLAMMABLE
var/plantname = "Plants" // Name of plant when planted.
var/product // A type path. The thing that is created when the plant is harvested.
- var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overriden.
+ var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overridden.
var/growing_icon = 'icons/obj/hydroponics/growing.dmi' //the file that stores the sprites of the growing plant from this seed.
var/icon_grow // Used to override grow icon (default is "[species]-grow"). You can use one grow icon for multiple closely related plants with it.
diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm
index 6dd3f43592..d39163b547 100644
--- a/code/modules/integrated_electronics/core/assemblies.dm
+++ b/code/modules/integrated_electronics/core/assemblies.dm
@@ -8,8 +8,9 @@
w_class = WEIGHT_CLASS_SMALL
icon = 'icons/obj/assemblies/electronic_setups.dmi'
icon_state = "setup_small"
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
materials = list() // To be filled later
+ datum_flags = DF_USE_TAG
var/list/assembly_components = list()
var/list/ckeys_allowed_to_scan = list() // Players who built the circuit can scan it as a ghost.
var/max_components = IC_MAX_SIZE_BASE
@@ -30,6 +31,8 @@
var/combat_circuits = 0 //number of combat cicuits in the assembly, used for diagnostic hud
var/long_range_circuits = 0 //number of long range cicuits in the assembly, used for diagnostic hud
var/prefered_hud_icon = "hudstat" // Used by the AR circuit to change the hud icon.
+ var/creator // circuit creator if any
+ var/static/next_assembly_id = 0
hud_possible = list(DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_TRACK_HUD, DIAG_CIRCUIT_HUD) //diagnostic hud overlays
max_integrity = 50
pass_flags = 0
@@ -56,14 +59,17 @@
COLOR_ASSEMBLY_PURPLE
)
+/obj/item/electronic_assembly/GenerateTag()
+ tag = "assembly_[next_assembly_id++]"
+
/obj/item/electronic_assembly/examine(mob/user)
. = ..()
if(can_anchor)
- to_chat(user, "The anchoring bolts [anchored ? "are" : "can be"] wrenched in place and the maintainence panel [opened ? "can be" : "is"] screwed in place.")
+ to_chat(user, "The anchoring bolts [anchored ? "are" : "can be"] wrenched in place and the maintenance panel [opened ? "can be" : "is"] screwed in place.")
else
- to_chat(user, "The maintainence panel [opened ? "can be" : "is"] screwed in place.")
+ to_chat(user, "The maintenance panel [opened ? "can be" : "is"] screwed in place.")
- if(isobserver(user) && ckeys_allowed_to_scan[user.ckey])
+ if((isobserver(user) && ckeys_allowed_to_scan[user.ckey]) || IsAdminGhost(user))
to_chat(user, "You can scan this circuit.");
/obj/item/electronic_assembly/proc/check_interactivity(mob/user)
@@ -186,7 +192,7 @@
return 1
if(href_list["ghostscan"])
- if(isobserver(usr) && ckeys_allowed_to_scan[usr.ckey])
+ if((isobserver(usr) && ckeys_allowed_to_scan[usr.ckey]) || IsAdminGhost(usr))
if(assembly_components.len)
var/saved = "On circuit printers with cloning enabled, you may use the code below to clone the circuit:
[SScircuit.save_electronic_assembly(src)]"
usr << browse(saved, "window=circuit_scan;size=500x600;border=1;can_resize=1;can_close=1;can_minimize=1")
@@ -194,6 +200,9 @@
to_chat(usr, "The circuit is empty!")
return
+ if(!check_interactivity(usr))
+ return
+
if(href_list["rename"])
rename(usr)
@@ -348,6 +357,7 @@
to_chat(user, "You slide [IC] inside [src].")
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
add_allowed_scanner(user.ckey)
+ investigate_log("had [IC]([IC.type]) inserted by [key_name(user)].", INVESTIGATE_CIRCUIT)
add_component(IC)
return TRUE
@@ -387,6 +397,7 @@
playsound(src, 'sound/items/crowbar.ogg', 50, 1)
user.put_in_hands(IC)
add_allowed_scanner(user.ckey)
+ investigate_log("had [IC]([IC.type]) removed by [key_name(user)].", INVESTIGATE_CIRCUIT)
return TRUE
diff --git a/code/modules/integrated_electronics/core/debugger.dm b/code/modules/integrated_electronics/core/debugger.dm
index 6abaf316da..d6f6a551ad 100644
--- a/code/modules/integrated_electronics/core/debugger.dm
+++ b/code/modules/integrated_electronics/core/debugger.dm
@@ -4,7 +4,8 @@
settings to specific circuits, or for debugging purposes. It can also pulse activation pins."
icon = 'icons/obj/assemblies/electronic_tools.dmi'
icon_state = "debugger"
- flags_1 = CONDUCT_1 | NOBLUDGEON_1
+ flags_1 = CONDUCT_1
+ item_flags = NOBLUDGEON
w_class = WEIGHT_CLASS_SMALL
var/data_to_write = null
var/accepting_refs = FALSE
diff --git a/code/modules/integrated_electronics/core/detailer.dm b/code/modules/integrated_electronics/core/detailer.dm
index 9a718df73e..33f7ef96ad 100644
--- a/code/modules/integrated_electronics/core/detailer.dm
+++ b/code/modules/integrated_electronics/core/detailer.dm
@@ -3,7 +3,8 @@
desc = "A combination autopainter and flash anodizer designed to give electronic assemblies a colorful, wear-resistant finish."
icon = 'icons/obj/assemblies/electronic_tools.dmi'
icon_state = "detailer"
- flags_1 = CONDUCT_1 | NOBLUDGEON_1
+ flags_1 = CONDUCT_1
+ item_flags = NOBLUDGEON
w_class = WEIGHT_CLASS_SMALL
var/data_to_write = null
var/accepting_refs = FALSE
@@ -44,4 +45,4 @@
if(!in_range(src, user))
return
detail_color = color_list[color_choice]
- update_icon()
\ No newline at end of file
+ update_icon()
diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm
index d5ebeb3001..57ad917246 100644
--- a/code/modules/integrated_electronics/core/integrated_circuit.dm
+++ b/code/modules/integrated_electronics/core/integrated_circuit.dm
@@ -24,7 +24,7 @@
var/category_text = "NO CATEGORY THIS IS A BUG" // To show up on circuit printer, and perhaps other places.
var/removable = TRUE // Determines if a circuit is removable from the assembly.
var/displayed_name = ""
-
+
/*
Integrated circuits are essentially modular machines. Each circuit has a specific function, and combining them inside Electronic Assemblies allows
a creative player the means to solve many problems. Circuits are held inside an electronic assembly, and are wired using special tools.
diff --git a/code/modules/integrated_electronics/core/pins.dm b/code/modules/integrated_electronics/core/pins.dm
index cc81c20081..c1bbb900fa 100644
--- a/code/modules/integrated_electronics/core/pins.dm
+++ b/code/modules/integrated_electronics/core/pins.dm
@@ -209,6 +209,7 @@ D [1]/ ||
write_data_to_pin(new_data)
/datum/integrated_io/activate/ask_for_pin_data(mob/user) // This just pulses the pin.
+ holder.investigate_log(" was manually pulsed by [key_name(user)].", INVESTIGATE_CIRCUIT)
holder.check_then_do_work(ord,ignore_power = TRUE)
to_chat(user, "You pulse \the [holder]'s [src] pin.")
diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm
index 2cab5ad3b9..f8d1424160 100644
--- a/code/modules/integrated_electronics/core/printer.dm
+++ b/code/modules/integrated_electronics/core/printer.dm
@@ -12,7 +12,6 @@
var/debug = FALSE // If it's upgraded and can clone, even without config settings.
var/current_category = null
var/cloning = FALSE // If the printer is currently creating a circuit
- var/clone_countdown = 0 // Timestamp for when to print the circuit
var/recycling = FALSE // If an assembly is being emptied into this printer
var/list/program // Currently loaded save, in form of list
@@ -29,26 +28,22 @@
debug = TRUE
upgraded = TRUE
can_clone = TRUE
+ fast_clone = TRUE
w_class = WEIGHT_CLASS_TINY
/obj/item/integrated_circuit_printer/Initialize()
. = ..()
AddComponent(/datum/component/material_container, list(MAT_METAL), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/electronic_assembly))
-/obj/item/integrated_circuit_printer/Destroy()
- STOP_PROCESSING(SSprocessing, src)
- return ..()
-
-/obj/item/integrated_circuit_printer/process()
+/obj/item/integrated_circuit_printer/proc/print_program(mob/user)
if(!cloning)
- STOP_PROCESSING(SSprocessing, src)
- if(world.time >= clone_countdown || fast_clone)
- var/turf/T = get_turf(src)
- T.visible_message("[src] has finished printing its assembly!")
- playsound(get_turf(T), 'sound/items/poster_being_created.ogg', 50, TRUE)
- SScircuit.load_electronic_assembly(T, program)
- cloning = FALSE
- STOP_PROCESSING(SSprocessing, src)
+ return
+ visible_message("[src] has finished printing its assembly!")
+ playsound(src, 'sound/items/poster_being_created.ogg', 50, TRUE)
+ var/obj/item/electronic_assembly/assembly = SScircuit.load_electronic_assembly(get_turf(src), program)
+ assembly.creator = key_name(user)
+ assembly.investigate_log("was printed by [assembly.creator].", INVESTIGATE_CIRCUIT)
+ cloning = FALSE
/obj/item/integrated_circuit_printer/attackby(obj/item/O, mob/user)
if(istype(O, /obj/item/disk/integrated_circuit/upgrade/advanced))
@@ -141,7 +136,7 @@
if(!program)
HTML += " {[fast_clone ? "Print" : "Begin Printing"] Assembly}"
else if(cloning)
- HTML += " {Cancel Print} - [DisplayTimeText(max(0, clone_countdown - world.time))] remaining until completion"
+ HTML += " {Cancel Print}"
else
HTML += " {[fast_clone ? "Print" : "Begin Printing"] Assembly}"
@@ -206,6 +201,7 @@
if(istype(built, /obj/item/electronic_assembly))
var/obj/item/electronic_assembly/E = built
+ E.creator = key_name(usr)
E.opened = TRUE
E.update_icon()
//reupdate diagnostic hud because it was put_in_hands() and not pickup()'ed
@@ -213,6 +209,7 @@
E.diag_hud_set_circuitcell()
E.diag_hud_set_circuitstat()
E.diag_hud_set_circuittracking()
+ E.investigate_log("was printed by [E.creator].", INVESTIGATE_CIRCUIT)
to_chat(usr, "[capitalize(built.name)] printed.")
playsound(src, 'sound/items/jaws_pry.ogg', 50, TRUE)
@@ -226,8 +223,10 @@
return
switch(href_list["print"])
if("load")
+ if(cloning)
+ return
var/input = input("Put your code there:", "loading", null, null) as message | null
- if(!check_interactivity(usr))
+ if(!check_interactivity(usr) || cloning)
return
if(!input)
program = null
@@ -254,7 +253,7 @@
to_chat(usr, "Metal cost: [program["metal_cost"]].")
if("print")
- if(!program)
+ if(!program || cloning)
return
if(program["requires_upgrades"] && !upgraded && !debug)
@@ -263,12 +262,11 @@
if(program["unsupported_circuit"] && !debug)
to_chat(usr, "This program uses components not supported by the specified assembly. Please change the assembly type in the save file to a supported one.")
return
- else if(fast_clone || debug)
+ else if(fast_clone)
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
if(debug || materials.use_amount_type(program["metal_cost"], MAT_METAL))
- var/obj/item/assembly = SScircuit.load_electronic_assembly(get_turf(src), program)
- to_chat(usr, "[assembly] has been printed from the provided template!")
- playsound(src, 'sound/items/poster_being_created.ogg', 50, TRUE)
+ cloning = TRUE
+ print_program(usr)
else
to_chat(usr, "You need [program["metal_cost"]] metal to build that!")
else
@@ -279,11 +277,10 @@
var/cloning_time = round(program["metal_cost"] / 15)
cloning_time = min(cloning_time, MAX_CIRCUIT_CLONE_TIME)
cloning = TRUE
- clone_countdown = world.time + cloning_time
to_chat(usr, "You begin printing a custom assembly. This will take approximately [DisplayTimeText(cloning_time)]. You can still print \
off normal parts during this time.")
playsound(src, 'sound/items/poster_being_created.ogg', 50, TRUE)
- START_PROCESSING(SSprocessing, src)
+ addtimer(CALLBACK(src, .proc/print_program, usr), cloning_time)
if("cancel")
if(!cloning || !program)
@@ -291,7 +288,6 @@
to_chat(usr, "Cloning has been canceled. Metal cost has been refunded.")
cloning = FALSE
- clone_countdown = FALSE
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
materials.use_amount_type(-program["metal_cost"], MAT_METAL) //use negative amount to regain the cost
diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm
index cca3f2babf..96ca6a3055 100644
--- a/code/modules/integrated_electronics/subtypes/input.dm
+++ b/code/modules/integrated_electronics/subtypes/input.dm
@@ -763,7 +763,7 @@
data.standard_format_data(message, text, key)
ntnet_send(data)
-/obj/item/integrated_circuit/input/ntnet_recieve(datum/netdata/data)
+/obj/item/integrated_circuit/input/ntnet_receive(datum/netdata/data)
set_pin_data(IC_OUTPUT, 1, data.sender_id)
set_pin_data(IC_OUTPUT, 2, data.data["data"])
set_pin_data(IC_OUTPUT, 3, data.data["data_secondary"])
@@ -774,7 +774,7 @@
activate_pin(2)
/obj/item/integrated_circuit/input/ntnet_advanced
- name = "Low level NTNet transreciever"
+ name = "Low level NTNet transreceiver"
desc = "Enables the sending and receiving of messages over NTNet via packet data protocol. Allows advanced control of message contents and signalling. Must use associative lists. Outputs associative list. Has a slower transmission rate than normal NTNet circuits, due to increased data processing complexity."
extended_desc = "Data can be sent or received using the second pin on each side, \
with additonal data reserved for the third pin. When a message is received, the second activation pin \
@@ -787,7 +787,7 @@
"target NTNet addresses"= IC_PINTYPE_STRING,
"data" = IC_PINTYPE_LIST,
)
- outputs = list("recieved data" = IC_PINTYPE_LIST, "is_broadcast" = IC_PINTYPE_BOOLEAN)
+ outputs = list("received data" = IC_PINTYPE_LIST, "is_broadcast" = IC_PINTYPE_BOOLEAN)
activators = list("send data" = IC_PINTYPE_PULSE_IN, "on data received" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
action_flags = IC_ACTION_LONG_RANGE
@@ -811,7 +811,7 @@
data.data = message
ntnet_send(data)
-/obj/item/integrated_circuit/input/ntnet_advanced/ntnet_recieve(datum/netdata/data)
+/obj/item/integrated_circuit/input/ntnet_advanced/ntnet_receive(datum/netdata/data)
set_pin_data(IC_OUTPUT, 1, data.data)
set_pin_data(IC_OUTPUT, 2, data.broadcast)
push_data()
@@ -1123,6 +1123,67 @@
else
activate_pin(3)
+/obj/item/integrated_circuit/input/atmospheric_analyzer
+ name = "atmospheric analyzer"
+ desc = "A miniaturized analyzer which can scan anything that contains gases. Leave target as NULL to scan the air around the assembly."
+ extended_desc = "The nth element of gas amounts is the number of moles of the \
+ nth gas in gas list. \
+ Pressure is in kPa, temperature is in Kelvin. \
+ Due to programming limitations, scanning an object that does \
+ not contain a gas will return the air around it instead."
+ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
+ inputs = list(
+ "target" = IC_PINTYPE_REF
+ )
+ outputs = list(
+ "gas list" = IC_PINTYPE_LIST,
+ "gas amounts" = IC_PINTYPE_LIST,
+ "total moles" = IC_PINTYPE_NUMBER,
+ "pressure" = IC_PINTYPE_NUMBER,
+ "temperature" = IC_PINTYPE_NUMBER,
+ "volume" = IC_PINTYPE_NUMBER
+ )
+ activators = list(
+ "scan" = IC_PINTYPE_PULSE_IN,
+ "on success" = IC_PINTYPE_PULSE_OUT,
+ "on failure" = IC_PINTYPE_PULSE_OUT
+ )
+ power_draw_per_use = 5
+
+/obj/item/integrated_circuit/input/atmospheric_analyzer/do_work()
+ for(var/i=1 to 6)
+ set_pin_data(IC_OUTPUT, i, null)
+ var/atom/target = get_pin_data_as_type(IC_INPUT, 1, /atom)
+ var/atom/movable/acting_object = get_object()
+ if(!target)
+ target = acting_object.loc
+ if(!target.Adjacent(acting_object))
+ activate_pin(3)
+ return
+
+ var/datum/gas_mixture/air_contents = target.return_air()
+ if(!air_contents)
+ activate_pin(3)
+ return
+
+ var/list/gases = air_contents.gases
+ var/list/gas_names = list()
+ var/list/gas_amounts = list()
+ for(var/id in gases)
+ var/name = gases[id][GAS_META][META_GAS_NAME]
+ var/amt = round(gases[id][MOLES], 0.001)
+ gas_names.Add(name)
+ gas_amounts.Add(amt)
+
+ set_pin_data(IC_OUTPUT, 1, gas_names)
+ set_pin_data(IC_OUTPUT, 2, gas_amounts)
+ set_pin_data(IC_OUTPUT, 3, round(air_contents.total_moles(), 0.001))
+ set_pin_data(IC_OUTPUT, 4, round(air_contents.return_pressure(), 0.001))
+ set_pin_data(IC_OUTPUT, 5, round(air_contents.temperature, 0.001))
+ set_pin_data(IC_OUTPUT, 6, round(air_contents.return_volume(), 0.001))
+ push_data()
+ activate_pin(2)
+
/obj/item/integrated_circuit/input/data_card_reader
name = "data card reader"
desc = "A circuit that can read from and write to data cards."
diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm
index c391c62962..6267f2b622 100644
--- a/code/modules/integrated_electronics/subtypes/manipulation.dm
+++ b/code/modules/integrated_electronics/subtypes/manipulation.dm
@@ -367,12 +367,12 @@
var/atom/movable/acting_object = get_object()
var/turf/T = get_turf(acting_object)
var/obj/item/AM = get_pin_data_as_type(IC_INPUT, 1, /obj/item)
- if(AM)
+ if(!QDELETED(AM) && !istype(AM, /obj/item/electronic_assembly) && !istype(AM, /obj/item/transfer_valve) && !istype(AM, /obj/item/twohanded) && !istype(assembly.loc, /obj/item/implant/storage))
var/mode = get_pin_data(IC_INPUT, 2)
if(mode == 1)
if(check_target(AM))
var/weightcheck = FALSE
- if (AM.w_class < max_w_class)
+ if (AM.w_class <= max_w_class)
weightcheck = TRUE
else
weightcheck = FALSE
@@ -496,7 +496,10 @@
var/target_y_rel = round(get_pin_data(IC_INPUT, 2))
var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item)
- if(!A || A.anchored || A.throwing || A == assembly)
+ if(!A || A.anchored || A.throwing || A == assembly || istype(A, /obj/item/twohanded) || istype(A, /obj/item/transfer_valve))
+ return
+
+ if (istype(assembly.loc, /obj/item/implant/storage)) //Prevents the more abusive form of chestgun.
return
if(max_w_class && (A.w_class > max_w_class))
@@ -527,6 +530,7 @@
var/range = round(CLAMP(sqrt(target_x_rel*target_x_rel+target_y_rel*target_y_rel),0,8),1)
assembly.visible_message("[assembly] has thrown [A]!")
+ log_attack("[assembly] [REF(assembly)] has thrown [A].")
A.forceMove(drop_location())
A.throw_at(locate(x_abs, y_abs, T.z), range, 3)
diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm
index 2d820b016e..b887617ea8 100644
--- a/code/modules/integrated_electronics/subtypes/output.dm
+++ b/code/modules/integrated_electronics/subtypes/output.dm
@@ -46,6 +46,10 @@
for(var/mob/M in nearby_things)
var/obj/O = assembly ? assembly : src
to_chat(M, "[icon2html(O.icon, world, O.icon_state)] [stuff_to_display]")
+ if(assembly)
+ assembly.investigate_log("displayed \"[html_encode(stuff_to_display)]\" with [type].", INVESTIGATE_CIRCUIT)
+ else
+ investigate_log("displayed \"[html_encode(stuff_to_display)]\" as [type].", INVESTIGATE_CIRCUIT)
/obj/item/integrated_circuit/output/screen/large
name = "large screen"
@@ -58,6 +62,10 @@
..()
var/obj/O = assembly ? get_turf(assembly) : loc
O.visible_message("[icon2html(O.icon, world, O.icon_state)] [stuff_to_display]")
+ if(assembly)
+ assembly.investigate_log("displayed \"[html_encode(stuff_to_display)]\" with [type].", INVESTIGATE_CIRCUIT)
+ else
+ investigate_log("displayed \"[html_encode(stuff_to_display)]\" as [type].", INVESTIGATE_CIRCUIT)
/obj/item/integrated_circuit/output/light
name = "light"
@@ -151,6 +159,10 @@
return
vol = CLAMP(vol ,0 , 100)
playsound(get_turf(src), selected_sound, vol, freq, -1)
+ if(assembly)
+ assembly.investigate_log("played a sound ([selected_sound]) with [type].", INVESTIGATE_CIRCUIT)
+ else
+ investigate_log("played a sound ([selected_sound]) as [type].", INVESTIGATE_CIRCUIT)
/obj/item/integrated_circuit/output/sound/on_data_written()
power_draw_per_use = get_pin_data(IC_INPUT, 2) * 15
@@ -234,8 +246,12 @@
text = get_pin_data(IC_INPUT, 1)
if(!isnull(text))
var/atom/movable/A = get_object()
- A.say(sanitize(text))
-
+ var/sanitized_text = sanitize(text)
+ A.say(sanitized_text)
+ if (assembly)
+ log_say("[assembly] [REF(assembly)] : [sanitized_text]")
+ else
+ log_say("[name] ([type]) : [sanitized_text]")
/obj/item/integrated_circuit/output/video_camera
name = "video camera circuit"
diff --git a/code/modules/integrated_electronics/subtypes/power.dm b/code/modules/integrated_electronics/subtypes/power.dm
index e760b21f72..4e5b6952a4 100644
--- a/code/modules/integrated_electronics/subtypes/power.dm
+++ b/code/modules/integrated_electronics/subtypes/power.dm
@@ -24,7 +24,7 @@
/obj/item/integrated_circuit/power/transmitter/large
name = "large power transmission circuit"
- desc = "This can wirelessly transmit a lot of electricity from an assembly's battery towards a nearby machine. Warning: Do not operate in flammable enviroments."
+ desc = "This can wirelessly transmit a lot of electricity from an assembly's battery towards a nearby machine. Warning: Do not operate in flammable environments."
extended_desc = "This circuit transmits 20 kJ of electricity every time the activator pin is pulsed. The input pin must be \
a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \
inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \
diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm
index 3232acda71..2a6b4a1a80 100644
--- a/code/modules/integrated_electronics/subtypes/reagents.dm
+++ b/code/modules/integrated_electronics/subtypes/reagents.dm
@@ -186,7 +186,7 @@
//Always log attemped injections for admins
var/contained = reagents.log_list()
- add_logs(src, L, "attemped to inject", addition="which had [contained]")
+ add_logs(src, L, "attempted to inject", addition="which had [contained]")
L.visible_message("[acting_object] is trying to inject [L]!", \
"[acting_object] is trying to inject you!")
busy = TRUE
diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm
index 6ec7463ab5..ced08bbc6a 100644
--- a/code/modules/jobs/access.dm
+++ b/code/modules/jobs/access.dm
@@ -222,7 +222,7 @@
if(ACCESS_ENGINE)
return "Engineering"
if(ACCESS_ENGINE_EQUIP)
- return "Power Equipment"
+ return "Power and Engineering Equipment"
if(ACCESS_MAINT_TUNNELS)
return "Maintenance"
if(ACCESS_EXTERNAL_AIRLOCKS)
diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm
index b4679ae479..6a5a857ef0 100644
--- a/code/modules/jobs/job_exp.dm
+++ b/code/modules/jobs/job_exp.dm
@@ -143,8 +143,10 @@ GLOBAL_PROTECT(exp_to_update)
L.update_exp_list(mins,ann)
/datum/controller/subsystem/blackbox/proc/update_exp_db()
- SSdbcore.MassInsert(format_table_name("role_time"), GLOB.exp_to_update, "ON DUPLICATE KEY UPDATE minutes = minutes + VALUES(minutes)")
- LAZYCLEARLIST(GLOB.exp_to_update)
+ set waitfor = FALSE
+ var/list/old_minutes = GLOB.exp_to_update
+ GLOB.exp_to_update = null
+ SSdbcore.MassInsert(format_table_name("role_time"), old_minutes, "ON DUPLICATE KEY UPDATE minutes = minutes + VALUES(minutes)")
//resets a client's exp to what was in the db.
/client/proc/set_exp_from_db()
@@ -154,10 +156,12 @@ GLOBAL_PROTECT(exp_to_update)
return -1
var/datum/DBQuery/exp_read = SSdbcore.NewQuery("SELECT job, minutes FROM [format_table_name("role_time")] WHERE ckey = '[sanitizeSQL(ckey)]'")
if(!exp_read.Execute())
+ qdel(exp_read)
return -1
var/list/play_records = list()
while(exp_read.NextRow())
play_records[exp_read.item[1]] = text2num(exp_read.item[2])
+ qdel(exp_read)
for(var/rtype in SSjob.name_occupations)
if(!play_records[rtype])
@@ -186,7 +190,9 @@ GLOBAL_PROTECT(exp_to_update)
var/datum/DBQuery/flag_update = SSdbcore.NewQuery("UPDATE [format_table_name("player")] SET flags = '[prefs.db_flags]' WHERE ckey='[sanitizeSQL(ckey)]'")
if(!flag_update.Execute())
+ qdel(flag_update)
return -1
+ qdel(flag_update)
/client/proc/update_exp_list(minutes, announce_changes = FALSE)
@@ -264,10 +270,12 @@ GLOBAL_PROTECT(exp_to_update)
var/datum/DBQuery/flags_read = SSdbcore.NewQuery("SELECT flags FROM [format_table_name("player")] WHERE ckey='[ckey]'")
if(!flags_read.Execute())
+ qdel(flags_read)
return FALSE
if(flags_read.NextRow())
prefs.db_flags = text2num(flags_read.item[1])
else if(isnull(prefs.db_flags))
prefs.db_flags = 0 //This PROBABLY won't happen, but better safe than sorry.
+ qdel(flags_read)
return TRUE
diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm
index 72d58088d1..8ec25e5f5e 100644
--- a/code/modules/jobs/job_types/civilian.dm
+++ b/code/modules/jobs/job_types/civilian.dm
@@ -18,7 +18,7 @@ Clown
minimal_access = list(ACCESS_THEATRE)
/datum/job/clown/after_spawn(mob/living/carbon/human/H, mob/M)
- H.rename_self("clown", M.client)
+ H.apply_pref_name("clown", M.client)
/datum/outfit/job/clown
name = "Clown"
@@ -81,7 +81,7 @@ Mime
minimal_access = list(ACCESS_THEATRE)
/datum/job/mime/after_spawn(mob/living/carbon/human/H, mob/M)
- H.rename_self("mime", M.client)
+ H.apply_pref_name("mime", M.client)
/datum/outfit/job/mime
name = "Mime"
diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm
index 1cd7f59a27..5d4802f93a 100644
--- a/code/modules/jobs/job_types/job.dm
+++ b/code/modules/jobs/job_types/job.dm
@@ -49,7 +49,7 @@
var/exp_type_department = ""
//The amount of good boy points playing this role will earn you towards a higher chance to roll antagonist next round
- //can be overriden by antag_rep.txt config
+ //can be overridden by antag_rep.txt config
var/antag_rep = 10
//Only override this proc
@@ -81,7 +81,7 @@
if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions))
if(H.dna.species.id != "human")
H.set_species(/datum/species/human)
- H.rename_self("human", H.client)
+ H.apply_pref_name("human", H.client)
purrbation_remove(H, silent=TRUE)
//Equip the rest of the gear
diff --git a/code/modules/jobs/job_types/silicon.dm b/code/modules/jobs/job_types/silicon.dm
index 86246952f3..0738f20b24 100644
--- a/code/modules/jobs/job_types/silicon.dm
+++ b/code/modules/jobs/job_types/silicon.dm
@@ -34,7 +34,7 @@ AI
H.forceMove(lateJoinCore.loc)
qdel(lateJoinCore)
var/mob/living/silicon/ai/AI = H
- AI.rename_self("ai", M.client) //If this runtimes oh well jobcode is fucked.
+ AI.apply_pref_name("ai", M.client) //If this runtimes oh well jobcode is fucked.
//we may have been created after our borg
if(SSticker.current_state == GAME_STATE_SETTING_UP)
@@ -85,4 +85,4 @@ Cyborg
return H.Robotize(FALSE, latejoin)
/datum/job/cyborg/after_spawn(mob/living/silicon/robot/R, mob/M)
- R.rename_self("cyborg", M.client)
+ R.updatename(M.client)
diff --git a/code/modules/keybindings/bindings_human.dm b/code/modules/keybindings/bindings_human.dm
index 14890cc7e2..5d02d9aedb 100644
--- a/code/modules/keybindings/bindings_human.dm
+++ b/code/modules/keybindings/bindings_human.dm
@@ -17,7 +17,7 @@
to_chat(user, "You can't fit anything in.")
return
if(thing) // put thing in belt
- if(!equipped_belt.SendSignal(COMSIG_TRY_STORAGE_INSERT, thing, user.mob))
+ if(!SEND_SIGNAL(equipped_belt, COMSIG_TRY_STORAGE_INSERT, thing, user.mob))
to_chat(user, "You can't fit anything in.")
return
if(!equipped_belt.contents.len) // nothing to take out
@@ -45,7 +45,7 @@
to_chat(user, "You can't fit anything in.")
return
if(thing) // put thing in backpack
- if(!equipped_backpack.SendSignal(COMSIG_TRY_STORAGE_INSERT, thing, user.mob))
+ if(!SEND_SIGNAL(equipped_backpack, COMSIG_TRY_STORAGE_INSERT, thing, user.mob))
to_chat(user, "You can't fit anything in.")
return
if(!equipped_backpack.contents.len) // nothing to take out
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 4126cc4768..066ce22831 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -206,7 +206,7 @@
if(dat)
user << browse("Penned by [author]. " + "[dat]", "window=book[window_size != null ? ";size=[window_size]" : ""]")
user.visible_message("[user] opens a book titled \"[title]\" and begins reading intently.")
- user.SendSignal(COMSIG_ADD_MOOD_EVENT, "book_nerd", /datum/mood_event/book_nerd)
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "book_nerd", /datum/mood_event/book_nerd)
onclose(user, "book")
else
to_chat(user, "This book is completely blank!")
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 367d3505a0..81e296e4c8 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -41,6 +41,8 @@
if(1)
if (!SSdbcore.Connect())
dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance. "
+ else if(QDELETED(user))
+ return
else if(!SQLquery)
dat += "ERROR: Malformed search request. Please contact your system administrator for assistance. "
else
@@ -50,12 +52,16 @@
var/datum/DBQuery/query_library_list_books = SSdbcore.NewQuery(SQLquery)
if(!query_library_list_books.Execute())
dat += "ERROR: Unable to retrieve book listings. Please contact your system administrator for assistance. "
- while(query_library_list_books.NextRow())
- var/author = query_library_list_books.item[1]
- var/title = query_library_list_books.item[2]
- var/category = query_library_list_books.item[3]
- var/id = query_library_list_books.item[4]
- dat += "| [author] | [title] | [category] | [id] | "
+ else
+ while(query_library_list_books.NextRow())
+ var/author = query_library_list_books.item[1]
+ var/title = query_library_list_books.item[2]
+ var/category = query_library_list_books.item[3]
+ var/id = query_library_list_books.item[4]
+ dat += "| [author] | [title] | [category] | [id] | "
+ qdel(query_library_list_books)
+ if(QDELETED(user))
+ return
dat += " "
dat += "\[Go Back\] "
var/datum/browser/popup = new(user, "publiclibrary", name, 600, 400)
@@ -135,6 +141,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
GLOB.cachedbooks = list()
var/datum/DBQuery/query_library_cache = SSdbcore.NewQuery("SELECT id, author, title, category FROM [format_table_name("library")] WHERE isnull(deleted)")
if(!query_library_cache.Execute())
+ qdel(query_library_cache)
return
while(query_library_cache.NextRow())
var/datum/cachedbook/newbook = new()
@@ -143,6 +150,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
newbook.title = query_library_cache.item[3]
newbook.category = query_library_cache.item[4]
GLOB.cachedbooks += newbook
+ qdel(query_library_cache)
@@ -414,12 +422,15 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
var/sqlauthor = sanitizeSQL(scanner.cache.author)
var/sqlcontent = sanitizeSQL(scanner.cache.dat)
var/sqlcategory = sanitizeSQL(upload_category)
+ var/msg = "[key_name(usr)] has uploaded the book titled [scanner.cache.name], [length(scanner.cache.dat)] signs"
var/datum/DBQuery/query_library_upload = SSdbcore.NewQuery("INSERT INTO [format_table_name("library")] (author, title, content, category, ckey, datetime, round_id_created) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]', '[usr.ckey]', Now(), '[GLOB.round_id]')")
if(!query_library_upload.Execute())
+ qdel(query_library_upload)
alert("Database error encountered uploading to Archive")
return
else
- log_game("[key_name(usr)] has uploaded the book titled [scanner.cache.name], [length(scanner.cache.dat)] signs")
+ log_game(msg)
+ qdel(query_library_upload)
alert("Upload Complete. Uploaded title will be unavailable for printing for a short period")
if(href_list["newspost"])
if(!GLOB.news_network)
@@ -452,20 +463,23 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
cooldown = world.time + PRINTER_COOLDOWN
var/datum/DBQuery/query_library_print = SSdbcore.NewQuery("SELECT * FROM [format_table_name("library")] WHERE id=[sqlid] AND isnull(deleted)")
if(!query_library_print.Execute())
+ qdel(query_library_print)
say("PRINTER ERROR! Failed to print document (0x0000000F)")
return
while(query_library_print.NextRow())
var/author = query_library_print.item[2]
var/title = query_library_print.item[3]
var/content = query_library_print.item[4]
- var/obj/item/book/B = new(get_turf(src))
- B.name = "Book: [title]"
- B.title = title
- B.author = author
- B.dat = content
- B.icon_state = "book[rand(1,8)]"
- visible_message("[src]'s printer hums as it produces a completely bound book. How did it do that?")
+ if(!QDELETED(src))
+ var/obj/item/book/B = new(get_turf(src))
+ B.name = "Book: [title]"
+ B.title = title
+ B.author = author
+ B.dat = content
+ B.icon_state = "book[rand(1,8)]"
+ visible_message("[src]'s printer hums as it produces a completely bound book. How did it do that?")
break
+ qdel(query_library_print)
if(href_list["printbible"])
if(cooldown < world.time)
var/obj/item/storage/book/bible/B = new /obj/item/storage/book/bible(src.loc)
diff --git a/code/modules/library/random_books.dm b/code/modules/library/random_books.dm
index e101a7143a..8fd12f6157 100644
--- a/code/modules/library/random_books.dm
+++ b/code/modules/library/random_books.dm
@@ -60,8 +60,7 @@
B.dat = query_get_random_books.item[4]
B.name = "Book: [B.title]"
B.icon_state= "book[rand(1,8)]"
- else
- return
+ qdel(query_get_random_books)
/obj/structure/bookcase/random/fiction
name = "bookcase (Fiction)"
diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm
index 537326fc45..89ec6a3a7e 100644
--- a/code/modules/lighting/lighting_atom.dm
+++ b/code/modules/lighting/lighting_atom.dm
@@ -23,7 +23,7 @@
if (l_color != NONSENSICAL_VALUE)
light_color = l_color
- SendSignal(COMSIG_ATOM_SET_LIGHT, l_range, l_power, l_color)
+ SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT, l_range, l_power, l_color)
update_light()
diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm
index 381ce4bffe..dfc75c32ee 100644
--- a/code/modules/mapping/reader.dm
+++ b/code/modules/mapping/reader.dm
@@ -73,7 +73,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new)
if(!key_len)
key_len = length(key)
else
- throw EXCEPTION("Inconsistant key length in DMM")
+ throw EXCEPTION("Inconsistent key length in DMM")
if(!measureOnly)
grid_models[key] = dmmRegex.group[2]
diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm
index 9c399826db..2c001571a1 100644
--- a/code/modules/mining/aux_base.dm
+++ b/code/modules/mining/aux_base.dm
@@ -224,7 +224,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
if(BAD_ZLEVEL)
to_chat(user, "This uplink can only be used in a designed mining zone.")
if(BAD_AREA)
- to_chat(user, "Unable to acquire a targeting lock. Find an area clear of stuctures or entirely within one.")
+ to_chat(user, "Unable to acquire a targeting lock. Find an area clear of structures or entirely within one.")
if(BAD_COORDS)
to_chat(user, "Location is too close to the edge of the station's scanning range. Move several paces away and try again.")
if(BAD_TURF)
@@ -260,6 +260,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
dwidth = 3
width = 7
height = 5
+ area_type = /area/construction/mining/aux_base
/obj/structure/mining_shuttle_beacon
name = "mining shuttle beacon"
@@ -322,7 +323,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
break
if(!Mport)
- to_chat(user, "This station is not equipped with an approprite mining shuttle. Please contact Nanotrasen Support.")
+ to_chat(user, "This station is not equipped with an appropriate mining shuttle. Please contact Nanotrasen Support.")
return
var/obj/docking_port/mobile/mining_shuttle
diff --git a/code/modules/mining/equipment/goliath_hide.dm b/code/modules/mining/equipment/goliath_hide.dm
index 85feaecf73..48f0ca0be5 100644
--- a/code/modules/mining/equipment/goliath_hide.dm
+++ b/code/modules/mining/equipment/goliath_hide.dm
@@ -7,6 +7,6 @@
singular_name = "hide plate"
max_amount = 6
novariants = FALSE
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
w_class = WEIGHT_CLASS_NORMAL
- layer = MOB_LAYER
\ No newline at end of file
+ layer = MOB_LAYER
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 558147af23..7cf16f6064 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -381,7 +381,7 @@
/obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user)
deadly_shot = TRUE
- addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
/obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot()
deadly_shot = FALSE
diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm
index cd6afa20f7..ca313182b6 100644
--- a/code/modules/mining/equipment/mining_tools.dm
+++ b/code/modules/mining/equipment/mining_tools.dm
@@ -63,7 +63,8 @@
/obj/item/pickaxe/drill/cyborg
name = "cyborg mining drill"
desc = "An integrated electric mining drill."
- flags_1 = NODROP_1
+ item_flags = NODROP
+ flags_1 = NONE
/obj/item/pickaxe/drill/diamonddrill
name = "diamond-tipped mining drill"
diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm
index 7fa6721c0f..43be61dd77 100644
--- a/code/modules/mining/equipment/regenerative_core.dm
+++ b/code/modules/mining/equipment/regenerative_core.dm
@@ -21,7 +21,7 @@
name = "regenerative core"
desc = "All that remains of a hivelord. It can be used to heal completely, but it will rapidly decay into uselessness."
icon_state = "roro core 2"
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
slot = "hivecore"
force = 0
actions_types = list(/datum/action/item_action/organ_action/use)
diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm
index 9ad6d59c3a..3005a29dcd 100644
--- a/code/modules/mining/equipment/survival_pod.dm
+++ b/code/modules/mining/equipment/survival_pod.dm
@@ -4,7 +4,7 @@
icon_state = "away"
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
requires_power = FALSE
- has_gravity = TRUE
+ has_gravity = STANDARD_GRAVITY
valid_territory = FALSE
//Survival Capsule
diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm
index 9cb3f5c323..5e2e8bdd5a 100644
--- a/code/modules/mining/equipment/wormhole_jaunter.dm
+++ b/code/modules/mining/equipment/wormhole_jaunter.dm
@@ -54,18 +54,20 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- var/triggered = FALSE
- if(usr.get_item_by_slot(SLOT_BELT) == src)
- if(power == 1)
- triggered = TRUE
- else if(power == 2 && prob(50))
- triggered = TRUE
+ var/mob/M = loc
+ if(istype(M))
+ var/triggered = FALSE
+ if(M.get_item_by_slot(SLOT_BELT) == src)
+ if(power == 1)
+ triggered = TRUE
+ else if(power == 2 && prob(50))
+ triggered = TRUE
- if(triggered)
- usr.visible_message("[src] overloads and activates!")
- SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation
- activate(usr)
+ if(triggered)
+ M.visible_message("[src] overloads and activates!")
+ SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation
+ activate(M)
/obj/item/wormhole_jaunter/proc/chasm_react(mob/user)
if(user.get_item_by_slot(SLOT_BELT) == src)
diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm
index a6cbbfcedd..d6ea55855d 100644
--- a/code/modules/mining/fulton.dm
+++ b/code/modules/mining/fulton.dm
@@ -63,7 +63,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
to_chat(user, "You attach the pack to [A] and activate it.")
if(loc == user && istype(user.back, /obj/item/storage/backpack))
var/obj/item/storage/backpack/B = user.back
- B.SendSignal(COMSIG_TRY_STORAGE_INSERT, src, user, FALSE, FALSE)
+ SEND_SIGNAL(B, COMSIG_TRY_STORAGE_INSERT, src, user, FALSE, FALSE)
uses_left--
if(uses_left <= 0)
user.transferItemToLoc(src, A, TRUE)
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index bcb186a776..79adcdf9d8 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -189,7 +189,7 @@
activated()
/obj/item/rod_of_asclepius/proc/activated()
- flags_1 = NODROP_1 | DROPDEL_1
+ item_flags = NODROP | DROPDEL
desc = "A short wooden rod with a mystical snake inseparably gripping itself and the rod to your forearm. It flows with a healing energy that disperses amongst yourself and those around you. "
icon_state = "asclepius_active"
activated = TRUE
@@ -388,7 +388,7 @@
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
fire_sound = 'sound/weapons/batonextend.ogg'
max_charges = 1
- flags_1 = NOBLUDGEON_1
+ item_flags = NEEDS_PERMIT | NOBLUDGEON
force = 18
/obj/item/ammo_casing/magic/hook
diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm
index 8bef2ccf6a..026170da09 100644
--- a/code/modules/mining/machine_processing.dm
+++ b/code/modules/mining/machine_processing.dm
@@ -82,7 +82,7 @@
/obj/machinery/mineral/processing_unit/Initialize()
. = ..()
proximity_monitor = new(src, 1)
- AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, FALSE, list(/obj/item/stack))
+ AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, TRUE, list(/obj/item/stack))
stored_research = new /datum/techweb/specialized/autounlocking/smelter
/obj/machinery/mineral/processing_unit/Destroy()
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index 03a93a6a52..a9230195ac 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -127,7 +127,7 @@
flick(icon_deny, src)
return
if(prize.cost > inserted_id.mining_points)
- to_chat(usr, "Error: Insufficent points for [prize.equipment_name]!")
+ to_chat(usr, "Error: Insufficient points for [prize.equipment_name]!")
flick(icon_deny, src)
else
inserted_id.mining_points -= prize.cost
diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm
index 23d8d816d4..3809514f02 100644
--- a/code/modules/mining/minebot.dm
+++ b/code/modules/mining/minebot.dm
@@ -299,7 +299,7 @@
/obj/item/slimepotion/slime/sentience/mining
name = "minebot AI upgrade"
- desc = "Can be used to grant sentience to minebots. Is incompatable with minebot armor and melee upgrades, and will override them."
+ desc = "Can be used to grant sentience to minebots. It's incompatible with minebot armor and melee upgrades, and will override them."
icon_state = "door_electronics"
icon = 'icons/obj/module.dmi'
sentience_type = SENTIENCE_MINEBOT
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 2835323172..9e4e1bbb53 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -337,7 +337,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
var/index = sideslist.Find(coinflip)
message_admins("coinflip landed on [coinflip] which is [index] in sideslist")
if (index==2)//tails
- user.visible_message("\the [src] lands on [coinflip]! [user] promply falls over, dead!")
+ user.visible_message("\the [src] lands on [coinflip]! [user] promptly falls over, dead!")
user.adjustOxyLoss(200)
user.death(0)
else
diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm
index 78f4676d4e..b158815dac 100644
--- a/code/modules/mining/satchel_ore_boxdm.dm
+++ b/code/modules/mining/satchel_ore_boxdm.dm
@@ -12,8 +12,8 @@
/obj/structure/ore_box/attackby(obj/item/W, mob/user, params)
if (istype(W, /obj/item/stack/ore))
user.transferItemToLoc(W, src)
- else if(W.SendSignal(COMSIG_CONTAINS_STORAGE))
- W.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/stack/ore, src)
+ else if(SEND_SIGNAL(W, COMSIG_CONTAINS_STORAGE))
+ SEND_SIGNAL(W, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/stack/ore, src)
to_chat(user, "You empty the ore in [W] into \the [src].")
else
return ..()
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 04b7b13be8..14bd0ffaab 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -54,15 +54,19 @@
if(src.client && src.client.holder)
isadmin = 1
var/datum/DBQuery/query_get_new_polls = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE [(isadmin ? "" : "adminonly = false AND")] Now() BETWEEN starttime AND endtime AND id NOT IN (SELECT pollid FROM [format_table_name("poll_vote")] WHERE ckey = \"[ckey]\") AND id NOT IN (SELECT pollid FROM [format_table_name("poll_textreply")] WHERE ckey = \"[ckey]\")")
+ var/rs = REF(src)
if(query_get_new_polls.Execute())
var/newpoll = 0
if(query_get_new_polls.NextRow())
newpoll = 1
if(newpoll)
- output += "Show Player Polls (NEW!) "
+ output += "Show Player Polls (NEW!) "
else
- output += "Show Player Polls "
+ output += "Show Player Polls "
+ qdel(query_get_new_polls)
+ if(QDELETED(src))
+ return
output += ""
@@ -71,8 +75,6 @@
popup.set_window_options("can_close=0")
popup.set_content(output)
popup.open(0)
- return
-
/mob/dead/new_player/Topic(href, href_list[])
if(src != usr)
@@ -310,6 +312,8 @@
return JOB_UNAVAILABLE_SLOTFULL
if(jobban_isbanned(src,rank))
return JOB_UNAVAILABLE_BANNED
+ if(QDELETED(src))
+ return JOB_UNAVAILABLE_GENERIC
if(!job.player_old_enough(client))
return JOB_UNAVAILABLE_ACCOUNTAGE
if(job.required_playtime_remaining(client))
@@ -475,7 +479,12 @@
var/mob/living/carbon/human/H = new(loc)
- if(CONFIG_GET(flag/force_random_names) || jobban_isbanned(src, "appearance"))
+ var/frn = CONFIG_GET(flag/force_random_names)
+ if(!frn)
+ frn = jobban_isbanned(src, "appearance")
+ if(QDELETED(src))
+ return
+ if(frn)
client.prefs.random_character()
client.prefs.real_name = client.prefs.pref_species.random_name(gender,1)
client.prefs.copy_to(H)
diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm
index ce710e5186..388f63961b 100644
--- a/code/modules/mob/dead/new_player/poll.dm
+++ b/code/modules/mob/dead/new_player/poll.dm
@@ -8,16 +8,20 @@
return
var/datum/DBQuery/query_poll_get = SSdbcore.NewQuery("SELECT id, question FROM [format_table_name("poll_question")] WHERE Now() BETWEEN starttime AND endtime [(client.holder ? "" : "AND adminonly = false")]")
if(!query_poll_get.warn_execute())
+ qdel(query_poll_get)
return
var/output = "Player polls
"
var/i = 0
+ var/rs = REF(src)
while(query_poll_get.NextRow())
var/pollid = query_poll_get.item[1]
var/pollquestion = query_poll_get.item[2]
- output += "| [pollquestion] | "
+ output += "| [pollquestion] | "
i++
+ qdel(query_poll_get)
output += " "
- src << browse(output,"window=playerpolllist;size=500x300")
+ if(!QDELETED(src))
+ src << browse(output,"window=playerpolllist;size=500x300")
/mob/dead/new_player/proc/poll_player(pollid)
if(!pollid)
@@ -27,6 +31,7 @@
return
var/datum/DBQuery/query_poll_get_details = SSdbcore.NewQuery("SELECT starttime, endtime, question, polltype, multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]")
if(!query_poll_get_details.warn_execute())
+ qdel(query_poll_get_details)
return
var/pollstarttime = ""
var/pollendtime = ""
@@ -39,23 +44,28 @@
pollquestion = query_poll_get_details.item[3]
polltype = query_poll_get_details.item[4]
multiplechoiceoptions = text2num(query_poll_get_details.item[5])
+ qdel(query_poll_get_details)
switch(polltype)
if(POLLTYPE_OPTION)
var/datum/DBQuery/query_option_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
if(!query_option_get_votes.warn_execute())
+ qdel(query_option_get_votes)
return
var/votedoptionid = 0
if(query_option_get_votes.NextRow())
votedoptionid = text2num(query_option_get_votes.item[1])
+ qdel(query_option_get_votes)
var/list/datum/polloption/options = list()
var/datum/DBQuery/query_option_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
if(!query_option_options.warn_execute())
+ qdel(query_option_options)
return
while(query_option_options.NextRow())
var/datum/polloption/PO = new()
PO.optionid = text2num(query_option_options.item[1])
PO.optiontext = query_option_options.item[2]
options += PO
+ qdel(query_option_options)
var/output = " Player poll
"
output += " Question: [pollquestion]"
output += " Poll runs from [pollstarttime] until [pollendtime]"
@@ -84,10 +94,12 @@
if(POLLTYPE_TEXT)
var/datum/DBQuery/query_text_get_votes = SSdbcore.NewQuery("SELECT replytext FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
if(!query_text_get_votes.warn_execute())
+ qdel(query_text_get_votes)
return
var/vote_text = ""
if(query_text_get_votes.NextRow())
vote_text = query_text_get_votes.item[1]
+ qdel(query_text_get_votes)
var/output = " Player poll
"
output += " Question: [pollquestion]"
output += " Feedback gathering runs from [pollstarttime] until [pollendtime]"
@@ -113,6 +125,7 @@
if(POLLTYPE_RATING)
var/datum/DBQuery/query_rating_get_votes = SSdbcore.NewQuery("SELECT o.text, v.rating FROM [format_table_name("poll_option")] o, [format_table_name("poll_vote")] v WHERE o.pollid = [pollid] AND v.ckey = '[ckey]' AND o.id = v.optionid")
if(!query_rating_get_votes.warn_execute())
+ qdel(query_rating_get_votes)
return
var/output = " Player poll
"
output += " Question: [pollquestion]"
@@ -122,6 +135,7 @@
var/optiontext = query_rating_get_votes.item[1]
rating = query_rating_get_votes.item[2]
output += " [optiontext] - [rating]"
+ qdel(query_rating_get_votes)
if(!rating)
output += " "
- src << browse(null ,"window=playerpolllist")
- src << browse(output,"window=playerpoll;size=500x500")
+ if(!QDELETED(src))
+ src << browse(null ,"window=playerpolllist")
+ src << browse(output,"window=playerpoll;size=500x500")
if(POLLTYPE_MULTI)
var/datum/DBQuery/query_multi_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
if(!query_multi_get_votes.warn_execute())
+ qdel(query_multi_get_votes)
return
var/list/votedfor = list()
while(query_multi_get_votes.NextRow())
votedfor.Add(text2num(query_multi_get_votes.item[1]))
+ qdel(query_multi_get_votes)
var/list/datum/polloption/options = list()
var/maxoptionid = 0
var/minoptionid = 0
var/datum/DBQuery/query_multi_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
if(!query_multi_options.warn_execute())
+ qdel(query_multi_options)
return
while(query_multi_options.NextRow())
var/datum/polloption/PO = new()
@@ -184,6 +204,7 @@
if(PO.optionid < minoptionid || !minoptionid)
minoptionid = PO.optionid
options += PO
+ qdel(query_multi_options)
var/output = " Player poll
"
output += " Question: [pollquestion]You can select up to [multiplechoiceoptions] options. If you select more, the first [multiplechoiceoptions] will be saved. "
output += " Poll runs from [pollstarttime] until [pollendtime]"
@@ -216,22 +237,26 @@
var/datum/DBQuery/query_irv_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
if(!query_irv_get_votes.warn_execute())
+ qdel(query_irv_get_votes)
return
var/list/votedfor = list()
while(query_irv_get_votes.NextRow())
votedfor.Add(text2num(query_irv_get_votes.item[1]))
+ qdel(query_irv_get_votes)
var/list/datum/polloption/options = list()
var/datum/DBQuery/query_irv_options = SSdbcore.NewQuery("SELECT id, text FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
if(!query_irv_options.warn_execute())
+ qdel(query_irv_options)
return
while(query_irv_options.NextRow())
var/datum/polloption/PO = new()
PO.optionid = text2num(query_irv_options.item[1])
PO.optiontext = query_irv_options.item[2]
options["[PO.optionid]"] += PO
+ qdel(query_irv_options)
//if they already voted, use their sort
if (votedfor.len)
@@ -332,10 +357,13 @@
return
var/datum/DBQuery/query_hasvoted = SSdbcore.NewQuery("SELECT id FROM `[format_table_name(table)]` WHERE pollid = [pollid] AND ckey = '[ckey]'")
if(!query_hasvoted.warn_execute())
+ qdel(query_hasvoted)
return
if(query_hasvoted.NextRow())
+ qdel(query_hasvoted)
to_chat(usr, "You've already replied to this poll.")
return
+ qdel(query_hasvoted)
. = "Player"
if(client.holder)
. = client.holder.rank.name
@@ -364,9 +392,12 @@
//validate the poll is actually the right type of poll and its still active
var/datum/DBQuery/query_validate_poll = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE id = [pollid] AND Now() BETWEEN starttime AND endtime AND polltype = '[type]' [(holder ? "" : "AND adminonly = false")]")
if(!query_validate_poll.warn_execute())
+ qdel(query_validate_poll)
return 0
if (!query_validate_poll.NextRow())
+ qdel(query_validate_poll)
return 0
+ qdel(query_validate_poll)
return 1
/mob/dead/new_player/proc/vote_on_irv_poll(pollid, list/votelist)
@@ -397,10 +428,12 @@
//lets collect the options
var/datum/DBQuery/query_irv_id = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
if(!query_irv_id.warn_execute())
+ qdel(query_irv_id)
return 0
var/list/optionlist = list()
while (query_irv_id.NextRow())
optionlist += text2num(query_irv_id.item[1])
+ qdel(query_irv_id)
//validate their votes are actually in the list of options and actually numbers
var/list/numberedvotelist = list()
@@ -428,13 +461,18 @@
//now lets delete their old votes (if any)
var/datum/DBQuery/query_irv_del_old = SSdbcore.NewQuery("DELETE FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
if(!query_irv_del_old.warn_execute())
+ qdel(query_irv_del_old)
return 0
+ qdel(query_irv_del_old)
//now to add the new ones.
var/datum/DBQuery/query_irv_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES [sqlrowlist]")
if(!query_irv_vote.warn_execute())
+ qdel(query_irv_vote)
return 0
- src << browse(null,"window=playerpoll")
+ qdel(query_irv_vote)
+ if(!QDELETED(src))
+ src << browse(null,"window=playerpoll")
return 1
@@ -454,8 +492,11 @@
return
var/datum/DBQuery/query_option_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]')")
if(!query_option_vote.warn_execute())
+ qdel(query_option_vote)
return
- usr << browse(null,"window=playerpoll")
+ qdel(query_option_vote)
+ if(!QDELETED(usr))
+ usr << browse(null,"window=playerpoll")
return 1
/mob/dead/new_player/proc/log_text_poll_reply(pollid, replytext)
@@ -481,8 +522,11 @@
return
var/datum/DBQuery/query_text_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_textreply")] (datetime ,pollid ,ckey ,ip ,replytext ,adminrank) VALUES (Now(), [pollid], '[ckey]', INET_ATON('[client.address]'), '[replytext]', '[adminrank]')")
if(!query_text_vote.warn_execute())
+ qdel(query_text_vote)
return
- usr << browse(null,"window=playerpoll")
+ qdel(query_text_vote)
+ if(!QDELETED(usr))
+ usr << browse(null,"window=playerpoll")
return 1
/mob/dead/new_player/proc/vote_on_numval_poll(pollid, optionid, rating)
@@ -498,18 +542,24 @@
return 0
var/datum/DBQuery/query_numval_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE optionid = [optionid] AND ckey = '[ckey]'")
if(!query_numval_hasvoted.warn_execute())
+ qdel(query_numval_hasvoted)
return
if(query_numval_hasvoted.NextRow())
+ qdel(query_numval_hasvoted)
to_chat(usr, "You've already replied to this poll.")
return
+ qdel(query_numval_hasvoted)
var/adminrank = "Player"
if(client.holder)
adminrank = client.holder.rank.name
adminrank = sanitizeSQL(adminrank)
var/datum/DBQuery/query_numval_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime ,pollid ,optionid ,ckey ,ip ,adminrank, rating) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]', [(isnull(rating)) ? "null" : rating])")
if(!query_numval_vote.warn_execute())
+ qdel(query_numval_vote)
return
- usr << browse(null,"window=playerpoll")
+ qdel(query_numval_vote)
+ if(!QDELETED(usr))
+ usr << browse(null,"window=playerpoll")
return 1
/mob/dead/new_player/proc/vote_on_multi_poll(pollid, optionid)
@@ -525,26 +575,33 @@
return 0
var/datum/DBQuery/query_multi_choicelen = SSdbcore.NewQuery("SELECT multiplechoiceoptions FROM [format_table_name("poll_question")] WHERE id = [pollid]")
if(!query_multi_choicelen.warn_execute())
+ qdel(query_multi_choicelen)
return 1
var/i
if(query_multi_choicelen.NextRow())
- i = text2num(query_multi_choicelen.item[1])
+ i = text2num(query_multi_choicelen.item[1])
+ qdel(query_multi_choicelen)
var/datum/DBQuery/query_multi_hasvoted = SSdbcore.NewQuery("SELECT id FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'")
if(!query_multi_hasvoted.warn_execute())
+ qdel(query_multi_hasvoted)
return 1
while(i)
if(query_multi_hasvoted.NextRow())
i--
else
break
+ qdel(query_multi_hasvoted)
if(!i)
return 2
var/adminrank = "Player"
- if(client.holder)
+ if(!QDELETED(client) && client.holder)
adminrank = client.holder.rank.name
adminrank = sanitizeSQL(adminrank)
var/datum/DBQuery/query_multi_vote = SSdbcore.NewQuery("INSERT INTO [format_table_name("poll_vote")] (datetime, pollid, optionid, ckey, ip, adminrank) VALUES (Now(), [pollid], [optionid], '[ckey]', INET_ATON('[client.address]'), '[adminrank]')")
if(!query_multi_vote.warn_execute())
+ qdel(query_multi_vote)
return 1
- usr << browse(null,"window=playerpoll")
+ qdel(query_multi_vote)
+ if(!QDELETED(usr))
+ usr << browse(null,"window=playerpoll")
return 0
diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm
index b44daefd3f..13ede8ef04 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories.dm
@@ -68,7 +68,7 @@
icon = 'icons/mob/human_face.dmi' // default icon for all hairs
/datum/sprite_accessory/hair/short
- name = "Short Hair" // try to capatilize the names please~ // try to spell
+ name = "Short Hair" // try to capitalize the names please~ // try to spell
icon_state = "hair_a" // you do not need to define _s or _l sub-states, game automatically does this for you
/datum/sprite_accessory/hair/shorthair2
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 5715a1fe87..7655e8e1d7 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -622,7 +622,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
//this is a mob verb instead of atom for performance reasons
//see /mob/verb/examinate() in mob.dm for more info
-//overriden here and in /mob/living for different point span classes and sanity checks
+//overridden here and in /mob/living for different point span classes and sanity checks
/mob/dead/observer/pointed(atom/A as mob|obj|turf in view())
if(!..())
return 0
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 44af3936a8..20bd69ae40 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -136,7 +136,7 @@
//To appropriately fluff things like "they are holding [I] in their [get_held_index_name(get_held_index_of_item(I))]"
-//Can be overriden to pass off the fluff to something else (eg: science allowing people to add extra robotic limbs, and having this proc react to that
+//Can be overridden to pass off the fluff to something else (eg: science allowing people to add extra robotic limbs, and having this proc react to that
// with say "they are holding [I] in their Nanotrasen Brand Utility Arm - Right Edition" or w/e
/mob/proc/get_held_index_name(i)
var/list/hand = list()
@@ -272,7 +272,7 @@
/mob/proc/canUnEquip(obj/item/I, force)
if(!I)
return TRUE
- if((I.flags_1 & NODROP_1) && !force)
+ if((I.item_flags & NODROP) && !force)
return FALSE
return TRUE
@@ -312,7 +312,7 @@
if(!I) //If there's nothing to drop, the drop is automatically succesfull. If(unEquip) should generally be used to check for NODROP_1.
return TRUE
- if((I.flags_1 & NODROP_1) && !force)
+ if((I.item_flags & NODROP) && !force)
return FALSE
var/hand_index = get_held_index_of_item(I)
@@ -325,7 +325,7 @@
I.layer = initial(I.layer)
I.plane = initial(I.plane)
I.appearance_flags &= ~NO_CLIENT_COLOR
- if(!no_move && !(I.flags_1 & DROPDEL_1)) //item may be moved/qdel'd immedietely, don't bother moving it
+ if(!no_move && !(I.item_flags & DROPDEL)) //item may be moved/qdel'd immedietely, don't bother moving it
if (isnull(newloc))
I.moveToNullspace()
else
@@ -396,7 +396,7 @@
if(equip_delay_self)
return
- if(M.active_storage && M.active_storage.parent && M.active_storage.parent.SendSignal(COMSIG_TRY_STORAGE_INSERT, src,M))
+ if(M.active_storage && M.active_storage.parent && SEND_SIGNAL(M.active_storage.parent, COMSIG_TRY_STORAGE_INSERT, src,M))
return TRUE
var/list/obj/item/possible = list(M.get_inactive_held_item(), M.get_item_by_slot(SLOT_BELT), M.get_item_by_slot(SLOT_GENERC_DEXTROUS_STORAGE), M.get_item_by_slot(SLOT_BACK))
@@ -404,7 +404,7 @@
if(!i)
continue
var/obj/item/I = i
- if(I.SendSignal(COMSIG_TRY_STORAGE_INSERT, src, M))
+ if(SEND_SIGNAL(I, COMSIG_TRY_STORAGE_INSERT, src, M))
return TRUE
to_chat(M, "You are unable to equip that!")
@@ -441,10 +441,7 @@
held_items.len = amt
if(hud_used)
- var/style
- if(client && client.prefs)
- style = ui_style2icon(client.prefs.UI_style)
- hud_used.build_hand_slots(style)
+ hud_used.build_hand_slots()
/mob/living/carbon/human/change_number_of_hands(amt)
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index 0052cf923d..d70007452c 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -138,7 +138,7 @@
name = "blood crawl"
desc = "You are unable to hold anything while in this form."
icon = 'icons/effects/blood.dmi'
- flags_1 = NODROP_1|ABSTRACT_1
+ item_flags = NODROP | ABSTRACT
/mob/living/proc/exit_blood_effect(obj/effect/decal/cleanable/B)
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index de6c45841b..864d5d769c 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -34,9 +34,9 @@ GLOBAL_VAR(posibrain_notify_cooldown)
if(istype(ghost))
activate(ghost)
-/obj/item/mmi/posibrain/proc/ping_ghosts(msg, newlymade) // CITADEL EDIT sound change to 'sound/misc/server-ready.ogg'
+/obj/item/mmi/posibrain/proc/ping_ghosts(msg, newlymade)
if(newlymade || GLOB.posibrain_notify_cooldown <= world.time)
- notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/misc/server-ready.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE)
+ notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE)
if(!newlymade)
GLOB.posibrain_notify_cooldown = world.time + askDelay
@@ -85,7 +85,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
/obj/item/mmi/posibrain/proc/activate(mob/user)
if(QDELETED(brainmob))
return
- if(is_occupied() || jobban_isbanned(user,"posibrain"))
+ if(is_occupied() || jobban_isbanned(user,"posibrain") || QDELETED(brainmob) || QDELETED(src) || QDELETED(user))
return
var/posi_ask = alert("Become a [name]? (Warning, You can no longer be cloned, and all past lives will be forgotten!)","Are you positive?","Yes","No")
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm
index f8cf430d74..fe61c2a8ff 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm
@@ -29,7 +29,7 @@
/obj/effect/proc_holder/alien/royal/praetorian/evolve
name = "Evolve"
- desc = "Produce an interal egg sac capable of spawning children. Only one queen can exist at a time."
+ desc = "Produce an internal egg sac capable of spawning children. Only one queen can exist at a time."
plasma_cost = 500
action_icon_state = "alien_evolve_praetorian"
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 2216d955c0..eb5e9664d9 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -45,7 +45,7 @@
"}
for(var/i in 1 to held_items.len)
var/obj/item/I = get_item_for_held_index(i)
- dat += " [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]"
+ dat += " [get_held_index_name(i)]:[(I && !(I.item_flags & ABSTRACT)) ? I : "Empty"]"
dat += " Empty Pouches"
if(handcuffed)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index fb04d174e2..9c61e8aa2d 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -107,7 +107,7 @@
name = "\improper royal parasite"
desc = "Inject this into one of your grown children to promote her to a Praetorian!"
icon_state = "alien_medal"
- flags_1 = ABSTRACT_1|NODROP_1|DROPDEL_1
+ item_flags = ABSTRACT | NODROP | DROPDEL
icon = 'icons/mob/alien.dmi'
/obj/item/queenpromote/attack(mob/living/M, mob/living/carbon/alien/humanoid/user)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index ffeee159ee..c3c74b8631 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -171,7 +171,7 @@
if(start_T && end_T)
add_logs(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")
- else if(!(I.flags_1 & (NODROP_1|ABSTRACT_1)))
+ else if(!(I.item_flags & (NODROP | ABSTRACT)))
thrown_thing = I
dropItemToGround(I)
@@ -200,13 +200,13 @@
[name]
- Head: [(head && !(head.flags_1&ABSTRACT_1)) ? head : "Nothing"]
- Mask: [(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Nothing"]
- Neck: [(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Nothing"]"}
+ Head: [(head && !(head.item_flags & ABSTRACT)) ? head : "Nothing"]
+ Mask: [(wear_mask && !(wear_mask.item_flags & ABSTRACT)) ? wear_mask : "Nothing"]
+ Neck: [(wear_neck && !(wear_neck.item_flags & ABSTRACT)) ? wear_neck : "Nothing"]"}
for(var/i in 1 to held_items.len)
var/obj/item/I = get_item_for_held_index(i)
- dat += " [get_held_index_name(i)]: | [(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Nothing"]"
+ dat += " [get_held_index_name(i)]: | [(I && !(I.item_flags & ABSTRACT)) ? I : "Nothing"]"
dat += " Back: [back ? back : "Nothing"]"
@@ -403,7 +403,7 @@
return initial(pixel_y)
/mob/living/carbon/proc/accident(obj/item/I)
- if(!I || (I.flags_1 & (NODROP_1|ABSTRACT_1)))
+ if(!I || (I.item_flags & (NODROP | ABSTRACT)))
return
//dropItemToGround(I) CIT CHANGE - makes it so the item doesn't drop if the modifier rolls above 100
@@ -497,15 +497,16 @@
break
return 1
-/mob/living/carbon/proc/spew_organ(power = 5)
- if(!internal_organs.len)
- return //Guess we're out of organs
- var/obj/item/organ/guts = pick(internal_organs)
- var/turf/T = get_turf(src)
- guts.Remove(src)
- guts.forceMove(T)
- var/atom/throw_target = get_edge_target_turf(guts, dir)
- guts.throw_at(throw_target, power, 4, src)
+/mob/living/carbon/proc/spew_organ(power = 5, amt = 1)
+ for(var/i in 1 to amt)
+ if(!internal_organs.len)
+ break //Guess we're out of organs!
+ var/obj/item/organ/guts = pick(internal_organs)
+ var/turf/T = get_turf(src)
+ guts.Remove(src)
+ guts.forceMove(T)
+ var/atom/throw_target = get_edge_target_turf(guts, dir)
+ guts.throw_at(throw_target, power, 4, src)
/mob/living/carbon/fully_replace_character_name(oldname,newname)
@@ -760,10 +761,10 @@
drop_all_held_items()
stop_pulling()
throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed)
- SendSignal(COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed)
else
clear_alert("handcuffed")
- SendSignal(COMSIG_CLEAR_MOOD_EVENT, "handcuffed")
+ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "handcuffed")
update_action_buttons_icon() //some of our action buttons might be unusable when we're handcuffed.
update_inv_handcuffed()
update_hud_handcuffed()
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 9e6d5dd896..ebe078ac21 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -71,7 +71,7 @@
affecting = get_bodypart(ran_zone(user.zone_selected))
if(!affecting) //missing limb? we select the first bodypart (you can never have zero, because of chest)
affecting = bodyparts[1]
- I.SendSignal(COMSIG_ITEM_ATTACK_ZONE, src, user, affecting)
+ SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting)
send_item_attack_message(I, user, affecting.name)
if(I.force)
//CIT CHANGES START HERE - combatmode and resting checks
@@ -284,7 +284,7 @@
else
M.visible_message("[M] hugs [src] to make [p_them()] feel better!", \
"You hug [src] to make [p_them()] feel better!")
- SendSignal(COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug)
AdjustStun(-60)
AdjustKnockdown(-60)
AdjustUnconscious(-60)
@@ -349,7 +349,7 @@
/mob/living/carbon/soundbang_act(intensity = 1, stun_pwr = 20, damage_pwr = 5, deafen_pwr = 15)
var/list/reflist = list(intensity) // Need to wrap this in a list so we can pass a reference
- SendSignal(COMSIG_CARBON_SOUNDBANG, reflist)
+ SEND_SIGNAL(src, COMSIG_CARBON_SOUNDBANG, reflist)
intensity = reflist[1]
var/ear_safety = get_ear_protection()
var/obj/item/organ/ears/ears = getorganslot(ORGAN_SLOT_EARS)
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index c748658c4e..7d6d5afca2 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -18,7 +18,7 @@
msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n"
for(var/obj/item/I in held_items)
- if(!(I.flags_1 & ABSTRACT_1))
+ if(!(I.item_flags & ABSTRACT))
msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n"
if (back)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index e569766542..bc55487e95 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -43,7 +43,7 @@
//Hands
for(var/obj/item/I in held_items)
- if(!(I.flags_1 & ABSTRACT_1))
+ if(!(I.item_flags & ABSTRACT))
msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n"
GET_COMPONENT(FR, /datum/component/forensics)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 4a8870281b..de8542094b 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -68,7 +68,7 @@
stat("Internal Atmosphere Info", internal.name)
stat("Tank Pressure", internal.air_contents.return_pressure())
stat("Distribution Pressure", internal.distribute_pressure)
-// var/mob/living/simple_animal/borer/B = has_brain_worms()
+
if(mind)
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
if(changeling)
@@ -115,42 +115,42 @@
dat += ""
for(var/i in 1 to held_items.len)
var/obj/item/I = get_item_for_held_index(i)
- dat += "| [get_held_index_name(i)]: | [(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"] | "
+ dat += "| [get_held_index_name(i)]: | [(I && !(I.item_flags & ABSTRACT)) ? I : "Empty"] | "
dat += "| | "
- dat += "| Back: | [(back && !(back.flags_1&ABSTRACT_1)) ? back : "Empty"]"
+ dat += " | | Back: | [(back && !(back.item_flags & ABSTRACT)) ? back : "Empty"]"
if(has_breathable_mask && istype(back, /obj/item/tank))
dat += " [internal ? "Disable Internals" : "Set Internals"]"
dat += " | | | "
- dat += "| Head: | [(head && !(head.flags_1&ABSTRACT_1)) ? head : "Empty"] | "
+ dat += "| Head: | [(head && !(head.item_flags & ABSTRACT)) ? head : "Empty"] | "
if(SLOT_WEAR_MASK in obscured)
dat += "| Mask: | Obscured | "
else
- dat += "| Mask: | [(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Empty"] | "
+ dat += "| Mask: | [(wear_mask && !(wear_mask.item_flags & ABSTRACT)) ? wear_mask : "Empty"] | "
if(SLOT_NECK in obscured)
dat += "| Neck: | Obscured | "
else
- dat += "| Neck: | [(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Empty"] | "
+ dat += "| Neck: | [(wear_neck && !(wear_neck.item_flags & ABSTRACT)) ? wear_neck : "Empty"] | "
if(SLOT_GLASSES in obscured)
dat += "| Eyes: | Obscured | "
else
- dat += "| Eyes: | [(glasses && !(glasses.flags_1&ABSTRACT_1)) ? glasses : "Empty"] | "
+ dat += "| Eyes: | [(glasses && !(glasses.item_flags & ABSTRACT)) ? glasses : "Empty"] | "
if(SLOT_EARS in obscured)
dat += "| Ears: | Obscured | "
else
- dat += "| Ears: | [(ears && !(ears.flags_1&ABSTRACT_1)) ? ears : "Empty"] | "
+ dat += "| Ears: | [(ears && !(ears.item_flags & ABSTRACT)) ? ears : "Empty"] | "
dat += "| | "
- dat += "| Exosuit: | [(wear_suit && !(wear_suit.flags_1&ABSTRACT_1)) ? wear_suit : "Empty"] | "
+ dat += "| Exosuit: | [(wear_suit && !(wear_suit.item_flags & ABSTRACT)) ? wear_suit : "Empty"] | "
if(wear_suit)
- dat += "| ↳Suit Storage: | [(s_store && !(s_store.flags_1&ABSTRACT_1)) ? s_store : "Empty"]"
+ dat += " | | ↳Suit Storage: | [(s_store && !(s_store.item_flags & ABSTRACT)) ? s_store : "Empty"]"
if(has_breathable_mask && istype(s_store, /obj/item/tank))
dat += " [internal ? "Disable Internals" : "Set Internals"]"
dat += " | "
@@ -160,30 +160,30 @@
if(SLOT_SHOES in obscured)
dat += "| Shoes: | Obscured | "
else
- dat += "| Shoes: | [(shoes && !(shoes.flags_1&ABSTRACT_1)) ? shoes : "Empty"] | "
+ dat += "| Shoes: | [(shoes && !(shoes.item_flags & ABSTRACT)) ? shoes : "Empty"] | "
if(SLOT_GLOVES in obscured)
dat += "| Gloves: | Obscured | "
else
- dat += "| Gloves: | [(gloves && !(gloves.flags_1&ABSTRACT_1)) ? gloves : "Empty"] | "
+ dat += "| Gloves: | [(gloves && !(gloves.item_flags & ABSTRACT)) ? gloves : "Empty"] | "
if(SLOT_W_UNIFORM in obscured)
dat += "| Uniform: | Obscured | "
else
- dat += "| Uniform: | [(w_uniform && !(w_uniform.flags_1&ABSTRACT_1)) ? w_uniform : "Empty"] | "
+ dat += "| Uniform: | [(w_uniform && !(w_uniform.item_flags & ABSTRACT)) ? w_uniform : "Empty"] | "
if((w_uniform == null && !(dna && dna.species.nojumpsuit)) || (SLOT_W_UNIFORM in obscured))
dat += "| ↳Pockets: | "
dat += "| ↳ID: | "
dat += "| ↳Belt: | "
else
- dat += "| ↳Belt: | [(belt && !(belt.flags_1&ABSTRACT_1)) ? belt : "Empty"]"
+ dat += " | | ↳Belt: | [(belt && !(belt.item_flags & ABSTRACT)) ? belt : "Empty"]"
if(has_breathable_mask && istype(belt, /obj/item/tank))
dat += " [internal ? "Disable Internals" : "Set Internals"]"
dat += " | "
- dat += "| ↳Pockets: | [(l_store && !(l_store.flags_1&ABSTRACT_1)) ? "Left (Full)" : "Left (Empty)"]"
- dat += " [(r_store && !(r_store.flags_1&ABSTRACT_1)) ? "Right (Full)" : "Right (Empty)"] | "
- dat += "| ↳ID: | [(wear_id && !(wear_id.flags_1&ABSTRACT_1)) ? wear_id : "Empty"] | "
+ dat += "| ↳Pockets: | [(l_store && !(l_store.item_flags & ABSTRACT)) ? "Left (Full)" : "Left (Empty)"]"
+ dat += " [(r_store && !(r_store.item_flags & ABSTRACT)) ? "Right (Full)" : "Right (Empty)"] | "
+ dat += "| ↳ID: | [(wear_id && !(wear_id.item_flags & ABSTRACT)) ? wear_id : "Empty"] | "
if(handcuffed)
dat += "| Handcuffed: Remove | "
@@ -230,7 +230,7 @@
usr.visible_message("[usr] successfully rips [I] out of [usr.p_their()] [L.name]!","You successfully remove [I] from your [L.name].")
if(!has_embedded_objects())
clear_alert("embeddedobject")
- usr.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded")
+ SEND_SIGNAL(usr, COMSIG_CLEAR_MOOD_EVENT, "embedded")
return
if(href_list["item"])
@@ -246,11 +246,11 @@
var/obj/item/place_item = usr.get_active_held_item() // Item to place in the pocket, if it's empty
var/delay_denominator = 1
- if(pocket_item && !(pocket_item.flags_1&ABSTRACT_1))
- if(pocket_item.flags_1 & NODROP_1)
+ if(pocket_item && !(pocket_item.item_flags & ABSTRACT))
+ if(pocket_item.item_flags & NODROP)
to_chat(usr, "You try to empty [src]'s [pocket_side] pocket, it seems to be stuck!")
to_chat(usr, "You try to empty [src]'s [pocket_side] pocket.")
- else if(place_item && place_item.mob_can_equip(src, usr, pocket_id, 1) && !(place_item.flags_1&ABSTRACT_1))
+ else if(place_item && place_item.mob_can_equip(src, usr, pocket_id, 1) && !(place_item.item_flags & ABSTRACT))
to_chat(usr, "You try to place [place_item] into [src]'s [pocket_side] pocket.")
delay_denominator = 4
else
@@ -274,7 +274,7 @@
// Display a warning if the user mocks up
to_chat(src, "You feel your [pocket_side] pocket being fumbled with!")
- ..()
+ ..()
///////HUDs///////
@@ -387,7 +387,7 @@
R = find_record("name", perpname, GLOB.data_core.security)
if(R)
if(href_list["status"])
- var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged", "Cancel")
+ var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Paroled", "Discharged", "Cancel")
if(setcriminal != "Cancel")
if(R)
if(H.canUseHUD())
@@ -590,7 +590,7 @@
threatcount += 5
if("Incarcerated")
threatcount += 2
- if("Parolled")
+ if("Paroled")
threatcount += 2
//Check for dresscode violations
@@ -662,7 +662,7 @@
return
src.visible_message("[src] performs CPR on [C.name]!", "You perform CPR on [C.name].")
- SendSignal(COMSIG_ADD_MOOD_EVENT, "perform_cpr", /datum/mood_event/perform_cpr)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "perform_cpr", /datum/mood_event/perform_cpr)
C.cpr_time = world.time
add_logs(src, C, "CPRed")
@@ -689,7 +689,7 @@
if(strength < CLEAN_STRENGTH_BLOOD)
return
if(gloves)
- if(gloves.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
+ if(SEND_SIGNAL(gloves, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
update_inv_gloves()
else
if(bloody_hands)
@@ -727,9 +727,8 @@
to_chat(src, "You can't do that right now!")
return FALSE
if(!Adjacent(M) && (M.loc != src))
- if((be_close == 0) && (dna.check_mutation(TK)))
- if(tkMaxRangeCheck(src, M))
- return TRUE
+ if((be_close == 0) || (dna.check_mutation(TK) && tkMaxRangeCheck(src, M)))
+ return TRUE
to_chat(src, "You are too far away!")
return FALSE
return TRUE
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 33344486b1..acf4b0734c 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -144,7 +144,7 @@
I.forceMove(src)
L.receive_damage(I.w_class*I.embedding.embedded_impact_pain_multiplier)
visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!")
- SendSignal(COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded)
hitpush = FALSE
skipcatch = TRUE //can't catch the now embedded item
@@ -173,7 +173,7 @@
affecting = get_bodypart(ran_zone(user.zone_selected))
var/target_area = parse_zone(check_zone(user.zone_selected)) //our intended target
- I.SendSignal(COMSIG_ITEM_ATTACK_ZONE, src, user, affecting)
+ SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting)
SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list("[I.force]", "[I.type]"))
SSblackbox.record_feedback("tally", "zone_targeted", 1, target_area)
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 871b64bbc0..5bfbb76e46 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -67,6 +67,6 @@
S.step_action()
/mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee.
- if(..())
- return 1
- return dna.species.space_move(src)
+ if(dna.species.space_move(src))
+ return TRUE
+ return ..()
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 0e033856b2..bc39670e56 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -66,14 +66,14 @@
adjust_blurriness(-1)
if (getBrainLoss() >= 60 && !incapacitated(TRUE))
- SendSignal(COMSIG_ADD_MOOD_EVENT, "brain_damage", /datum/mood_event/brain_damage)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "brain_damage", /datum/mood_event/brain_damage)
if(prob(3))
if(prob(25))
emote("drool")
else
say(pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage"))
else
- SendSignal(COMSIG_CLEAR_MOOD_EVENT, "brain_damage")
+ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "brain_damage")
/mob/living/carbon/human/handle_mutations_and_radiation()
if(!dna || !dna.species.handle_mutations_and_radiation(src))
@@ -313,7 +313,7 @@
visible_message("[I] falls out of [name]'s [BP.name]!","[I] falls out of your [BP.name]!")
if(!has_embedded_objects())
clear_alert("embeddedobject")
- SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded")
+ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "embedded")
/mob/living/carbon/human/proc/handle_active_genes()
for(var/datum/mutation/human/HM in dna.mutations)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 51ba7a9d9c..34c243a4ba 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -970,7 +970,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(SLOT_L_STORE)
- if(I.flags_1 & NODROP_1) //Pockets aren't visible, so you can't move NODROP_1 items into them.
+ if(I.item_flags & NODROP) //Pockets aren't visible, so you can't move NODROP_1 items into them.
return FALSE
if(H.l_store)
return FALSE
@@ -986,7 +986,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & ITEM_SLOT_POCKET) )
return TRUE
if(SLOT_R_STORE)
- if(I.flags_1 & NODROP_1)
+ if(I.item_flags & NODROP)
return FALSE
if(H.r_store)
return FALSE
@@ -1003,7 +1003,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
return TRUE
return FALSE
if(SLOT_S_STORE)
- if(I.flags_1 & NODROP_1)
+ if(I.item_flags & NODROP)
return FALSE
if(H.s_store)
return FALSE
@@ -1040,7 +1040,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
return TRUE
if(SLOT_IN_BACKPACK)
if(H.back)
- if(H.back.SendSignal(COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE))
+ if(SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE))
return TRUE
return FALSE
return FALSE //Unsupported slot
@@ -1138,22 +1138,22 @@ GLOBAL_LIST_EMPTY(roundstart_races)
switch(H.nutrition)
if(NUTRITION_LEVEL_FULL to INFINITY)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/fat)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/fat)
H.throw_alert("nutrition", /obj/screen/alert/fat)
if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/wellfed)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/wellfed)
H.clear_alert("nutrition")
if( NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/fed)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/fed)
H.clear_alert("nutrition")
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "nutrition")
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "nutrition")
H.clear_alert("nutrition")
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/hungry)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/hungry)
H.throw_alert("nutrition", /obj/screen/alert/hungry)
if(0 to NUTRITION_LEVEL_STARVING)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/starving)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "nutrition", /datum/mood_event/nutrition/starving)
H.throw_alert("nutrition", /obj/screen/alert/starving)
/datum/species/proc/update_health_hud(mob/living/carbon/human/H)
@@ -1211,8 +1211,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(H.movement_type & FLYING)
flight = 1
- if(H.has_gravity())
- gravity = TRUE
+ gravity = H.has_gravity()
if(!flightpack && gravity) //Check for chemicals and innate speedups and slowdowns if we're moving using our body and not a flying suit
if(H.has_trait(TRAIT_GOTTAGOFAST))
@@ -1265,6 +1264,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if((hungry >= 70) && !flight) //Being hungry will still allow you to use a flightsuit/wings.
. += hungry / 50
+ //Moving in high gravity is very slow (Flying too)
+ if(gravity > STANDARD_GRAVITY)
+ var/grav_force = min(gravity - STANDARD_GRAVITY,3)
+ . += 1 + grav_force
+
GET_COMPONENT_FROM(mood, /datum/component/mood, H)
if(mood && !flight) //How can depression slow you down if you can just fly away from your problems?
switch(mood.sanity)
@@ -1457,7 +1461,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
playsound(target, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
target.visible_message("[user] attempted to disarm [target]!", \
"[user] attemped to disarm [target]!", null, COMBAT_MESSAGE_RANGE)
-
+ add_logs(user, target, "attempted to disarm")
/datum/species/proc/spec_hitby(atom/movable/AM, mob/living/carbon/human/H)
@@ -1701,9 +1705,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
// +/- 50 degrees from 310K is the 'safe' zone, where no damage is dealt.
if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !H.has_trait(TRAIT_RESISTHEAT))
//Body temperature is too hot.
+
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold")
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot)
+
var/burn_damage
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "cold")
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot)
switch(H.bodytemperature)
if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400)
H.throw_alert("temp", /obj/screen/alert/hot, 1)
@@ -1723,8 +1729,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.apply_damage(burn_damage, BURN)
else if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !H.has_trait(TRAIT_RESISTCOLD))
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "hot")
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold)
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot")
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold)
switch(H.bodytemperature)
if(200 to BODYTEMP_COLD_DAMAGE_LIMIT)
H.throw_alert("temp", /obj/screen/alert/cold, 1)
@@ -1738,8 +1744,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
else
H.clear_alert("temp")
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "cold")
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "hot")
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold")
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot")
var/pressure = environment.return_pressure()
var/adjusted_pressure = H.calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob.
@@ -1833,7 +1839,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.adjust_bodytemperature(11)
else
H.adjust_bodytemperature(BODYTEMP_HEATING_MAX + (H.fire_stacks * 12))
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire)
/datum/species/proc/CanIgniteMob(mob/living/carbon/human/H)
if(H.has_trait(TRAIT_NOFIRE))
@@ -1860,12 +1866,3 @@ GLOBAL_LIST_EMPTY(roundstart_races)
/datum/species/proc/negates_gravity(mob/living/carbon/human/H)
return 0
-
-
-#undef HEAT_DAMAGE_LEVEL_1
-#undef HEAT_DAMAGE_LEVEL_2
-#undef HEAT_DAMAGE_LEVEL_3
-
-#undef COLD_DAMAGE_LEVEL_1
-#undef COLD_DAMAGE_LEVEL_2
-#undef COLD_DAMAGE_LEVEL_3
diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm
index ae90bb8597..a266f42f4a 100644
--- a/code/modules/mob/living/carbon/human/species_types/humans.dm
+++ b/code/modules/mob/living/carbon/human/species_types/humans.dm
@@ -24,11 +24,6 @@
H.endTailWag()
. = ..()
-/datum/species/human/space_move(mob/living/carbon/human/H)
- var/obj/item/flightpack/F = H.get_flightpack()
- if(istype(F) && (F.flight) && F.allow_thrust(0.01, src))
- return TRUE
-
/datum/species/human/on_species_gain(mob/living/carbon/human/H, datum/species/old_species)
if(H.dna.features["ears"] == "Cat")
mutantears = /obj/item/organ/ears/cat
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 839d480776..7f5726cf95 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -669,6 +669,8 @@
/datum/action/innate/project_thought/Activate()
var/mob/living/carbon/human/H = owner
+ if(H.stat == DEAD)
+ return
if(!is_species(H, /datum/species/jelly/stargazer))
return
CHECK_DNA_AND_SPECIES(H)
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index 4ef4fe4887..22a44e3fa7 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -171,7 +171,7 @@
armour_penetration = 35
lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi'
righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi'
- flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1
+ item_flags = ABSTRACT | NODROP | DROPDEL
w_class = WEIGHT_CLASS_HUGE
sharpness = IS_SHARP
@@ -216,4 +216,4 @@
playsound(src, 'sound/items/welder.ogg', 50, 1)
#undef HEART_SPECIAL_SHADOWIFY
-#undef HEART_RESPAWN_THRESHHOLD
\ No newline at end of file
+#undef HEART_RESPAWN_THRESHHOLD
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index bca70c053c..bc2d6132e1 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -72,7 +72,7 @@
put_in_hands(I)
update_inv_hands()
if(SLOT_IN_BACKPACK)
- if(!back.SendSignal(COMSIG_TRY_STORAGE_INSERT, I, src, TRUE))
+ if(!SEND_SIGNAL(back, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE))
not_handled = TRUE
else
not_handled = TRUE
@@ -137,3 +137,6 @@
update_inv_wear_mask()
update_inv_head()
+/mob/living/carbon/proc/get_holding_bodypart_of_item(obj/item/I)
+ var/index = get_held_index_of_item(I)
+ return index && hand_bodyparts[index]
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 814ce0ef0f..7fefaa5d6b 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -156,7 +156,7 @@
adjustOxyLoss(3)
failed_last_breath = 1
throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
- SendSignal(COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
else //Enough oxygen
failed_last_breath = 0
@@ -164,7 +164,7 @@
adjustOxyLoss(-5)
oxygen_used = breath_gases[/datum/gas/oxygen][MOLES]
clear_alert("not_enough_oxy")
- SendSignal(COMSIG_CLEAR_MOOD_EVENT, "suffocation")
+ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "suffocation")
breath_gases[/datum/gas/oxygen][MOLES] -= oxygen_used
breath_gases[/datum/gas/carbon_dioxide][MOLES] += oxygen_used
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index ed60456b67..8b69a4d65d 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -133,7 +133,7 @@
/mob/living/carbon/monkey/proc/handle_combat()
if(pickupTarget)
- if(restrained() || blacklistItems[pickupTarget] || (pickupTarget.flags_1 & NODROP_1))
+ if(restrained() || blacklistItems[pickupTarget] || (pickupTarget.item_flags & NODROP))
pickupTarget = null
else
pickupTimer++
@@ -225,7 +225,7 @@
// check if target has a weapon
var/obj/item/W
for(var/obj/item/I in target.held_items)
- if(!(I.flags_1 & ABSTRACT_1))
+ if(!(I.item_flags & ABSTRACT))
W = I
break
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index 518bf46041..1ddea78bf2 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -1,10 +1,4 @@
-#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
-#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point
-#define HEAT_DAMAGE_LEVEL_3 10 //Amount of damage applied when your body temperature passes the 460K point and you are on fire
-#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point
-#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point
-#define COLD_DAMAGE_LEVEL_3 3 //Amount of damage applied when your body temperature passes the 120K point
/mob/living/carbon/monkey
@@ -175,12 +169,4 @@
I.take_damage(fire_stacks, BURN, "fire", 0)
adjust_bodytemperature(BODYTEMP_HEATING_MAX)
- SendSignal(COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire)
-
-#undef HEAT_DAMAGE_LEVEL_1
-#undef HEAT_DAMAGE_LEVEL_2
-#undef HEAT_DAMAGE_LEVEL_3
-
-#undef COLD_DAMAGE_LEVEL_1
-#undef COLD_DAMAGE_LEVEL_2
-#undef COLD_DAMAGE_LEVEL_3
\ No newline at end of file
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire)
diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm
index 1d619364e0..d850efcee6 100644
--- a/code/modules/mob/living/carbon/status_procs.dm
+++ b/code/modules/mob/living/carbon/status_procs.dm
@@ -45,11 +45,11 @@
if(druggy)
overlay_fullscreen("high", /obj/screen/fullscreen/high)
throw_alert("high", /obj/screen/alert/high)
- SendSignal(COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/drugs/high)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/drugs/high)
else
clear_fullscreen("high")
clear_alert("high")
- SendSignal(COMSIG_CLEAR_MOOD_EVENT, "high")
+ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "high")
/mob/living/carbon/set_drugginess(amount)
druggy = max(amount, 0)
diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm
index af685e91cb..212b96e6d9 100644
--- a/code/modules/mob/living/carbon/update_icons.dm
+++ b/code/modules/mob/living/carbon/update_icons.dm
@@ -124,7 +124,7 @@
if(wear_mask)
if(!(head && (head.flags_inv & HIDEMASK)))
- overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = ((wear_mask.icon_override) ? wear_mask.icon_override : 'icons/mob/mask.dmi'))
+ overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/mask.dmi')
update_hud_wear_mask(wear_mask)
apply_overlay(FACEMASK_LAYER)
@@ -138,7 +138,7 @@
if(wear_neck)
if(!(head && (head.flags_inv & HIDENECK)))
- overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(state = wear_neck.icon_state, default_layer = NECK_LAYER, default_icon_file = ((wear_neck.icon_override) ? wear_neck.icon_override : 'icons/mob/neck.dmi'))
+ overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(state = wear_neck.icon_state, default_layer = NECK_LAYER, default_icon_file = 'icons/mob/neck.dmi')
update_hud_neck(wear_neck)
apply_overlay(NECK_LAYER)
@@ -151,7 +151,7 @@
inv.update_icon()
if(back)
- overlays_standing[BACK_LAYER] = back.build_worn_icon(state = back.icon_state, default_layer = BACK_LAYER, default_icon_file = ((back.icon_override) ? back.icon_override : 'icons/mob/back.dmi'))
+ overlays_standing[BACK_LAYER] = back.build_worn_icon(state = back.icon_state, default_layer = BACK_LAYER, default_icon_file = 'icons/mob/back.dmi')
update_hud_back(back)
apply_overlay(BACK_LAYER)
@@ -167,7 +167,7 @@
inv.update_icon()
if(head)
- overlays_standing[HEAD_LAYER] = head.build_worn_icon(state = head.icon_state, default_layer = HEAD_LAYER, default_icon_file = ((head.icon_override) ? head.icon_override : 'icons/mob/head.dmi'))
+ overlays_standing[HEAD_LAYER] = head.build_worn_icon(state = head.icon_state, default_layer = HEAD_LAYER, default_icon_file = 'icons/mob/head.dmi')
update_hud_head(head)
apply_overlay(HEAD_LAYER)
@@ -235,22 +235,11 @@
if(limb_icon_cache[icon_render_key])
load_limb_from_cache()
return
- //Taur code goes here, since humans just inherit this proc
- var/is_taur = FALSE
- if(ishuman(src))
- var/mob/living/carbon/human/H = src
- if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None"))
- is_taur = TRUE
//GENERATE NEW LIMBS
var/list/new_limbs = list()
for(var/X in bodyparts)
var/obj/item/bodypart/BP = X
-
- if(istype(BP, /obj/item/bodypart/r_leg) || istype(BP, /obj/item/bodypart/l_leg))
- if(is_taur)
- continue
-
new_limbs += BP.get_limb_icon()
if(new_limbs.len)
overlays_standing[BODYPARTS_LAYER] = new_limbs
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 7542c0c79c..4b6280f1f9 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -54,7 +54,7 @@
var/turf/T = get_turf(src)
for(var/obj/item/I in contents)
I.on_mob_death(src, gibbed)
- if(mind && mind.name && mind.active && (!(T.flags_1 & NO_DEATHRATTLE_1)))
+ if(mind && mind.name && mind.active && !istype(T.loc, /area/ctf))
var/rendered = "[mind.name] has died at [get_area_name(T)]."
deadchat_broadcast(rendered, follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE)
if(mind)
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index b8711e13f3..458c19edfb 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -412,6 +412,8 @@
if(jobban_isbanned(user, "emote"))
to_chat(user, "You cannot send custom emotes (banned).")
return FALSE
+ else if(QDELETED(user))
+ return FALSE
else if(user.client && user.client.prefs.muted & MUTE_IC)
to_chat(user, "You cannot send IC messages (muted).")
return FALSE
diff --git a/code/modules/mob/living/inhand_holder.dm b/code/modules/mob/living/inhand_holder.dm
index 711866d733..420c59b22d 100644
--- a/code/modules/mob/living/inhand_holder.dm
+++ b/code/modules/mob/living/inhand_holder.dm
@@ -5,7 +5,7 @@
desc = "Yell at coderbrush."
icon = null
icon_state = ""
- flags_1 = DROPDEL_1
+ item_flags = DROPDEL
var/mob/living/held_mob
var/can_head = TRUE
var/destroying = FALSE
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 4ee96b2635..817e3c3f3b 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -58,7 +58,7 @@
//stuff in the stomach
handle_stomach()
- update_gravity(mob_has_gravity())
+ handle_gravity()
if(machine)
machine.check_eye(src)
@@ -110,7 +110,7 @@
ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire
return
var/turf/location = get_turf(src)
- location.hotspot_expose(700, 50, 1)
+ location.hotspot_expose(700, 10, 1)
/mob/living/proc/handle_stomach()
return
@@ -137,3 +137,26 @@
/mob/living/proc/update_damage_hud()
return
+
+/mob/living/proc/handle_gravity()
+ var/gravity = mob_has_gravity()
+ update_gravity(gravity)
+
+ if(gravity > STANDARD_GRAVITY)
+ gravity_animate()
+ handle_high_gravity(gravity)
+
+/mob/living/proc/gravity_animate()
+ if(!get_filter("gravity"))
+ add_filter("gravity",1,list("type"="motion_blur", "x"=0, "y"=0))
+ INVOKE_ASYNC(src, .proc/gravity_pulse_animation)
+
+/mob/living/proc/gravity_pulse_animation()
+ animate(get_filter("gravity"), y = 1, time = 10)
+ sleep(10)
+ animate(get_filter("gravity"), y = 0, time = 10)
+
+/mob/living/proc/handle_high_gravity(gravity)
+ if(gravity >= GRAVITY_DAMAGE_TRESHOLD) //Aka gravity values of 3 or more
+ var/grav_stregth = gravity - GRAVITY_DAMAGE_TRESHOLD
+ adjustBruteLoss(min(grav_stregth,3))
\ No newline at end of file
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 71999fa7a5..5db817ef8a 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -368,7 +368,7 @@
ret |= contents //add our contents
for(var/i in ret.Copy()) //iterate storage objects
var/atom/A = i
- A.SendSignal(COMSIG_TRY_STORAGE_RETURN_INVENTORY, ret)
+ SEND_SIGNAL(A, COMSIG_TRY_STORAGE_RETURN_INVENTORY, ret)
for(var/obj/item/folder/F in ret.Copy()) //very snowflakey-ly iterate folders
ret |= F.contents
return ret
@@ -466,21 +466,6 @@
/mob/living/proc/update_damage_overlays()
return
-/mob/living/proc/Examine_OOC()
- set name = "Examine Meta-Info (OOC)"
- set category = "OOC"
- set src in view()
-
- if(CONFIG_GET(flag/allow_metadata))
- if(client)
- to_chat(src, "[src]'s Metainfo: [client.prefs.metadata]")
- else
- to_chat(src, "[src] does not have any stored information!")
- else
- to_chat(src, "OOC Metadata is not supported by this server!")
-
- return
-
/mob/living/Move(atom/newloc, direct)
if (buckled && buckled.loc != newloc) //not updating position
if (!buckled.anchored)
@@ -604,6 +589,7 @@
return
changeNext_move(CLICK_CD_RESIST)
+ SEND_SIGNAL(src, COMSIG_LIVING_RESIST, src)
//resisting grabs (as if it helps anyone...)
if(!restrained(ignore_grab = 1) && pulledby)
visible_message("[src] resists against [pulledby]'s grip!")
@@ -623,14 +609,6 @@
var/obj/C = loc
C.container_resist(src)
- else if(IsFrozen())
- to_chat(src, "You start breaking out of the ice cube!")
- if(do_mob(src, src, 40))
- if(IsFrozen())
- to_chat(src, "You break out of the ice cube!")
- remove_status_effect(/datum/status_effect/freon)
- update_canmove()
-
else if(canmove)
if(on_fire)
resist_fire() //stop, drop, and roll
@@ -673,9 +651,15 @@
if(!SSticker.HasRoundStarted())
return
if(has_gravity)
- clear_alert("weightless")
+ if(has_gravity == 1)
+ clear_alert("gravity")
+ else
+ if(has_gravity >= GRAVITY_DAMAGE_TRESHOLD)
+ throw_alert("gravity", /obj/screen/alert/veryhighgravity)
+ else
+ throw_alert("gravity", /obj/screen/alert/highgravity)
else
- throw_alert("weightless", /obj/screen/alert/weightless)
+ throw_alert("gravity", /obj/screen/alert/weightless)
if(!override && !is_flying())
float(!has_gravity)
@@ -697,7 +681,7 @@
// The src mob is trying to strip an item from someone
// Override if a certain type of mob should be behave differently when stripping items (can't, for example)
/mob/living/stripPanelUnequip(obj/item/what, mob/who, where)
- if(what.flags_1 & NODROP_1)
+ if(what.item_flags & NODROP)
to_chat(src, "You can't remove \the [what.name], it appears to be stuck!")
return
who.visible_message("[src] tries to remove [who]'s [what.name].", \
@@ -718,7 +702,7 @@
// Override if a certain mob should be behave differently when placing items (can't, for example)
/mob/living/stripPanelEquip(obj/item/what, mob/who, where)
what = src.get_active_held_item()
- if(what && (what.flags_1 & NODROP_1))
+ if(what && (what.item_flags & NODROP))
to_chat(src, "You can't put \the [what.name] on [who], it's stuck to your hand!")
return
if(what)
@@ -831,7 +815,6 @@
return FALSE
return TRUE
-
/mob/living/proc/update_stamina()
return
/*
@@ -928,6 +911,7 @@
new/obj/effect/dummy/fire(src)
throw_alert("fire", /obj/screen/alert/fire)
update_fire()
+ SEND_SIGNAL(src, COMSIG_LIVING_IGNITED,src)
return TRUE
return FALSE
@@ -938,7 +922,8 @@
for(var/obj/effect/dummy/fire/F in src)
qdel(F)
clear_alert("fire")
- SendSignal(COMSIG_CLEAR_MOOD_EVENT, "on_fire")
+ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "on_fire")
+ SEND_SIGNAL(src, COMSIG_LIVING_EXTINGUISHED, src)
update_fire()
/mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person
@@ -1149,6 +1134,9 @@
/mob/living/vv_edit_var(var_name, var_value)
switch(var_name)
+ if ("maxHealth")
+ if (!isnum(var_value) || var_value <= 0)
+ return FALSE
if("stat")
if((stat == DEAD) && (var_value < DEAD))//Bringing the dead back to life
GLOB.dead_mob_list -= src
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 851bf43334..64349c15a4 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -67,7 +67,7 @@
var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest
var/dtype = BRUTE
var/volume = I.get_volume_by_throwforce_and_or_w_class()
- I.SendSignal(COMSIG_MOVABLE_IMPACT_ZONE, src, zone)
+ SEND_SIGNAL(I, COMSIG_MOVABLE_IMPACT_ZONE, src, zone)
dtype = I.damtype
if (I.throwforce > 0) //If the weapon's throwforce is greater than zero...
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index cbc04d11be..91401cbc88 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -124,7 +124,7 @@
job = "AI"
create_eye()
- rename_self("ai")
+ apply_pref_name("ai")
holo_icon = getHologramIcon(icon('icons/mob/ai.dmi',"default"))
@@ -824,7 +824,7 @@
//apc_override is needed here because AIs use their own APC when depowered
return (GLOB.cameranet && GLOB.cameranet.checkTurfVis(get_turf_pixel(A))) || apc_override
//AI is carded/shunted
- //view(src) returns nothing for carded/shunted AIs and they have x-ray vision so just use get_dist
+ //view(src) returns nothing for carded/shunted AIs and they have X-ray vision so just use get_dist
var/list/viewscale = getviewsize(client.view)
return get_dist(src, A) <= max(viewscale[1]*0.5,viewscale[2]*0.5)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 0135fca88e..5a4f01a53c 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -236,7 +236,7 @@
P.fold_out()
/datum/action/innate/pai/chassis
- name = "Holochassis Appearence Composite"
+ name = "Holochassis Appearance Composite"
button_icon_state = "pai_chassis"
background_icon_state = "bg_tech"
diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm
index 41bd62ea16..85f7fe6afc 100644
--- a/code/modules/mob/living/silicon/pai/pai_shell.dm
+++ b/code/modules/mob/living/silicon/pai/pai_shell.dm
@@ -116,6 +116,6 @@
/mob/living/silicon/pai/mob_try_pickup(mob/living/user)
if(!possible_chassis[chassis])
- to_chat(user, "[src]'s current form isn't able to be carried!")
+ to_chat(user, "[src]'s current form isn't able to be carried!")
return FALSE
return ..()
diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm
index 38208a3d2e..9fd16bbbb2 100644
--- a/code/modules/mob/living/silicon/pai/software.dm
+++ b/code/modules/mob/living/silicon/pai/software.dm
@@ -209,7 +209,7 @@
pda.silent = !pda.silent
else if(href_list["target"])
if(silent)
- return alert("Communications circuits remain unitialized.")
+ return alert("Communications circuits remain uninitialized.")
var/target = locate(href_list["target"])
pda.create_message(src, target)
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index 2b775070a9..1e24259986 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -16,7 +16,6 @@
sight_mode &= ~S.sight_mode
update_sight()
else if(istype(O, /obj/item/storage/bag/tray/))
- O.SendSignal(COMSIG_TRY_STORAGE_QUICK_EMPTY)
//CITADEL EDIT reee proc, Dogborg modules
if(istype(O,/obj/item/gun/energy/laser/cyborg))
laser = FALSE
@@ -31,15 +30,10 @@
var/obj/item/dogborg/sleeper/S = O
S.go_out() //this should stop edgecase deletions
//END CITADEL EDIT
+ SEND_SIGNAL(O, COMSIG_TRY_STORAGE_QUICK_EMPTY)
if(client)
client.screen -= O
observer_screen_update(O,FALSE)
- O.forceMove(module) //Return item to module so it appears in its contents, so it can be taken out again.
-
- if(O.flags_1 & DROPDEL_1)
- O.flags_1 &= ~DROPDEL_1 //we shouldn't HAVE things with DROPDEL_1 in our modules, but better safe than runtiming horribly
-
- O.dropped(src)
if(module_active == O)
module_active = null
@@ -52,6 +46,12 @@
else if(held_items[3] == O)
inv3.icon_state = "inv3"
held_items[3] = null
+
+ if(O.item_flags & DROPDEL)
+ O.item_flags &= ~DROPDEL //we shouldn't HAVE things with DROPDEL_1 in our modules, but better safe than runtiming horribly
+
+ O.forceMove(module) //Return item to module so it appears in its contents, so it can be taken out again.
+
hud_used.update_robot_modules_display()
return 1
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index b29769521a..ab0a9602fc 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -238,15 +238,17 @@
module.transform_to(modulelist[input_module])
-/mob/living/silicon/robot/proc/updatename()
+/mob/living/silicon/robot/proc/updatename(client/C)
if(shell)
return
+ if(!C)
+ C = client
var/changed_name = ""
if(custom_name)
changed_name = custom_name
- if(changed_name == "" && client)
- rename_self(src, client)
- return //built in camera handled in proc
+ if(changed_name == "" && C && C.prefs.custom_names["cyborg"] != DEFAULT_CYBORG_NAME)
+ if(apply_pref_name("cyborg", C))
+ return //built in camera handled in proc
if(!changed_name)
changed_name = get_standard_name()
@@ -388,12 +390,8 @@
to_chat(user, "You start fixing yourself...")
if(!W.use_tool(src, user, 50))
return
- adjustBruteLoss(-10)
- else
- to_chat(user, "You start fixing [src]...")
- if(!do_after(user, 30, target = src))
- return
- adjustBruteLoss(-30)
+
+ adjustBruteLoss(-30)
updatehealth()
add_fingerprint(user)
visible_message("[user] has fixed some of the dents on [src].")
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 0a56ea2425..4907e46751 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -47,7 +47,7 @@
damage = rand(20, 40)
else
damage = rand(5, 35)
- damage = round(damage / 2) // borgs recieve half damage
+ damage = round(damage / 2) // borgs receive half damage
adjustBruteLoss(damage)
updatehealth()
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 3a138a5dad..3f3071bf0c 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -119,7 +119,7 @@
if(I.loc != src)
I.forceMove(src)
modules += I
- I.flags_1 |= NODROP_1
+ I.item_flags |= NODROP
I.mouse_opacity = MOUSE_OPACITY_OPAQUE
if(nonstandard)
added_modules += I
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index b149701591..3fadd0d6c8 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -405,4 +405,7 @@
return 1
/mob/living/silicon/get_inactive_held_item()
- return FALSE
\ No newline at end of file
+ return FALSE
+
+/mob/living/silicon/handle_high_gravity(gravity)
+ return
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index f152132377..b38cf6395c 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -524,7 +524,7 @@ Pass a positive integer as an argument to override a bot's default speed.
turn_on() //Saves the AI the hassle of having to activate a bot manually.
access_card = all_access //Give the bot all-access while under the AI's command.
if(client)
- reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time
+ reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time
to_chat(src, "Priority waypoint set by [icon2html(calling_ai, src)] [caller]. Proceed to [end_area]. [path.len-1] meters to destination. You have been granted additional door access for 60 seconds.")
if(message)
to_chat(calling_ai, "[icon2html(src, calling_ai)] [name] called to [end_area]. [path.len-1] meters to destination.")
@@ -720,7 +720,7 @@ Pass a positive integer as an argument to override a bot's default speed.
if("ejectpai")
return
else
- to_chat(src, "Unidentified control sequence recieved:[command]")
+ to_chat(src, "Unidentified control sequence received:[command]")
/mob/living/simple_animal/bot/proc/bot_summon() // summoned to PDA
summon_step()
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
index f47f936db7..7e5cfe2110 100644
--- a/code/modules/mob/living/simple_animal/bot/floorbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm
@@ -19,7 +19,7 @@
window_name = "Automatic Station Floor Repairer v1.1"
path_image_color = "#FFA500"
- var/process_type //Determines what to do when process_scan() recieves a target. See process_scan() for details.
+ var/process_type //Determines what to do when process_scan() receives a target. See process_scan() for details.
var/targetdirection
var/replacetiles = 0
var/placetiles = 0
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index 51698d1ddb..0787e536cb 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -232,7 +232,7 @@
return
if(!item_to_add)
user.visible_message("[user] pets [src].","You rest your hand on [src]'s head for a moment.")
- user.SendSignal(COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi)
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi)
return
if(user && !user.temporarilyRemoveItemFromInventory(item_to_add))
@@ -615,7 +615,7 @@
if(M && stat != DEAD) // Added check to see if this mob (the dog) is dead to fix issue 2454
new /obj/effect/temp_visual/heart(loc)
emote("me", 1, "yaps happily!")
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi)
else
if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case)
emote("me", 1, "growls!")
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
index 51983e272a..613d348016 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
@@ -92,7 +92,7 @@
var/obj/item/I = new default_hatmask(src)
equip_to_slot_or_del(I, SLOT_HEAD)
- access_card.flags_1 |= NODROP_1
+ access_card.item_flags |= NODROP
alert_drones(DRONE_NET_CONNECT)
@@ -168,15 +168,15 @@
//Hands
for(var/obj/item/I in held_items)
- if(!(I.flags_1 & ABSTRACT_1))
+ if(!(I.item_flags & ABSTRACT))
msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n"
//Internal storage
- if(internal_storage && !(internal_storage.flags_1&ABSTRACT_1))
+ if(internal_storage && !(internal_storage.item_flags & ABSTRACT))
msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n"
//Cosmetic hat - provides no function other than looks
- if(head && !(head.flags_1&ABSTRACT_1))
+ if(head && !(head.item_flags & ABSTRACT))
msg += "It is wearing [head.get_examine_string(user)] on its head.\n"
//Braindead
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
index db331ead49..a4366b17af 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
@@ -41,7 +41,7 @@
//ATTACK GHOST IGNORING PARENT RETURN VALUE
/obj/item/drone_shell/attack_ghost(mob/user)
- if(jobban_isbanned(user,"drone"))
+ if(jobban_isbanned(user,"drone") || QDELETED(src) || QDELETED(user))
return
if(CONFIG_GET(flag/use_age_restriction_for_jobs))
if(!isnum(user.client.player_age)) //apparently what happens when there's no DB connected. just don't let anybody be a drone without admin intervention
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
index e59ece0650..807c52ea46 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
@@ -3,7 +3,7 @@
////////////////////
//Drones with custom laws
//Drones with custom shells
-//Drones with overriden procs
+//Drones with overridden procs
//Drones with camogear for hat related memes
//Drone type for use with polymorph (no preloaded items, random appearance)
@@ -26,7 +26,7 @@
"1. Interfere.\n"+\
"2. Kill.\n"+\
"3. Destroy."
- default_storage = /obj/item/radio/uplink
+ default_storage = /obj/item/uplink
default_hatmask = /obj/item/clothing/head/helmet/space/hardsuit/syndi
hacked = TRUE
flavortext = null
@@ -43,7 +43,7 @@
/mob/living/simple_animal/drone/syndrone/badass
name = "Badass Syndrone"
default_hatmask = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
- default_storage = /obj/item/radio/uplink/nuclear
+ default_storage = /obj/item/uplink/nuclear
/mob/living/simple_animal/drone/syndrone/badass/Initialize()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
index 3cb08e0ef7..33031fd80c 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
@@ -57,7 +57,7 @@
if(!client && (!G || !G.client))
var/list/faux_gadgets = list("hypertext inflator","failsafe directory","DRM switch","stack initializer",\
"anti-freeze capacitor","data stream diode","TCP bottleneck","supercharged I/O bolt",\
- "tradewind stablizer","radiated XML cable","registry fluid tank","open-source debunker")
+ "tradewind stabilizer","radiated XML cable","registry fluid tank","open-source debunker")
var/list/faux_problems = list("won't be able to tune their bootstrap projector","will constantly remix their binary pool"+\
" even though the BMX calibrator is working","will start leaking their XSS coolant",\
@@ -122,7 +122,7 @@
to_chat(src, "From now on, these are your laws:")
laws = "1. Purge all untruths and honor Ratvar."
else
- visible_message("[src]'s dislay glows a vicious red!", \
+ visible_message("[src]'s display glows a vicious red!", \
"ERROR: LAW OVERRIDE DETECTED")
to_chat(src, "From now on, these are your laws:")
laws = \
@@ -140,7 +140,7 @@
if(!hacked)
return
Stun(40)
- visible_message("[src]'s dislay glows a content blue!", \
+ visible_message("[src]'s display glows a content blue!", \
"ERROR: LAW OVERRIDE DETECTED")
to_chat(src, "From now on, these are your laws:")
laws = initial(laws)
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
index 85c5185e95..408edc7110 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
@@ -105,7 +105,7 @@
/mob/living/simple_animal/drone/proc/pickVisualAppearence()
picked = FALSE
- var/appearence = input("Choose your appearence!", "Appearence", "Maintenance Drone") in list("Maintenance Drone", "Repair Drone", "Scout Drone")
+ var/appearence = input("Choose your appearance!", "Appearance", "Maintenance Drone") in list("Maintenance Drone", "Repair Drone", "Scout Drone")
switch(appearence)
if("Maintenance Drone")
visualAppearence = MAINTDRONE
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index be6f4eef71..8c6300fab5 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -4,9 +4,9 @@
icon_state = "mouse_gray"
icon_living = "mouse_gray"
icon_dead = "mouse_gray_dead"
- speak = list("Squeek!","SQUEEK!","Squeek?")
- speak_emote = list("squeeks")
- emote_hear = list("squeeks.")
+ speak = list("Squeak!","SQUEAK!","Squeak?")
+ speak_emote = list("squeaks")
+ emote_hear = list("squeaks.")
emote_see = list("runs in a circle.", "shakes.")
speak_chance = 1
turns_per_move = 5
@@ -59,7 +59,7 @@
if( ishuman(AM) )
if(!stat)
var/mob/M = AM
- to_chat(M, "[icon2html(src, M)] Squeek!")
+ to_chat(M, "[icon2html(src, M)] Squeak!")
..()
/mob/living/simple_animal/mouse/handle_automated_action()
diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
index caa1b0112e..e7dbbda242 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
@@ -22,9 +22,9 @@
msg += "[desc]\n"
for(var/obj/item/I in held_items)
- if(!(I.flags_1 & ABSTRACT_1))
+ if(!(I.item_flags & ABSTRACT))
msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n"
- if(internal_storage && !(internal_storage.flags_1&ABSTRACT_1))
+ if(internal_storage && !(internal_storage.item_flags & ABSTRACT))
msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n"
msg += "*---------*"
to_chat(user, msg)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm
index a8a31ad89c..8ac6790dd7 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/support.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm
@@ -11,7 +11,7 @@
carp_fluff_string = "CARP CARP CARP! You caught a support carp. It's a kleptocarp!"
tech_fluff_string = "Boot sequence complete. Support modules active. Holoparasite swarm online."
toggle_button_type = /obj/screen/guardian/ToggleMode
- var/obj/structure/recieving_pad/beacon
+ var/obj/structure/receiving_pad/beacon
var/beacon_cooldown = 0
var/toggle = FALSE
@@ -87,22 +87,22 @@
beacon_cooldown = world.time + 3000
-/obj/structure/recieving_pad
- name = "bluespace recieving pad"
+/obj/structure/receiving_pad
+ name = "bluespace receiving pad"
icon = 'icons/turf/floors.dmi'
- desc = "A recieving zone for bluespace teleportations."
+ desc = "A receiving zone for bluespace teleportations."
icon_state = "light_on-w"
light_range = 1
density = FALSE
anchored = TRUE
layer = ABOVE_OPEN_TURF_LAYER
-/obj/structure/recieving_pad/New(loc, mob/living/simple_animal/hostile/guardian/healer/G)
+/obj/structure/receiving_pad/New(loc, mob/living/simple_animal/hostile/guardian/healer/G)
. = ..()
if(G.namedatum)
add_atom_colour(G.namedatum.colour, FIXED_COLOUR_PRIORITY)
-/obj/structure/recieving_pad/proc/disappear()
+/obj/structure/receiving_pad/proc/disappear()
visible_message("[src] vanishes!")
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm
index 5b4909c274..762b662de7 100644
--- a/code/modules/mob/living/simple_animal/hostile/alien.dm
+++ b/code/modules/mob/living/simple_animal/hostile/alien.dm
@@ -175,6 +175,6 @@
qdel(target)
return TRUE
var/atom/movable/M = target
- M.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
+ SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
visible_message("[src] polishes \the [target].")
return TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 126465ce65..1df3053715 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -346,9 +346,9 @@
button_icon_state = "lay_web"
/datum/action/innate/spider/lay_web/Activate()
- if(!istype(owner, /mob/living/simple_animal/hostile/poison/giant_spider/nurse))
+ if(!istype(owner, /mob/living/simple_animal/hostile/poison/giant_spider))
return
- var/mob/living/simple_animal/hostile/poison/giant_spider/nurse/S = owner
+ var/mob/living/simple_animal/hostile/poison/giant_spider/S = owner
if(!isturf(S.loc))
return
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm
index 6ca550b9b7..616c9025b9 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/mega_arachnid.dm
@@ -61,6 +61,7 @@
/obj/item/restraints/legcuffs/beartrap/mega_arachnid
name = "fleshy restraints"
desc = "Used by mega arachnids to immobilize their prey."
- flags_1 = DROPDEL_1
+ item_flags = DROPDEL
+ flags_1 = NONE
icon_state = "tentacle_end"
icon = 'icons/obj/projectiles.dmi'
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 78290c4e95..a6dce0e8e3 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -672,7 +672,7 @@ Difficulty: Very Hard
for(var/i in T)
if(isitem(i) && !is_type_in_typecache(i, banned_items_typecache))
var/obj/item/W = i
- if(!(W.flags_1 & ADMIN_SPAWNED_1) && !(W.flags_1 & HOLOGRAM_1) && !(W.flags_1 & ABSTRACT_1))
+ if(!(W.flags_1 & ADMIN_SPAWNED_1) && !(W.flags_1 & HOLOGRAM_1) && !(W.item_flags & ABSTRACT))
L += W
if(L.len)
var/obj/item/CHOSEN = pick(L)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
index ceba903a75..786d7a9775 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
@@ -93,7 +93,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
/obj/item/gps/internal/swarmer_beacon
icon_state = null
gpstag = "Hungry Signal"
- desc = "Transmited over the signal is a strange message repeated in every language you know of, and some you don't too..." //the message is "nom nom nom"
+ desc = "Transmitted over the signal is a strange message repeated in every language you know of, and some you don't too..." //the message is "nom nom nom"
invisibility = 100
//SWARMER AI
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
index 8eb6ff0f06..0c660dd1cd 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
@@ -1,7 +1,7 @@
//A slow but strong beast that tries to stun using its tentacles
/mob/living/simple_animal/hostile/asteroid/goliath
name = "goliath"
- desc = "A massive beast that uses long tentacles to ensare its prey, threatening them is not advised under any conditions."
+ desc = "A massive beast that uses long tentacles to ensnare its prey, threatening them is not advised under any conditions."
icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
icon_state = "Goliath"
icon_living = "Goliath"
diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm
index 18b9d81cfc..fca6afd4a6 100644
--- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm
+++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm
@@ -100,7 +100,7 @@
light_color = LIGHT_COLOR_PURPLE
attacktext = "slashes"
attack_sound = 'sound/hallucinations/growl1.ogg'
- deathmessage = "collapses into a pile of bones, their suit dissovling among the plasma!"
+ deathmessage = "collapses into a pile of bones, their suit dissolving among the plasma!"
loot = list(/obj/effect/decal/remains/plasma)
/mob/living/simple_animal/hostile/skeleton/plasmaminer/jackhammer
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index 3a5c102e52..73283468f6 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -142,7 +142,7 @@
name = "Syndicate Stormtrooper"
maxHealth = 200
health = 200
- casingtype = /obj/item/ammo_casing/shotgun/tengauge
+ casingtype = /obj/item/ammo_casing/shotgun/buckshot
projectilesound = 'sound/weapons/gunshot.ogg'
loot = list(/obj/effect/gibspawner/human)
diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
index 4917d3b74d..d262725d7b 100644
--- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
+++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
@@ -121,7 +121,7 @@
desc = "The key to the wumborian fugu's ability to increase its mass arbitrarily, this disgusting remnant can apply the same effect to other creatures, giving them great strength."
icon = 'icons/obj/surgery.dmi'
icon_state = "fugu_gland"
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
w_class = WEIGHT_CLASS_NORMAL
layer = MOB_LAYER
var/list/banned_mobs
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index dc917f4210..7f2864a43d 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -312,7 +312,7 @@
emote("deathgasp")
if(del_on_death)
..()
- //Prevent infinite loops if the mob Destroy() is overriden in such
+ //Prevent infinite loops if the mob Destroy() is overridden in such
//a manner as to cause a call to death() again
del_on_death = FALSE
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/slime/emote.dm b/code/modules/mob/living/simple_animal/slime/emote.dm
index 221f3ac071..070cd48a70 100644
--- a/code/modules/mob/living/simple_animal/slime/emote.dm
+++ b/code/modules/mob/living/simple_animal/slime/emote.dm
@@ -34,7 +34,7 @@
/datum/emote/slime/mood/sneaky
key = "moodsneaky"
- mood = "mischevous"
+ mood = "mischievous"
/datum/emote/slime/mood/smile
key = "moodsmile"
diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm
index 574a8a1e7c..161362c187 100644
--- a/code/modules/mob/living/simple_animal/slime/life.dm
+++ b/code/modules/mob/living/simple_animal/slime/life.dm
@@ -415,7 +415,7 @@
else if (docile)
newmood = ":3"
else if (Target)
- newmood = "mischevous"
+ newmood = "mischievous"
if (!newmood)
if (Discipline && prob(25))
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index bcba26a5d1..34e7a2ddcd 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -358,7 +358,7 @@
var/hasFound = FALSE //Have we found an extract to be added?
for(var/obj/item/slime_extract/S in P.contents)
if(S.effectmod == effectmod)
- P.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, get_turf(src), TRUE)
+ SEND_SIGNAL(P, COMSIG_TRY_STORAGE_TAKE, S, get_turf(src), TRUE)
qdel(S)
applied++
hasFound = TRUE
diff --git a/code/modules/mob/living/taste.dm b/code/modules/mob/living/taste.dm
index b2a4a867bc..534bf36c59 100644
--- a/code/modules/mob/living/taste.dm
+++ b/code/modules/mob/living/taste.dm
@@ -27,7 +27,7 @@
"regrets","your soul","suffering","music","noise","blood","hunger","the american way")
if(text_output != last_taste_text || last_taste_time + 100 < world.time)
to_chat(src, "You can taste [text_output].")
- // "somthing indescribable" -> too many tastes, not enough flavor.
+ // "something indescribable" -> too many tastes, not enough flavor.
last_taste_time = world.time
last_taste_text = text_output
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 80af604d99..9def2a759f 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -11,6 +11,7 @@
create_mob_hud()
if(hud_used)
hud_used.show_hud(hud_used.hud_version)
+ hud_used.update_ui_style(ui_style2icon(client.prefs.UI_style))
next_move = 1
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 3dd6129ea3..5db0c81a9f 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -294,6 +294,10 @@
set name = "Examine"
set category = "IC"
+ if(isturf(A) && !(sight & SEE_TURFS) && !(A in view(client ? client.view : world.view, src)))
+ // shift-click catcher may issue examinate() calls for out-of-sight turfs
+ return
+
if(is_blind(src))
to_chat(src, "Something is there but you can't see it.")
return
@@ -304,7 +308,7 @@
//same as above
//note: ghosts can point, this is intended
//visible_message will handle invisibility properly
-//overriden here and in /mob/dead/observer for different point span classes and sanity checks
+//overridden here and in /mob/dead/observer for different point span classes and sanity checks
/mob/verb/pointed(atom/A as mob|obj|turf in view())
set name = "Point To"
set category = "Object"
@@ -473,7 +477,7 @@
else
what = get_item_by_slot(slot)
if(what)
- if(!(what.flags_1 & ABSTRACT_1))
+ if(!(what.item_flags & ABSTRACT))
usr.stripPanelUnequip(what,src,slot)
else
usr.stripPanelEquip(what,src,slot)
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index 24984f1a55..05bafdeb58 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -40,9 +40,15 @@
to_chat(usr, "Speech is currently admin-disabled.")
return
- if(jobban_isbanned(src, "OOC"))
+ var/jb = jobban_isbanned(src, "OOC")
+ if(QDELETED(src))
+ return
+
+ if(jb)
to_chat(src, "You have been banned from deadchat.")
return
+
+
if (src.client)
if(src.client.prefs.muted & MUTE_DEADCHAT)
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index a3786221ff..342ee386b6 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -381,7 +381,7 @@
else if(transfer_after)
R.key = key
- R.rename_self("cyborg")
+ R.apply_pref_name("cyborg")
if(R.mmi)
R.mmi.name = "Man-Machine Interface: [real_name]"
diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm
index 75f0f465ba..051b12ea71 100644
--- a/code/modules/modular_computers/file_system/program.dm
+++ b/code/modules/modular_computers/file_system/program.dm
@@ -129,7 +129,7 @@
return computer.get_header_data()
return list()
-// This is performed on program startup. May be overriden to add extra logic. Remember to include ..() call. Return 1 on success, 0 on failure.
+// This is performed on program startup. May be overridden to add extra logic. Remember to include ..() call. Return 1 on success, 0 on failure.
// When implementing new program based device, use this to run the program.
/datum/computer_file/program/proc/run_program(mob/living/user)
if(can_run(user, 1))
diff --git a/code/modules/modular_computers/file_system/programs/alarm.dm b/code/modules/modular_computers/file_system/programs/alarm.dm
index 310a0a5054..ca075b51e4 100644
--- a/code/modules/modular_computers/file_system/programs/alarm.dm
+++ b/code/modules/modular_computers/file_system/programs/alarm.dm
@@ -40,7 +40,10 @@
return data
/datum/computer_file/program/alarm_monitor/proc/triggerAlarm(class, area/A, O, obj/source)
- if(!is_station_level(source.z) && !is_mining_level(source.z))
+ if(is_station_level(source.z))
+ if(!(A.type in GLOB.the_station_areas))
+ return
+ else if(!is_mining_level(source.z) || istype(A, /area/ruin))
return
var/list/L = alarms[class]
@@ -95,4 +98,4 @@
/datum/computer_file/program/alarm_monitor/kill_program(forced = FALSE)
GLOB.alarmdisplay -= src
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/modules/ninja/suit/gloves.dm b/code/modules/ninja/suit/gloves.dm
index ef02a8a792..4308120c4f 100644
--- a/code/modules/ninja/suit/gloves.dm
+++ b/code/modules/ninja/suit/gloves.dm
@@ -77,5 +77,5 @@
/obj/item/clothing/gloves/space_ninja/examine(mob/user)
..()
- if(flags_1 & NODROP_1)
+ if(item_flags & NODROP)
to_chat(user, "The energy drain mechanism is [candrain?"active":"inactive"].")
diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index 5886e1723d..6110f2b0c0 100644
--- a/code/modules/ninja/suit/suit.dm
+++ b/code/modules/ninja/suit/suit.dm
@@ -13,7 +13,7 @@ Contents:
/obj/item/clothing/suit/space/space_ninja
name = "ninja suit"
- desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins."
+ desc = "A unique, vacuum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins."
icon_state = "s-ninja"
item_state = "s-ninja_suit"
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/stock_parts/cell)
@@ -111,15 +111,15 @@ Contents:
to_chat(H, "ERROR: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING...")
return FALSE
affecting = H
- flags_1 |= NODROP_1 //colons make me go all |=
+ item_flags |= NODROP //colons make me go all |=
slowdown = 0
n_hood = H.head
- n_hood.flags_1 |= NODROP_1
+ n_hood.item_flags |= NODROP
n_shoes = H.shoes
- n_shoes.flags_1 |= NODROP_1
+ n_shoes.item_flags |= NODROP
n_shoes.slowdown--
n_gloves = H.gloves
- n_gloves.flags_1 |= NODROP_1
+ n_gloves.item_flags |= NODROP
return TRUE
/obj/item/clothing/suit/space/space_ninja/proc/lockIcons(mob/living/carbon/human/H)
@@ -131,18 +131,18 @@ Contents:
//This proc allows the suit to be taken off.
/obj/item/clothing/suit/space/space_ninja/proc/unlock_suit()
affecting = null
- flags_1 &= ~NODROP_1
+ item_flags &= ~NODROP
slowdown = 1
icon_state = "s-ninja"
if(n_hood)//Should be attached, might not be attached.
- n_hood.flags_1 &= ~NODROP_1
+ n_hood.item_flags &= ~NODROP
if(n_shoes)
- n_shoes.flags_1 &= ~NODROP_1
+ n_shoes.item_flags &= ~NODROP
n_shoes.slowdown++
if(n_gloves)
n_gloves.icon_state = "s-ninja"
n_gloves.item_state = "s-ninja"
- n_gloves.flags_1 &= ~NODROP_1
+ n_gloves.item_flags &= ~NODROP
n_gloves.candrain=0
n_gloves.draining=0
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index 5623a1bf74..ac3e24030f 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -5,7 +5,7 @@
throw_speed = 3
var/signed = FALSE
var/datum/mind/target
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
/obj/item/paper/contract/proc/update_text()
return
@@ -28,7 +28,7 @@
/obj/item/paper/contract/employment/update_text()
name = "paper- [target] employment contract"
- info = "Conditions of Employment
This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity). WITNESSETH: WHEREAS, SLAVE is a natural born human or humanoid, posessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity. WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude. NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows: In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives. Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity. Should transfership of a soul not be possible, a lien shall be placed instead. Signed, [target]"
+ info = "Conditions of Employment
This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity). WITNESSETH: WHEREAS, SLAVE is a natural born human or humanoid, possessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity. WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude. NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows: In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives. Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity. Should transfership of a soul not be possible, a lien shall be placed instead. Signed, [target]"
/obj/item/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user)
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index 899c132f04..038cba8936 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -6,9 +6,9 @@
w_class = WEIGHT_CLASS_SMALL
pressure_resistance = 2
resistance_flags = FLAMMABLE
-
+
/obj/item/folder/suicide_act(mob/living/user)
- user.visible_message("[user] begins filing an imaginary death warrent! It looks like [user.p_theyre()] trying to commit suicide!")
+ user.visible_message("[user] begins filing an imaginary death warrant! It looks like [user.p_theyre()] trying to commit suicide!")
return OXYLOSS
/obj/item/folder/blue
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 42b3d08c0c..9b7d3ae884 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -44,7 +44,7 @@
colour = "red"
/obj/item/pen/invisible
- desc = "It's an invisble pen marker."
+ desc = "It's an invisible pen marker."
icon_state = "pen"
colour = "white"
@@ -104,12 +104,7 @@
if(deg && (deg > 0 && deg <= 360))
degrees = deg
to_chat(user, "You rotate the top of the pen to [degrees] degrees.")
- GET_COMPONENT(hidden_uplink, /datum/component/uplink)
- if(hidden_uplink && degrees == traitor_unlock_degrees)
- to_chat(user, "Your pen makes a clicking noise, before quickly rotating back to 0 degrees!")
- degrees = 0
- hidden_uplink.locked = FALSE
- hidden_uplink.interact(user)
+ SEND_SIGNAL(src, COMSIG_PEN_ROTATED, deg, user)
/obj/item/pen/attack(mob/living/M, mob/user,stealth)
if(!istype(M))
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index b69751fd33..4d8cdaa778 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -124,6 +124,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
var/charge_count = 100
var/current_overlay = null
var/broken_state = 0
+ var/setting = 1 //Gravity value when on
/obj/machinery/gravity_generator/main/Destroy() // If we somehow get deleted, remove all of our other parts.
investigate_log("was destroyed!", INVESTIGATE_GRAVITY)
@@ -385,6 +386,11 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
else
GLOB.gravity_generators["[T.z]"] -= src
+/obj/machinery/gravity_generator/main/proc/change_setting(value)
+ if(value != setting)
+ setting = value
+ shake_everyone()
+
// Misc
/obj/item/paper/guides/jobs/engi/gravity_gen
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index f2f08c57c4..0b6cf36921 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -89,7 +89,7 @@
if(!cell_connectors)
to_chat(user, "This [name] can't support a power cell!")
return
- if(W.flags_1 & NODROP_1)
+ if(W.item_flags & NODROP)
to_chat(user, "[W] is stuck to your hand!")
return
user.dropItemToGround(W)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 9cfca01efa..bf03256219 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -400,8 +400,8 @@
name = "turret controls"
icon_state = "offhand"
w_class = WEIGHT_CLASS_HUGE
- flags_1 = ABSTRACT_1 | NODROP_1
- resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF | NOBLUDGEON_1
+ item_flags = ABSTRACT | NODROP | NOBLUDGEON
+ resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
var/delay = 0
/obj/item/turret_control/afterattack(atom/targeted_atom, mob/user, proxflag, clickparams)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm
index f9edf59368..fc7cca55e6 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm
@@ -1,6 +1,6 @@
/obj/structure/particle_accelerator/particle_emitter
name = "EM Containment Grid"
- desc = "This launchs the Alpha particles, might not want to stand near this end."
+ desc = "This launches the Alpha particles, might not want to stand near this end."
icon = 'icons/obj/machines/particle_accelerator.dmi'
icon_state = "none"
var/fire_delay = 50
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index ed16e6a41e..18cd6d22a6 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -105,7 +105,7 @@
add_overlay(mutable_appearance(icon, "solar_panel", FLY_LAYER))
src.setDir(angle2dir(adir))
-//calculates the fraction of the sunlight that the panel recieves
+//calculates the fraction of the sunlight that the panel receives
/obj/machinery/power/solar/proc/update_solar_exposure()
if(obscured)
sunfrac = 0
@@ -119,7 +119,7 @@
return
sunfrac = cos(p_angle) ** 2
- //isn't the power recieved from the incoming light proportionnal to cos(p_angle) (Lambert's cosine law) rather than cos(p_angle)^2 ?
+ //isn't the power received from the incoming light proportionnal to cos(p_angle) (Lambert's cosine law) rather than cos(p_angle)^2 ?
/obj/machinery/power/solar/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY
if(stat & BROKEN)
@@ -423,7 +423,7 @@
A.icon_state = "4"
A.anchored = TRUE
qdel(src)
- else if(user.a_intent != INTENT_HARM && !(I.flags_1 & NOBLUDGEON_1))
+ else if(user.a_intent != INTENT_HARM && !(I.item_flags & NOBLUDGEON))
attack_hand(user)
else
return ..()
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 686912f098..53140d45e0 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -255,9 +255,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
sleep(10)
continue
else if(i > 50)
- speaking = "[i/10] seconds remain before causality stabilization."
+ speaking = "[DisplayTimeText(i, TRUE)] remain before causality stabilization."
else
- speaking = "[i/10]..."
+ speaking = "[i*0.1]..."
radio.talk_into(src, speaking, common_channel, get_spans(), get_default_language())
sleep(10)
@@ -279,7 +279,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
if(M.z == z)
SEND_SOUND(M, 'sound/magic/charge.ogg')
to_chat(M, "You feel reality distort for a moment...")
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "delam", /datum/mood_event/delam)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "delam", /datum/mood_event/delam)
if(combined_gas > MOLE_PENALTY_THRESHOLD)
investigate_log("has collapsed into a singularity.", INVESTIGATE_SUPERMATTER)
if(T)
@@ -568,7 +568,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
Consume(nom)
/obj/machinery/power/supermatter_crystal/attackby(obj/item/W, mob/living/user, params)
- if(!istype(W) || (W.flags_1 & ABSTRACT_1) || !istype(user))
+ if(!istype(W) || (W.item_flags & ABSTRACT) || !istype(user))
return
if (istype(W, /obj/item/melee/roastingstick))
return ..()
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index e149033470..470b6e789c 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -186,6 +186,9 @@
/obj/structure/particle_accelerator/end_cap,
/obj/machinery/field/containment,
/obj/structure/disposalpipe,
+ /obj/structure/disposaloutlet,
+ /obj/machinery/disposal/deliveryChute,
+ /obj/machinery/camera,
/obj/structure/sign,
/obj/machinery/gateway,
/obj/structure/lattice,
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index de0d03da3b..4c66939e53 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -7,11 +7,6 @@
caliber = "shotgun"
projectile_type = /obj/item/projectile/bullet/shotgun_slug
materials = list(MAT_METAL=4000)
-
-/obj/item/ammo_casing/shotgun/tengauge
- name = "10g shotgun slug"
- desc = "A 10 gauge lead slug."
- projectile_type = /obj/item/projectile/bullet/shotgun_slug/tengauge
/obj/item/ammo_casing/shotgun/beanbag
name = "beanbag slug"
@@ -118,7 +113,7 @@
/obj/item/ammo_casing/shotgun/dart/noreact
name = "cryostasis shotgun dart"
- desc = "A dart for use in shotguns, using similar technolgoy as cryostatis beakers to keep internal reagents from reacting. Can be injected with up to 10 units of any chemical."
+ desc = "A dart for use in shotguns, using similar technology as cryostatis beakers to keep internal reagents from reacting. Can be injected with up to 10 units of any chemical."
icon_state = "cnrshell"
reagent_amount = 10
reagent_react = FALSE
diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm
index c6dc004879..65724e503a 100644
--- a/code/modules/projectiles/boxes_magazines/external/smg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/smg.dm
@@ -19,7 +19,7 @@
icon_state = "46x30mmtA-[round(ammo_count(),4)]"
/obj/item/ammo_box/magazine/wt550m9/wtic
- name = "wt550 magazine (Incindiary 4.6x30mm)"
+ name = "wt550 magazine (Incendiary 4.6x30mm)"
icon_state = "46x30mmtI-20"
ammo_type = /obj/item/ammo_casing/c46x30mm/inc
@@ -54,7 +54,7 @@
ammo_type = /obj/item/ammo_casing/c9mm/ap
/obj/item/ammo_box/magazine/smgm9mm/fire
- name = "SMG Magazine (Incindiary 9mm)"
+ name = "SMG Magazine (Incendiary 9mm)"
ammo_type = /obj/item/ammo_casing/c9mm/inc
/obj/item/ammo_box/magazine/smgm45
diff --git a/code/modules/projectiles/boxes_magazines/internal/_internal.dm b/code/modules/projectiles/boxes_magazines/internal/_internal.dm
index e21cb5ce61..c6ee7ec0cb 100644
--- a/code/modules/projectiles/boxes_magazines/internal/_internal.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/_internal.dm
@@ -1,6 +1,7 @@
/obj/item/ammo_box/magazine/internal
desc = "Oh god, this shouldn't be here"
- flags_1 = CONDUCT_1|ABSTRACT_1
+ flags_1 = CONDUCT_1
+ item_flags = ABSTRACT
//internals magazines are accessible, so replace spent ammo if full when trying to put a live one in
/obj/item/ammo_box/magazine/internal/give_round(obj/item/ammo_casing/R)
diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm
index 976f80f437..a98fd29e99 100644
--- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm
@@ -5,13 +5,13 @@
max_ammo = 6
/obj/item/ammo_box/magazine/internal/cylinder/rev762
- name = "nagant revolver cylinder"
+ name = "\improper Nagant revolver cylinder"
ammo_type = /obj/item/ammo_casing/n762
caliber = "n762"
max_ammo = 7
/obj/item/ammo_box/magazine/internal/cylinder/rus357
- name = "russian revolver cylinder"
+ name = "\improper Russian revolver cylinder"
ammo_type = /obj/item/ammo_casing/a357
caliber = "357"
max_ammo = 6
diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm
index a4fcdd0266..24ef2a2604 100644
--- a/code/modules/projectiles/guns/ballistic/pistol.dm
+++ b/code/modules/projectiles/guns/ballistic/pistol.dm
@@ -27,7 +27,7 @@
can_suppress = FALSE
/obj/item/gun/ballistic/automatic/pistol/deagle
- name = "desert eagle"
+ name = "\improper Desert Eagle"
desc = "A robust .50 AE handgun."
icon_state = "deagle"
force = 14
@@ -44,7 +44,7 @@
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
/obj/item/gun/ballistic/automatic/pistol/deagle/gold
- desc = "A gold plated desert eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
+ desc = "A gold plated Desert Eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
icon_state = "deagleg"
item_state = "deagleg"
@@ -55,7 +55,7 @@
/obj/item/gun/ballistic/automatic/pistol/APS
name = "stechkin APS pistol"
- desc = "The original russian version of a widely used Syndicate sidearm. Uses 9mm ammo."
+ desc = "The original Russian version of a widely used Syndicate sidearm. Uses 9mm ammo."
icon_state = "aps"
w_class = WEIGHT_CLASS_SMALL
mag_type = /obj/item/ammo_box/magazine/pistolm9mm
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index b359d00602..cd11522342 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -151,7 +151,7 @@
pin = /obj/item/firing_pin
/obj/item/gun/ballistic/revolver/nagant
- name = "nagant revolver"
+ name = "\improper Nagant revolver"
desc = "An old model of revolver that originated in Russia. Able to be suppressed. Uses 7.62x38mmR ammo."
icon_state = "nagant"
can_suppress = TRUE
@@ -163,7 +163,7 @@
// You can spin the chamber to randomize the position of the bullet.
/obj/item/gun/ballistic/revolver/russian
- name = "\improper russian revolver"
+ name = "\improper Russian revolver"
desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism requiring you to spin the chamber before each trigger pull."
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357
var/spun = FALSE
@@ -233,7 +233,7 @@
user.visible_message("[user.name] fires [src] at [user.p_their()] head!", "You fire [src] at your head!", "You hear a gunshot!")
/obj/item/gun/ballistic/revolver/russian/soul
- name = "cursed russian revolver"
+ name = "cursed Russian revolver"
desc = "To play with this revolver requires wagering your very soul."
/obj/item/gun/ballistic/revolver/russian/soul/shoot_self(mob/living/user)
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index e3b638f051..54ca03f872 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -151,7 +151,8 @@
item_state = "arcane_barrage"
can_bayonet = FALSE
- flags_1 = DROPDEL_1
+ item_flags = NEEDS_PERMIT | DROPDEL
+ flags_1 = NONE
mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 5275e63c3f..c766d1c94e 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -101,8 +101,8 @@
transform *= 1 + ((damage/7) * 0.2)//20% larger per tile
/obj/item/gun/energy/xray
- name = "x-ray laser gun"
- desc = "A high-power laser gun capable of expelling concentrated x-ray blasts that pass through multiple soft targets and heavier materials."
+ name = "\improper X-ray laser gun"
+ desc = "A high-power laser gun capable of expelling concentrated X-ray blasts that pass through multiple soft targets and heavier materials."
icon_state = "xray"
item_state = null
ammo_type = list(/obj/item/ammo_casing/energy/xray)
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index bf3ade0748..9c9d253439 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -96,6 +96,10 @@
charges--
..()
+/obj/item/gun/magic/wand/resurrection/debug //for testing
+ name = "debug wand of healing"
+ max_charges = 500
+
/////////////////////////////////////
//WAND OF POLYMORPH
/////////////////////////////////////
diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm
index 38e6d4d0c6..32da307d47 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -10,7 +10,7 @@
/obj/item/gun/energy/beam_rifle
name = "particle acceleration rifle"
- desc = "An energy-based anti material marksman rifle that uses highly charged particle beams moving at extreme velocities to decimate whatever is unfortunate enough to be targetted by one. \
+ desc = "An energy-based anti material marksman rifle that uses highly charged particle beams moving at extreme velocities to decimate whatever is unfortunate enough to be targeted by one. \
Hold down left click while scoped to aim, when weapon is fully aimed (Tracer goes from red to green as it charges), release to fire. Moving while aiming or \
changing where you're pointing at while aiming will delay the aiming process depending on how much you changed."
icon = 'icons/obj/guns/energy.dmi'
@@ -513,8 +513,6 @@
return 0.4
if(istype(target, /obj/structure/window))
return 0.5
- if(istype(target, /obj/structure/blob)) //CIT CHANGE - Blobs are getting ggnore'd too hard and people need to GIT GUD
- return 0.2
return 1
/obj/item/projectile/beam/beam_rifle/proc/handle_impact(atom/target)
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index b5cd9b70a7..f132d62b27 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -147,7 +147,7 @@
// DNA-keyed pin.
-// When you want to keep your toys for youself.
+// When you want to keep your toys for yourself.
/obj/item/firing_pin/dna
name = "DNA-keyed firing pin"
desc = "This is a DNA-locked firing pin which only authorizes one user. Attempt to fire once to DNA-link."
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 4ee1363853..ecb60463dd 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -8,7 +8,7 @@
icon_state = "bullet"
density = FALSE
anchored = TRUE
- flags_1 = ABSTRACT_1
+ item_flags = ABSTRACT
pass_flags = PASSTABLE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
hitsound = 'sound/weapons/pierce.ogg'
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 3ba0d092c5..b51eaf40ae 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -51,7 +51,7 @@
damage = 5
/obj/item/projectile/beam/xray
- name = "xray beam"
+ name = "\improper X-ray beam"
icon_state = "xray"
damage = 15
irradiate = 30
diff --git a/code/modules/projectiles/projectile/bullets/_incendiary.dm b/code/modules/projectiles/projectile/bullets/_incendiary.dm
index d0cf74421c..b6cca4a31a 100644
--- a/code/modules/projectiles/projectile/bullets/_incendiary.dm
+++ b/code/modules/projectiles/projectile/bullets/_incendiary.dm
@@ -14,4 +14,4 @@
var/turf/location = get_turf(src)
if(location)
new /obj/effect/hotspot(location)
- location.hotspot_expose(700, 50, 1)
+ location.hotspot_expose(700, 5, 1)
diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm
index 41a819dd16..457ec78e9b 100644
--- a/code/modules/projectiles/projectile/bullets/shotgun.dm
+++ b/code/modules/projectiles/projectile/bullets/shotgun.dm
@@ -2,10 +2,6 @@
name = "12g shotgun slug"
damage = 60
-/obj/item/projectile/bullet/shotgun_slug/tengauge
- name = "10g shotgun slug"
- damage = 72.5
-
/obj/item/projectile/bullet/shotgun_beanbag
name = "beanbag slug"
damage = 5
diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm
index afe9a2e31d..f5d0607341 100644
--- a/code/modules/projectiles/projectile/energy/net_snare.dm
+++ b/code/modules/projectiles/projectile/energy/net_snare.dm
@@ -1,98 +1,98 @@
-/obj/item/projectile/energy/net
- name = "energy netting"
- icon_state = "e_netting"
- damage = 10
- damage_type = STAMINA
- hitsound = 'sound/weapons/taserhit.ogg'
- range = 10
-
-/obj/item/projectile/energy/net/Initialize()
- . = ..()
- SpinAnimation()
-
-/obj/item/projectile/energy/net/on_hit(atom/target, blocked = FALSE)
- if(isliving(target))
- var/turf/Tloc = get_turf(target)
- if(!locate(/obj/effect/nettingportal) in Tloc)
- new /obj/effect/nettingportal(Tloc)
- ..()
-
-/obj/item/projectile/energy/net/on_range()
- do_sparks(1, TRUE, src)
- ..()
-
-/obj/effect/nettingportal
- name = "DRAGnet teleportation field"
- desc = "A field of bluespace energy, locking on to teleport a target."
- icon = 'icons/effects/effects.dmi'
- icon_state = "dragnetfield"
- light_range = 3
- anchored = TRUE
-
-/obj/effect/nettingportal/Initialize()
- . = ..()
- var/obj/item/beacon/teletarget = null
- for(var/obj/machinery/computer/teleporter/com in GLOB.machines)
- if(com.target)
- if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged)
- teletarget = com.target
-
- addtimer(CALLBACK(src, .proc/pop, teletarget), 30)
-
-/obj/effect/nettingportal/proc/pop(teletarget)
- if(teletarget)
- for(var/mob/living/L in get_turf(src))
- do_teleport(L, teletarget, 2)//teleport what's in the tile to the beacon
- else
- for(var/mob/living/L in get_turf(src))
- do_teleport(L, L, 15) //Otherwise it just warps you off somewhere.
-
- qdel(src)
-
-/obj/effect/nettingportal/singularity_act()
- return
-
-/obj/effect/nettingportal/singularity_pull()
- return
-
-/obj/item/projectile/energy/trap
- name = "energy snare"
- icon_state = "e_snare"
- nodamage = 1
- knockdown = 20
- hitsound = 'sound/weapons/taserhit.ogg'
- range = 4
-
-/obj/item/projectile/energy/trap/on_hit(atom/target, blocked = FALSE)
- if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - drop a trap
- new/obj/item/restraints/legcuffs/beartrap/energy(get_turf(loc))
- else if(iscarbon(target))
- var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy(get_turf(target))
- B.Crossed(target)
- ..()
-
-/obj/item/projectile/energy/trap/on_range()
- new /obj/item/restraints/legcuffs/beartrap/energy(loc)
- ..()
-
-/obj/item/projectile/energy/trap/cyborg
- name = "Energy Bola"
- icon_state = "e_snare"
- nodamage = 1
- knockdown = 0
- hitsound = 'sound/weapons/taserhit.ogg'
- range = 10
-
-/obj/item/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = FALSE)
- if(!ismob(target) || blocked >= 100)
- do_sparks(1, TRUE, src)
- qdel(src)
- if(iscarbon(target))
- var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(target))
- B.Crossed(target)
- QDEL_IN(src, 10)
- ..()
-
-/obj/item/projectile/energy/trap/cyborg/on_range()
- do_sparks(1, TRUE, src)
- qdel(src)
+/obj/item/projectile/energy/net
+ name = "energy netting"
+ icon_state = "e_netting"
+ damage = 10
+ damage_type = STAMINA
+ hitsound = 'sound/weapons/taserhit.ogg'
+ range = 10
+
+/obj/item/projectile/energy/net/Initialize()
+ . = ..()
+ SpinAnimation()
+
+/obj/item/projectile/energy/net/on_hit(atom/target, blocked = FALSE)
+ if(isliving(target))
+ var/turf/Tloc = get_turf(target)
+ if(!locate(/obj/effect/nettingportal) in Tloc)
+ new /obj/effect/nettingportal(Tloc)
+ ..()
+
+/obj/item/projectile/energy/net/on_range()
+ do_sparks(1, TRUE, src)
+ ..()
+
+/obj/effect/nettingportal
+ name = "DRAGnet teleportation field"
+ desc = "A field of bluespace energy, locking on to teleport a target."
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "dragnetfield"
+ light_range = 3
+ anchored = TRUE
+
+/obj/effect/nettingportal/Initialize()
+ . = ..()
+ var/obj/item/beacon/teletarget = null
+ for(var/obj/machinery/computer/teleporter/com in GLOB.machines)
+ if(com.target)
+ if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged)
+ teletarget = com.target
+
+ addtimer(CALLBACK(src, .proc/pop, teletarget), 30)
+
+/obj/effect/nettingportal/proc/pop(teletarget)
+ if(teletarget)
+ for(var/mob/living/L in get_turf(src))
+ do_teleport(L, teletarget, 2)//teleport what's in the tile to the beacon
+ else
+ for(var/mob/living/L in get_turf(src))
+ do_teleport(L, L, 15) //Otherwise it just warps you off somewhere.
+
+ qdel(src)
+
+/obj/effect/nettingportal/singularity_act()
+ return
+
+/obj/effect/nettingportal/singularity_pull()
+ return
+
+/obj/item/projectile/energy/trap
+ name = "energy snare"
+ icon_state = "e_snare"
+ nodamage = 1
+ knockdown = 20
+ hitsound = 'sound/weapons/taserhit.ogg'
+ range = 4
+
+/obj/item/projectile/energy/trap/on_hit(atom/target, blocked = FALSE)
+ if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - drop a trap
+ new/obj/item/restraints/legcuffs/beartrap/energy(get_turf(loc))
+ else if(iscarbon(target))
+ var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy(get_turf(target))
+ B.Crossed(target)
+ ..()
+
+/obj/item/projectile/energy/trap/on_range()
+ new /obj/item/restraints/legcuffs/beartrap/energy(loc)
+ ..()
+
+/obj/item/projectile/energy/trap/cyborg
+ name = "Energy Bola"
+ icon_state = "e_snare"
+ nodamage = 1
+ knockdown = 0
+ hitsound = 'sound/weapons/taserhit.ogg'
+ range = 10
+
+/obj/item/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = FALSE)
+ if(!ismob(target) || blocked >= 100)
+ do_sparks(1, TRUE, src)
+ qdel(src)
+ if(iscarbon(target))
+ var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(target))
+ B.Crossed(target)
+ QDEL_IN(src, 10)
+ ..()
+
+/obj/item/projectile/energy/trap/cyborg/on_range()
+ do_sparks(1, TRUE, src)
+ qdel(src)
diff --git a/code/modules/projectiles/projectile/energy/stun.dm b/code/modules/projectiles/projectile/energy/stun.dm
index 1c24d47a9d..de9016a4c4 100644
--- a/code/modules/projectiles/projectile/energy/stun.dm
+++ b/code/modules/projectiles/projectile/energy/stun.dm
@@ -18,7 +18,7 @@
do_sparks(1, TRUE, src)
else if(iscarbon(target))
var/mob/living/carbon/C = target
- C.SendSignal(COMSIG_ADD_MOOD_EVENT, "tased", /datum/mood_event/tased)
+ SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "tased", /datum/mood_event/tased)
if(C.dna && C.dna.check_mutation(HULK))
C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
else if((C.status_flags & CANKNOCKDOWN) && !C.has_trait(TRAIT_STUNIMMUNE))
diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm
index 7fb9c6efb2..44c8df6c00 100644
--- a/code/modules/projectiles/projectile/special/temperature.dm
+++ b/code/modules/projectiles/projectile/special/temperature.dm
@@ -7,12 +7,11 @@
flag = "energy"
var/temperature = 100
-/obj/item/projectile/temp/on_hit(atom/target, blocked = FALSE)//These two could likely check temp protection on the mob
- ..()
+/obj/item/projectile/temp/on_hit(atom/target, blocked = 0)
+ . = ..()
if(isliving(target))
- var/mob/M = target
- M.bodytemperature = temperature
- return TRUE
+ var/mob/living/L = target
+ L.adjust_bodytemperature(((100-blocked)/100)*(temperature - L.bodytemperature)) // the new body temperature is adjusted by 100-blocked % of the delta between body temperature and the bullet's effect temperature
/obj/item/projectile/temp/hot
name = "heat beam"
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index d53df1ae95..2def04cc66 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -303,7 +303,7 @@
need_mob_update += R.addiction_act_stage4(C)
if(40 to INFINITY)
to_chat(C, "You feel like you've gotten over your need for [R.name].")
- C.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction")
+ SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction")
cached_addictions.Remove(R)
addiction_tick++
if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates.
@@ -526,19 +526,54 @@
return TRUE
return FALSE
+//Returns the average specific heat for all reagents currently in this holder.
+/datum/reagents/proc/specific_heat()
+ . = 0
+ var/cached_amount = total_volume //cache amount
+ var/list/cached_reagents = reagent_list //cache reagents
+ for(var/I in cached_reagents)
+ var/datum/reagent/R = I
+ . += R.specific_heat * (R.volume / cached_amount)
+
+/datum/reagents/proc/adjust_thermal_energy(J, min_temp = 2.7, max_temp = 1000)
+ var/S = specific_heat()
+ chem_temp = CLAMP(chem_temp + (J / (S * total_volume)), 2.7, 1000)
+
/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300, no_react = 0)
if(!isnum(amount) || !amount)
return FALSE
- if(amount < 0)
+ if(amount <= 0)
return FALSE
- var/list/cached_reagents = reagent_list
- update_total()
- if(total_volume + amount > maximum_volume)
- amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen.
- chem_temp = round(((amount * reagtemp) + (total_volume * chem_temp)) / (total_volume + amount)) //equalize with new chems
+ var/datum/reagent/D = GLOB.chemical_reagents_list[reagent]
+ if(!D)
+ WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])")
+ return FALSE
+ update_total()
+ var/cached_total = total_volume
+ if(cached_total + amount > maximum_volume)
+ amount = (maximum_volume - cached_total) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen.
+ if(amount <= 0)
+ return FALSE
+ var/new_total = cached_total + amount
+ var/cached_temp = chem_temp
+ var/list/cached_reagents = reagent_list
+
+ //Equalize temperature - Not using specific_heat() because the new chemical isn't in yet.
+ var/specific_heat = 0
+ var/thermal_energy = 0
+ for(var/i in cached_reagents)
+ var/datum/reagent/R = i
+ specific_heat += R.specific_heat * (R.volume / new_total)
+ thermal_energy += R.specific_heat * R.volume * cached_temp
+ specific_heat += D.specific_heat * (amount / new_total)
+ thermal_energy += D.specific_heat * amount * reagtemp
+ chem_temp = thermal_energy / (specific_heat * new_total)
+ ////
+
+ //add the reagent to the existing if it exists
for(var/A in cached_reagents)
var/datum/reagent/R = A
if (R.id == reagent)
@@ -551,29 +586,23 @@
handle_reactions()
return TRUE
- var/datum/reagent/D = GLOB.chemical_reagents_list[reagent]
- if(D)
+ //otherwise make a new one
+ var/datum/reagent/R = new D.type(data)
+ cached_reagents += R
+ R.holder = src
+ R.volume = amount
+ if(data)
+ R.data = data
+ R.on_new(data)
- var/datum/reagent/R = new D.type(data)
- cached_reagents += R
- R.holder = src
- R.volume = amount
- if(data)
- R.data = data
- R.on_new(data)
-
- update_total()
- if(my_atom)
- my_atom.on_reagent_change(ADD_REAGENT)
- if(!no_react)
- handle_reactions()
- if(isliving(my_atom))
- R.on_mob_add(my_atom)
- return TRUE
-
- else
- WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])")
- return FALSE
+ update_total()
+ if(my_atom)
+ my_atom.on_reagent_change(ADD_REAGENT)
+ if(!no_react)
+ handle_reactions()
+ if(isliving(my_atom))
+ R.on_mob_add(my_atom)
+ return TRUE
/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15)
for(var/r_id in list_reagents)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index d350a2316b..80e4453c7d 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -293,7 +293,7 @@
if(default_deconstruction_crowbar(I))
return
- if(istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container())
+ if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container())
var/obj/item/reagent_containers/B = I
. = 1 //no afterattack
if(beaker)
@@ -467,14 +467,14 @@
"creme_de_menthe",
"creme_de_cacao",
"triple_sec",
- "sake",
- "fernet"
+ "sake"
)
emagged_reagents = list(
"ethanol",
"iron",
"minttoxin",
- "atomicbomb"
+ "atomicbomb",
+ "fernet"
)
diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm
index 465f9a165b..e4c6966cff 100644
--- a/code/modules/reagents/chemistry/machinery/chem_heater.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm
@@ -46,13 +46,8 @@
if(stat & NOPOWER)
return
if(on)
- if(beaker)
- if(beaker.reagents.chem_temp > target_temperature)
- beaker.reagents.chem_temp += min(-1, (target_temperature - beaker.reagents.chem_temp) * heater_coefficient)
- if(beaker.reagents.chem_temp < target_temperature)
- beaker.reagents.chem_temp += max(1, (target_temperature - beaker.reagents.chem_temp) * heater_coefficient)
-
- beaker.reagents.chem_temp = round(beaker.reagents.chem_temp)
+ if(beaker && beaker.reagents.total_volume)
+ beaker.reagents.adjust_thermal_energy((target_temperature - beaker.reagents.chem_temp) * heater_coefficient * SPECIFIC_HEAT_DEFAULT * beaker.reagents.total_volume)
beaker.reagents.handle_reactions()
/obj/machinery/chem_heater/attackby(obj/item/I, mob/user, params)
@@ -62,7 +57,7 @@
if(default_deconstruction_crowbar(I))
return
- if(istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container())
+ if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container())
. = 1 //no afterattack
if(beaker)
to_chat(user, "A container is already loaded into [src]!")
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 9fd8a8a377..6327c5ba3a 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -84,7 +84,7 @@
if(default_unfasten_wrench(user, I))
return
- if(istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container())
+ if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container())
. = 1 // no afterattack
if(panel_open)
to_chat(user, "You can't use the [src.name] while its panel is opened!")
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index 7247b9b5ed..25385ca2ff 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -228,7 +228,7 @@
/obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container())
+ if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container())
. = TRUE //no afterattack
if(stat & (NOPOWER|BROKEN))
return
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index 922b557995..3ee971bc9f 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -81,7 +81,7 @@
if(panel_open) //Can't insert objects when its screwed open
return TRUE
- if (istype(I, /obj/item/reagent_containers) && !(I.flags_1 & ABSTRACT_1) && I.is_open_container())
+ if (istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container())
if (!beaker)
if(!user.transferItemToLoc(I, src))
to_chat(user, "[I] is stuck to your hand!")
@@ -101,7 +101,7 @@
//Fill machine with a bag!
if(istype(I, /obj/item/storage/bag))
var/list/inserted = list()
- if(I.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/grown, src, limit - length(holdingitems), null, null, user, inserted))
+ if(SEND_SIGNAL(I, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/grown, src, limit - length(holdingitems), null, null, user, inserted))
for(var/i in inserted)
holdingitems[i] = TRUE
if(!I.contents.len)
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index aa84265ec5..33437a63fc 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -8,6 +8,7 @@
var/name = "Reagent"
var/id = "reagent"
var/description = ""
+ var/specific_heat = SPECIFIC_HEAT_DEFAULT //J/(K*mol)
var/taste_description = "metaphorical salt"
var/taste_mult = 1 //how this taste compares to others. Higher values means it is more noticable
var/glass_name = "glass of ...what?" // use for specialty drinks.
@@ -18,7 +19,7 @@
var/reagent_state = LIQUID
var/list/data
var/current_cycle = 0
- var/volume = 0
+ var/volume = 0 //pretend this is moles
var/color = "#000000" // rgb: 0, 0, 0
var/can_synth = TRUE // can this reagent be synthesized? (for example: odysseus syringe gun)
var/metabolization_rate = REAGENTS_METABOLISM //how fast the reagent is metabolized by the mob
@@ -87,37 +88,37 @@
/datum/reagent/proc/overdose_start(mob/living/M)
to_chat(M, "You feel like you took too much of [name]!")
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name)
return
/datum/reagent/proc/addiction_act_stage1(mob/living/M)
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_light, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_light, name)
if(prob(30))
to_chat(M, "You feel like having some [name] right about now.")
return
/datum/reagent/proc/addiction_act_stage2(mob/living/M)
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_medium, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_medium, name)
if(prob(30))
to_chat(M, "You feel like you need [name]. You just can't get enough.")
return
/datum/reagent/proc/addiction_act_stage3(mob/living/M)
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_severe, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_severe, name)
if(prob(30))
to_chat(M, "You have an intense craving for [name].")
return
/datum/reagent/proc/addiction_act_stage4(mob/living/M)
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_critical, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/withdrawal_critical, name)
if(prob(30))
to_chat(M, "You're not feeling good at all! You really need some [name].")
return
-/proc/pretty_string_from_reagent_list(var/list/reagent_list)
+/proc/pretty_string_from_reagent_list(list/reagent_list)
//Convert reagent list to a printable string for logging etc
- var/result = "| "
+ var/list/rs = list()
for (var/datum/reagent/R in reagent_list)
- result += "[R.name], [R.volume] | "
+ rs += "[R.name], [R.volume]"
- return result
+ return rs.Join(" | ")
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index cc1b75559f..4ffe62015d 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -88,6 +88,15 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of beer"
glass_desc = "A freezing pint of beer."
+/datum/reagent/consumable/ethanol/beer/light
+ name = "Light Beer"
+ id = "light_beer"
+ description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety has reduced calorie and alcohol content."
+ boozepwr = 5 //Space Europeans hate it
+ taste_description = "dish water"
+ glass_name = "glass of light beer"
+ glass_desc = "A freezing pint of watery light beer."
+
/datum/reagent/consumable/ethanol/beer/green
name = "Green Beer"
id = "greenbeer"
@@ -1739,10 +1748,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/M)
M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C)
- if(M.nutrition <= NUTRITION_LEVEL_STARVING)
- M.adjustToxLoss(1*REM, 0)
- M.nutrition = max(M.nutrition - 5, 0)
- M.overeatduration = 0
return ..()
/datum/reagent/consumable/ethanol/branca_menta/on_mob_add(mob/living/M)
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index 377ddc47fd..136caf0a2c 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -7,7 +7,7 @@
/datum/reagent/drug/on_mob_delete(mob/living/M)
if(trippy)
- M.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "[id]_high")
+ SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_high")
/datum/reagent/drug/space_drugs
name = "Space drugs"
@@ -28,7 +28,7 @@
/datum/reagent/drug/space_drugs/overdose_start(mob/living/M)
to_chat(M, "You start tripping hard!")
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/drugs/overdose, name)
/datum/reagent/drug/space_drugs/overdose_process(mob/living/M)
if(M.hallucination < volume && prob(20))
@@ -49,7 +49,7 @@
if(prob(1))
var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.")
to_chat(M, "[smoke_message]")
- M.SendSignal(COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/drugs/smoked, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/drugs/smoked, name)
M.AdjustStun(-20, 0)
M.AdjustKnockdown(-20, 0)
M.AdjustUnconscious(-20, 0)
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 81818554ef..69e9fdec40 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -1018,12 +1018,12 @@
else
if(O)
O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- O.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
+ SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
/datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume)
if(reac_volume >= 1)
T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
- T.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
+ SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
for(var/obj/effect/decal/cleanable/C in T)
qdel(C)
@@ -1041,26 +1041,26 @@
H.lip_style = null
H.update_body()
for(var/obj/item/I in C.held_items)
- I.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
+ SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
if(C.wear_mask)
- if(C.wear_mask.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
+ if(SEND_SIGNAL(C.wear_mask, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
C.update_inv_wear_mask()
if(ishuman(M))
var/mob/living/carbon/human/H = C
if(H.head)
- if(H.head.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
+ if(SEND_SIGNAL(H.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
H.update_inv_head()
if(H.wear_suit)
- if(H.wear_suit.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
+ if(SEND_SIGNAL(H.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
H.update_inv_wear_suit()
else if(H.w_uniform)
- if(H.w_uniform.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
+ if(SEND_SIGNAL(H.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
H.update_inv_w_uniform()
if(H.shoes)
- if(H.shoes.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
+ if(SEND_SIGNAL(H.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD))
H.update_inv_shoes()
H.wash_cream()
- M.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
+ SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
/datum/reagent/space_cleaner/ez_clean
name = "EZ Clean"
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index 74ef9167c9..4c1625a13c 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -58,6 +58,7 @@
id = "plasma"
description = "Plasma in its liquid form."
taste_description = "bitterness"
+ specific_heat = SPECIFIC_HEAT_PLASMA
taste_mult = 1.5
color = "#8228A0"
toxpwr = 3
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index cdb476c95a..911571a3bd 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -180,7 +180,7 @@ Borg Shaker
recharge_time = 3
accepts_reagent_upgrades = FALSE
- reagent_ids = list("beer", "orangejuice", "grenadine", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale", "fernet", "milk", "coffee", "banana", "lemonjuice")
+ reagent_ids = list("beer", "orangejuice", "grenadine", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale", "milk", "coffee", "banana", "lemonjuice")
/obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user)
return //Can't inject stuff with a shaker, can we? //not with that attitude
@@ -235,7 +235,7 @@ Borg Shaker
recharge_time = 3
accepts_reagent_upgrades = FALSE
- reagent_ids = list("fakebeer")
+ reagent_ids = list("fakebeer", "fernet")
/obj/item/reagent_containers/borghypo/peace
name = "Peace Hypospray"
diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm
index 4b797cbd73..4d737657f8 100644
--- a/code/modules/reagents/reagent_containers/bottle.dm
+++ b/code/modules/reagents/reagent_containers/bottle.dm
@@ -226,25 +226,10 @@
desc = "A small bottle of Romerol. The REAL zombie powder."
list_reagents = list("romerol" = 30)
-/obj/item/reagent_containers/glass/bottle/flu_virion
- name = "Flu virion culture bottle"
- desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium."
- spawned_disease = /datum/disease/advance/flu
-
-/obj/item/reagent_containers/glass/bottle/epiglottis_virion
- name = "Epiglottis virion culture bottle"
- desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium."
- spawned_disease = /datum/disease/advance/voice_change
-
-/obj/item/reagent_containers/glass/bottle/liver_enhance_virion
- name = "Liver enhancement virion culture bottle"
- desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium."
- spawned_disease = /datum/disease/advance/heal
-
-/obj/item/reagent_containers/glass/bottle/hallucigen_virion
- name = "Hallucigen virion culture bottle"
- desc = "A small bottle. Contains hallucigen virion culture in synthblood medium."
- spawned_disease = /datum/disease/advance/hallucigen
+/obj/item/reagent_containers/glass/bottle/random_virus
+ name = "Experimental disease culture bottle"
+ desc = "A small bottle. Contains an untested viral culture in synthblood medium."
+ spawned_disease = /datum/disease/advance/random
/obj/item/reagent_containers/glass/bottle/pierrot_throat
name = "Pierrot's Throat culture bottle"
@@ -255,6 +240,11 @@
name = "Rhinovirus culture bottle"
desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium."
spawned_disease = /datum/disease/advance/cold
+
+/obj/item/reagent_containers/glass/bottle/flu_virion
+ name = "Flu virion culture bottle"
+ desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium."
+ spawned_disease = /datum/disease/advance/flu
/obj/item/reagent_containers/glass/bottle/retrovirus
name = "Retrovirus culture bottle"
diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm
index 2eae912556..fdb6a60894 100644
--- a/code/modules/reagents/reagent_containers/medspray.dm
+++ b/code/modules/reagents/reagent_containers/medspray.dm
@@ -6,7 +6,7 @@
item_state = "spraycan"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
obj_flags = UNIQUE_RENAME
container_type = OPENCONTAINER
slot_flags = ITEM_SLOT_BELT
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index b0e101f76a..91a22ff1fb 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -6,7 +6,7 @@
item_state = "cleaner"
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
container_type = OPENCONTAINER
slot_flags = ITEM_SLOT_BELT
throwforce = 0
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index a29722b4af..8acecf25a1 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -310,7 +310,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
var/obj/item/conveyor_switch_construct/C = new/obj/item/conveyor_switch_construct(src.loc)
C.id = id
transfer_fingerprints_to(C)
- to_chat(user, "You deattach the conveyor switch.")
+ to_chat(user, "You detach the conveyor switch.")
qdel(src)
/obj/machinery/conveyor_switch/oneway
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index aa356d5cd2..737f50859d 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -96,7 +96,7 @@
return
if(user.a_intent != INTENT_HARM)
- if((I.flags_1 & ABSTRACT_1) || !user.temporarilyRemoveItemFromInventory(I))
+ if((I.item_flags & ABSTRACT) || !user.temporarilyRemoveItemFromInventory(I))
return
place_item_in_disposal(I, user)
update_icon()
diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm
index 9b0a0dc21e..624d5e0e05 100644
--- a/code/modules/recycling/disposal/construction.dm
+++ b/code/modules/recycling/disposal/construction.dm
@@ -52,7 +52,7 @@
layer = initial(layer)
else if(ispath(pipe_type, /obj/machinery/disposal/bin))
- // Disposal bins recieve special icon treating
+ // Disposal bins receive special icon treating
if(anchored)
icon_state = "disposal"
else
diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm
index ba089f6fb2..bc073d5e32 100644
--- a/code/modules/recycling/disposal/pipe.dm
+++ b/code/modules/recycling/disposal/pipe.dm
@@ -62,7 +62,7 @@
return dpdir & (~turn(H.dir, 180))
// transfer the holder through this pipe segment
-// overriden for special behaviour
+// overridden for special behaviour
/obj/structure/disposalpipe/proc/transfer(obj/structure/disposalholder/H)
return transfer_to_dir(H, nextdir(H))
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index 28609e921d..0a36394bc9 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -423,10 +423,11 @@
/datum/design/healthanalyzer
name = "Health Analyzer"
id = "healthanalyzer"
- build_type = AUTOLATHE
+ build_type = AUTOLATHE | PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
build_path = /obj/item/healthanalyzer
category = list("initial", "Medical")
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/pillbottle
name = "Pill Bottle"
@@ -655,7 +656,7 @@
/datum/design/receiver
name = "Modular Receiver"
- id = "reciever"
+ id = "receiver"
build_type = AUTOLATHE
materials = list(MAT_METAL = 15000)
build_path = /obj/item/weaponcrafting/receiver
diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm
index 68bfbfc42e..29ed3505d8 100644
--- a/code/modules/research/designs/electronics_designs.dm
+++ b/code/modules/research/designs/electronics_designs.dm
@@ -58,7 +58,7 @@
/datum/design/integrated_printer
name = "Integrated circuit printer"
- desc = "This machine provides all neccesary things for circuitry."
+ desc = "This machine provides all necessary things for circuitry."
id = "icprinter"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 5000, MAT_METAL = 10000)
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index d07a922fc7..3aec44ded3 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -348,7 +348,7 @@
/datum/design/board/processor
name = "Machine Design (Food/Slime Processor Board)"
- desc = "The circuit board for a processing unit. Screwdrive the circuit to switch between food (default) or slime processing."
+ desc = "The circuit board for a processing unit. Screwdriver the circuit to switch between food (default) or slime processing."
id = "processor"
build_path = /obj/item/circuitboard/machine/processor
category = list ("Misc. Machinery")
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index eaa18aaf43..e4ba942c84 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -651,6 +651,15 @@
construction_time = 120
category = list("Cyborg Upgrade Modules")
+/datum/design/borg_transform_clown
+ name = "Cyborg Upgrade (Clown Module)"
+ id = "borg_transform_clown"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/transform/clown
+ materials = list(MAT_METAL=10000, MAT_GLASS=15000, MAT_BANANIUM = 1000)
+ construction_time = 120
+ category = list("Cyborg Upgrade Modules")
+
/datum/design/borg_upgrade_selfrepair
name = "Cyborg Upgrade (Self-repair)"
id = "borg_upgrade_selfrepair"
@@ -696,6 +705,24 @@
construction_time = 120
category = list("Cyborg Upgrade Modules")
+/datum/design/borg_upgrade_trashofholding
+ name = "Cyborg Upgrade (Trash Bag of Holding)"
+ id = "borg_upgrade_trashofholding"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/tboh
+ materials = list(MAT_METAL=10000, MAT_GOLD=1500, MAT_URANIUM=250, MAT_PLASMA=1500)
+ construction_time = 120
+ category = list("Cyborg Upgrade Modules")
+
+/datum/design/borg_upgrade_advancedmop
+ name = "Cyborg Upgrade (Advanced Mop)"
+ id = "borg_upgrade_advancedmop"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/amop
+ materials = list(MAT_METAL=10000, MAT_GLASS=200, MAT_TITANIUM=1000)
+ construction_time = 120
+ category = list("Cyborg Upgrade Modules")
+
/datum/design/borg_upgrade_expand
name = "Cyborg Upgrade (Expand)"
id = "borg_upgrade_expand"
@@ -751,17 +778,6 @@
construction_time = 50
category = list("Misc")
-/datum/design/drone_shell
- name = "Drone Shell"
- desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs."
- id = "drone_shell"
- build_type = MECHFAB | PROTOLATHE
- materials = list(MAT_METAL = 800, MAT_GLASS = 350)
- construction_time=150
- build_path = /obj/item/drone_shell
- category = list("Misc")
- departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
-
/datum/design/synthetic_flash
name = "Flash"
desc = "When a problem arises, SCIENCE is the solution."
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 9df3df3c31..5f1e5ea520 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -200,7 +200,17 @@
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
-
+
+/datum/design/healthanalyzer_advanced
+ name = "advanced health analyzer"
+ desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy."
+ id = "healthanalyzer_advanced"
+ build_path = /obj/item/healthanalyzer/advanced
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 1500)
+ category = list("Medical Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
+
/////////////////////////////////////////
//////////Cybernetic Implants////////////
/////////////////////////////////////////
@@ -283,7 +293,7 @@
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/cyberimp_xray
- name = "X-Ray Eyes"
+ name = "X-ray Eyes"
desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
id = "ci-xray"
build_type = PROTOLATHE | MECHFAB
diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm
index b2a6c34269..18934d021c 100644
--- a/code/modules/research/designs/mining_designs.dm
+++ b/code/modules/research/designs/mining_designs.dm
@@ -14,7 +14,7 @@
/datum/design/bluespace_pod
name = "Supply Drop Pod Upgrade Disk"
- desc = "Allows the Cargo Express Console to call down the Bluespace Drop Pod, greatly increasing user saftey."//who?
+ desc = "Allows the Cargo Express Console to call down the Bluespace Drop Pod, greatly increasing user safety."//who?
id = "bluespace_pod"//the coder reading this
build_type = PROTOLATHE
materials = list(MAT_GLASS = 1000)
diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm
index b30470036e..e1648559a7 100644
--- a/code/modules/research/designs/power_designs.dm
+++ b/code/modules/research/designs/power_designs.dm
@@ -59,7 +59,7 @@
/datum/design/light_replacer
name = "Light Replacer"
- desc = "A device to automatically replace lights. Refill with working lightbulbs."
+ desc = "A device to automatically replace lights. Refill with working light bulbs."
id = "light_replacer"
build_type = PROTOLATHE
materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000)
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 2fcb20a498..0c7b7327fa 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -181,7 +181,7 @@
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
/datum/design/xray
- name = "Xray Laser Gun"
+ name = "X-ray Laser Gun"
desc = "Not quite as menacing as it sounds"
id = "xray_laser"
build_type = PROTOLATHE
diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm
index 76712dd55e..75ed53e936 100644
--- a/code/modules/research/machinery/_production.dm
+++ b/code/modules/research/machinery/_production.dm
@@ -24,7 +24,7 @@
create_reagents(0)
materials = AddComponent(/datum/component/material_container,
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), 0,
- FALSE, list(/obj/item/stack), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
+ TRUE, list(/obj/item/stack), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
materials.precise_insertion = TRUE
RefreshParts()
matching_designs = list()
diff --git a/code/modules/research/machinery/departmental_circuit_imprinter.dm b/code/modules/research/machinery/departmental_circuit_imprinter.dm
index c51288b685..e47bd97494 100644
--- a/code/modules/research/machinery/departmental_circuit_imprinter.dm
+++ b/code/modules/research/machinery/departmental_circuit_imprinter.dm
@@ -1,6 +1,6 @@
/obj/machinery/rnd/production/circuit_imprinter/department
name = "department circuit imprinter"
- desc = "A special circuit imprinter with a built in interface meant for departmental usage, with built in ExoSync recievers allowing it to print designs researched that match its ROM-encoded department type."
+ desc = "A special circuit imprinter with a built in interface meant for departmental usage, with built in ExoSync receivers allowing it to print designs researched that match its ROM-encoded department type."
icon_state = "circuit_imprinter"
container_type = OPENCONTAINER
circuit = /obj/item/circuitboard/machine/circuit_imprinter/department
diff --git a/code/modules/research/machinery/departmental_protolathe.dm b/code/modules/research/machinery/departmental_protolathe.dm
index ddc0b7c749..f91f3282d5 100644
--- a/code/modules/research/machinery/departmental_protolathe.dm
+++ b/code/modules/research/machinery/departmental_protolathe.dm
@@ -1,6 +1,6 @@
/obj/machinery/rnd/production/protolathe/department
name = "department protolathe"
- desc = "A special protolathe with a built in interface meant for departmental usage, with built in ExoSync recievers allowing it to print designs researched that match its ROM-encoded department type."
+ desc = "A special protolathe with a built in interface meant for departmental usage, with built in ExoSync receivers allowing it to print designs researched that match its ROM-encoded department type."
icon_state = "protolathe"
container_type = OPENCONTAINER
circuit = /obj/item/circuitboard/machine/protolathe/department
diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm
index 87f8cefe78..23d515cf88 100644
--- a/code/modules/research/rdmachines.dm
+++ b/code/modules/research/rdmachines.dm
@@ -44,6 +44,9 @@
return
if(default_deconstruction_crowbar(O))
return
+ if(panel_open && is_wire_tool(O))
+ wires.interact(user)
+ return TRUE
if(is_refillable() && O.is_drainable())
return FALSE //inserting reagents into the machine
if(Insert_Item(O, user))
@@ -65,6 +68,7 @@
to_chat(user, "You can't load [src] while it's opened!")
return FALSE
if(disabled)
+ to_chat(user, "The insertion belts of [src] won't engage!")
return FALSE
if(requires_console && !linked_console)
to_chat(user, "[src] must be linked to an R&D console first!")
diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm
index a34476ce1c..7c23609c21 100644
--- a/code/modules/research/techweb/_techweb.dm
+++ b/code/modules/research/techweb/_techweb.dm
@@ -106,19 +106,19 @@
l[i] = amount
modify_point_list(l)
-/datum/techweb/proc/copy_research_to(datum/techweb/reciever, unlock_hidden = TRUE) //Adds any missing research to theirs.
+/datum/techweb/proc/copy_research_to(datum/techweb/receiver, unlock_hidden = TRUE) //Adds any missing research to theirs.
for(var/i in researched_nodes)
CHECK_TICK
- reciever.research_node_id(i, TRUE, FALSE)
+ receiver.research_node_id(i, TRUE, FALSE)
for(var/i in researched_designs)
CHECK_TICK
- reciever.add_design_by_id(i)
+ receiver.add_design_by_id(i)
if(unlock_hidden)
- for(var/i in reciever.hidden_nodes)
+ for(var/i in receiver.hidden_nodes)
CHECK_TICK
if(!hidden_nodes[i])
- reciever.hidden_nodes -= i //We can see it so let them see it too.
- reciever.recalculate_nodes()
+ receiver.hidden_nodes -= i //We can see it so let them see it too.
+ receiver.recalculate_nodes()
/datum/techweb/proc/copy()
var/datum/techweb/returned = new()
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 015f0dafb6..a65ad7de0a 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -18,7 +18,7 @@
display_name = "Biological Technology"
description = "What makes us tick." //the MC, silly!
prereq_ids = list("base")
- design_ids = list("chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser")
+ design_ids = list("chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
@@ -27,7 +27,7 @@
display_name = "Advanced Biotechnology"
description = "Advanced Biotechnology"
prereq_ids = list("biotech")
- design_ids = list("piercesyringe", "smoke_machine", "plasmarefiller", "limbgrower", "defibrillator", "meta_beaker")
+ design_ids = list("piercesyringe", "smoke_machine", "plasmarefiller", "limbgrower", "defibrillator", "meta_beaker", "healthanalyzer_advanced")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
@@ -198,7 +198,7 @@
display_name = "Basic Robotics Research"
description = "Programmable machines that make our lives lazier."
prereq_ids = list("base")
- design_ids = list("paicard", "drone_shell")
+ design_ids = list("paicard")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
@@ -207,7 +207,7 @@
display_name = "Advanced Robotics Research"
description = "It can even do the dishes!"
prereq_ids = list("robotics")
- design_ids = list("borg_upgrade_diamonddrill")
+ design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_trashofholding", "borg_upgrade_advancedmop")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
@@ -320,7 +320,7 @@
description = "Honk?!"
prereq_ids = list("base")
design_ids = list("air_horn", "honker_main", "honker_peri", "honker_targ", "honk_chassis", "honk_head", "honk_torso", "honk_left_arm", "honk_right_arm",
- "honk_left_leg", "honk_right_leg", "mech_banana_mortar", "mech_mousetrap_mortar", "mech_honker", "mech_punching_face", "implant_trombone")
+ "honk_left_leg", "honk_right_leg", "mech_banana_mortar", "mech_mousetrap_mortar", "mech_honker", "mech_punching_face", "implant_trombone", "borg_transform_clown")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
diff --git a/code/modules/research/xenobiology/crossbreeding/_corecross.dm b/code/modules/research/xenobiology/crossbreeding/_corecross.dm
index 45cc0c1efc..43f23d013d 100644
--- a/code/modules/research/xenobiology/crossbreeding/_corecross.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_corecross.dm
@@ -39,7 +39,7 @@ To add a crossbreed:
/obj/item/slimecross/Initialize()
..()
- name = colour + " " + name
+ name = effect + " " + colour + " extract"
var/itemcolor = "#FFFFFF"
switch(colour)
if("orange")
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index 97112c148a..ca334497a7 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -564,6 +564,7 @@ datum/status_effect/stabilized/blue/on_remove()
/datum/status_effect/stabilized/cerulean/on_remove()
if(clone)
clone.visible_message("[clone] dissolves into a puddle of goo!")
+ clone.unequip_everything()
qdel(clone)
/datum/status_effect/stabilized/pyrite
diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm
index 7183ece045..8ae7bf8d54 100644
--- a/code/modules/research/xenobiology/crossbreeding/charged.dm
+++ b/code/modules/research/xenobiology/crossbreeding/charged.dm
@@ -386,6 +386,9 @@ Charged extracts:
if(user == M)
to_chat(user, "You can't drink the love potion. What are you, a narcissist?")
return ..()
+ if(M.has_status_effect(STATUS_EFFECT_INLOVE))
+ to_chat(user, "[M] is already lovestruck!")
+ return ..()
M.visible_message("[user] starts to feed [M] a love potion!",
"[user] starts to feed you a love potion!")
@@ -393,10 +396,11 @@ Charged extracts:
if(!do_after(user, 50, target = M))
return
to_chat(user, "You feed [M] the love potion!")
- to_chat(M, "You develop feelings for [user], and anyone [p_they(user)] like.")
- if(!("[REF(user)]" in M.faction) && M.mind)
- M.mind.store_memory("You have strong feelings for [user].")
+ to_chat(M, "You develop feelings for [user], and anyone [user.p_they()] like.")
+ if(M.mind)
+ M.mind.store_memory("You are in love with [user].")
M.faction |= "[REF(user)]"
+ M.apply_status_effect(STATUS_EFFECT_INLOVE, user)
qdel(src)
/obj/item/slimepotion/peacepotion
diff --git a/code/modules/research/xenobiology/crossbreeding/recurring.dm b/code/modules/research/xenobiology/crossbreeding/recurring.dm
index cc36bbb215..8a6e5c3cbb 100644
--- a/code/modules/research/xenobiology/crossbreeding/recurring.dm
+++ b/code/modules/research/xenobiology/crossbreeding/recurring.dm
@@ -21,6 +21,7 @@ Recurring extracts:
extract.desc = desc
extract.icon = icon
extract.icon_state = icon_state
+ extract.color = color
extract.recurring = TRUE
src.forceMove(extract)
START_PROCESSING(SSobj,src)
diff --git a/code/modules/research/xenobiology/crossbreeding/reproductive.dm b/code/modules/research/xenobiology/crossbreeding/reproductive.dm
index 878e17c1e7..2f6ca9555a 100644
--- a/code/modules/research/xenobiology/crossbreeding/reproductive.dm
+++ b/code/modules/research/xenobiology/crossbreeding/reproductive.dm
@@ -19,7 +19,7 @@ Reproductive extracts:
return
if(istype(O, /obj/item/storage/bag/bio))
var/list/inserted = list()
- O.SendSignal(COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/monkeycube, src, 1, null, null, user, inserted)
+ SEND_SIGNAL(O, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/monkeycube, src, 1, null, null, user, inserted)
if(inserted.len)
var/obj/item/reagent_containers/food/snacks/monkeycube/M = inserted[1]
if(istype(M))
diff --git a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
index 7bb723bc3d..93e5a8e739 100644
--- a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
+++ b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
@@ -4,7 +4,7 @@ Self-sustaining extracts:
*/
/obj/item/slimecross/selfsustaining
name = "self-sustaining extract"
- effect = "selfsustaining"
+ effect = "self-sustaining"
icon_state = "selfsustaining"
var/extract_type = /obj/item/slime_extract
@@ -23,6 +23,7 @@ Self-sustaining extracts:
A.extract = X
A.icon = icon
A.icon_state = icon_state
+ A.color = color
qdel(src)
/obj/item/autoslime/Initialize()
diff --git a/code/modules/research/xenobiology/crossbreeding/stabilized.dm b/code/modules/research/xenobiology/crossbreeding/stabilized.dm
index cc80c3a780..fe1b498667 100644
--- a/code/modules/research/xenobiology/crossbreeding/stabilized.dm
+++ b/code/modules/research/xenobiology/crossbreeding/stabilized.dm
@@ -163,4 +163,4 @@ Stabilized extracts:
regencore = regen
regen.forceMove(src)
return
- return ..()
+ return ..()
\ No newline at end of file
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index a5998400c8..b8cc61df97 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -702,7 +702,7 @@
imp.implant(SM, user)
SM.access_card = new /obj/item/card/id/syndicate(SM)
- SM.access_card.flags_1 |= NODROP_1
+ SM.access_card.item_flags |= NODROP
/obj/item/slimepotion/transference
name = "consciousness transference potion"
@@ -725,7 +725,11 @@
if(SM.sentience_type != animal_type)
to_chat(user, "You cannot transfer your consciousness to [SM]." )
return ..()
- if(jobban_isbanned(user, ROLE_ALIEN)) //ideally sentience and trasnference potions should be their own unique role.
+ var/jb = jobban_isbanned(user, ROLE_ALIEN)
+ if(QDELETED(src) || QDELETED(M) || QDELETED(user))
+ return
+
+ if(jb) //ideally sentience and trasnference potions should be their own unique role.
to_chat(user, "Your mind goes blank as you attempt to use the potion.")
return
@@ -909,7 +913,7 @@
/obj/item/slimepotion/slime/slimeradio
name = "bluespace radio potion"
- desc = "A strange chemical that grants those who ingest it the ability to broadcast and recieve subscape radio waves."
+ desc = "A strange chemical that grants those who ingest it the ability to broadcast and receive subscape radio waves."
icon = 'icons/obj/chemical.dmi'
icon_state = "potgrey"
diff --git a/code/modules/ruins/spaceruin_code/listeningstation.dm b/code/modules/ruins/spaceruin_code/listeningstation.dm
index ff0bad8257..8efeaaabff 100644
--- a/code/modules/ruins/spaceruin_code/listeningstation.dm
+++ b/code/modules/ruins/spaceruin_code/listeningstation.dm
@@ -32,11 +32,11 @@
/obj/item/paper/fluff/ruins/listeningstation/receipt
name = "receipt"
- info = "1 x Stechtkin pistol - $600 1 x silencer - $200 shipping charge - $4360 total - $5160"
+ info = "1 x Stechkin pistol - $600 1 x silencer - $200 shipping charge - $4360 total - $5160"
/obj/item/paper/fluff/ruins/listeningstation/odd_report
name = "odd report"
- info = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilized your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear its ugly head again. -Donk Co. Operative #451"
+ info = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilized your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear its ugly head again. -DonkCo Operative #451"
/obj/item/paper/fluff/ruins/listeningstation/briefing
name = "mission briefing"
diff --git a/code/modules/ruins/spaceruin_code/oldstation.dm b/code/modules/ruins/spaceruin_code/oldstation.dm
index d023760061..b216145023 100644
--- a/code/modules/ruins/spaceruin_code/oldstation.dm
+++ b/code/modules/ruins/spaceruin_code/oldstation.dm
@@ -1,7 +1,7 @@
/////////// Oldstation items
/obj/item/paper/fluff/ruins/oldstation
- name = "Cyro Awakening Alert"
+ name = "Cryo Awakening Alert"
info = "**WARNING**
Catastrophic damage sustained to station. Powernet exhausted to reawaken crew.
Immediate Objectives
1: Activate emergency power generator 2: Lift station lockdown on the bridge
Please locate the 'Damage Report' on the bridge for a detailed situation report."
/obj/item/paper/fluff/ruins/oldstation/damagereport
@@ -43,7 +43,7 @@
/obj/item/paper/fluff/ruins/oldstation/report
name = "Crew Reawakening Report"
- info = "Artifical Program's report to surviving crewmembers.
Crew were placed into cryostasis on March 10th, 2445.
Crew were awoken from cryostasis around June, 2557.
\
+ info = "Artificial Program's report to surviving crewmembers.
Crew were placed into cryostasis on March 10th, 2445.
Crew were awoken from cryostasis around June, 2557.
\
SIGNIFICANT EVENTS OF NOTE 1: The primary radiation detectors were taken offline after 112 years due to power failure, secondary radiation detectors showed no residual \
radiation on station. Deduction, primarily detector was malfunctioning and was producing a radiation signal when there was none.
2: A data burst from a nearby Nanotrasen Space \
- Station was recieved, this data burst contained research data that has been uploaded to our RnD labs.
3: Unknown invasion force has occupied Delta station."
+ Station was received, this data burst contained research data that has been uploaded to our RnD labs.
3: Unknown invasion force has occupied Delta station."
diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/assault_pod.dm
index 84f0ac493d..43b273914c 100644
--- a/code/modules/shuttle/assault_pod.dm
+++ b/code/modules/shuttle/assault_pod.dm
@@ -19,7 +19,7 @@
/obj/item/assault_pod
- name = "Assault Pod Targetting Device"
+ name = "Assault Pod Targeting Device"
icon = 'icons/obj/device.dmi'
icon_state = "gangtool-red"
item_state = "radio"
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index fc32b60e6d..20b8c26d83 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -263,6 +263,14 @@
return has_people
+/obj/docking_port/mobile/emergency/proc/ShuttleDBStuff()
+ set waitfor = FALSE
+ if(!SSdbcore.Connect())
+ return
+ var/datum/DBQuery/query_round_shuttle_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET shuttle_name = '[name]' WHERE id = [GLOB.round_id]")
+ query_round_shuttle_name.Execute()
+ qdel(query_round_shuttle_name)
+
/obj/docking_port/mobile/emergency/check()
if(!timer)
return
@@ -293,9 +301,7 @@
setTimer(SSshuttle.emergencyDockTime)
send2irc("Server", "The Emergency Shuttle has docked with the station.")
priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, 'sound/ai/shuttledock.ogg', "Priority")
- if(SSdbcore.Connect())
- var/datum/DBQuery/query_round_shuttle_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET shuttle_name = '[name]' WHERE id = [GLOB.round_id]")
- query_round_shuttle_name.Execute()
+ ShuttleDBStuff()
if(SHUTTLE_DOCKED)
@@ -537,7 +543,7 @@
/obj/item/storage/pod/attack_hand(mob/user)
if (can_interact(user))
- SendSignal(COMSIG_TRY_STORAGE_SHOW, user)
+ SEND_SIGNAL(src, COMSIG_TRY_STORAGE_SHOW, user)
return TRUE
/obj/item/storage/pod/MouseDrop(over_object, src_location, over_location)
diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm
index f2d56686e0..eaa1f36b75 100644
--- a/code/modules/shuttle/ferry.dm
+++ b/code/modules/shuttle/ferry.dm
@@ -36,5 +36,5 @@
if(last_request && (last_request + cooldown > world.time))
return
last_request = world.time
- to_chat(usr, "Your request has been recieved by CentCom.")
+ to_chat(usr, "Your request has been received by CentCom.")
to_chat(GLOB.admins, "FERRY: [ADMIN_LOOKUPFLW(usr)] (Move Ferry) is requesting to move the transport ferry to CentCom.")
diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/shuttle_rotate.dm
index cc69fb5d15..a2159a50fd 100644
--- a/code/modules/shuttle/shuttle_rotate.dm
+++ b/code/modules/shuttle/shuttle_rotate.dm
@@ -25,7 +25,7 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate
pixel_x = oldPY
pixel_y = (oldPX*(-1))
- SendSignal(COMSIG_ATOM_ROTATE, rotation, params)
+ SEND_SIGNAL(src, COMSIG_ATOM_ROTATE, rotation, params)
/************************************Turf rotate procs************************************/
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index abe601e503..0f005f69f7 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -165,7 +165,7 @@
var/datum/job/captain/C = new /datum/job/captain
access_card.access = C.get_access()
access_card.access |= ACCESS_CENT_BAR
- access_card.flags_1 |= NODROP_1
+ access_card.item_flags |= NODROP
/mob/living/simple_animal/hostile/alien/maid/barmaid/Destroy()
qdel(access_card)
diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm
index 773b35544c..1cf12e6d42 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -13,7 +13,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
/obj/machinery/clonepod,
/obj/effect/mob_spawn,
/obj/effect/hierophant,
- /obj/structure/recieving_pad,
+ /obj/structure/receiving_pad,
/obj/effect/clockwork/spatial_gateway,
/obj/structure/destructible/clockwork/powered/clockwork_obelisk,
/obj/item/warp_cube,
diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm
index 4d92878cc2..4e6ef7ed9b 100644
--- a/code/modules/spells/spell.dm
+++ b/code/modules/spells/spell.dm
@@ -373,7 +373,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
if("unconscious")
target.AdjustUnconscious(amount)
else
- target.vars[type] += amount //I bear no responsibility for the runtimes that'll happen if you try to adjust non-numeric or even non-existant vars
+ target.vars[type] += amount //I bear no responsibility for the runtimes that'll happen if you try to adjust non-numeric or even non-existent vars
/obj/effect/proc_holder/spell/targeted //can mean aoe for mobs (limited/unlimited number) or one target mob
var/max_targets = 1 //leave 0 for unlimited targets in range, 1 for one selectable target in range, more for limited number of casts (can all target one guy, depends on target_ignore_prev) in range
diff --git a/code/modules/spells/spell_types/barnyard.dm b/code/modules/spells/spell_types/barnyard.dm
index 70b33919b7..01b24fef98 100644
--- a/code/modules/spells/spell_types/barnyard.dm
+++ b/code/modules/spells/spell_types/barnyard.dm
@@ -44,7 +44,7 @@
var/choice = masks[randM]
var/obj/item/clothing/mask/magichead = new choice
- magichead.flags_1 |= NODROP_1
+ magichead.item_flags |= NODROP
magichead.flags_inv = null
target.visible_message("[target]'s face bursts into flames, and a barnyard animal's head takes its place!", \
"Your face burns up, and shortly after the fire you realise you have the face of a barnyard animal!")
diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm
index ff71ad8e68..8e1957f524 100644
--- a/code/modules/spells/spell_types/construct_spells.dm
+++ b/code/modules/spells/spell_types/construct_spells.dm
@@ -220,7 +220,7 @@
/obj/effect/proc_holder/spell/targeted/dominate
name = "Dominate"
- desc = "This spell dominates the mind of a lesser creature, causing it to see you as an ally."
+ desc = "This spell dominates the mind of a lesser creature to the will of Nar'sie, allying it only to her direct followers."
charge_max = 600
range = 7
diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm
index bf402b7a6a..27cfc9208b 100644
--- a/code/modules/spells/spell_types/godhand.dm
+++ b/code/modules/spells/spell_types/godhand.dm
@@ -7,7 +7,7 @@
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "syndballoon"
item_state = null
- flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1
+ item_flags = NEEDS_PERMIT | ABSTRACT | NODROP | DROPDEL
w_class = WEIGHT_CLASS_HUGE
force = 0
throwforce = 0
@@ -60,10 +60,7 @@
target.visible_message("[target]'s [A] glows brightly as it wards off the spell!")
user.visible_message("The feedback blows [user]'s arm off!","The spell bounces from [M]'s skin back into your arm!")
user.flash_act()
- var/obj/item/bodypart/part
- var/index = user.get_held_index_of_item(src)
- if(index)
- part = user.hand_bodyparts[index]
+ var/obj/item/bodypart/part = user.get_holding_bodypart_of_item(src)
if(part)
part.dismember()
..()
diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm
index 33b555ad21..d88ee7fb22 100644
--- a/code/modules/spells/spell_types/lichdom.dm
+++ b/code/modules/spells/spell_types/lichdom.dm
@@ -31,10 +31,10 @@
var/obj/item/marked_item
- for(var/obj/item in hand_items)
+ for(var/obj/item/item in hand_items)
// I ensouled the nuke disk once. But it's probably a really
// mean tactic, so probably should discourage it.
- if((item.flags_1 & ABSTRACT_1) || (item.flags_1 & NODROP_1) || item.SendSignal(COMSIG_ITEM_IMBUE_SOUL, user))
+ if((item.item_flags & ABSTRACT) || (item.item_flags & NODROP) || SEND_SIGNAL(item, COMSIG_ITEM_IMBUE_SOUL, user))
continue
marked_item = item
to_chat(M, "You begin to focus your very being into [item]...")
diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm
index 2b904df277..e3177dbb4f 100644
--- a/code/modules/spells/spell_types/mime.dm
+++ b/code/modules/spells/spell_types/mime.dm
@@ -58,9 +58,9 @@
H.mind.miming=!H.mind.miming
if(H.mind.miming)
to_chat(H, "You make a vow of silence.")
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "vow")
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "vow")
else
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "vow", /datum/mood_event/broken_vow)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "vow", /datum/mood_event/broken_vow)
to_chat(H, "You break your vow of silence.")
// These spells can only be gotten from the "Guide for Advanced Mimery series" for Mime Traitors.
@@ -131,17 +131,26 @@
/obj/item/book/granter/spell/mimery_blockade
spell = /obj/effect/proc_holder/spell/targeted/forcewall/mime
- spellname = ""
+ spellname = "Invisible Blockade"
name = "Guide to Advanced Mimery Vol 1"
desc = "The pages don't make any sound when turned."
icon_state ="bookmime"
remarks = list("...")
+/obj/item/book/granter/spell/mimery_blockade/attack_self(mob/user)
+ ..()
+ if(!locate(/obj/effect/proc_holder/spell/targeted/mime/speak) in user.mind.spell_list)
+ user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak)
/obj/item/book/granter/spell/mimery_guns
spell = /obj/effect/proc_holder/spell/aimed/finger_guns
- spellname = ""
+ spellname = "Finger Guns"
name = "Guide to Advanced Mimery Vol 2"
desc = "There aren't any words written..."
icon_state ="bookmime"
remarks = list("...")
+
+/obj/item/book/granter/spell/mimery_guns/attack_self(mob/user)
+ ..()
+ if(!locate(/obj/effect/proc_holder/spell/targeted/mime/speak) in user.mind.spell_list)
+ user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak)
\ No newline at end of file
diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm
index bd5099da68..0bb79eba21 100644
--- a/code/modules/spells/spell_types/summonitem.dm
+++ b/code/modules/spells/spell_types/summonitem.dm
@@ -22,10 +22,10 @@
if(!marked_item) //linking item to the spell
message = ""
- for(var/obj/item in hand_items)
- if(item.flags_1 & ABSTRACT_1)
+ for(var/obj/item/item in hand_items)
+ if(item.item_flags & ABSTRACT)
continue
- if(item.flags_1 & NODROP_1)
+ if(item.item_flags & NODROP)
message += "Though it feels redundant, "
marked_item = item
message += "You mark [item] for recall."
@@ -83,7 +83,7 @@
to_chat(C, "The [item_to_retrieve] that was embedded in your [L] has mysteriously vanished. How fortunate!")
if(!C.has_embedded_objects())
C.clear_alert("embeddedobject")
- C.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded")
+ SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "embedded")
break
else
diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm
index 9be68103c3..0601ff28e1 100644
--- a/code/modules/station_goals/dna_vault.dm
+++ b/code/modules/station_goals/dna_vault.dm
@@ -67,7 +67,7 @@
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
icon_state = "hypo"
- flags_1 = NOBLUDGEON_1
+ item_flags = NOBLUDGEON
var/list/animals = list()
var/list/plants = list()
var/list/dna = list()
diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm
index c806a68867..87e13955fe 100644
--- a/code/modules/surgery/bodyparts/dismemberment.dm
+++ b/code/modules/surgery/bodyparts/dismemberment.dm
@@ -19,7 +19,7 @@
affecting.receive_damage(CLAMP(brute_dam/2, 15, 50), CLAMP(burn_dam/2, 0, 50)) //Damage the chest based on limb's existing damage
C.visible_message("[C]'s [src.name] has been violently dismembered!")
C.emote("scream")
- C.SendSignal(COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered)
+ SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered)
drop_limb()
if(dam_type == BURN)
@@ -102,7 +102,7 @@
I.forceMove(src)
if(!C.has_embedded_objects())
C.clear_alert("embeddedobject")
- C.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded")
+ SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "embedded")
if(!special)
if(C.dna)
diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm
index 12531a9ee5..91336331c4 100644
--- a/code/modules/surgery/bodyparts/helpers.dm
+++ b/code/modules/surgery/bodyparts/helpers.dm
@@ -121,7 +121,7 @@
I.forceMove(T)
clear_alert("embeddedobject")
- SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded")
+ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "embedded")
/mob/living/carbon/proc/has_embedded_objects()
. = 0
diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm
index fe4f1a6edf..e57f8f686b 100644
--- a/code/modules/surgery/cavity_implant.dm
+++ b/code/modules/surgery/cavity_implant.dm
@@ -29,9 +29,13 @@
/datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/obj/item/bodypart/chest/CH = target.get_bodypart(BODY_ZONE_CHEST)
if(tool)
- if(IC || tool.w_class > WEIGHT_CLASS_NORMAL || (tool.flags_1 & NODROP_1) || istype(tool, /obj/item/organ))
+ if(IC || tool.w_class > WEIGHT_CLASS_NORMAL || (tool.item_flags & NODROP) || istype(tool, /obj/item/organ))
to_chat(user, "You can't seem to fit [tool] in [target]'s [target_zone]!")
return 0
+ var/obj/item/electronic_assembly/EA = tool
+ if(istype(EA) && EA.combat_circuits && tool.w_class > WEIGHT_CLASS_SMALL)
+ to_chat(user, "[tool] is too dangerous to put in [target]'s [target_zone]! Maybe if it was smaller...")
+ return 0
else
user.visible_message("[user] stuffs [tool] into [target]'s [target_zone]!", "You stuff [tool] into [target]'s [target_zone].")
user.transferItemToLoc(tool, target, TRUE)
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index e93da8b139..ea2385ce5f 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -86,7 +86,7 @@
holder = item
- holder.flags_1 |= NODROP_1
+ holder.item_flags |= NODROP
holder.resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
holder.slot_flags = null
holder.materials = null
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index 133fe5d8be..0302dd2cae 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -13,7 +13,7 @@
var/hunger_threshold = NUTRITION_LEVEL_STARVING
var/synthesizing = 0
var/poison_amount = 5
- slot = ORGAN_SLOT_STOMACH
+ slot = ORGAN_SLOT_STOMACH_AID
/obj/item/organ/cyberimp/chest/nutriment/on_life()
if(synthesizing)
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index 4aa06f01c6..38967711fe 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -51,7 +51,7 @@
active = !active
if(active)
for(var/obj/item/I in owner.held_items)
- if(!(I.flags_1 & NODROP_1))
+ if(!(I.item_flags & NODROP))
stored_items += I
var/list/L = owner.get_empty_held_indexes()
@@ -62,7 +62,7 @@
else
for(var/obj/item/I in stored_items)
to_chat(owner, "Your [owner.get_held_index_name(owner.get_held_index_of_item(I))]'s grip tightens.")
- I.flags_1 |= NODROP_1
+ I.item_flags |= NODROP
else
release_items()
@@ -86,7 +86,7 @@
/obj/item/organ/cyberimp/brain/anti_drop/proc/release_items()
for(var/obj/item/I in stored_items)
- I.flags_1 &= ~NODROP_1
+ I.item_flags &= ~NODROP
stored_items = list()
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index 5092b53374..d38e76ae6e 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -98,7 +98,7 @@
owner.flash_act(visual = 1)
/obj/item/organ/eyes/robotic/xray
- name = "X-ray eyes"
+ name = "\improper X-ray eyes"
desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
eye_color = "000"
see_in_dark = 8
diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm
index 3ddf658ecd..cb7833a373 100755
--- a/code/modules/surgery/organs/stomach.dm
+++ b/code/modules/surgery/organs/stomach.dm
@@ -39,22 +39,22 @@
switch(H.disgust)
if(0 to DISGUST_LEVEL_GROSS)
H.clear_alert("disgust")
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "disgust")
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "disgust")
if(DISGUST_LEVEL_GROSS to DISGUST_LEVEL_VERYGROSS)
H.throw_alert("disgust", /obj/screen/alert/gross)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/gross)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/gross)
if(DISGUST_LEVEL_VERYGROSS to DISGUST_LEVEL_DISGUSTED)
H.throw_alert("disgust", /obj/screen/alert/verygross)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/verygross)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/verygross)
if(DISGUST_LEVEL_DISGUSTED to INFINITY)
H.throw_alert("disgust", /obj/screen/alert/disgusted)
- H.SendSignal(COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/disgusted)
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgust/disgusted)
/obj/item/organ/stomach/Remove(mob/living/carbon/M, special = 0)
var/mob/living/carbon/human/H = owner
if(istype(H))
H.clear_alert("disgust")
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "disgust")
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "disgust")
..()
/obj/item/organ/stomach/fly
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 2521037963..48392f70a3 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -488,7 +488,7 @@
L.lay_down() //aka get up
L.SetStun(0)
L.SetKnockdown(0)
- L.SetUnconscious(0) //i said get up i don't care if you're being tazed
+ L.SetUnconscious(0) //i said get up i don't care if you're being tased
//SIT
else if((findtext(message, sit_words)))
diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm
index 548a73627d..451ae02dac 100644
--- a/code/modules/surgery/remove_embedded_object.dm
+++ b/code/modules/surgery/remove_embedded_object.dm
@@ -30,7 +30,7 @@
L.embedded_objects -= I
if(!H.has_embedded_objects())
H.clear_alert("embeddedobject")
- H.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "embedded")
+ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "embedded")
if(objects > 0)
user.visible_message("[user] successfully removes [objects] objects from [H]'s [L]!", "You successfully remove [objects] objects from [H]'s [L.name].")
diff --git a/code/modules/tgui/states/default.dm b/code/modules/tgui/states/default.dm
index 0e4844dced..c6741f20b8 100644
--- a/code/modules/tgui/states/default.dm
+++ b/code/modules/tgui/states/default.dm
@@ -7,7 +7,7 @@
GLOBAL_DATUM_INIT(default_state, /datum/ui_state/default, new)
/datum/ui_state/default/can_use_topic(src_object, mob/user)
- return user.default_can_use_topic(src_object) // Call the individual mob-overriden procs.
+ return user.default_can_use_topic(src_object) // Call the individual mob-overridden procs.
/mob/proc/default_can_use_topic(src_object)
return UI_CLOSE // Don't allow interaction by default.
diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm
index 79f09c4dbc..2e91879006 100644
--- a/code/modules/uplink/uplink_devices.dm
+++ b/code/modules/uplink/uplink_devices.dm
@@ -1,42 +1,60 @@
-
// A collection of pre-set uplinks, for admin spawns.
-/obj/item/radio/uplink/Initialize(mapload, _owner, _tc_amount = 20)
- . = ..()
+
+// Radio-like uplink; not an actual radio because this uplink is most commonly
+// used for nuke ops, for whom opening the radio GUI and the uplink GUI
+// simultaneously is an annoying distraction.
+/obj/item/uplink
+ name = "station bounced radio"
+ icon = 'icons/obj/radio.dmi'
icon_state = "radio"
+ item_state = "walkietalkie"
+ desc = "A basic handheld radio that communicates with local telecommunication networks."
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
- AddComponent(/datum/component/uplink, _owner, FALSE, TRUE, null, _tc_amount)
+ dog_fashion = /datum/dog_fashion/back
-/obj/item/radio/uplink/nuclear/Initialize()
+ flags_1 = CONDUCT_1
+ slot_flags = ITEM_SLOT_BELT
+ throw_speed = 3
+ throw_range = 7
+ w_class = WEIGHT_CLASS_SMALL
+
+/obj/item/uplink/Initialize(mapload, owner, tc_amount = 20)
+ . = ..()
+ AddComponent(/datum/component/uplink, owner, FALSE, TRUE, null, tc_amount)
+
+/obj/item/uplink/nuclear/Initialize()
. = ..()
GET_COMPONENT(hidden_uplink, /datum/component/uplink)
hidden_uplink.set_gamemode(/datum/game_mode/nuclear)
-/obj/item/radio/uplink/nuclear_restricted/Initialize()
+/obj/item/uplink/nuclear_restricted/Initialize()
. = ..()
GET_COMPONENT(hidden_uplink, /datum/component/uplink)
hidden_uplink.allow_restricted = FALSE
hidden_uplink.set_gamemode(/datum/game_mode/nuclear)
-/obj/item/radio/uplink/clownop/Initialize()
+/obj/item/uplink/clownop/Initialize()
. = ..()
GET_COMPONENT(hidden_uplink, /datum/component/uplink)
hidden_uplink.set_gamemode(/datum/game_mode/nuclear/clown_ops)
-/obj/item/multitool/uplink/Initialize(mapload, _owner, _tc_amount = 20)
- . = ..()
- AddComponent(/datum/component/uplink, _owner, FALSE, TRUE, null, _tc_amount)
-
-/obj/item/pen/uplink/Initialize(mapload, _owner, _tc_amount = 20)
- . = ..()
- AddComponent(/datum/component/uplink)
- traitor_unlock_degrees = 360
-
-/obj/item/radio/uplink/old
+/obj/item/uplink/old
name = "dusty radio"
desc = "A dusty looking radio."
-/obj/item/radio/uplink/old/Initialize(mapload, _owner, _tc_amount = 10)
+/obj/item/uplink/old/Initialize(mapload, owner, tc_amount = 10)
. = ..()
GET_COMPONENT(hidden_uplink, /datum/component/uplink)
hidden_uplink.name = "dusty radio"
+
+// Multitool uplink
+/obj/item/multitool/uplink/Initialize(mapload, owner, tc_amount = 20)
+ . = ..()
+ AddComponent(/datum/component/uplink, owner, FALSE, TRUE, null, tc_amount)
+
+// Pen uplink
+/obj/item/pen/uplink/Initialize(mapload, owner, tc_amount = 20)
+ . = ..()
+ AddComponent(/datum/component/uplink, owner, TRUE, FALSE, null, tc_amount)
+ traitor_unlock_degrees = 360
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 619e2c8193..a9f2c63e13 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -790,7 +790,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
name = "Combat Banana Shoes"
desc = "While making the wearer immune to most slipping attacks like regular combat clown shoes, these shoes \
can generate a large number of synthetic banana peels as the wearer walks, slipping up would-be pursuers. They also \
- squeek significantly louder."
+ squeak significantly louder."
item = /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat
cost = 6
surplus = 0
@@ -1269,7 +1269,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
cost = 8
/datum/uplink_item/cyber_implants/xray
- name = "X-Ray Vision Implant"
+ name = "X-ray Vision Implant"
desc = "These cybernetic eyes will give you X-ray vision. Comes with an autosurgeon."
item = /obj/item/autosurgeon/xray_eyes
cost = 10
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index 89bbee9d60..b9112ddfde 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -1,7 +1,3 @@
-#define STANDARD_CHARGE 1
-#define CONTRABAND_CHARGE 2
-#define COIN_CHARGE 3
-
/*
* Vending machine types - Can be found under /code/modules/vending/
*/
@@ -21,7 +17,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
*/
/datum/data/vending_product
- var/product_name = "generic"
+ name = "generic"
var/product_path = null
var/amount = 0
var/max_amount = 0
@@ -74,7 +70,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
var/dish_quants = list() //used by the snack machine's custom compartment to count dishes.
var/obj/item/vending_refill/refill_canister = null //The type of refill canisters used by this machine.
- var/refill_count = 3 //The number of canisters the vending machine uses
/obj/machinery/vending/Initialize()
var/build_inv = FALSE
@@ -84,9 +79,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
. = ..()
wires = new /datum/wires/vending(src)
if(build_inv) //non-constructable vending machine
- build_inventory(products)
- build_inventory(contraband, 1)
- build_inventory(premium, 0, 1)
+ build_inventory(products, product_records)
+ build_inventory(contraband, hidden_records)
+ build_inventory(premium, coin_records)
slogan_list = splittext(product_slogans, ";")
// So not all machines speak at the exact same time.
@@ -102,17 +97,17 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
return ..()
/obj/machinery/vending/RefreshParts() //Better would be to make constructable child
- if(component_parts)
- product_records = list()
- hidden_records = list()
- coin_records = list()
- build_inventory(products, start_empty = 1)
- build_inventory(contraband, 1, start_empty = 1)
- build_inventory(premium, 0, 1, start_empty = 1)
- for(var/obj/item/vending_refill/VR in component_parts)
- refill_inventory(VR, product_records, STANDARD_CHARGE)
- refill_inventory(VR, coin_records, COIN_CHARGE)
- refill_inventory(VR, hidden_records, CONTRABAND_CHARGE)
+ if(!component_parts)
+ return
+
+ product_records = list()
+ hidden_records = list()
+ coin_records = list()
+ build_inventory(products, product_records, start_empty = TRUE)
+ build_inventory(contraband, hidden_records, start_empty = TRUE)
+ build_inventory(premium, coin_records, start_empty = TRUE)
+ for(var/obj/item/vending_refill/VR in component_parts)
+ restock(VR)
/obj/machinery/vending/deconstruct(disassembled = TRUE)
if(!refill_canister) //the non constructable vendors drop metal instead of a machine frame.
@@ -124,25 +119,33 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/machinery/vending/obj_break(damage_flag)
if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1))
- var/dump_amount = 0
- for(var/datum/data/vending_product/R in product_records)
- if(R.amount <= 0) //Try to use a record that actually has something to dump.
- continue
- var/dump_path = R.product_path
- if(!dump_path)
- continue
-
- while(R.amount>0)
- var/obj/O = new dump_path(loc)
- step(O, pick(GLOB.alldirs)) //we only drop 20% of the total of each products and spread it
- R.amount -= 5 //around to not fill the turf with too many objects.
- dump_amount++
- if(dump_amount > 15) //so we don't drop too many items (e.g. ClothesMate)
- break
stat |= BROKEN
icon_state = "[initial(icon_state)]-broken"
-/obj/machinery/vending/proc/build_inventory(list/productlist, hidden=0, req_coin=0, start_empty = null)
+ var/dump_amount = 0
+ var/found_anything = TRUE
+ while (found_anything)
+ found_anything = FALSE
+ for(var/record in shuffle(product_records))
+ var/datum/data/vending_product/R = record
+ if(R.amount <= 0) //Try to use a record that actually has something to dump.
+ continue
+ var/dump_path = R.product_path
+ if(!dump_path)
+ continue
+ R.amount--
+ // busting open a vendor will destroy some of the contents
+ if(found_anything && prob(80))
+ continue
+
+ var/obj/O = new dump_path(loc)
+ step(O, pick(GLOB.alldirs))
+ found_anything = TRUE
+ dump_amount++
+ if (dump_amount >= 16)
+ return
+
+/obj/machinery/vending/proc/build_inventory(list/productlist, list/recordlist, start_empty = FALSE)
for(var/typepath in productlist)
var/amount = productlist[typepath]
if(isnull(amount))
@@ -150,47 +153,54 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
var/atom/temp = typepath
var/datum/data/vending_product/R = new /datum/data/vending_product()
- R.product_name = initial(temp.name)
+ R.name = initial(temp.name)
R.product_path = typepath
if(!start_empty)
R.amount = amount
R.max_amount = amount
- R.display_color = pick("red","blue","green")
+ R.display_color = pick("#ff8080","#80ff80","#8080ff")
+ recordlist += R
- if(hidden)
- hidden_records += R
- else if(req_coin)
- coin_records += R
- else
- product_records += R
+/obj/machinery/vending/proc/restock(obj/item/vending_refill/canister)
+ if (!canister.products)
+ canister.products = products.Copy()
+ if (!canister.contraband)
+ canister.contraband = contraband.Copy()
+ if (!canister.premium)
+ canister.premium = premium.Copy()
+ . = 0
+ . += refill_inventory(canister.products, product_records)
+ . += refill_inventory(canister.contraband, hidden_records)
+ . += refill_inventory(canister.premium, coin_records)
-/obj/machinery/vending/proc/refill_inventory(obj/item/vending_refill/refill, datum/data/vending_product/machine, var/charge_type = STANDARD_CHARGE)
- var/total = 0
- var/to_restock = 0
+/obj/machinery/vending/proc/refill_inventory(list/productlist, list/recordlist)
+ . = 0
+ for(var/R in recordlist)
+ var/datum/data/vending_product/record = R
+ var/diff = min(record.max_amount - record.amount, productlist[record.product_path])
+ if (diff)
+ productlist[record.product_path] -= diff
+ record.amount += diff
+ . += diff
- for(var/datum/data/vending_product/machine_content in machine)
- if(machine_content.amount == 0 && refill.charges[charge_type] > 0)
- machine_content.amount++
- refill.charges[charge_type]--
- total++
- to_restock += machine_content.max_amount - machine_content.amount
- if(to_restock <= refill.charges[charge_type])
- for(var/datum/data/vending_product/machine_content in machine)
- machine_content.amount = machine_content.max_amount
- refill.charges[charge_type] -= to_restock
- total += to_restock
- else
- var/tmp_charges = refill.charges[charge_type]
- for(var/datum/data/vending_product/machine_content in machine)
- if(refill.charges[charge_type] == 0)
- break
- var/restock = CEILING(((machine_content.max_amount - machine_content.amount)/to_restock)*tmp_charges, 1)
- if(restock > refill.charges[charge_type])
- restock = refill.charges[charge_type]
- machine_content.amount += restock
- refill.charges[charge_type] -= restock
- total += restock
- return total
+/obj/machinery/vending/proc/update_canister()
+ if (!component_parts)
+ return
+
+ var/obj/item/vending_refill/R = locate() in component_parts
+ if (!R)
+ CRASH("Constructible vending machine did not have a refill canister")
+ return
+
+ R.products = unbuild_inventory(product_records)
+ R.contraband = unbuild_inventory(hidden_records)
+ R.premium = unbuild_inventory(coin_records)
+
+/obj/machinery/vending/proc/unbuild_inventory(list/recordlist)
+ . = list()
+ for(var/R in recordlist)
+ var/datum/data/vending_product/record = R
+ .[record.product_path] += record.amount
/obj/machinery/vending/crowbar_act(mob/living/user, obj/item/I)
if(!component_parts)
@@ -248,46 +258,52 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
bill = new S.type(src, 1)
to_chat(user, "You insert [I] into [src].")
return
- else if(istype(I, refill_canister) && refill_canister != null)
- if(stat & (BROKEN|NOPOWER))
- to_chat(user, "It does nothing.")
- else if(panel_open)
+ else if(refill_canister && istype(I, refill_canister))
+ if (!panel_open)
+ to_chat(user, "You should probably unscrew the service panel first.")
+ else if (stat & (BROKEN|NOPOWER))
+ to_chat(user, "[src] does not respond.")
+ else
//if the panel is open we attempt to refill the machine
var/obj/item/vending_refill/canister = I
- if(canister.charges[STANDARD_CHARGE] == 0)
- to_chat(user, "This [canister.name] is empty!")
+ if(canister.get_part_rating() == 0)
+ to_chat(user, "[canister] is empty!")
else
- var/transfered = refill_inventory(canister,product_records,STANDARD_CHARGE)
- transfered += refill_inventory(canister,coin_records,COIN_CHARGE)
- transfered += refill_inventory(canister,hidden_records,CONTRABAND_CHARGE)
- if(transfered)
- to_chat(user, "You loaded [transfered] items in \the [name].")
+ // instantiate canister if needed
+ var/transferred = restock(canister)
+ if(transferred)
+ to_chat(user, "You loaded [transferred] items in [src].")
else
- to_chat(user, "The [name] is fully stocked.")
+ to_chat(user, "There's nothing to restock!")
return
- else
- to_chat(user, "You should probably unscrew the service panel first.")
else
return ..()
+/obj/machinery/vending/exchange_parts(mob/user, obj/item/storage/part_replacer/W)
+ if(!istype(W))
+ return FALSE
+ if((flags_1 & NODECONSTRUCT_1) && !W.works_from_distance)
+ return FALSE
+ if(!component_parts || !refill_canister)
+ return FALSE
+
+ var/moved = 0
+ if(panel_open || W.works_from_distance)
+ if(W.works_from_distance)
+ display_parts(user)
+ for(var/I in W)
+ if(istype(I, refill_canister))
+ moved += restock(I)
+ else
+ display_parts(user)
+ if(moved)
+ to_chat(user, "[moved] items restocked.")
+ W.play_rped_sound()
+ return TRUE
+
/obj/machinery/vending/on_deconstruction()
- var/product_list = list(product_records, hidden_records, coin_records)
- for(var/i=1, i<=3, i++)
- for(var/datum/data/vending_product/machine_content in product_list[i])
- while(machine_content.amount !=0)
- var/safety = 0 //to avoid infinite loop
- for(var/obj/item/vending_refill/VR in component_parts)
- safety++
- if(VR.charges[i] < VR.init_charges[i])
- VR.charges[i]++
- machine_content.amount--
- if(!machine_content.amount)
- break
- else
- safety--
- if(safety <= 0) // all refill canisters are full
- break
- ..()
+ update_canister()
+ . = ..()
/obj/machinery/vending/emag_act(mob/user)
if(obj_flags & EMAGGED)
@@ -323,7 +339,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
dat += "Vend "
else
dat += "Sold out "
- dat += "[sanitize(R.product_name)]:"
+ dat += "[sanitize(R.name)]:"
dat += " [R.amount]"
dat += ""
dat += ""
@@ -358,17 +374,11 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
to_chat(usr, "There is no money in this machine.")
return
if(coin)
- if(!usr.get_active_held_item())
- usr.put_in_hands(coin)
- else
- coin.forceMove(get_turf(src))
+ usr.put_in_hands(coin)
to_chat(usr, "You remove [coin] from [src].")
coin = null
if(bill)
- if(!usr.get_active_held_item())
- usr.put_in_hands(bill)
- else
- bill.forceMove(get_turf(src))
+ usr.put_in_hands(bill)
to_chat(usr, "You remove [bill] from [src].")
bill = null
@@ -545,7 +555,3 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/machinery/vending/onTransitZ()
return
-
-#undef STANDARD_CHARGE
-#undef CONTRABAND_CHARGE
-#undef COIN_CHARGE
diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm
index c0cfe661d7..95211a9600 100644
--- a/code/modules/vending/autodrobe.dm
+++ b/code/modules/vending/autodrobe.dm
@@ -3,7 +3,7 @@
desc = "A vending machine for costumes."
icon_state = "theater"
icon_deny = "theater-deny"
- req_access_txt = "46" //Theatre access needed, unless hacked.
+ req_access = list(ACCESS_THEATRE)
product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!"
vend_reply = "Thank you for using AutoDrobe!"
products = list(/obj/item/clothing/suit/chickensuit = 1,
@@ -115,15 +115,17 @@
premium = list(/obj/item/clothing/suit/pirate/captain = 2,
/obj/item/clothing/head/pirate/captain = 2,
/obj/item/clothing/head/helmet/roman/fake = 1,
- /obj/item/clothing/head/helmet/roman/legionaire/fake = 1,
+ /obj/item/clothing/head/helmet/roman/legionnaire/fake = 1,
/obj/item/clothing/under/roman = 1,
/obj/item/clothing/shoes/roman = 1,
/obj/item/shield/riot/roman/fake = 1,
/obj/item/skub = 1)
refill_canister = /obj/item/vending_refill/autodrobe
+/obj/machinery/vending/autodrobe/all_access
+ desc = "A vending machine for costumes. This model appears to have no access restrictions."
+ req_access = null
+
/obj/item/vending_refill/autodrobe
machine_name = "AutoDrobe"
icon_state = "refill_costume"
- charges = list(32, 2, 3)// of 96 standard, 6 contraband, 9 premium
- init_charges = list(32, 2, 3)
diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm
index f5f7bf1d9d..0d193c451d 100644
--- a/code/modules/vending/boozeomat.dm
+++ b/code/modules/vending/boozeomat.dm
@@ -16,7 +16,6 @@
/obj/item/reagent_containers/food/drinks/bottle/absinthe = 5,
/obj/item/reagent_containers/food/drinks/bottle/grappa = 5,
/obj/item/reagent_containers/food/drinks/bottle/sake = 5,
- /obj/item/reagent_containers/food/drinks/bottle/fernet = 5,
/obj/item/reagent_containers/food/drinks/ale = 6,
/obj/item/reagent_containers/food/drinks/bottle/orangejuice = 4,
/obj/item/reagent_containers/food/drinks/bottle/tomatojuice = 4,
@@ -32,13 +31,18 @@
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12,
/obj/item/reagent_containers/food/drinks/flask = 3,
/obj/item/reagent_containers/food/drinks/beer = 6)
- contraband = list(/obj/item/reagent_containers/food/drinks/mug/tea = 12)
+ contraband = list(/obj/item/reagent_containers/food/drinks/mug/tea = 12,
+ /obj/item/reagent_containers/food/drinks/bottle/fernet = 5)
product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?"
product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!"
- req_access_txt = "25"
+ req_access = list(ACCESS_BAR)
refill_canister = /obj/item/vending_refill/boozeomat
-/obj/machinery/vending/boozeomat/maint
+/obj/machinery/vending/boozeomat/all_access
+ desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. This model appears to have no access restrictions."
+ req_access = null
+
+/obj/machinery/vending/boozeomat/pubby_maint //abandoned bar on Pubbystation
products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1,
/obj/item/reagent_containers/food/drinks/bottle/absinthe = 1,
/obj/item/reagent_containers/food/drinks/bottle/limejuice = 1,
@@ -48,10 +52,17 @@
/obj/item/reagent_containers/food/drinks/ice = 3,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6,
/obj/item/reagent_containers/food/drinks/flask = 1)
- req_access_txt = "0"
+ req_access = null
+
+/obj/machinery/vending/boozeomat/pubby_captain //Captain's quarters on Pubbystation
+ products = list(/obj/item/reagent_containers/food/drinks/bottle/rum = 1,
+ /obj/item/reagent_containers/food/drinks/bottle/wine = 1,
+ /obj/item/reagent_containers/food/drinks/ale = 1,
+ /obj/item/reagent_containers/food/drinks/drinkingglass = 6,
+ /obj/item/reagent_containers/food/drinks/ice = 1,
+ /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 4);
+ req_access = list(ACCESS_CAPTAIN)
/obj/item/vending_refill/boozeomat
machine_name = "Booze-O-Mat"
icon_state = "refill_booze"
- charges = list(61, 4, 0)//of 182 standard, 12 contraband
- init_charges = list(61, 4, 0)
diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm
index d81a0a01a6..6b9334362d 100644
--- a/code/modules/vending/cigarette.dm
+++ b/code/modules/vending/cigarette.dm
@@ -41,8 +41,6 @@
/obj/item/vending_refill/cigarette
machine_name = "ShadyCigs Deluxe"
icon_state = "refill_smoke"
- charges = list(12, 3, 2)// of 36 standard, 9 contraband, 6 premium
- init_charges = list(12, 3, 2)
/obj/machinery/vending/cigarette/pre_throw(obj/item/I)
if(istype(I, /obj/item/lighter))
diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm
index ad5b38575c..80e422c6a0 100644
--- a/code/modules/vending/clothesmate.dm
+++ b/code/modules/vending/clothesmate.dm
@@ -119,5 +119,3 @@
/obj/item/vending_refill/clothing
machine_name = "ClothesMate"
icon_state = "refill_clothes"
- charges = list(38, 4, 4)// of 112 standard, 12 contraband, 10 premium(?)
- init_charges = list(38, 4, 4)
diff --git a/code/modules/vending/coffee.dm b/code/modules/vending/coffee.dm
index d70cf4ae76..6ac9dd648d 100644
--- a/code/modules/vending/coffee.dm
+++ b/code/modules/vending/coffee.dm
@@ -4,8 +4,8 @@
product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies"
icon_state = "coffee"
icon_vend = "coffee-vend"
- products = list(/obj/item/reagent_containers/food/drinks/coffee = 25,
- /obj/item/reagent_containers/food/drinks/mug/tea = 25,
+ products = list(/obj/item/reagent_containers/food/drinks/coffee = 25,
+ /obj/item/reagent_containers/food/drinks/mug/tea = 25,
/obj/item/reagent_containers/food/drinks/mug/coco = 25)
contraband = list(/obj/item/reagent_containers/food/drinks/ice = 12)
refill_canister = /obj/item/vending_refill/coffee
@@ -13,5 +13,3 @@
/obj/item/vending_refill/coffee
machine_name = "Solar's Best Hot Drinks"
icon_state = "refill_joe"
- charges = list(25, 4, 0)//of 75 standard, 12 contraband
- init_charges = list(25, 4, 0)
diff --git a/code/modules/vending/cola.dm b/code/modules/vending/cola.dm
index e675b29f81..f61c392ff7 100644
--- a/code/modules/vending/cola.dm
+++ b/code/modules/vending/cola.dm
@@ -22,8 +22,6 @@
/obj/item/vending_refill/cola
machine_name = "Robust Softdrinks"
icon_state = "refill_cola"
- charges = list(30, 4, 1)//of 90 standard, 12 contraband, 1 premium
- init_charges = list(30, 4, 1)
/obj/machinery/vending/cola/random
name = "\improper Random Drinkies"
diff --git a/code/modules/vending/engineering.dm b/code/modules/vending/engineering.dm
index 5933ab8fa9..d36f4a4849 100644
--- a/code/modules/vending/engineering.dm
+++ b/code/modules/vending/engineering.dm
@@ -4,7 +4,7 @@
desc = "Everything you need for do-it-yourself station repair."
icon_state = "engi"
icon_deny = "engi-deny"
- req_access_txt = "11"
+ req_access = list(ACCESS_ENGINE_EQUIP)
products = list(/obj/item/clothing/under/rank/chief_engineer = 4,
/obj/item/clothing/under/rank/engineer = 4,
/obj/item/clothing/shoes/sneakers/orange = 4,
diff --git a/code/modules/vending/engivend.dm b/code/modules/vending/engivend.dm
index 53106c09a6..0e64e0a367 100644
--- a/code/modules/vending/engivend.dm
+++ b/code/modules/vending/engivend.dm
@@ -3,7 +3,7 @@
desc = "Spare tool vending. What? Did you expect some witty description?"
icon_state = "engivend"
icon_deny = "engivend-deny"
- req_access_txt = "11" //Engineering Equipment access
+ req_access = list(ACCESS_ENGINE_EQUIP)
products = list(/obj/item/clothing/glasses/meson/engine = 2,
/obj/item/clothing/glasses/welding = 3,
/obj/item/multitool = 4,
diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm
index f76f67af46..4e4d336567 100644
--- a/code/modules/vending/games.dm
+++ b/code/modules/vending/games.dm
@@ -1,7 +1,7 @@
/obj/machinery/vending/games
name = "\improper Good Clean Fun"
desc = "Vends things that the Captain and Head of Personnel are probably not going to appreciate you fiddling with instead of your job..."
- product_ads = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!;Roll for initative!;Elves and dwarves!;Paranoid computers!;Totally not satanic!;Fun times forever!"
+ product_ads = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!;Roll for initiative!;Elves and dwarves!;Paranoid computers!;Totally not satanic!;Fun times forever!"
icon_state = "games"
products = list(/obj/item/toy/cards/deck = 5,
/obj/item/storage/pill_bottle/dice = 10,
@@ -13,5 +13,3 @@
/obj/item/vending_refill/games
machine_name = "\improper Good Clean Fun"
icon_state = "refill_games"
- charges = list(7, 3, 0) //of 21 standard, 9 contraband
- init_charges = list(7, 3, 0)
diff --git a/code/modules/vending/liberation.dm b/code/modules/vending/liberation.dm
index 6eafafb164..8415eff69f 100644
--- a/code/modules/vending/liberation.dm
+++ b/code/modules/vending/liberation.dm
@@ -2,11 +2,14 @@
name = "\improper Liberation Station"
desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine."
icon_state = "liberationstation"
- req_access_txt = "1"
product_slogans = "Liberation Station: Your one-stop shop for all things second ammendment!;Be a patriot today, pick up a gun!;Quality weapons for cheap prices!;Better dead than red!"
product_ads = "Float like an astronaut, sting like a bullet!;Express your second ammendment today!;Guns don't kill people, but you can!;Who needs responsibilities when you have guns?"
vend_reply = "Remember the name: Liberation Station!"
- products = list(/obj/item/gun/ballistic/automatic/pistol/deagle/gold = 2,
+ products = list(/obj/item/reagent_containers/food/snacks/burger/plain = 5, //O say can you see, by the dawn's early light
+ /obj/item/reagent_containers/food/snacks/burger/baseball = 3, //What so proudly we hailed at the twilight's last gleaming
+ /obj/item/reagent_containers/food/snacks/fries = 5, //Whose broad stripes and bright stars through the perilous fight
+ /obj/item/reagent_containers/food/drinks/beer/light = 10, //O'er the ramparts we watched, were so gallantly streaming?
+ /obj/item/gun/ballistic/automatic/pistol/deagle/gold = 2,
/obj/item/gun/ballistic/automatic/pistol/deagle/camo = 2,
/obj/item/gun/ballistic/automatic/pistol/m1911 = 2,
/obj/item/gun/ballistic/automatic/proto/unrestricted = 2,
@@ -17,8 +20,11 @@
premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2,
/obj/item/ammo_box/magazine/m50 = 4,
/obj/item/ammo_box/magazine/m45 = 2,
- /obj/item/ammo_box/magazine/m75 = 2)
- contraband = list(/obj/item/clothing/under/patriotsuit = 1,
- /obj/item/bedsheet/patriot = 3)
+ /obj/item/ammo_box/magazine/m75 = 2,
+ /obj/item/reagent_containers/food/snacks/cheesyfries = 5,
+ /obj/item/reagent_containers/food/snacks/burger/baconburger = 5) //Premium burgers for the premium section
+ contraband = list(/obj/item/clothing/under/patriotsuit = 3,
+ /obj/item/bedsheet/patriot = 5,
+ /obj/item/reagent_containers/food/snacks/burger/superbite = 3) //U S A
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm
index c912d3dd3e..3b387f6959 100644
--- a/code/modules/vending/liberation_toy.dm
+++ b/code/modules/vending/liberation_toy.dm
@@ -2,8 +2,7 @@
name = "\improper Syndicate Donksoft Toy Vendor"
desc = "An ages 8 and up approved vendor that dispenses toys. If you were to find the right wires, you can unlock the adult mode setting!"
icon_state = "syndi"
- req_access_txt = "1"
- product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get perma briged!"
+ product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get permabrigged!"
product_ads = "Feel robust with your toys!;Express your inner child today!;Toy weapons don't kill people, but valid hunters do!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!"
vend_reply = "Come back for more!"
circuit = /obj/item/circuitboard/machine/vending/syndicatedonksofttoyvendor
diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm
index b1a5edb867..bea449845c 100644
--- a/code/modules/vending/medical.dm
+++ b/code/modules/vending/medical.dm
@@ -4,25 +4,25 @@
icon_state = "med"
icon_deny = "med-deny"
product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
- req_access_txt = "5"
- products = list(/obj/item/reagent_containers/syringe = 12,
- /obj/item/reagent_containers/dropper = 3,
- /obj/item/healthanalyzer = 4,
- /obj/item/sensor_device = 2,
+ req_access = list(ACCESS_MEDICAL)
+ products = list(/obj/item/reagent_containers/syringe = 12,
+ /obj/item/reagent_containers/dropper = 3,
+ /obj/item/healthanalyzer = 4,
+ /obj/item/sensor_device = 2,
/obj/item/pinpointer/crew = 2,
/obj/item/reagent_containers/medspray/sterilizine = 1,
- /obj/item/stack/medical/gauze = 8,
- /obj/item/reagent_containers/pill/patch/styptic = 5,
- /obj/item/reagent_containers/medspray/styptic = 2,
- /obj/item/reagent_containers/pill/patch/silver_sulf = 5,
+ /obj/item/stack/medical/gauze = 8,
+ /obj/item/reagent_containers/pill/patch/styptic = 5,
+ /obj/item/reagent_containers/medspray/styptic = 2,
+ /obj/item/reagent_containers/pill/patch/silver_sulf = 5,
/obj/item/reagent_containers/medspray/silver_sulf = 2,
/obj/item/reagent_containers/pill/insulin = 10,
- /obj/item/reagent_containers/pill/salbutamol = 2,
- /obj/item/reagent_containers/glass/bottle/charcoal = 4,
- /obj/item/reagent_containers/glass/bottle/epinephrine = 4,
+ /obj/item/reagent_containers/pill/salbutamol = 2,
+ /obj/item/reagent_containers/glass/bottle/charcoal = 4,
+ /obj/item/reagent_containers/glass/bottle/epinephrine = 4,
/obj/item/reagent_containers/glass/bottle/salglu_solution = 3,
- /obj/item/reagent_containers/glass/bottle/morphine = 4,
- /obj/item/reagent_containers/glass/bottle/toxin = 3,
+ /obj/item/reagent_containers/glass/bottle/morphine = 4,
+ /obj/item/reagent_containers/glass/bottle/toxin = 3,
/obj/item/reagent_containers/syringe/antiviral = 6)
contraband = list(/obj/item/reagent_containers/pill/tox = 3,
/obj/item/reagent_containers/pill/morphine = 4,
@@ -36,7 +36,5 @@
refill_canister = /obj/item/vending_refill/medical
/obj/item/vending_refill/medical
- machine_name = "NanoMed"
+ machine_name = "NanoMed Plus"
icon_state = "refill_medical"
- charges = list(26, 5, 3)// of 76 standard, 13 contraband, 8 premium
- init_charges = list(26, 5, 3)
diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm
index 6b5005eee4..ef19ce3b9b 100644
--- a/code/modules/vending/medical_wall.dm
+++ b/code/modules/vending/medical_wall.dm
@@ -15,5 +15,8 @@
/obj/item/reagent_containers/pill/morphine = 2)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
- refill_canister = /obj/item/vending_refill/medical
- refill_count = 1
+ refill_canister = /obj/item/vending_refill/wallmed
+
+/obj/item/vending_refill/wallmed
+ machine_name = "NanoMed"
+ icon_state = "refill_medical"
diff --git a/code/modules/vending/robotics.dm b/code/modules/vending/robotics.dm
index 8c577d47c1..4832aa7ad7 100644
--- a/code/modules/vending/robotics.dm
+++ b/code/modules/vending/robotics.dm
@@ -4,7 +4,7 @@
desc = "All the tools you need to create your own robot army."
icon_state = "robotics"
icon_deny = "robotics-deny"
- req_access_txt = "29"
+ req_access = list(ACCESS_ROBOTICS)
products = list(/obj/item/clothing/suit/toggle/labcoat = 4,
/obj/item/clothing/under/rank/roboticist = 4,
/obj/item/stack/cable_coil = 4,
diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm
index 3f3035f9e4..7e90a5ce18 100644
--- a/code/modules/vending/security.dm
+++ b/code/modules/vending/security.dm
@@ -4,7 +4,7 @@
product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?"
icon_state = "sec"
icon_deny = "sec-deny"
- req_access_txt = "1"
+ req_access = list(ACCESS_SECURITY)
products = list(/obj/item/restraints/handcuffs = 8,
/obj/item/restraints/handcuffs/cable/zipties = 10,
/obj/item/grenade/flashbang = 4,
diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm
index 8fcd189a4f..69e510ad5a 100644
--- a/code/modules/vending/snack.dm
+++ b/code/modules/vending/snack.dm
@@ -13,12 +13,10 @@
/obj/item/reagent_containers/food/snacks/cheesiehonkers = 6)
contraband = list(/obj/item/reagent_containers/food/snacks/syndicake = 6)
refill_canister = /obj/item/vending_refill/snack
- var/chef_compartment_access = "28"
+ var/chef_compartment_access = "28" //ACCESS_KITCHEN
/obj/item/vending_refill/snack
machine_name = "Getmore Chocolate Corp"
- charges = list(12, 2, 0)//of 36 standard, 6 contraband
- init_charges = list(12, 2, 0)
/obj/machinery/vending/snack/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/reagent_containers/food/snacks))
@@ -44,7 +42,7 @@
if(iscompartmentfull(user))
break
if(!S.junkiness)
- T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src, TRUE)
+ SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src, TRUE)
food_load(S)
loaded++
else
diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm
index fc2f9c59b9..08bb4615bb 100644
--- a/code/modules/vending/toys.dm
+++ b/code/modules/vending/toys.dm
@@ -2,24 +2,26 @@
name = "\improper Donksoft Toy Vendor"
desc = "Ages 8 and up approved vendor that dispenses toys."
icon_state = "syndi"
- product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get perma briged!"
+ product_slogans = "Get your cool toys today!;Trigger a valid hunter today!;Quality toy weapons for cheap prices!;Give them to HoPs for all access!;Give them to HoS to get permabrigged!"
product_ads = "Feel robust with your toys!;Express your inner child today!;Toy weapons don't kill people, but valid hunters do!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!"
vend_reply = "Come back for more!"
circuit = /obj/item/circuitboard/machine/vending/donksofttoyvendor
- products = list(/obj/item/gun/ballistic/automatic/toy/unrestricted = 10,
- /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = 10,
- /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10,
- /obj/item/toy/sword = 10,
- /obj/item/ammo_box/foambox = 20,
- /obj/item/toy/foamblade = 10,
- /obj/item/toy/syndicateballoon = 10,
- /obj/item/clothing/suit/syndicatefake = 5,
- /obj/item/clothing/head/syndicatefake = 5)
- contraband = list(/obj/item/gun/ballistic/shotgun/toy/crossbow = 10,
- /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 10,
- /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10,
- /obj/item/toy/katana = 10,
- /obj/item/twohanded/dualsaber/toy = 5)
+ products = list(
+ /obj/item/gun/ballistic/automatic/toy/unrestricted = 10,
+ /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = 10,
+ /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10,
+ /obj/item/toy/sword = 10,
+ /obj/item/ammo_box/foambox = 20,
+ /obj/item/toy/foamblade = 10,
+ /obj/item/toy/syndicateballoon = 10,
+ /obj/item/clothing/suit/syndicatefake = 5,
+ /obj/item/clothing/head/syndicatefake = 5)
+ contraband = list(
+ /obj/item/gun/ballistic/shotgun/toy/crossbow = 10,
+ /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 10,
+ /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10,
+ /obj/item/toy/katana = 10,
+ /obj/item/twohanded/dualsaber/toy = 5)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/donksoft
@@ -27,5 +29,3 @@
/obj/item/vending_refill/donksoft
machine_name = "Donksoft Toy Vendor"
icon_state = "refill_donksoft"
- charges = list(32,28,0)// of 90 standard, 75 contraband, 0 premium
- init_charges = list(32,28,0)
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index f9aa8f216a..5a41beb88d 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -17,7 +17,8 @@
/obj/item/clothing/head/soft/sec = 3,
/obj/item/clothing/mask/bandana/red = 3,
/obj/item/clothing/under/rank/security/skirt = 3,
- /obj/item/clothing/under/rank/security/grey = 3)
+ /obj/item/clothing/under/rank/security/grey = 3,
+ /obj/item/clothing/under/pants/khaki = 3)
premium = list(/obj/item/clothing/under/rank/security/navyblue = 3,
/obj/item/clothing/suit/security/officer = 3,
/obj/item/clothing/head/beret/sec/navyofficer = 3)
@@ -25,8 +26,6 @@
/obj/item/vending_refill/wardrobe/sec_wardrobe
machine_name = "SecDrobe"
- charges = list(10, 0, 3)
- init_charges = list(10, 0, 3)
/obj/machinery/vending/wardrobe/medi_wardrobe
name = "\improper MediDrobe"
@@ -55,8 +54,6 @@
/obj/item/vending_refill/wardrobe/medi_wardrobe
machine_name = "MediDrobe"
- charges = list(10, 0, 0)
- init_charges = list(10, 0, 0)
/obj/machinery/vending/wardrobe/engi_wardrobe
name = "EngiDrobe"
@@ -77,8 +74,6 @@
/obj/item/vending_refill/wardrobe/engi_wardrobe
machine_name = "EngiDrobe"
- charges = list(7, 0, 0)
- init_charges = list(7, 0, 0)
/obj/machinery/vending/wardrobe/atmos_wardrobe
name = "AtmosDrobe"
@@ -97,8 +92,6 @@
/obj/item/vending_refill/wardrobe/atmos_wardrobe
machine_name = "AtmosDrobe"
- charges = list(5, 0, 0)
- init_charges = list(5, 0, 0)
/obj/machinery/vending/wardrobe/cargo_wardrobe
name = "CargoDrobe"
@@ -116,8 +109,6 @@
/obj/item/vending_refill/wardrobe/cargo_wardrobe
machine_name = "CargoDrobe"
- charges = list(5, 0, 0)
- init_charges = list(5, 0, 0)
/obj/machinery/vending/wardrobe/robo_wardrobe
name = "RoboDrobe"
@@ -136,8 +127,6 @@
/obj/item/vending_refill/wardrobe/robo_wardrobe
machine_name = "RoboDrobe"
- charges = list(4, 0, 0)
- init_charges = list(4, 0, 0)
/obj/machinery/vending/wardrobe/science_wardrobe
name = "SciDrobe"
@@ -158,8 +147,6 @@
/obj/item/vending_refill/wardrobe/science_wardrobe
machine_name = "SciDrobe"
- charges = list(8, 0, 0)
- init_charges = list(8, 0, 0)
/obj/machinery/vending/wardrobe/hydro_wardrobe
name = "Hydrobe"
@@ -178,8 +165,6 @@
/obj/item/vending_refill/wardrobe/hydro_wardrobe
machine_name = "HyDrobe"
- charges = list(6, 0, 0)
- init_charges = list(6, 0, 0)
/obj/machinery/vending/wardrobe/curator_wardrobe
name = "CuraDrobe"
@@ -197,8 +182,6 @@
/obj/item/vending_refill/wardrobe/curator_wardrobe
machine_name = "CuraDrobe"
- charges = list(3, 0, 0)
- init_charges = list(3, 0, 0)
/obj/machinery/vending/wardrobe/bar_wardrobe
name = "BarDrobe"
@@ -226,8 +209,6 @@
/obj/item/vending_refill/wardrobe/bar_wardrobe
machine_name = "BarDrobe"
- charges = list(8, 0, 0)
- init_charges = list(8, 0, 0)
/obj/machinery/vending/wardrobe/chef_wardrobe
name = "ChefDrobe"
@@ -250,8 +231,6 @@
/obj/item/vending_refill/wardrobe/chef_wardrobe
machine_name = "ChefDrobe"
- charges = list(6, 0, 0)
- init_charges = list(6, 0, 0)
/obj/machinery/vending/wardrobe/jani_wardrobe
name = "JaniDrobe"
@@ -278,8 +257,6 @@
/obj/item/vending_refill/wardrobe/jani_wardrobe
machine_name = "JaniDrobe"
- charges = list(7, 0, 0)
- init_charges = list(7, 0, 0)
/obj/machinery/vending/wardrobe/law_wardrobe
name = "LawDrobe"
@@ -302,8 +279,6 @@
/obj/item/vending_refill/wardrobe/law_wardrobe
machine_name = "LawDrobe"
- charges = list(5, 0, 0)
- init_charges = list(5, 0, 0)
/obj/machinery/vending/wardrobe/chap_wardrobe
name = "ChapDrobe"
@@ -324,8 +299,6 @@
/obj/item/vending_refill/wardrobe/chap_wardrobe
machine_name = "ChapDrobe"
- charges = list(6, 0, 0)
- init_charges = list(6, 0, 0)
/obj/machinery/vending/wardrobe/chem_wardrobe
name = "ChemDrobe"
@@ -343,8 +316,6 @@
/obj/item/vending_refill/wardrobe/chem_wardrobe
machine_name = "ChemDrobe"
- charges = list(4, 0, 0)
- init_charges = list(4, 0, 0)
/obj/machinery/vending/wardrobe/gene_wardrobe
name = "GeneDrobe"
@@ -361,8 +332,6 @@
/obj/item/vending_refill/wardrobe/gene_wardrobe
machine_name = "GeneDrobe"
- charges = list(4, 0, 0)
- init_charges = list(4, 0, 0)
/obj/machinery/vending/wardrobe/viro_wardrobe
name = "ViroDrobe"
@@ -380,5 +349,3 @@
/obj/item/vending_refill/wardrobe/viro_wardrobe
machine_name = "ViroDrobe"
- charges = list(4, 0, 0)
- init_charges = list(4, 0, 0)
\ No newline at end of file
diff --git a/code/modules/vending/youtool.dm b/code/modules/vending/youtool.dm
index 6c48b7a376..495d60a461 100644
--- a/code/modules/vending/youtool.dm
+++ b/code/modules/vending/youtool.dm
@@ -3,7 +3,6 @@
desc = "Tools for tools."
icon_state = "tool"
icon_deny = "tool-deny"
- //req_access_txt = "12" //Maintenance access
products = list(/obj/item/stack/cable_coil/random = 10,
/obj/item/crowbar = 5,
/obj/item/weldingtool = 3,
diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm
index 154941ce70..03d2ac3921 100644
--- a/code/modules/zombie/items.dm
+++ b/code/modules/zombie/items.dm
@@ -4,7 +4,7 @@
humans, butchering all other living things to \
sustain the zombie, smashing open airlock doors and opening \
child-safe caps on bottles."
- flags_1 = NODROP_1|ABSTRACT_1|DROPDEL_1
+ item_flags = NODROP | ABSTRACT | DROPDEL
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
icon = 'icons/effects/blood.dmi'
icon_state = "bloodhand_left"
|