From c08765d0ebcd1a7728c9edd68404d026da8dc3ad Mon Sep 17 00:00:00 2001
From: Letter N <24603524+LetterN@users.noreply.github.com>
Date: Wed, 20 Jan 2021 10:23:30 +0800
Subject: [PATCH 1/6] let's not get ddosed
---
code/game/world.dm | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/code/game/world.dm b/code/game/world.dm
index 97ed64a405..4369ca6668 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -197,6 +197,14 @@ GLOBAL_LIST(topic_status_cache)
/world/Topic(T, addr, master, key)
TGS_TOPIC //redirect to server tools if necessary
+ if(!SSfail2topic)
+ return "Server not initialized."
+ if(SSfail2topic.IsRateLimited(addr))
+ return "Rate limited."
+
+ if(length(T) > CONFIG_GET(number/topic_max_size))
+ return "Payload too large!"
+
var/static/list/topic_handlers = TopicHandlers()
var/list/input = params2list(T)
From 021b28a2b7f63c449e5c9770e034baa8a1c26658 Mon Sep 17 00:00:00 2001
From: Letter N <24603524+LetterN@users.noreply.github.com>
Date: Wed, 20 Jan 2021 11:08:21 +0800
Subject: [PATCH 2/6] cleanup shitcode - b - gone
---
SpacemanDMM.toml | 6 +-
code/__HELPERS/unsorted.dm | 2 +-
code/datums/status_effects/debuffs.dm | 2 +-
code/game/alternate_appearance.dm | 2 +-
code/game/atoms_movable.dm | 9 +-
code/game/gamemodes/gangs/gang_items.dm | 6 +-
code/game/objects/items/RCL.dm | 2 +-
code/game/objects/items/shields.dm | 2 +-
code/game/objects/items/storage/backpack.dm | 2 +-
code/game/objects/items/storage/boxes.dm | 2 +-
code/game/objects/items/stunbaton.dm | 27 ++--
.../objects/structures/signs/signs_maps.dm | 6 +-
.../clock_weapons/ratvarian_shield.dm | 2 +-
.../ark_of_the_clockwork_justicar.dm | 2 +-
code/modules/arousal/toys/dildos.dm | 16 +--
.../machinery/portable/canister.dm | 2 +-
code/modules/atmospherics/multiz.dm | 7 +-
code/modules/cargo/bounties/reagent.dm | 6 +-
code/modules/cargo/exports/gear.dm | 8 +-
code/modules/clothing/neck/_neck.dm | 2 +-
code/modules/events/immovable_rod.dm | 39 +++---
code/modules/events/travelling_trader.dm | 16 +--
.../food_and_drinks/food/snacks_cake.dm | 2 +-
.../recipes/tablecraft/recipes_donut.dm | 2 +-
code/modules/hydroponics/seeds.dm | 4 +-
.../subtypes/atmospherics.dm | 2 +-
.../new_player/sprite_accessories/caps.dm | 2 +-
.../new_player/sprite_accessories/tails.dm | 2 +-
.../mob/living/simple_animal/hostile/bear.dm | 4 +-
.../simple_animal/hostile/giant_spider.dm | 3 +-
.../living/simple_animal/hostile/hostile.dm | 2 +-
.../simple_animal/hostile/venus_human_trap.dm | 2 +-
code/modules/mob/say_vr.dm | 10 +-
.../ammunition/ballistic/shotgun.dm | 2 +-
code/modules/projectiles/projectile/plasma.dm | 2 +-
.../chemistry/reagents/other_reagents.dm | 2 +-
.../reagents/reagent_containers/chem_pack.dm | 3 +-
.../crossbreeding/_status_effects.dm | 4 +-
.../shuttle/spaceship_navigation_beacon.dm | 2 +-
code/modules/surgery/organs/heart.dm | 4 +-
.../uplink/uplink_items/uplink_stealth.dm | 2 +-
modular_citadel/code/modules/clothing/trek.dm | 116 +++++++++---------
.../projectiles/guns/energy/energy_gun.dm | 10 +-
.../chemistry/reagents/fermi_reagents.dm | 3 +-
44 files changed, 180 insertions(+), 173 deletions(-)
diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml
index eb25c8a0cd..81aff0d557 100644
--- a/SpacemanDMM.toml
+++ b/SpacemanDMM.toml
@@ -1,9 +1,9 @@
[langserver]
dreamchecker = true
-#[code_standards]
-#disallow_relative_type_definitions = true
-#disallow_relative_proc_definitions = true
+[code_standards]
+disallow_relative_type_definitions = true
+disallow_relative_proc_definitions = true
[dmdoc]
use_typepath_names = true
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index f386c5f79b..9f89920b46 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1070,7 +1070,7 @@ B --><-- A
return closest_atom
-proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
+/proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
if (value == FALSE) //nothing should be calling us with a number, so this is safe
value = input("Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text
if (isnull(value))
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 19b12410bc..fe59bbe14a 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -887,7 +887,7 @@
L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND)
-datum/status_effect/pacify
+/datum/status_effect/pacify
id = "pacify"
status_type = STATUS_EFFECT_REPLACE
tick_interval = 1
diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm
index d7c34da34a..a1746001b9 100644
--- a/code/game/alternate_appearance.dm
+++ b/code/game/alternate_appearance.dm
@@ -168,7 +168,7 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
return TRUE
return FALSE
-datum/atom_hud/alternate_appearance/basic/onePerson
+/datum/atom_hud/alternate_appearance/basic/onePerson
var/mob/seer
/datum/atom_hud/alternate_appearance/basic/onePerson/mobShouldSee(mob/M)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index a6fedd6199..bbbce9b8fd 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -31,7 +31,14 @@
var/list/client_mobs_in_contents // This contains all the client mobs within this container
var/list/acted_explosions //for explosion dodging
var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm
- var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc.
+
+ /**
+ * In case you have multiple types, you automatically use the most useful one.
+ * IE: Skating on ice, flippers on water, flying over chasm/space, etc.
+ * I reccomend you use the movetype_handler system and not modify this directly, especially for living mobs.
+ */
+ var/movement_type = GROUND
+
var/atom/movable/pulling
var/grab_state = 0
var/throwforce = 0
diff --git a/code/game/gamemodes/gangs/gang_items.dm b/code/game/gamemodes/gangs/gang_items.dm
index 7d6ecd00f6..d1cf006600 100644
--- a/code/game/gamemodes/gangs/gang_items.dm
+++ b/code/game/gamemodes/gangs/gang_items.dm
@@ -133,7 +133,7 @@
icon_state = "knuckles"
w_class = 3
-datum/gang_item/clothing/shades //Addition: Why not have cool shades on a gang member anyways?
+/datum/gang_item/clothing/shades //Addition: Why not have cool shades on a gang member anyways?
name = "Cool Sunglasses"
id = "glasses"
cost = 5
@@ -313,13 +313,13 @@ datum/gang_item/clothing/shades //Addition: Why not have cool shades on a gang m
permeability_coefficient = 0.01
clothing_flags = NOSLIP
-datum/gang_item/equipment/shield
+/datum/gang_item/equipment/shield
name = "Riot Shield"
id = "riot_shield"
cost = 25
item_path = /obj/item/shield/riot
-datum/gang_item/equipment/gangsheild
+/datum/gang_item/equipment/gangsheild
name = "Tower Shield"
id = "metal"
cost = 45 //High block of melee and even higher for bullets
diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm
index 6e305c30ee..e0ac4b43c6 100644
--- a/code/game/objects/items/RCL.dm
+++ b/code/game/objects/items/RCL.dm
@@ -166,7 +166,7 @@
last = C
break
-obj/item/rcl/proc/getMobhook(mob/to_hook)
+/obj/item/rcl/proc/getMobhook(mob/to_hook)
if(listeningTo == to_hook)
return
if(listeningTo)
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index d1d57fe375..5c3e4fd612 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -258,7 +258,7 @@
shield_flags = SHIELD_FLAGS_DEFAULT
max_integrity = 300
-obj/item/shield/riot/bullet_proof
+/obj/item/shield/riot/bullet_proof
name = "bullet resistant shield"
desc = "A far more frail shield made of resistant plastics and kevlar meant to block ballistics."
armor = list("melee" = 30, "bullet" = 80, "laser" = 0, "energy" = 0, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index f15588a7f1..f10167890a 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -639,7 +639,7 @@
new /obj/item/bikehorn(src)
new /obj/item/implanter/sad_trombone(src)
-obj/item/storage/backpack/duffelbag/syndie/shredderbundle
+/obj/item/storage/backpack/duffelbag/syndie/shredderbundle
desc = "A large duffel bag containing two CX Shredders, some magazines, an elite hardsuit, and a chest rig."
/obj/item/storage/backpack/duffelbag/syndie/shredderbundle/PopulateContents()
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 975621ead1..3f9c3a019e 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -275,7 +275,7 @@
for(var/i in 1 to 7)
new /obj/item/grenade/flashbang(src)
-obj/item/storage/box/stingbangs
+/obj/item/storage/box/stingbangs
name = "box of stingbangs (WARNING)"
desc = "WARNING: These devices are extremely dangerous and can cause severe injuries or death in repeated use."
icon_state = "secbox"
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index 26051e65fd..d7db5ce908 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -269,21 +269,22 @@
icon_state = "refill_donksoft"
var/product = /obj/item/melee/baton/stunsword //what it makes
var/list/fromitem = list(/obj/item/melee/baton, /obj/item/melee/baton/loaded) //what it needs
- afterattack(obj/O, mob/user as mob)
- if(istype(O, product))
- to_chat(user,"[O] is already modified!")
- else if(O.type in fromitem) //makes sure O is the right thing
- var/obj/item/melee/baton/B = O
- if(!B.cell) //checks for a powercell in the baton. If there isn't one, continue. If there is, warn the user to take it out
- new product(usr.loc) //spawns the product
- user.visible_message("[user] modifies [O]!","You modify the [O]!")
- qdel(O) //Gets rid of the baton
- qdel(src) //gets rid of the kit
- else
- to_chat(user,"Remove the powercell first!") //We make this check because the stunsword starts without a battery.
+/obj/item/ssword_kit/afterattack(obj/O, mob/user as mob)
+ if(istype(O, product))
+ to_chat(user,"[O] is already modified!")
+ return
+ if(O.type in fromitem) //makes sure O is the right thing
+ var/obj/item/melee/baton/B = O
+ if(!B.cell) //checks for a powercell in the baton. If there isn't one, continue. If there is, warn the user to take it out
+ new product(usr.loc) //spawns the product
+ user.visible_message("[user] modifies [O]!","You modify the [O]!")
+ qdel(O) //Gets rid of the baton
+ qdel(src) //gets rid of the kit
else
- to_chat(user, " You can't modify [O] with this kit!")
+ to_chat(user,"Remove the powercell first!") //We make this check because the stunsword starts without a battery.
+ else
+ to_chat(user, " You can't modify [O] with this kit!")
//Makeshift stun baton. Replacement for stun gloves.
/obj/item/melee/baton/cattleprod
diff --git a/code/game/objects/structures/signs/signs_maps.dm b/code/game/objects/structures/signs/signs_maps.dm
index ee29ef7443..bcd7c02c66 100644
--- a/code/game/objects/structures/signs/signs_maps.dm
+++ b/code/game/objects/structures/signs/signs_maps.dm
@@ -56,17 +56,17 @@
desc = "A direction sign, pointing out which way the Cafe is."
icon_state = "direction_cafe"
-obj/structure/sign/directions/rooms
+/obj/structure/sign/directions/rooms
name = "room"
desc = "Room numbers, helps others find you!"
icon_state = "roomnum"
-obj/structure/sign/directions/dorms
+/obj/structure/sign/directions/dorms
name = "dorm"
desc = "Dorm numbers, help others find you, or you find others."
icon_state = "dormnum"
-obj/structure/sign/directions/cells
+/obj/structure/sign/directions/cells
name = "room"
desc = "So the less fortunate amongst us know where they'll be staying."
icon_state = "cellnum"
diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm
index a681e9b38b..fb7b4f8a94 100644
--- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm
+++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm
@@ -22,7 +22,7 @@
. = ..()
desc = initial(desc)
-obj/item/shield/riot/ratvarian/proc/calc_bash_mult()
+/obj/item/shield/riot/ratvarian/proc/calc_bash_mult()
var/bash_mult = 0
if(!dam_absorbed)
return 1
diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
index 7478d45b08..3b507fb57c 100644
--- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
@@ -149,7 +149,7 @@
transform = matrix() * 2
animate(src, transform = matrix() * 0.5, time = 30, flags = ANIMATION_END_NOW)
-obj/structure/destructible/clockwork/massive/celestial_gateway/Destroy()
+/obj/structure/destructible/clockwork/massive/celestial_gateway/Destroy()
STOP_PROCESSING(SSprocessing, src)
if(!purpose_fulfilled)
var/area/gate_area = get_area(src)
diff --git a/code/modules/arousal/toys/dildos.dm b/code/modules/arousal/toys/dildos.dm
index 0cfa57e5fc..2482b93300 100644
--- a/code/modules/arousal/toys/dildos.dm
+++ b/code/modules/arousal/toys/dildos.dm
@@ -103,29 +103,29 @@
name = "knotted dildo"
attack_verb = list("penetrated", "knotted", "slapped", "inseminated")
-obj/item/dildo/human
+/obj/item/dildo/human
dildo_shape = "human"
name = "human dildo"
attack_verb = list("penetrated", "slapped", "inseminated")
-obj/item/dildo/plain
+/obj/item/dildo/plain
dildo_shape = "plain"
name = "plain dildo"
attack_verb = list("penetrated", "slapped", "inseminated")
-obj/item/dildo/flared
+/obj/item/dildo/flared
dildo_shape = "flared"
name = "flared dildo"
attack_verb = list("penetrated", "slapped", "neighed", "gaped", "prolapsed", "inseminated")
-obj/item/dildo/flared/huge
+/obj/item/dildo/flared/huge
name = "literal horse cock"
desc = "THIS THING IS HUGE!"
dildo_size = 4
force = 10
hitsound = 'sound/weapons/klonk.ogg'
-obj/item/dildo/custom
+/obj/item/dildo/custom
name = "customizable dildo"
desc = "Thanks to significant advances in synthetic nanomaterials, this dildo is capable of taking on many different forms to fit the user's preferences! Pricy!"
can_customize = TRUE
@@ -136,9 +136,9 @@ obj/item/dildo/custom
// Suicide acts, by request
/obj/item/dildo/proc/manual_suicide(mob/living/user)
- user.visible_message("[user] finally finishes deepthroating the [src], and their life.")
- user.adjustOxyLoss(200)
- user.death(0)
+ user.visible_message("[user] finally finishes deepthroating the [src], and their life.")
+ user.adjustOxyLoss(200)
+ user.death(0)
/obj/item/dildo/suicide_act(mob/living/user)
// is_knotted = ((src.dildo_shape == "knotted")?"They swallowed the knot":"Their face is turning blue")
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 0eebf22be4..2690ad555b 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -261,7 +261,7 @@
new /obj/item/stack/sheet/metal (loc, 5)
qdel(src)
-obj/machinery/portable_atmospherics/canister/welder_act(mob/living/user, obj/item/I)
+/obj/machinery/portable_atmospherics/canister/welder_act(mob/living/user, obj/item/I)
..()
if(user.a_intent == INTENT_HARM)
return FALSE
diff --git a/code/modules/atmospherics/multiz.dm b/code/modules/atmospherics/multiz.dm
index 79a5c2cf14..cb52d03ff6 100644
--- a/code/modules/atmospherics/multiz.dm
+++ b/code/modules/atmospherics/multiz.dm
@@ -1,4 +1,5 @@
-obj/machinery/atmospherics/pipe/simple/multiz ///This is an atmospherics pipe which can relay air up a deck (Z+1). It currently only supports being on pipe layer 1
+/// This is an atmospherics pipe which can relay air up/down a deck.
+/obj/machinery/atmospherics/pipe/simple/multiz
name = "multi deck pipe adapter"
desc = "An adapter which allows pipes to connect to other pipenets on different decks."
icon_state = "multiz_pipe"
@@ -24,6 +25,4 @@ obj/machinery/atmospherics/pipe/simple/multiz ///This is an atmospherics pipe wh
if(above)
nodes += above
above.nodes += src //Two way travel :)
- return ..()
- else
- return ..()
+ return ..()
diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm
index 391b4ff464..57501beab3 100644
--- a/code/modules/cargo/bounties/reagent.dm
+++ b/code/modules/cargo/bounties/reagent.dm
@@ -35,7 +35,7 @@
name = "Simple Drink"
reward = 1500
-datum/bounty/reagent/simple_drink/New()
+/datum/bounty/reagent/simple_drink/New()
// Don't worry about making this comprehensive. It doesn't matter if some drinks are skipped.
var/static/list/possible_reagents = list(\
/datum/reagent/consumable/ethanol/antifreeze,\
@@ -91,7 +91,7 @@ datum/bounty/reagent/simple_drink/New()
name = "Complex Drink"
reward = 4000
-datum/bounty/reagent/complex_drink/New()
+/datum/bounty/reagent/complex_drink/New()
// Don't worry about making this comprehensive. It doesn't matter if some drinks are skipped.
var/static/list/possible_reagents = list(\
/datum/reagent/consumable/ethanol/atomicbomb,\
@@ -124,7 +124,7 @@ datum/bounty/reagent/complex_drink/New()
reward = 2750
required_volume = 30
-datum/bounty/reagent/chemical/New()
+/datum/bounty/reagent/chemical/New()
// Don't worry about making this comprehensive. It doesn't matter if some chems are skipped.
var/static/list/possible_reagents = list(\
/datum/reagent/medicine/leporazine,\
diff --git a/code/modules/cargo/exports/gear.dm b/code/modules/cargo/exports/gear.dm
index 678948128f..8e93fc5fc3 100644
--- a/code/modules/cargo/exports/gear.dm
+++ b/code/modules/cargo/exports/gear.dm
@@ -473,7 +473,7 @@
//Soft Suits
//Blanket
-datum/export/gear/space/helmet
+/datum/export/gear/space/helmet
cost = 55
unit_name = "space helmet"
export_types = list(/obj/item/clothing/head/helmet/space)
@@ -485,7 +485,7 @@ datum/export/gear/space/helmet
export_types = list(/obj/item/clothing/suit/space)
include_subtypes = TRUE
-datum/export/gear/space/helmet/plasma
+/datum/export/gear/space/helmet/plasma
cost = 100
unit_name = "plasmaman space helmet"
export_types = list(/obj/item/clothing/suit/space/eva/plasmaman)
@@ -495,7 +495,7 @@ datum/export/gear/space/helmet/plasma
unit_name = "plasmaman space suit"
export_types = list(/obj/item/clothing/suit/space/eva/plasmaman)
-datum/export/gear/space/helmet/synda
+/datum/export/gear/space/helmet/synda
cost = 150 //Flash proof
unit_name = "syndicate space helmet"
export_types = list(/obj/item/clothing/head/helmet/space/syndicate)
@@ -510,7 +510,7 @@ datum/export/gear/space/helmet/synda
//Glasses
//Blanket
-datum/export/gear/glasses //glasses are not worth selling
+/datum/export/gear/glasses //glasses are not worth selling
cost = 3
unit_name = "glasses"
export_types = list(/obj/item/clothing/glasses)
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index 51a526d089..7670addab6 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -289,7 +289,7 @@
//VERY SUPER BADASS NECKERCHIEFS//
//////////////////////////////////
-obj/item/clothing/neck/neckerchief
+/datum/obj/item/clothing/neck/neckerchief
icon = 'icons/obj/clothing/masks.dmi' //In order to reuse the bandana sprite
w_class = WEIGHT_CLASS_TINY
var/sourceBandanaType
diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm
index 06318df4f5..90ebe7f6a1 100644
--- a/code/modules/events/immovable_rod.dm
+++ b/code/modules/events/immovable_rod.dm
@@ -144,22 +144,23 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
if(L && (L.density || prob(10)))
L.ex_act(EXPLODE_HEAVY)
-obj/effect/immovablerod/on_attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags)
- if(ishuman(user))
- var/mob/living/carbon/human/U = user
- if(U.job in list("Research Director"))
- playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
- for(var/mob/M in urange(8, src))
- if(!M.stat)
- shake_camera(M, 2, 3)
- if(wizard)
- U.visible_message("[src] transforms into [wizard] as [U] suplexes them!", "As you grab [src], it suddenly turns into [wizard] as you suplex them!")
- to_chat(wizard, "You're suddenly jolted out of rod-form as [U] somehow manages to grab you, slamming you into the ground!")
- wizard.Stun(60)
- wizard.apply_damage(25, BRUTE)
- qdel(src)
- else
- U.visible_message("[U] suplexes [src] into the ground!", "You suplex [src] into the ground!")
- new /obj/structure/festivus/anchored(drop_location())
- new /obj/effect/anomaly/flux(drop_location())
- qdel(src)
+/obj/effect/immovablerod/on_attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags)
+ if(!ishuman(user))
+ return
+ var/mob/living/carbon/human/U = user
+ if(U.job in list("Research Director"))
+ playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE)
+ for(var/mob/M in urange(8, src))
+ if(!M.stat)
+ shake_camera(M, 2, 3)
+ if(wizard)
+ U.visible_message("[src] transforms into [wizard] as [U] suplexes them!", "As you grab [src], it suddenly turns into [wizard] as you suplex them!")
+ to_chat(wizard, "You're suddenly jolted out of rod-form as [U] somehow manages to grab you, slamming you into the ground!")
+ wizard.Stun(60)
+ wizard.apply_damage(25, BRUTE)
+ qdel(src)
+ else
+ U.visible_message("[U] suplexes [src] into the ground!", "You suplex [src] into the ground!")
+ new /obj/structure/festivus/anchored(drop_location())
+ new /obj/effect/anomaly/flux(drop_location())
+ qdel(src)
diff --git a/code/modules/events/travelling_trader.dm b/code/modules/events/travelling_trader.dm
index 1f9c69a9f0..2f7b9dbea5 100644
--- a/code/modules/events/travelling_trader.dm
+++ b/code/modules/events/travelling_trader.dm
@@ -25,14 +25,14 @@
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(1, spawn_location)
smoke.start()
- trader.visible_message("[src] suddenly appears in a puff of smoke!")
+ trader.visible_message("[trader] suddenly appears in a puff of smoke!")
/datum/round_event/travelling_trader/announce(fake)
priority_announce("A mysterious figure has been detected on sensors at [get_area(spawn_location)]", "Mysterious Figure")
/datum/round_event/travelling_trader/end()
- if(trader)
- trader.visible_message("The [src] has given up on waiting!")
+ if(trader) // the /datum/round_event/travelling_trader has given up on waiting!
+ trader.visible_message("The [trader] has given up on waiting!")
qdel(trader)
//the actual trader mob
@@ -188,18 +188,18 @@
/mob/living/simple_animal/hostile/netherworld/blankbody = 1,
/mob/living/simple_animal/hostile/retaliate/goose = 1)
-mob/living/carbon/human/dummy/travelling_trader/animal_hunter/Initialize()
+/mob/living/carbon/human/dummy/travelling_trader/animal_hunter/Initialize()
+ . = ..()
acceptance_speech = pick(list("This lifeform shall make for a great stew, thank you.", "This lifeform shall be of a true use to our cause, thank you.", "The lifeform is adequate. Goodbye.", "This lifeform shall make a great addition to my collection."))
- ..()
-/mob/living/carbon/human/dummy/travelling_trader/animal_hunter/check_item(var/obj/item/supplied_item) //item is likely to be in contents of whats supplied
+/mob/living/carbon/human/dummy/travelling_trader/animal_hunter/check_item(obj/item/supplied_item) //item is likely to be in contents of whats supplied
for(var/atom/something in supplied_item.contents)
if(istype(something, requested_item))
qdel(something) //typically things holding mobs release the mob when the container is deleted, so delete the mob first here
return TRUE
return FALSE
-/mob/living/carbon/human/dummy/travelling_trader/animal_hunter/give_reward(var/mob/giver) //the reward is actually given in a jar, because releasing it onto the station might be a bad idea
+/mob/living/carbon/human/dummy/travelling_trader/animal_hunter/give_reward(mob/giver) //the reward is actually given in a jar, because releasing it onto the station might be a bad idea
var/obj/item/pet_carrier/bluespace/jar = new(get_turf(src))
var/chosen_animal = pickweight(possible_rewards)
var/mob/living/new_animal = new chosen_animal(jar)
@@ -223,6 +223,7 @@ mob/living/carbon/human/dummy/travelling_trader/animal_hunter/Initialize()
/obj/structure/reagent_dispensers/keg/quintuple_sec = 3)
/mob/living/carbon/human/dummy/travelling_trader/bartender/Initialize() //pick a subtype of ethanol that isn't found in the default set of the booze dispensers reagents
+ . = ..() // RETURN A HINT.
requested_item = pick(subtypesof(/datum/reagent/consumable/ethanol) - list(/datum/reagent/consumable/ethanol/beer,
/datum/reagent/consumable/ethanol/kahlua,
/datum/reagent/consumable/ethanol/whiskey,
@@ -242,7 +243,6 @@ mob/living/carbon/human/dummy/travelling_trader/animal_hunter/Initialize()
/datum/reagent/consumable/ethanol/triple_sec,
/datum/reagent/consumable/ethanol/sake,
/datum/reagent/consumable/ethanol/applejack))
- ..()
/mob/living/carbon/human/dummy/travelling_trader/bartender/check_item(var/obj/item/supplied_item) //you need to check its reagents
if(istype(supplied_item, /obj/item/reagent_containers))
diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm
index be07826a7f..67ac2ee59b 100644
--- a/code/modules/food_and_drinks/food/snacks_cake.dm
+++ b/code/modules/food_and_drinks/food/snacks_cake.dm
@@ -308,7 +308,7 @@
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
foodtype = GRAIN | DAIRY | SUGAR
-obj/item/reagent_containers/food/snacks/store/cake/pound_cake
+/obj/item/reagent_containers/food/snacks/store/cake/pound_cake
name = "pound cake"
desc = "A condensed cake made for filling people up quickly."
icon_state = "pound_cake"
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.dm
index c376ab4025..3d3b1ac0fd 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_donut.dm
@@ -21,7 +21,7 @@
)
result = /obj/item/reagent_containers/food/snacks/donut/chaos
-datum/crafting_recipe/food/donut/meat
+/datum/crafting_recipe/food/donut/meat
time = 15
name = "Meat donut"
reqs = list(
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 2dc80cd8fc..d8082e667d 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -24,7 +24,7 @@
var/yield = 3 // Amount of growns created per harvest. If is -1, the plant/shroom/weed is never meant to be harvested.
var/potency = 10 // The 'power' of a plant. Generally effects the amount of reagent in a plant, also used in other ways.
var/growthstages = 6 // Amount of growth sprites the plant has.
- var/instability = 5 //Chance that a plant will mutate in each stage of it's life.
+ var/instability = 5 //Chance that a plant will mutate in each stage of it's life.
var/rarity = 0 // How rare the plant is. Used for giving points to cargo when shipping off to CentCom.
var/list/mutatelist = list() // The type of plants that this plant can mutate into.
var/list/genes = list() // Plant genes are stored here, see plant_genes.dm for more info.
@@ -105,7 +105,7 @@
S.reagents_add = reagents_add.Copy() // Faster than grabbing the list from genes.
return S
-obj/item/seeds/proc/is_gene_forbidden(typepath)
+/obj/item/seeds/proc/is_gene_forbidden(typepath)
return (typepath in forbiddengenes)
diff --git a/code/modules/integrated_electronics/subtypes/atmospherics.dm b/code/modules/integrated_electronics/subtypes/atmospherics.dm
index 26ac3080de..d449775bd1 100644
--- a/code/modules/integrated_electronics/subtypes/atmospherics.dm
+++ b/code/modules/integrated_electronics/subtypes/atmospherics.dm
@@ -292,7 +292,7 @@
activate_pin(2)
// Required for making the connector port script work
-obj/item/integrated_circuit/atmospherics/connector/portableConnectorReturnAir()
+/obj/item/integrated_circuit/atmospherics/connector/portableConnectorReturnAir()
return air_contents
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/caps.dm b/code/modules/mob/dead/new_player/sprite_accessories/caps.dm
index 822fcf960d..d974672490 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/caps.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/caps.dm
@@ -1,4 +1,4 @@
-datum/sprite_accessory/caps
+/datum/sprite_accessory/caps
icon = 'icons/mob/mutant_bodyparts.dmi'
color_src = HAIR
relevant_layers = list(BODY_ADJ_LAYER)
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
index 6135d42569..a964be3f8a 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
@@ -757,7 +757,7 @@
icon_state = "husky"
matrixed_sections = MATRIX_RED_GREEN
-datum/sprite_accessory/tails/mam_tails/insect
+/datum/sprite_accessory/tails/mam_tails/insect
name = "Insect"
icon_state = "insect"
matrixed_sections = MATRIX_RED
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index 1be90a07f8..c7772f780d 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -109,7 +109,7 @@
to_chat(user, "You strap the armor plating to [A] and sharpen [A.p_their()] claws with the nail filer. This was a great idea.")
qdel(src)
-mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Several functions used from it.
+/mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Several functions used from it.
name = "Terrygold"
icon_state = "butterbear"
icon_living = "butterbear"
@@ -155,7 +155,7 @@ mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Seve
to_chat(src, "Your name is now \"new_name\"!")
name = new_name
-mob/living/simple_animal/hostile/bear/butter/AttackingTarget() //Makes some attacks by the butter bear slip those who dare cross its path.
+/mob/living/simple_animal/hostile/bear/butter/AttackingTarget() //Makes some attacks by the butter bear slip those who dare cross its path.
if(isliving(target))
var/mob/living/L = target
if((L.mobility_flags & MOBILITY_STAND))
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 bde5a19518..bf2e718159 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -389,13 +389,14 @@
name = "Wrap"
panel = "Spider"
active = FALSE
- datum/action/spell_action/action = null
desc = "Wrap something or someone in a cocoon. If it's a living being, you'll also consume them, allowing you to lay eggs."
ranged_mousepointer = 'icons/effects/wrap_target.dmi'
action_icon = 'icons/mob/actions/actions_animal.dmi'
action_icon_state = "wrap_0"
action_background_icon_state = "bg_alien"
+ var/datum/action/spell_action/action // hello?? how was this not causing the compiler to fail?
+
/obj/effect/proc_holder/wrap/Initialize()
. = ..()
action = new(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 37eb9b7f67..95f8f2acc1 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -511,7 +511,7 @@
DestroyObjectsInDirection(direction)
-mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with megafauna destroying everything around them
+/mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with megafauna destroying everything around them
if(environment_smash)
EscapeConfinement()
for(var/dir in GLOB.cardinals)
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index fdb088934c..cc5b0b8a75 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -190,5 +190,5 @@
* Arguments:
* * datum/beam/vine - The vine to be removed from the list.
*/
-mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
+/mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
vines -= vine
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index c5c53dc876..6c370f2505 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -3,14 +3,14 @@
//////////////////////////////////////////////////////
/mob/proc/get_top_level_mob()
- if(istype(src.loc,/mob)&&src.loc!=src)
- var/mob/M=src.loc
+ if(ismob(src.loc) && src.loc != src)
+ var/mob/M = src.loc
return M.get_top_level_mob()
return src
-proc/get_top_level_mob(var/mob/S)
- if(istype(S.loc,/mob)&&S.loc!=S)
- var/mob/M=S.loc
+/proc/get_top_level_mob(mob/S)
+ if(ismob(src.loc) && S.loc != S)
+ var/mob/M = S.loc
return M.get_top_level_mob()
return S
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index 68c1c1036d..2a41b41d1d 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -8,7 +8,7 @@
projectile_type = /obj/item/projectile/bullet/shotgun_slug
custom_materials = list(/datum/material/iron=4000)
-obj/item/ammo_casing/shotgun/executioner
+/obj/item/ammo_casing/shotgun/executioner
name = "executioner slug"
desc = "A 12 gauge lead slug purpose built to annihilate flesh on impact."
icon_state = "stunshell"
diff --git a/code/modules/projectiles/projectile/plasma.dm b/code/modules/projectiles/projectile/plasma.dm
index 838dac34a0..474a3d95c7 100644
--- a/code/modules/projectiles/projectile/plasma.dm
+++ b/code/modules/projectiles/projectile/plasma.dm
@@ -1,4 +1,4 @@
-obj/item/projectile/energy/plasmabolt
+/obj/item/projectile/energy/plasmabolt
name = "plasma bolt"
icon_state = "plasma"
flag = "energy"
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 17cde0611b..90f570e4d1 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -2528,7 +2528,7 @@
M.adjustStaminaLoss(-0.25*REM) // the more wounds, the more stamina regen
..()
-datum/reagent/eldritch
+/datum/reagent/eldritch
name = "Eldritch Essence"
description = "Strange liquid that defies the laws of physics"
taste_description = "Ag'hsj'saje'sh"
diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm
index 78ae1a3070..77d6067d3b 100644
--- a/code/modules/reagents/reagent_containers/chem_pack.dm
+++ b/code/modules/reagents/reagent_containers/chem_pack.dm
@@ -44,8 +44,7 @@
else
. += "Alt-click to seal it."
-
-obj/item/reagent_containers/chem_pack/attack_self(mob/user)
+/obj/item/reagent_containers/chem_pack/attack_self(mob/user)
if(sealed)
return
..()
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index 9b19516f26..c35f062739 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -236,7 +236,7 @@
duration = -1
alert_type = null
-datum/status_effect/rebreathing/tick()
+/datum/status_effect/rebreathing/tick()
owner.adjustOxyLoss(-6, 0) //Just a bit more than normal breathing.
///////////////////////////////////////////////////////
@@ -524,7 +524,7 @@ datum/status_effect/rebreathing/tick()
ADD_TRAIT(owner, TRAIT_NOSLIPWATER, "slimestatus")
return ..()
-datum/status_effect/stabilized/blue/on_remove()
+/datum/status_effect/stabilized/blue/on_remove()
REMOVE_TRAIT(owner, TRAIT_NOSLIPWATER, "slimestatus")
return ..()
diff --git a/code/modules/shuttle/spaceship_navigation_beacon.dm b/code/modules/shuttle/spaceship_navigation_beacon.dm
index e389b32a94..7488bdd205 100644
--- a/code/modules/shuttle/spaceship_navigation_beacon.dm
+++ b/code/modules/shuttle/spaceship_navigation_beacon.dm
@@ -21,7 +21,7 @@
. = ..()
SSshuttle.beacons |= src
-obj/machinery/spaceship_navigation_beacon/emp_act()
+/obj/machinery/spaceship_navigation_beacon/emp_act()
locked = TRUE
/obj/machinery/spaceship_navigation_beacon/Destroy()
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 6b3d47b587..aaa4e34f36 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -97,7 +97,7 @@
owner.set_heartattack(TRUE)
failed = TRUE
-obj/item/organ/heart/slime
+/obj/item/organ/heart/slime
name = "slime heart"
desc = "It seems we've gotten to the slimy core of the matter."
icon_state = "heart-s-on"
@@ -221,7 +221,7 @@ obj/item/organ/heart/slime
var/rid = /datum/reagent/medicine/epinephrine
var/ramount = 10
-obj/item/organ/heart/cybernetic/upgraded/on_life()
+/obj/item/organ/heart/cybernetic/upgraded/on_life()
. = ..()
if(!.)
return
diff --git a/code/modules/uplink/uplink_items/uplink_stealth.dm b/code/modules/uplink/uplink_items/uplink_stealth.dm
index ff6d66a483..18a7707a88 100644
--- a/code/modules/uplink/uplink_items/uplink_stealth.dm
+++ b/code/modules/uplink/uplink_items/uplink_stealth.dm
@@ -115,7 +115,7 @@
cost = 4
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
-datum/uplink_item/stealthy_weapons/taeclowndo_shoes
+/datum/uplink_item/stealthy_weapons/taeclowndo_shoes
name = "Tae-clown-do Shoes"
desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn."
cost = 12
diff --git a/modular_citadel/code/modules/clothing/trek.dm b/modular_citadel/code/modules/clothing/trek.dm
index f7e8b6778e..dd02a6d0f8 100644
--- a/modular_citadel/code/modules/clothing/trek.dm
+++ b/modular_citadel/code/modules/clothing/trek.dm
@@ -51,58 +51,58 @@
blood_overlay_type = "coat"
body_parts_covered = CHEST|GROIN|ARMS
allowed = list(
- /obj/item/tank/internals/emergency_oxygen,
- /obj/item/flashlight,
- /obj/item/analyzer,
- /obj/item/radio,
- /obj/item/gun,
- /obj/item/melee/baton,
- /obj/item/restraints/handcuffs,
- /obj/item/reagent_containers/hypospray,
- /obj/item/hypospray,
- /obj/item/healthanalyzer,
- /obj/item/reagent_containers/syringe,
- /obj/item/reagent_containers/glass/bottle/vial,
- /obj/item/reagent_containers/glass/beaker,
- /obj/item/storage/pill_bottle,
- /obj/item/taperecorder)
+ /obj/item/tank/internals/emergency_oxygen,
+ /obj/item/flashlight,
+ /obj/item/analyzer,
+ /obj/item/radio,
+ /obj/item/gun,
+ /obj/item/melee/baton,
+ /obj/item/restraints/handcuffs,
+ /obj/item/reagent_containers/hypospray,
+ /obj/item/hypospray,
+ /obj/item/healthanalyzer,
+ /obj/item/reagent_containers/syringe,
+ /obj/item/reagent_containers/glass/bottle/vial,
+ /obj/item/reagent_containers/glass/beaker,
+ /obj/item/storage/pill_bottle,
+ /obj/item/taperecorder)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
- var/unbuttoned = 0
+ var/unbuttoned = FALSE
- verb/toggle()
- set name = "Toggle coat buttons"
- set category = "Object"
- set src in usr
+/obj/item/clothing/suit/storage/fluff/fedcoat/verb/toggle()
+ set name = "Toggle coat buttons"
+ set category = "Object"
+ set src in usr
- var/mob/living/L = usr
- if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE))
- return FALSE
+ var/mob/living/L = usr
+ if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE))
+ return FALSE
- switch(unbuttoned)
- if(0)
- icon_state = "[initial(icon_state)]_open"
- item_state = "[initial(item_state)]_open"
- unbuttoned = 1
- to_chat(usr,"You unbutton the coat.")
- if(1)
- icon_state = "[initial(icon_state)]"
- item_state = "[initial(item_state)]"
- unbuttoned = 0
- to_chat(usr,"You button up the coat.")
- usr.update_inv_wear_suit()
+ switch(unbuttoned)
+ if(FALSE)
+ icon_state = "[initial(icon_state)]_open"
+ item_state = "[initial(item_state)]_open"
+ unbuttoned = TRUE
+ to_chat(usr,"You unbutton the coat.")
+ if(TRUE)
+ icon_state = "[initial(icon_state)]"
+ item_state = "[initial(item_state)]"
+ unbuttoned = FALSE
+ to_chat(usr,"You button up the coat.")
+ usr.update_inv_wear_suit()
- //Variants
+//Variants
/obj/item/clothing/suit/storage/fluff/fedcoat/medsci
- icon_state = "fedblue"
- item_state = "fedblue"
+ icon_state = "fedblue"
+ item_state = "fedblue"
/obj/item/clothing/suit/storage/fluff/fedcoat/eng
- icon_state = "fedeng"
- item_state = "fedeng"
+ icon_state = "fedeng"
+ item_state = "fedeng"
/obj/item/clothing/suit/storage/fluff/fedcoat/capt
- icon_state = "fedcapt"
- item_state = "fedcapt"
+ icon_state = "fedcapt"
+ item_state = "fedcapt"
//"modern" ones for fancy
@@ -124,18 +124,18 @@
)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
- //Variants
+//Variants
/obj/item/clothing/suit/storage/fluff/modernfedcoat/medsci
- icon_state = "fedmodernblue"
- item_state = "fedmodernblue"
+ icon_state = "fedmodernblue"
+ item_state = "fedmodernblue"
/obj/item/clothing/suit/storage/fluff/modernfedcoat/eng
- icon_state = "fedmoderneng"
- item_state = "fedmoderneng"
+ icon_state = "fedmoderneng"
+ item_state = "fedmoderneng"
/obj/item/clothing/suit/storage/fluff/modernfedcoat/sec
- icon_state = "fedmodernsec"
- item_state = "fedmodernsec"
+ icon_state = "fedmodernsec"
+ item_state = "fedmodernsec"
/obj/item/clothing/head/caphat/formal/fedcover
name = "Federation Officer's Cap"
@@ -146,22 +146,22 @@
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
item_state = "fedcapofficer"
- //Variants
+//Variants
/obj/item/clothing/head/caphat/formal/fedcover/medsci
- icon_state = "fedcapsci"
- item_state = "fedcapsci"
+ icon_state = "fedcapsci"
+ item_state = "fedcapsci"
/obj/item/clothing/head/caphat/formal/fedcover/eng
- icon_state = "fedcapeng"
- item_state = "fedcapeng"
+ icon_state = "fedcapeng"
+ item_state = "fedcapeng"
/obj/item/clothing/head/caphat/formal/fedcover/sec
- icon_state = "fedcapsec"
- item_state = "fedcapsec"
+ icon_state = "fedcapsec"
+ item_state = "fedcapsec"
/obj/item/clothing/head/caphat/formal/fedcover/black
- icon_state = "fedcapblack"
- item_state = "fedcapblack"
+ icon_state = "fedcapblack"
+ item_state = "fedcapblack"
//orvilike caps
/obj/item/clothing/head/kepi/orvi
diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
index 65609f5830..9a8ee4bab1 100644
--- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -2,7 +2,7 @@
The Recolourable Energy Gun
*//////////////////////////////////////////////////////////////////////////////////////////////
-obj/item/gun/energy/e_gun/cx
+/obj/item/gun/energy/e_gun/cx
name = "\improper CX Model D Energy Gun"
desc = "An overpriced hybrid energy gun with two settings: disable, and kill. Manufactured by CX Armories. Has a polychromic coating."
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
@@ -14,18 +14,18 @@ obj/item/gun/energy/e_gun/cx
flight_y_offset = 10
var/body_color = "#252528"
-obj/item/gun/energy/e_gun/cx/ComponentInitialize()
+/obj/item/gun/energy/e_gun/cx/ComponentInitialize()
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
-obj/item/gun/energy/e_gun/cx/update_overlays()
+/obj/item/gun/energy/e_gun/cx/update_overlays()
. = ..()
var/mutable_appearance/body_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "cxegun_body")
if(body_color)
body_overlay.color = body_color
. += body_overlay
-obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
+/obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
. = ..()
if(!in_range(src, user)) //Basic checks to prevent abuse
return
@@ -39,7 +39,7 @@ obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
update_icon()
-obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
+/obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(isinhands)
var/mutable_appearance/body_inhand = mutable_appearance(icon_file, "cxe_body")
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index 1801986ebe..2d4d363efb 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -216,7 +216,6 @@
..()
/datum/reagent/fermi/nanite_b_gone/overdose_process(mob/living/carbon/C)
- //var/component/nanites/N = M.GetComponent(/datum/component/nanites)
var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites)
if(prob(5))
to_chat(C, "The residual voltage from the nanites causes you to seize up!")
@@ -230,7 +229,7 @@
N.adjust_nanites(-10*cached_purity)
..()
-datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
+/datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
for(var/active_obj in react_objs)
if(O == active_obj)
return
From 02ca168df33555dabad000e2d75bdde2f26b93b7 Mon Sep 17 00:00:00 2001
From: Letter N <24603524+LetterN@users.noreply.github.com>
Date: Wed, 20 Jan 2021 11:37:44 +0800
Subject: [PATCH 3/6] why are we building windows facing nothing but rock
infront of it?
---
code/_onclick/hud/plane_master.dm | 6 ++--
code/game/objects/effects/overlays.dm | 42 ++++++++++++++++++++++--
code/game/turfs/open.dm | 16 +++++----
code/game/turfs/openspace/openspace.dm | 29 +++++++++++++---
code/game/turfs/openspace/transparent.dm | 7 +++-
code/game/turfs/space/space.dm | 1 +
6 files changed, 83 insertions(+), 18 deletions(-)
diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm
index f5b8991e20..4ef5d35ce0 100644
--- a/code/_onclick/hud/plane_master.dm
+++ b/code/_onclick/hud/plane_master.dm
@@ -28,9 +28,9 @@
. = ..()
filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
- filters += filter(type = "drop_shadow", color = "#04080FAA", size = -10)
- filters += filter(type = "drop_shadow", color = "#04080FAA", size = -15)
- filters += filter(type = "drop_shadow", color = "#04080FAA", size = -20)
+ add_filter("first_stage_openspace", 1, drop_shadow_filter(color = "#04080FAA", size = -10))
+ add_filter("second_stage_openspace", 2, drop_shadow_filter(color = "#04080FAA", size = -15))
+ add_filter("third_stage_openspace", 2, drop_shadow_filter(color = "#04080FAA", size = -20))
/obj/screen/plane_master/proc/outline(_size, _color)
filters += filter(type = "outline", size = _size, color = _color)
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index b310119827..6be0a50a5e 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -49,6 +49,42 @@
/obj/effect/overlay/vis
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
anchored = TRUE
- vis_flags = NONE
- var/unused = 0 //When detected to be unused it gets set to world.time, after a while it gets removed
- var/cache_expiration = 2 MINUTES // overlays which go unused for 2 minutes get cleaned up
+ vis_flags = VIS_INHERIT_DIR
+ ///When detected to be unused it gets set to world.time, after a while it gets removed
+ var/unused = 0
+ ///overlays which go unused for this amount of time get cleaned up
+ var/cache_expiration = 2 MINUTES
+
+// /obj/effect/overlay/atmos_excited
+// name = "excited group"
+// icon = null
+// icon_state = null
+// anchored = TRUE // should only appear in vis_contents, but to be safe
+// appearance_flags = RESET_TRANSFORM | TILE_BOUND
+// invisibility = INVISIBILITY_ABSTRACT
+// mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+
+// layer = ATMOS_GROUP_LAYER
+// plane = ATMOS_GROUP_PLANE
+
+// /obj/effect/overlay/light_visible
+// name = ""
+// icon = 'icons/effects/light_overlays/light_32.dmi'
+// icon_state = "light"
+// layer = O_LIGHTING_VISUAL_LAYER
+// plane = O_LIGHTING_VISUAL_PLANE
+// appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
+// mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+// alpha = 0
+// vis_flags = NONE
+
+// /obj/effect/overlay/light_cone
+// name = ""
+// icon = 'icons/effects/light_overlays/light_cone.dmi'
+// icon_state = "light"
+// layer = O_LIGHTING_VISUAL_LAYER
+// plane = O_LIGHTING_VISUAL_PLANE
+// appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
+// mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+// vis_flags = NONE
+// alpha = 110
diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm
index 7e00b1cf63..876c170923 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -1,12 +1,5 @@
/turf/open
plane = FLOOR_PLANE
- /// Does dirt buildup happen on us?
- var/dirt_buildup_allowed = FALSE
- /// Dirt level.
- var/dirtyness = 0
- /// Dirt level to spawn dirt. Null to use config.
- var/dirt_spawn_threshold
- /// Slowdown applied to mobs on us.
var/slowdown = 0 //negative for faster, positive for slower
var/postdig_icon_change = FALSE
@@ -18,6 +11,15 @@
var/clawfootstep = null
var/heavyfootstep = null
+ /// Dirtyness system, cit specific.
+
+ /// Does dirt buildup happen on us?
+ var/dirt_buildup_allowed = FALSE
+ /// Dirt level.
+ var/dirtyness = 0
+ /// Dirt level to spawn dirt. Null to use config.
+ var/dirt_spawn_threshold
+
/turf/open/ComponentInitialize()
. = ..()
if(wet)
diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm
index 0607f19dd3..69bdcf06cf 100644
--- a/code/game/turfs/openspace/openspace.dm
+++ b/code/game/turfs/openspace/openspace.dm
@@ -10,6 +10,8 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
plane = OPENSPACE_BACKDROP_PLANE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
layer = SPLASHSCREEN_LAYER
+ //I don't know why the others are aligned but I shall do the same.
+ vis_flags = VIS_INHERIT_ID
/turf/open/transparent/openspace
name = "open space"
@@ -17,6 +19,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
icon_state = "transparent"
baseturfs = /turf/open/transparent/openspace
CanAtmosPassVertical = ATMOS_PASS_YES
+ intact = FALSE //this means wires go on top
//mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/can_cover_up = TRUE
var/can_build_on = TRUE
@@ -32,10 +35,14 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
/turf/open/transparent/openspace/show_bottom_level()
return FALSE
-/turf/open/transparent/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker
+/turf/open/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker
. = ..()
-
vis_contents += GLOB.openspace_backdrop_one_for_all //Special grey square for projecting backdrop darkness filter on it.
+ return INITIALIZE_HINT_LATELOAD
+
+/turf/open/openspace/LateInitialize()
+ . = ..()
+ // AddElement(/datum/element/turf_z_transparency, FALSE)
/turf/open/transparent/openspace/can_have_cabling()
if(locate(/obj/structure/lattice/catwalk, src))
@@ -95,6 +102,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
return
if(L)
if(R.use(1))
+ qdel(L)
to_chat(user, "You construct a catwalk.")
playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
new/obj/structure/lattice/catwalk(src)
@@ -148,9 +156,22 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
/turf/open/transparent/openspace/icemoon
name = "ice chasm"
baseturfs = /turf/open/transparent/openspace/icemoon
- can_cover_up = TRUE
- can_build_on = TRUE
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
+ planetary_atmos = TRUE
+ var/replacement_turf = /turf/open/floor/plating/asteroid/snow/icemoon
+
+/turf/open/transparent/openspace/icemoon/Initialize()
+ . = ..()
+ var/turf/T = below()
+ // if(T.flags_1 & NO_RUINS_1)
+ // ChangeTurf(replacement_turf, null, CHANGETURF_IGNORE_AIR)
+ // return
+ // if(!ismineralturf(T))
+ // return
+ var/turf/closed/mineral/M = T
+ M.mineralAmt = 0
+ M.gets_drilled()
+ baseturfs = /turf/open/transparent/openspace/icemoon //This is to ensure that IF random turf generation produces a openturf, there won't be other turfs assigned other than openspace.
/turf/open/transparent/openspace/icemoon/can_zFall(atom/movable/A, levels = 1, turf/target)
return TRUE
diff --git a/code/game/turfs/openspace/transparent.dm b/code/game/turfs/openspace/transparent.dm
index 8efc60a15b..fa5bc17638 100644
--- a/code/game/turfs/openspace/transparent.dm
+++ b/code/game/turfs/openspace/transparent.dm
@@ -66,7 +66,12 @@
/turf/open/transparent/glass/Initialize()
icon_state = "" //Prevent the normal icon from appearing behind the smooth overlays
- return ..()
+ ..()
+ return INITIALIZE_HINT_LATELOAD
+
+/turf/open/floor/glass/LateInitialize()
+ . = ..()
+ // AddElement(/datum/element/turf_z_transparency, TRUE)
/turf/open/transparent/glass/wrench_act(mob/living/user, obj/item/I)
to_chat(user, "You begin removing glass...")
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index 52b3436154..0905fb2e9c 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -20,6 +20,7 @@
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
bullet_bounce_sound = null
+ vis_flags = VIS_INHERIT_ID //when this be added to vis_contents of something it be associated with something on clicking, important for visualisation of turf in openspace and interraction with openspace that show you turf.
/turf/open/space/basic/New() //Do not convert to Initialize
//This is used to optimize the map loader
From 9fa6958a99e6e983c01a699abfc953ec0aada309 Mon Sep 17 00:00:00 2001
From: Letter N <24603524+LetterN@users.noreply.github.com>
Date: Wed, 20 Jan 2021 11:49:53 +0800
Subject: [PATCH 4/6] OH FUCK
---
code/modules/mob/say_vr.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index 6c370f2505..94bf45c1b0 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -9,7 +9,7 @@
return src
/proc/get_top_level_mob(mob/S)
- if(ismob(src.loc) && S.loc != S)
+ if(ismob(S.loc) && S.loc != S)
var/mob/M = S.loc
return M.get_top_level_mob()
return S
From 6547028272e7998ea49604a66d3458da9541908f Mon Sep 17 00:00:00 2001
From: Letter N <24603524+LetterN@users.noreply.github.com>
Date: Wed, 20 Jan 2021 11:56:44 +0800
Subject: [PATCH 5/6] what the fuck??
---
code/modules/mob/living/simple_animal/hostile/giant_spider.dm | 2 --
1 file changed, 2 deletions(-)
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 bf2e718159..8b31ab6916 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -395,8 +395,6 @@
action_icon_state = "wrap_0"
action_background_icon_state = "bg_alien"
- var/datum/action/spell_action/action // hello?? how was this not causing the compiler to fail?
-
/obj/effect/proc_holder/wrap/Initialize()
. = ..()
action = new(src)
From a68957dcc4fd15cd77aa9ce9b4612bf5214fd193 Mon Sep 17 00:00:00 2001
From: Letter N <24603524+LetterN@users.noreply.github.com>
Date: Wed, 20 Jan 2021 12:02:20 +0800
Subject: [PATCH 6/6] wow thanks tabnine :joy:
---
code/_onclick/hud/plane_master.dm | 6 +++---
code/modules/clothing/neck/_neck.dm | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm
index 4ef5d35ce0..f5b8991e20 100644
--- a/code/_onclick/hud/plane_master.dm
+++ b/code/_onclick/hud/plane_master.dm
@@ -28,9 +28,9 @@
. = ..()
filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
- add_filter("first_stage_openspace", 1, drop_shadow_filter(color = "#04080FAA", size = -10))
- add_filter("second_stage_openspace", 2, drop_shadow_filter(color = "#04080FAA", size = -15))
- add_filter("third_stage_openspace", 2, drop_shadow_filter(color = "#04080FAA", size = -20))
+ filters += filter(type = "drop_shadow", color = "#04080FAA", size = -10)
+ filters += filter(type = "drop_shadow", color = "#04080FAA", size = -15)
+ filters += filter(type = "drop_shadow", color = "#04080FAA", size = -20)
/obj/screen/plane_master/proc/outline(_size, _color)
filters += filter(type = "outline", size = _size, color = _color)
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index 7670addab6..3228fbbaba 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -289,7 +289,7 @@
//VERY SUPER BADASS NECKERCHIEFS//
//////////////////////////////////
-/datum/obj/item/clothing/neck/neckerchief
+/obj/item/clothing/neck/neckerchief
icon = 'icons/obj/clothing/masks.dmi' //In order to reuse the bandana sprite
w_class = WEIGHT_CLASS_TINY
var/sourceBandanaType