"
- src << browse(msg.Join(), "window=Player_playtime_check")
+ new /datum/player_playtime(usr)
/obj/effect/temp_visual/fireball
icon = 'icons/obj/wizard.dmi'
diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm
index 2f7e160e6e..a1b1a1288e 100644
--- a/code/modules/antagonists/_common/antag_datum.dm
+++ b/code/modules/antagonists/_common/antag_datum.dm
@@ -50,6 +50,10 @@ GLOBAL_LIST_EMPTY(antagonists)
var/show_name_in_check_antagonists = FALSE
/// Should this antagonist be shown as antag to ghosts? Shouldn't be used for stealthy antagonists like traitors
var/show_to_ghosts = FALSE
+//ambition start
+ /// Lazy list for antagonists to request the admins objectives.
+ var/list/requested_objective_changes
+//ambition end
/* CIT SPECIFIC */
/// Quirks that will be removed upon gaining this antag. Pacifist and mute are default.
@@ -78,7 +82,9 @@ GLOBAL_LIST_EMPTY(antagonists)
if(!owner)
stack_trace("Destroy()ing antagonist datum when it has no owner.")
else
- LAZYREMOVE(owner.antag_datums, src)
+//ambition start
+ owner?.do_remove_antag_datum(src)
+//ambition end
owner = null
return ..()
@@ -230,7 +236,7 @@ GLOBAL_LIST_EMPTY(antagonists)
remove_innate_effects()
clear_antag_moodies()
- LAZYREMOVE(owner.antag_datums, src)
+ owner.do_remove_antag_datum(src)
// cit skill
for(var/A in skill_modifiers)
owner.remove_skill_modifier(GET_SKILL_MOD_ID(A, type))
@@ -524,3 +530,33 @@ GLOBAL_LIST_EMPTY(antagonists)
/datum/action/antag_info/IsAvailable()
return TRUE
+
+///Clears change requests from deleted objectives to avoid broken references.
+/datum/antagonist/proc/clean_request_from_del_objective(datum/objective/source, force)
+ var/objective_reference = REF(source)
+ for(var/uid in requested_objective_changes)
+ var/list/change_request = requested_objective_changes[uid]
+ if(change_request["target"] != objective_reference)
+ continue
+ LAZYREMOVE(requested_objective_changes, uid)
+
+
+/datum/antagonist/proc/add_objective_change(uid, list/additions)
+ LAZYADD(requested_objective_changes, uid)
+ var/datum/objective/request_target = additions["target"]
+ if(!ispath(request_target))
+ request_target = locate(request_target) in objectives
+ if(istype(request_target))
+ RegisterSignal(request_target, COMSIG_PARENT_QDELETING, .proc/clean_request_from_del_objective)
+ requested_objective_changes[uid] = additions
+
+
+/datum/antagonist/proc/remove_objective_change(uid)
+ if(!LAZYACCESS(requested_objective_changes, uid))
+ return
+ var/datum/objective/request_target = requested_objective_changes[uid]["target"]
+ if(!ispath(request_target))
+ request_target = locate(request_target) in objectives
+ if(istype(request_target))
+ UnregisterSignal(request_target, COMSIG_PARENT_QDELETING)
+ LAZYREMOVE(requested_objective_changes, uid)
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 8484732d8d..011d175cfa 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -62,7 +62,7 @@
A.UpdateButtonIcon()
/obj/item/clothing/suit/armor/abductor/vest/item_action_slot_check(slot, mob/user, datum/action/A)
- if(slot == SLOT_WEAR_SUIT) //we only give the mob the ability to activate the vest if he's actually wearing it.
+ if(slot == ITEM_SLOT_OCLOTHING) //we only give the mob the ability to activate the vest if he's actually wearing it.
return TRUE
/obj/item/clothing/suit/armor/abductor/vest/proc/SetDisguise(datum/icon_snapshot/entry)
diff --git a/code/modules/antagonists/blob/blob/theblob.dm b/code/modules/antagonists/blob/blob/theblob.dm
index 5d8086816a..924553d996 100644
--- a/code/modules/antagonists/blob/blob/theblob.dm
+++ b/code/modules/antagonists/blob/blob/theblob.dm
@@ -71,6 +71,11 @@
/obj/structure/blob/CanAtmosPass(turf/T)
return !atmosblock
+/obj/structure/blob/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller)
+ . = FALSE
+ if(istype(caller))
+ . = . || (caller.pass_flags & PASSBLOB)
+
/obj/structure/blob/update_icon() //Updates color based on overmind color if we have an overmind.
if(overmind)
add_atom_colour(overmind.blobstrain.color, FIXED_COLOUR_PRIORITY)
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
index 29e64a4913..c5f1cfbb40 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
@@ -84,7 +84,7 @@
return FALSE
if(owner.current.reagents.has_reagent(/datum/reagent/consumable/garlic))
return FALSE
- if(istype(owner.current.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/garlic_necklace))
+ if(istype(owner.current.get_item_by_slot(ITEM_SLOT_NECK), /obj/item/clothing/neck/garlic_necklace))
return FALSE
owner.current.adjustStaminaLoss(-1.5 + (actual_regen * -7) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more.
owner.current.adjustCloneLoss(-0.1 * (actual_regen * 2) * mult, 0)
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm
index 2fb7a2ccca..0a799021e9 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm
@@ -94,7 +94,7 @@
if(display_error)
to_chat(owner, "You have a stake in your chest! Your powers are useless.")
return FALSE
- if(istype(owner.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/garlic_necklace))
+ if(istype(owner.get_item_by_slot(ITEM_SLOT_NECK), /obj/item/clothing/neck/garlic_necklace))
if(display_error)
to_chat(owner, "")
return FALSE
diff --git a/code/modules/antagonists/bloodsucker/powers/brawn.dm b/code/modules/antagonists/bloodsucker/powers/brawn.dm
index 5444cccd3f..db3ce92ec1 100644
--- a/code/modules/antagonists/bloodsucker/powers/brawn.dm
+++ b/code/modules/antagonists/bloodsucker/powers/brawn.dm
@@ -105,7 +105,7 @@
var/mob/living/carbon/user_C = owner
//message_admins("DEBUG3: attempt_cast() [name] / [user_C.handcuffed] ")
if(user_C.handcuffed)
- var/obj/O = user_C.get_item_by_slot(SLOT_HANDCUFFED)
+ var/obj/O = user_C.get_item_by_slot(ITEM_SLOT_HANDCUFFED)
if(istype(O))
user_C.clear_cuffs(O,TRUE)
playsound(get_turf(usr), 'sound/effects/grillehit.ogg', 80, 1, -1)
@@ -124,7 +124,7 @@
return TRUE */
// Destroy Leg Cuffs
if(user_C.legcuffed)
- var/obj/O = user_C.get_item_by_slot(SLOT_LEGCUFFED)
+ var/obj/O = user_C.get_item_by_slot(ITEM_SLOT_LEGCUFFED)
if(istype(O))
user_C.clear_cuffs(O,TRUE)
playsound(get_turf(usr), 'sound/effects/grillehit.ogg', 80, 1, -1)
diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm
index 208fefee70..4e68e27583 100644
--- a/code/modules/antagonists/changeling/powers/absorb.dm
+++ b/code/modules/antagonists/changeling/powers/absorb.dm
@@ -65,7 +65,9 @@
user.copy_languages(target, LANGUAGE_ABSORB)
if(target.mind && user.mind)//if the victim and user have minds
- target.mind.show_memory(user, 0) //I can read your mind, kekeke. Output all their notes.
+//ambition start
+ to_chat(user, "[target.mind.show_memory()]") //I can read your mind, kekeke. Output all their notes.
+//ambition end
//Some of target's recent speech, so the changeling can attempt to imitate them better.
//Recent as opposed to all because rounds tend to have a LOT of text.
diff --git a/code/modules/antagonists/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm
index 8b3b1659d1..b440228a4e 100644
--- a/code/modules/antagonists/changeling/powers/biodegrade.dm
+++ b/code/modules/antagonists/changeling/powers/biodegrade.dm
@@ -17,7 +17,7 @@
return FALSE
if(user.handcuffed)
- var/obj/O = user.get_item_by_slot(SLOT_HANDCUFFED)
+ var/obj/O = user.get_item_by_slot(ITEM_SLOT_HANDCUFFED)
if(!istype(O))
return FALSE
user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O]!", \
@@ -27,7 +27,7 @@
used = TRUE
if(user.legcuffed)
- var/obj/O = user.get_item_by_slot(SLOT_LEGCUFFED)
+ var/obj/O = user.get_item_by_slot(ITEM_SLOT_LEGCUFFED)
if(!istype(O))
return FALSE
user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O]!", \
@@ -37,7 +37,7 @@
used = TRUE
if(user.wear_suit && user.wear_suit.breakouttime && !used)
- var/obj/item/clothing/suit/S = user.get_item_by_slot(SLOT_WEAR_SUIT)
+ var/obj/item/clothing/suit/S = user.get_item_by_slot(ITEM_SLOT_OCLOTHING)
if(!istype(S))
return FALSE
user.visible_message("[user] vomits a glob of acid across the front of [user.p_their()] [S]!", \
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index f4b74c5567..ec95ee4ef6 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -130,8 +130,8 @@
user.dropItemToGround(user.head)
user.dropItemToGround(user.wear_suit)
- user.equip_to_slot_if_possible(new suit_type(user), SLOT_WEAR_SUIT, 1, 1, 1)
- user.equip_to_slot_if_possible(new helmet_type(user), SLOT_HEAD, 1, 1, 1)
+ user.equip_to_slot_if_possible(new suit_type(user), ITEM_SLOT_OCLOTHING, 1, 1, 1)
+ user.equip_to_slot_if_possible(new helmet_type(user), ITEM_SLOT_HEAD, 1, 1, 1)
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
changeling.chem_recharge_slowdown += recharge_slowdown
@@ -637,7 +637,7 @@
user.dropItemToGround(user.gloves)
- user.equip_to_slot_if_possible(new glove_type(user), SLOT_GLOVES, 1, 1, 1)
+ user.equip_to_slot_if_possible(new glove_type(user), ITEM_SLOT_GLOVES, 1, 1, 1)
playsound(user, 'sound/effects/blobattack.ogg', 30, 1)
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
changeling.chem_recharge_slowdown += recharge_slowdown
@@ -733,7 +733,7 @@
/obj/item/clothing/gloves/fingerless/pugilist/cling/equipped(mob/user, slot)
. = ..()
- if(current_equipped_slot == SLOT_GLOVES)
+ if(current_equipped_slot == ITEM_SLOT_GLOVES)
to_chat(user, "With [src] formed around our arms, we are ready to fight.")
/obj/item/clothing/gloves/fingerless/pugilist/cling/dropped(mob/user)
diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm
index 9bda1bf5b9..2e684b514b 100644
--- a/code/modules/antagonists/changeling/powers/tiny_prick.dm
+++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm
@@ -47,8 +47,8 @@
return
if(!isturf(user.loc))
return
- if(!AStar(user, target.loc, /turf/proc/Distance, changeling.sting_range, simulated_only = 0))
- return
+ if(!length(get_path_to(user, target, max_distance = changeling.sting_range, simulated_only = FALSE)))
+ return // no path within the sting's range is found. what a weird place to use the pathfinding system
return 1
/obj/effect/proc_holder/changeling/sting/sting_feedback(mob/user, mob/target)
diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
index ad507adcec..b5f2a358e6 100644
--- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
+++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
@@ -38,7 +38,7 @@
/obj/item/clothing/head/helmet/clockwork/equipped(mob/living/user, slot)
..()
- if(slot == SLOT_HEAD && !is_servant_of_ratvar(user))
+ if(slot == ITEM_SLOT_HEAD && !is_servant_of_ratvar(user))
if(!iscultist(user))
to_chat(user, "\"Now now, this is for my servants, not you.\"")
user.visible_message("As [user] puts [src] on, it flickers off [user.p_their()] head!", "The helmet flickers off your head, leaving only nausea!")
@@ -105,7 +105,7 @@
/obj/item/clothing/suit/armor/clockwork/equipped(mob/living/user, slot)
..()
- if(slot == SLOT_WEAR_SUIT && !is_servant_of_ratvar(user))
+ if(slot == ITEM_SLOT_OCLOTHING && !is_servant_of_ratvar(user))
if(!iscultist(user))
to_chat(user, "\"Now now, this is for my servants, not you.\"")
user.visible_message("As [user] puts [src] on, it flickers off [user.p_their()] body!", "The cuirass flickers off your body, leaving only nausea!")
@@ -165,7 +165,7 @@
/obj/item/clothing/gloves/clockwork/equipped(mob/living/user, slot)
..()
- if(slot == SLOT_GLOVES && !is_servant_of_ratvar(user))
+ if(slot == ITEM_SLOT_GLOVES && !is_servant_of_ratvar(user))
if(!iscultist(user))
to_chat(user, "\"Now now, this is for my servants, not you.\"")
user.visible_message("As [user] puts [src] on, it flickers off [user.p_their()] arms!", "The gauntlets flicker off your arms, leaving only nausea!")
@@ -215,7 +215,7 @@
/obj/item/clothing/shoes/clockwork/equipped(mob/living/user, slot)
..()
- if(slot == SLOT_SHOES && !is_servant_of_ratvar(user))
+ if(slot == ITEM_SLOT_FEET && !is_servant_of_ratvar(user))
if(!iscultist(user))
to_chat(user, "\"Now now, this is for my servants, not you.\"")
user.visible_message("As [user] puts [src] on, it flickers off [user.p_their()] feet!", "The treads flicker off your feet, leaving only nausea!")
diff --git a/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm b/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm
index daee9f5c2c..9342cd8ea5 100644
--- a/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm
+++ b/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm
@@ -117,4 +117,4 @@
S.no_cost = TRUE
if(seasonal_hat && seasonal_hat != "none")
var/obj/item/hat = new seasonal_hat(construct)
- construct.equip_to_slot_or_del(hat, SLOT_HEAD)
+ construct.equip_to_slot_or_del(hat, ITEM_SLOT_HEAD)
diff --git a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
index e748da8765..138f04feb3 100644
--- a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
+++ b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
@@ -28,13 +28,13 @@
return ..()
/obj/item/clothing/glasses/judicial_visor/item_action_slot_check(slot, mob/user, datum/action/A)
- if(slot != SLOT_GLASSES)
+ if(slot != ITEM_SLOT_EYES)
return 0
return ..()
/obj/item/clothing/glasses/judicial_visor/equipped(mob/living/user, slot)
..()
- if(slot != SLOT_GLASSES)
+ if(slot != ITEM_SLOT_EYES)
update_status(FALSE)
if(blaster.ranged_ability_user)
blaster.remove_ranged_ability()
@@ -55,13 +55,13 @@
addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
/obj/item/clothing/glasses/judicial_visor/proc/check_on_mob(mob/user)
- if(user && src != user.get_item_by_slot(SLOT_GLASSES)) //if we happen to check and we AREN'T in the slot, we need to remove our shit from whoever we got dropped from
+ if(user && src != user.get_item_by_slot(ITEM_SLOT_EYES)) //if we happen to check and we AREN'T in the slot, we need to remove our shit from whoever we got dropped from
update_status(FALSE)
if(blaster.ranged_ability_user)
blaster.remove_ranged_ability()
/obj/item/clothing/glasses/judicial_visor/attack_self(mob/user)
- if(is_servant_of_ratvar(user) && src == user.get_item_by_slot(SLOT_GLASSES))
+ if(is_servant_of_ratvar(user) && src == user.get_item_by_slot(ITEM_SLOT_EYES))
blaster.toggle(user)
/obj/item/clothing/glasses/judicial_visor/proc/update_status(change_to)
@@ -89,7 +89,7 @@
if(!src)
return 0
recharging = FALSE
- if(user && src == user.get_item_by_slot(SLOT_GLASSES))
+ if(user && src == user.get_item_by_slot(ITEM_SLOT_EYES))
to_chat(user, "Your [name] hums. It is ready.")
else
active = FALSE
@@ -115,7 +115,7 @@
/obj/effect/proc_holder/judicial_visor/InterceptClickOn(mob/living/caller, params, atom/target)
if(..())
return
- if(ranged_ability_user.incapacitated() || !visor || visor != ranged_ability_user.get_item_by_slot(SLOT_GLASSES))
+ if(ranged_ability_user.incapacitated() || !visor || visor != ranged_ability_user.get_item_by_slot(ITEM_SLOT_EYES))
remove_ranged_ability()
return
diff --git a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm
index 5e25b8de82..837844d0cb 100644
--- a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm
+++ b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm
@@ -75,7 +75,7 @@
/obj/item/clothing/glasses/wraith_spectacles/equipped(mob/living/user, slot)
..()
- if(slot != SLOT_GLASSES || up)
+ if(slot != ITEM_SLOT_EYES || up)
return
if(HAS_TRAIT(user, TRAIT_BLIND))
to_chat(user, "\"You're blind, idiot. Stop embarrassing yourself.\"" )
diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
index 7ba4ce0936..be4785f4a7 100644
--- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
+++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
@@ -200,18 +200,18 @@
/datum/action/innate/clockwork_armaments/Activate()
var/do_message = 0
- var/obj/item/I = owner.get_item_by_slot(SLOT_WEAR_SUIT)
+ var/obj/item/I = owner.get_item_by_slot(ITEM_SLOT_OCLOTHING)
if(remove_item_if_better(I, owner))
- do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/suit/armor/clockwork(null), SLOT_WEAR_SUIT)
- I = owner.get_item_by_slot(SLOT_HEAD)
+ do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/suit/armor/clockwork(null), ITEM_SLOT_OCLOTHING)
+ I = owner.get_item_by_slot(ITEM_SLOT_HEAD)
if(remove_item_if_better(I, owner))
- do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/head/helmet/clockwork(null), SLOT_HEAD)
- I = owner.get_item_by_slot(SLOT_GLOVES)
+ do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/head/helmet/clockwork(null), ITEM_SLOT_HEAD)
+ I = owner.get_item_by_slot(ITEM_SLOT_GLOVES)
if(remove_item_if_better(I, owner))
- do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/gloves/clockwork(null), SLOT_GLOVES)
- I = owner.get_item_by_slot(SLOT_SHOES)
+ do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/gloves/clockwork(null), ITEM_SLOT_GLOVES)
+ I = owner.get_item_by_slot(ITEM_SLOT_FEET)
if(remove_item_if_better(I, owner))
- do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/shoes/clockwork(null), SLOT_SHOES)
+ do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/shoes/clockwork(null), ITEM_SLOT_FEET)
if(do_message)
owner.visible_message("Strange armor appears on [owner]!", "A bright shimmer runs down your body, equipping you with Ratvarian armor.")
playsound(owner, 'sound/magic/clockwork/fellowship_armory.ogg', 15 * do_message, TRUE) //get sound loudness based on how much we equipped
@@ -309,16 +309,16 @@
continue
T = get_turf(M)
var/heal_ticks = 0 //one heal tick for each piece of ratvarian armor worn
- var/obj/item/I = H.get_item_by_slot(SLOT_WEAR_SUIT)
+ var/obj/item/I = H.get_item_by_slot(ITEM_SLOT_OCLOTHING)
if(is_type_in_typecache(I, ratvarian_armor_typecache))
heal_ticks++
- I = H.get_item_by_slot(SLOT_HEAD)
+ I = H.get_item_by_slot(ITEM_SLOT_HEAD)
if(is_type_in_typecache(I, ratvarian_armor_typecache))
heal_ticks++
- I = H.get_item_by_slot(SLOT_GLOVES)
+ I = H.get_item_by_slot(ITEM_SLOT_GLOVES)
if(is_type_in_typecache(I, ratvarian_armor_typecache))
heal_ticks++
- I = H.get_item_by_slot(SLOT_SHOES)
+ I = H.get_item_by_slot(ITEM_SLOT_FEET)
if(is_type_in_typecache(I, ratvarian_armor_typecache))
heal_ticks++
if(heal_ticks)
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index 521c32fe3d..0efde2d3db 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -678,12 +678,12 @@
uses--
var/mob/living/carbon/C = target
C.visible_message("Otherworldly armor suddenly appears on [C]!")
- C.equip_to_slot_or_del(new /obj/item/clothing/under/color/black,SLOT_W_UNIFORM)
- C.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), SLOT_HEAD)
- C.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), SLOT_WEAR_SUIT)
- C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), SLOT_SHOES)
- C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), SLOT_BACK)
- C.equip_to_slot_or_del(new /obj/item/clothing/gloves/fingerless/pugilist/hungryghost(user), SLOT_GLOVES)
+ C.equip_to_slot_or_del(new /obj/item/clothing/under/color/black,ITEM_SLOT_ICLOTHING)
+ C.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), ITEM_SLOT_HEAD)
+ C.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), ITEM_SLOT_OCLOTHING)
+ C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), ITEM_SLOT_FEET)
+ C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), ITEM_SLOT_BACK)
+ C.equip_to_slot_or_del(new /obj/item/clothing/gloves/fingerless/pugilist/hungryghost(user), ITEM_SLOT_GLOVES)
if(C == user)
qdel(src) //Clears the hands
C.put_in_hands(new /obj/item/melee/cultblade(user))
diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm
index a18523069e..2850cb85cc 100644
--- a/code/modules/antagonists/cult/cult.dm
+++ b/code/modules/antagonists/cult/cult.dm
@@ -49,7 +49,10 @@
cult_team = new_team
/datum/antagonist/cult/proc/add_objectives()
- objectives |= cult_team?.objectives
+//ambition start
+ if(cult_team)
+ objectives |= cult_team.objectives
+//ambition end
/datum/antagonist/cult/Destroy()
QDEL_NULL(communion)
@@ -95,9 +98,9 @@
/datum/antagonist/cult/proc/cult_give_item(obj/item/item_path, mob/living/carbon/human/mob)
var/list/slots = list(
- "backpack" = SLOT_IN_BACKPACK,
- "left pocket" = SLOT_L_STORE,
- "right pocket" = SLOT_R_STORE
+ "backpack" = ITEM_SLOT_BACKPACK,
+ "left pocket" = ITEM_SLOT_LPOCKET,
+ "right pocket" = ITEM_SLOT_RPOCKET
)
var/T = new item_path(mob)
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index 7981a10701..3b73a998e7 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -1090,7 +1090,7 @@ structure_check() searches for nearby cultist structures required for the invoca
/proc/hudFix(mob/living/carbon/human/target)
if(!target || !target.client)
return
- var/obj/O = target.get_item_by_slot(SLOT_GLASSES)
+ var/obj/O = target.get_item_by_slot(ITEM_SLOT_EYES)
if(istype(O, /obj/item/clothing/glasses/hud/security))
var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED]
AH.add_hud_to(target)
diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm
index 65ce89d33f..9f69f10887 100644
--- a/code/modules/antagonists/devil/devil.dm
+++ b/code/modules/antagonists/devil/devil.dm
@@ -460,10 +460,10 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
return -1
currentMob.change_mob_type( /mob/living/carbon/human, targetturf, null, 1)
var/mob/living/carbon/human/H = owner.current
- H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/civilian/lawyer/black(H), SLOT_W_UNIFORM)
- H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), SLOT_SHOES)
- H.equip_to_slot_or_del(new /obj/item/storage/briefcase(H), SLOT_HANDS)
- H.equip_to_slot_or_del(new /obj/item/pen(H), SLOT_L_STORE)
+ H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/civilian/lawyer/black(H), ITEM_SLOT_ICLOTHING)
+ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), ITEM_SLOT_FEET)
+ H.equip_to_slot_or_del(new /obj/item/storage/briefcase(H), ITEM_SLOT_HANDS)
+ H.equip_to_slot_or_del(new /obj/item/pen(H), ITEM_SLOT_LPOCKET)
if(SOULVALUE >= BLOOD_THRESHOLD)
H.set_species(/datum/species/lizard, 1)
H.underwear = "Nude"
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
index fc0a5cdc6a..d7334d6c9c 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
@@ -72,9 +72,9 @@
/datum/antagonist/heretic/proc/ecult_give_item(obj/item/item_path, mob/living/carbon/human/H)
var/list/slots = list(
- "backpack" = SLOT_IN_BACKPACK,
- "left pocket" = SLOT_L_STORE,
- "right pocket" = SLOT_R_STORE
+ "backpack" = ITEM_SLOT_BACKPACK,
+ "left pocket" = ITEM_SLOT_LPOCKET,
+ "right pocket" = ITEM_SLOT_RPOCKET
)
var/T = new item_path(H)
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_items.dm b/code/modules/antagonists/eldritch_cult/eldritch_items.dm
index 28228aedd6..c0f3e2be7c 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_items.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_items.dm
@@ -145,7 +145,7 @@
/obj/item/clothing/neck/eldritch_amulet/equipped(mob/user, slot)
. = ..()
- if(ishuman(user) && user.mind && slot == SLOT_NECK && (IS_HERETIC(user) || IS_HERETIC_MONSTER(user)))
+ if(ishuman(user) && user.mind && slot == ITEM_SLOT_NECK && (IS_HERETIC(user) || IS_HERETIC_MONSTER(user)))
ADD_TRAIT(user, trait, CLOTHING_TRAIT)
user.update_sight()
@@ -239,7 +239,7 @@
/obj/item/clothing/mask/void_mask/equipped(mob/user, slot)
. = ..()
- if(ishuman(user) && user.mind && slot == SLOT_WEAR_MASK)
+ if(ishuman(user) && user.mind && slot == ITEM_SLOT_MASK)
local_user = user
START_PROCESSING(SSobj, src)
diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm
index 43a7e561c0..a8e57ee08b 100644
--- a/code/modules/antagonists/ert/ert.dm
+++ b/code/modules/antagonists/ert/ert.dm
@@ -234,8 +234,8 @@
var/obj/O = new C(owner.current)
var/list/slots = list (
"backpack" = ITEM_SLOT_BACKPACK,
- "left pocket" = SLOT_L_STORE,
- "right pocket" = SLOT_R_STORE
+ "left pocket" = ITEM_SLOT_LPOCKET,
+ "right pocket" = ITEM_SLOT_RPOCKET
)
var/mob/living/carbon/human/H = owner.current
var/equipped = H.equip_in_one_of_slots(O, slots)
diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm
index ffca67b882..b2fce0269a 100644
--- a/code/modules/antagonists/highlander/highlander.dm
+++ b/code/modules/antagonists/highlander/highlander.dm
@@ -45,11 +45,11 @@
qdel(I)
for(var/obj/item/I in H.held_items)
qdel(I)
- H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/kilt/highlander(H), SLOT_W_UNIFORM)
- H.equip_to_slot_or_del(new /obj/item/radio/headset/heads/captain(H), SLOT_EARS)
- H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/highlander(H), SLOT_HEAD)
- H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), SLOT_SHOES)
- H.equip_to_slot_or_del(new /obj/item/pinpointer/nuke(H), SLOT_L_STORE)
+ H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/kilt/highlander(H), ITEM_SLOT_ICLOTHING)
+ H.equip_to_slot_or_del(new /obj/item/radio/headset/heads/captain(H), ITEM_SLOT_EARS)
+ H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/highlander(H), ITEM_SLOT_HEAD)
+ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), ITEM_SLOT_FEET)
+ H.equip_to_slot_or_del(new /obj/item/pinpointer/nuke(H), ITEM_SLOT_LPOCKET)
for(var/obj/item/pinpointer/nuke/P in H)
P.attack_self(H)
var/obj/item/card/id/W = new(H)
@@ -60,7 +60,7 @@
W.registered_name = H.real_name
ADD_TRAIT(W, TRAIT_NODROP, HIGHLANDER)
W.update_label(H.real_name)
- H.equip_to_slot_or_del(W, SLOT_WEAR_ID)
+ H.equip_to_slot_or_del(W, ITEM_SLOT_ID)
sword = new(H)
if(!GLOB.highlander)
diff --git a/code/modules/antagonists/overthrow/overthrow.dm b/code/modules/antagonists/overthrow/overthrow.dm
index f086f5db97..fffd8f9237 100644
--- a/code/modules/antagonists/overthrow/overthrow.dm
+++ b/code/modules/antagonists/overthrow/overthrow.dm
@@ -127,9 +127,9 @@
// Give AI hacking board
var/obj/item/aiModule/core/full/overthrow/O = new(H)
var/list/slots = list (
- "backpack" = SLOT_IN_BACKPACK,
- "left pocket" = SLOT_L_STORE,
- "right pocket" = SLOT_R_STORE
+ "backpack" = ITEM_SLOT_BACKPACK,
+ "left pocket" = ITEM_SLOT_LPOCKET,
+ "right pocket" = ITEM_SLOT_RPOCKET
)
var/where = H.equip_in_one_of_slots(O, slots, critical = TRUE)
if (!where)
diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index 925527f35e..e4625b4ef2 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -272,9 +272,9 @@
if(give_flash)
var/obj/item/assembly/flash/T = new(H)
var/list/slots = list (
- "backpack" = SLOT_IN_BACKPACK,
- "left pocket" = SLOT_L_STORE,
- "right pocket" = SLOT_R_STORE
+ "backpack" = ITEM_SLOT_BACKPACK,
+ "left pocket" = ITEM_SLOT_LPOCKET,
+ "right pocket" = ITEM_SLOT_RPOCKET
)
var/where = H.equip_in_one_of_slots(T, slots, critical = TRUE)
if (!where)
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index 78403d4e27..f184961004 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -240,9 +240,9 @@
folder = new/obj/item/folder/syndicate/blue(mob.loc)
var/list/slots = list (
- "backpack" = SLOT_IN_BACKPACK,
- "left pocket" = SLOT_L_STORE,
- "right pocket" = SLOT_R_STORE
+ "backpack" = ITEM_SLOT_BACKPACK,
+ "left pocket" = ITEM_SLOT_LPOCKET,
+ "right pocket" = ITEM_SLOT_RPOCKET
)
var/where = "At your feet"
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index 44f267358a..6f7ba374f7 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -229,12 +229,12 @@
H.dropItemToGround(I)
var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire)
- H.equip_to_slot_or_del(new hat(H), SLOT_HEAD)
- H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), SLOT_W_UNIFORM)
- H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), SLOT_SHOES)
+ H.equip_to_slot_or_del(new hat(H), ITEM_SLOT_HEAD)
+ H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING)
+ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET)
H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE)
H.put_in_hands(new /obj/item/claymore(H), TRUE)
- H.equip_to_slot_or_del(new /obj/item/spear(H), SLOT_BACK)
+ H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK)
/obj/item/voodoo
diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm
index c52436a3c4..63bb2b5b57 100644
--- a/code/modules/antagonists/wizard/wizard.dm
+++ b/code/modules/antagonists/wizard/wizard.dm
@@ -208,17 +208,17 @@
if(!istype(master_mob) || !istype(H))
return
if(master_mob.ears)
- H.equip_to_slot_or_del(new master_mob.ears.type, SLOT_EARS)
+ H.equip_to_slot_or_del(new master_mob.ears.type, ITEM_SLOT_EARS)
if(master_mob.w_uniform)
- H.equip_to_slot_or_del(new master_mob.w_uniform.type, SLOT_W_UNIFORM)
+ H.equip_to_slot_or_del(new master_mob.w_uniform.type, ITEM_SLOT_ICLOTHING)
if(master_mob.shoes)
- H.equip_to_slot_or_del(new master_mob.shoes.type, SLOT_SHOES)
+ H.equip_to_slot_or_del(new master_mob.shoes.type, ITEM_SLOT_FEET)
if(master_mob.wear_suit)
- H.equip_to_slot_or_del(new master_mob.wear_suit.type, SLOT_WEAR_SUIT)
+ H.equip_to_slot_or_del(new master_mob.wear_suit.type, ITEM_SLOT_OCLOTHING)
if(master_mob.head)
- H.equip_to_slot_or_del(new master_mob.head.type, SLOT_HEAD)
+ H.equip_to_slot_or_del(new master_mob.head.type, ITEM_SLOT_HEAD)
if(master_mob.back)
- H.equip_to_slot_or_del(new master_mob.back.type, SLOT_BACK)
+ H.equip_to_slot_or_del(new master_mob.back.type, ITEM_SLOT_BACK)
//Operation: Fuck off and scare people
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null))
diff --git a/code/modules/atmospherics/auxgm/gas_types.dm b/code/modules/atmospherics/auxgm/gas_types.dm
index aaf3945aac..6ee234d64d 100644
--- a/code/modules/atmospherics/auxgm/gas_types.dm
+++ b/code/modules/atmospherics/auxgm/gas_types.dm
@@ -129,7 +129,7 @@
heat_penalty = 10
transmit_modifier = 30
fire_products = list(GAS_H2O = 1)
- enthalpy = 40000
+ enthalpy = 300000
fire_burn_rate = 2
fire_radiation_released = 50 // arbitrary number, basically 60 moles of trit burning will just barely start to harm you
fire_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST - 50
diff --git a/code/modules/awaymissions/mission_code/jungleresort.dm b/code/modules/awaymissions/mission_code/jungleresort.dm
index 6c82b2c0c4..f520cfdbee 100644
--- a/code/modules/awaymissions/mission_code/jungleresort.dm
+++ b/code/modules/awaymissions/mission_code/jungleresort.dm
@@ -27,7 +27,7 @@
/obj/item/clothing/head/rice_hat/cursed/equipped(mob/M, slot)
. = ..()
- if (slot == SLOT_HEAD)
+ if (slot == ITEM_SLOT_HEAD)
RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index 5d30ccd907..ba3f07bd7d 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -589,7 +589,7 @@
back = /obj/item/storage/backpack
mask = /obj/item/clothing/mask/breath
r_pocket = /obj/item/tank/internals/emergency_oxygen/engi
- internals_slot = SLOT_R_STORE
+ internals_slot = ITEM_SLOT_RPOCKET
/obj/effect/mob_spawn/human/syndicatesoldier/coldres/alive/female
mob_gender = FEMALE
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 9948802bc9..4b93f42d4d 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -154,7 +154,15 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
var/atom/target = locate(href_list["statpanel_item_target"])
if(!target)
return
- Click(target, target.loc, null, "[href_list["statpanel_item_shiftclick"]?"shift=1;":null][href_list["statpanel_item_ctrlclick"]?"ctrl=1;":null]&alt=[href_list["statpanel_item_altclick"]?"alt=1;":null]", FALSE, "statpanel")
+ var/button = "left=1"
+ switch(href_list["statpanel_item_click"])
+ if("middle")
+ button = "middle=1"
+ if("right")
+ button = "right=1"
+ else
+ button = "left=1"
+ Click(target, target.loc, null, "[button];[href_list["statpanel_item_shiftclick"]?"shift=1;":null][href_list["statpanel_item_ctrlclick"]?"ctrl=1;":null]&alt=[href_list["statpanel_item_altclick"]?"alt=1;":null]", FALSE, "statpanel")
/client/proc/is_content_unlocked()
if(!prefs.unlock_content)
@@ -1012,6 +1020,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
var/list/actualview = getviewsize(view)
update_clickcatcher()
parallax_holder.Reset()
+ mob.hud_used.screentip_text.update_view()
mob.reload_fullscreen()
if (isliving(mob))
var/mob/living/M = mob
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 3272060835..5fcb6787d2 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -62,6 +62,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/UI_style = null
var/outline_enabled = TRUE
var/outline_color = COLOR_THEME_MIDNIGHT
+ var/screentip_pref = TRUE
+ var/screentip_color = "#ffd391"
var/buttons_locked = FALSE
var/hotkeys = FALSE
@@ -788,6 +790,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "UI Style:[UI_style] "
dat += "Outline:[outline_enabled ? "Enabled" : "Disabled"] "
dat += "Outline Color: [outline_color ? "" : "Theme-based (null)"] Change "
+ dat += "Screentip:[screentip_pref ? "Enabled" : "Disabled"] "
+ dat += "Screentip Color:Change "
dat += "tgui Monitors:[(tgui_lock) ? "Primary" : "All"] "
dat += "tgui Style:[(tgui_fancy) ? "Fancy" : "No Frills"] "
dat += "Show Runechat Chat Bubbles:[chat_on_map ? "Enabled" : "Disabled"] "
@@ -2136,6 +2140,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/datum/sprite_accessory/S = instance
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
continue
+ if(S.ignore)
+ continue
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
snowflake_taur_list[S.name] = path
var/new_taur
@@ -2746,6 +2752,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/pickedOutlineColor = input(user, "Choose your outline color.", "General Preference", outline_color) as color|null
if(pickedOutlineColor != pickedOutlineColor)
outline_color = pickedOutlineColor // nullable
+ if("screentip_pref")
+ screentip_pref = !screentip_pref
+ if("screentip_color")
+ var/pickedScreentipColor = input(user, "Choose your screentip color.", "General Preference", screentip_color) as color|null
+ if(pickedScreentipColor)
+ screentip_color = pickedScreentipColor
if("tgui_lock")
tgui_lock = !tgui_lock
if("winflash")
@@ -3066,6 +3078,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
save_character()
character.dna.features = features.Copy()
+
character.set_species(chosen_species, icon_update = FALSE, pref_load = TRUE)
character.dna.species.eye_type = eye_type
if(chosen_limb_id && (chosen_limb_id in character.dna.species.allowed_limb_ids))
@@ -3224,10 +3237,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/occupied_slots = L[initial(G.category)] ? L[initial(G.category)] + 1 : 1
LAZYSET(L, initial(G.category), occupied_slots)
switch(slot)
- if(SLOT_IN_BACKPACK)
+ if(ITEM_SLOT_BACKPACK)
if(L[LOADOUT_CATEGORY_BACKPACK] < BACKPACK_SLOT_AMT)
return TRUE
- if(SLOT_HANDS)
+ if(ITEM_SLOT_HANDS)
if(L[LOADOUT_CATEGORY_HANDS] < HANDS_SLOT_AMT)
return TRUE
else
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 72b2f5d949..628a51ed44 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -385,6 +385,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["UI_style"] >> UI_style
S["outline_color"] >> outline_color
S["outline_enabled"] >> outline_enabled
+ S["screentip_pref"] >> screentip_pref
+ S["screentip_color"] >> screentip_color
S["hotkeys"] >> hotkeys
S["chat_on_map"] >> chat_on_map
S["max_chat_length"] >> max_chat_length
@@ -567,6 +569,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["UI_style"], UI_style)
WRITE_FILE(S["outline_enabled"], outline_enabled)
WRITE_FILE(S["outline_color"], outline_color)
+ WRITE_FILE(S["screentip_pref"], screentip_pref)
+ WRITE_FILE(S["screentip_color"], screentip_color)
WRITE_FILE(S["hotkeys"], hotkeys)
WRITE_FILE(S["chat_on_map"], chat_on_map)
WRITE_FILE(S["max_chat_length"], max_chat_length)
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 008772663d..697afd4885 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -63,8 +63,8 @@
// it's TRAIT_NODROP
D.dropItemToGround(target, TRUE)
qdel(old_headgear)
- // where is `SLOT_HEAD` defined? WHO KNOWS
- D.equip_to_slot(new_headgear, SLOT_HEAD)
+ // where is `ITEM_SLOT_HEAD` defined? WHO KNOWS
+ D.equip_to_slot(new_headgear, ITEM_SLOT_HEAD)
return 1
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 1a7c220550..572cce28b2 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -219,7 +219,7 @@
..()
if (!istype(user))
return
- if(slot_flags & slotdefine2slotbit(slot)) //Was equipped to a valid slot for this item?
+ if(slot_flags & slot) //Was equipped to a valid slot for this item?
if(iscarbon(user) && LAZYLEN(zones_disabled))
RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/bristle)
if(LAZYLEN(user_vars_to_edit))
@@ -450,7 +450,7 @@ BLIND // can't see anything
return FALSE
// Skip species restriction checks on non-equipment slots
- if(slot in list(SLOT_IN_BACKPACK, SLOT_L_STORE, SLOT_R_STORE))
+ if(slot in list(ITEM_SLOT_BACKPACK, ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET))
return TRUE
if(species_restricted && ishuman(M))
diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm
index f58be1373a..a2f0c80041 100644
--- a/code/modules/clothing/ears/_ears.dm
+++ b/code/modules/clothing/ears/_ears.dm
@@ -20,7 +20,7 @@
/obj/item/clothing/ears/earmuffs/ComponentInitialize()
. = ..()
AddElement(/datum/element/earhealing)
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
+ AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_EARS))
/obj/item/clothing/ears/headphones
name = "headphones"
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 737bbbb522..9726ab6b59 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -115,7 +115,7 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
/obj/item/clothing/glasses/science/item_action_slot_check(slot, mob/user, datum/action/A)
- if(slot == SLOT_GLASSES)
+ if(slot == ITEM_SLOT_EYES)
return 1
/obj/item/clothing/glasses/night
@@ -158,7 +158,7 @@
/obj/item/clothing/glasses/eyepatch/syndicate/equipped(mob/living/carbon/human/user, slot)
. = ..()
- if(slot == SLOT_GLASSES)
+ if(slot == ITEM_SLOT_EYES)
user.visible_message("Circuitry from the eyepatch links itself to your brain as you put on the eyepatch.")
if(HAS_TRAIT(user, TRAIT_POOR_AIM))
user.visible_message("You hear a fizzing noise from the circuit. That can't be good.")
@@ -351,7 +351,7 @@
/obj/item/clothing/glasses/sunglasses/blindfold/equipped(mob/living/carbon/human/user, slot)
. = ..()
- if(slot == SLOT_GLASSES)
+ if(slot == ITEM_SLOT_EYES)
user.become_blind("blindfold_[REF(src)]")
/obj/item/clothing/glasses/sunglasses/blindfold/dropped(mob/living/carbon/human/user)
@@ -372,7 +372,7 @@
var/colored_before = FALSE
/obj/item/clothing/glasses/sunglasses/blindfold/white/equipped(mob/living/carbon/human/user, slot)
- if(ishuman(user) && slot == SLOT_GLASSES)
+ if(ishuman(user) && slot == ITEM_SLOT_EYES)
update_icon(user)
user.update_inv_glasses() //Color might have been changed by update_icon.
..()
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index cad91315a3..c848dbdfa8 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -18,7 +18,7 @@
/obj/item/clothing/glasses/hud/equipped(mob/living/carbon/human/user, slot)
..()
- if(hud_type && slot == SLOT_GLASSES)
+ if(hud_type && slot == ITEM_SLOT_EYES)
var/datum/atom_hud/H = GLOB.huds[hud_type]
H.add_hud_to(user)
diff --git a/code/modules/clothing/glasses/phantomthief.dm b/code/modules/clothing/glasses/phantomthief.dm
index ba3ea2830e..db77f17218 100644
--- a/code/modules/clothing/glasses/phantomthief.dm
+++ b/code/modules/clothing/glasses/phantomthief.dm
@@ -17,7 +17,7 @@
/obj/item/clothing/glasses/phantomthief/syndicate/examine(mob/user)
. = ..()
- if(user.get_item_by_slot(SLOT_GLASSES) == src)
+ if(user.get_item_by_slot(ITEM_SLOT_EYES) == src)
if(world.time >= nextadrenalinepop)
. += "The built-in adrenaline injector is ready for use."
else
@@ -33,7 +33,7 @@
. = ..()
if(!istype(user))
return
- if(slot != SLOT_GLASSES)
+ if(slot != ITEM_SLOT_EYES)
return
RegisterSignal(user, COMSIG_LIVING_COMBAT_ENABLED, .proc/injectadrenaline)
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index 836b845faa..1e3f2c08cf 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -31,7 +31,7 @@
C.visible_message("[U] sprays glittery rubber on the hands of [C]!")
else
user.visible_message("The rubber fails to stick to [C]'s hands!",
- "The rubber fails to stick to [C]'s [(SLOT_GLOVES in C.check_obscured_slots()) ? "unexposed" : ""] hands!")
+ "The rubber fails to stick to [C]'s [(ITEM_SLOT_GLOVES in C.check_obscured_slots()) ? "unexposed" : ""] hands!")
qdel(src)
@@ -226,7 +226,7 @@
/obj/item/clothing/gloves/color/latex/equipped(mob/user, slot)
..()
- if(slot == SLOT_GLOVES)
+ if(slot == ITEM_SLOT_GLOVES)
ADD_TRAIT(user, carrytrait, GLOVE_TRAIT)
/obj/item/clothing/gloves/color/latex/dropped(mob/user)
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 8c8400a45d..381e70161b 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -9,6 +9,8 @@
equip_delay_other = 20
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
+ heat_protection = HANDS
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
strip_mod = 0.9
custom_price = PRICE_ALMOST_CHEAP
@@ -36,7 +38,7 @@
/obj/item/clothing/gloves/fingerless/pugilist/equipped(mob/user, slot)
. = ..()
- if(slot == SLOT_GLOVES)
+ if(slot == ITEM_SLOT_GLOVES)
wornonce = TRUE
if((HAS_TRAIT(user, TRAIT_NOPUGILIST)))
to_chat(user, "What purpose is there to don the weapons of pugilism if you're already well-practiced in martial arts? Mixing arts is blasphemous!")
@@ -195,7 +197,7 @@
/obj/item/clothing/gloves/fingerless/ablative/equipped(mob/user, slot)
. = ..()
- if(current_equipped_slot == SLOT_GLOVES)
+ if(current_equipped_slot == ITEM_SLOT_GLOVES)
RegisterSignal(user, COMSIG_LIVING_ACTIVE_PARRY_START, .proc/get_component_parry_data)
wornonce = TRUE
@@ -262,7 +264,7 @@
/obj/item/clothing/gloves/fingerless/pugilist/mauler/equipped(mob/user, slot)
. = ..()
- if(slot == SLOT_GLOVES)
+ if(slot == ITEM_SLOT_GLOVES)
wornonce = TRUE
if((HAS_TRAIT(user, TRAIT_NOPUGILIST)))
return
@@ -349,6 +351,8 @@
transfer_prints = TRUE
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
+ heat_protection = HANDS
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
strip_mod = 0.9
/obj/item/clothing/gloves/evening/black
diff --git a/code/modules/clothing/gloves/mittens.dm b/code/modules/clothing/gloves/mittens.dm
index 42250aae2f..b1b17c9afe 100644
--- a/code/modules/clothing/gloves/mittens.dm
+++ b/code/modules/clothing/gloves/mittens.dm
@@ -6,6 +6,8 @@
//item_color = "white"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
+ heat_protection = HANDS
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
resistance_flags = NONE
/obj/item/clothing/gloves/mittens/random
diff --git a/code/modules/clothing/gloves/tacklers.dm b/code/modules/clothing/gloves/tacklers.dm
index 39d39ba58f..754a72ff0c 100644
--- a/code/modules/clothing/gloves/tacklers.dm
+++ b/code/modules/clothing/gloves/tacklers.dm
@@ -6,6 +6,8 @@
transfer_prints = TRUE
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
+ heat_protection = HANDS
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
resistance_flags = NONE
//custom_premium_price = PRICE_EXPENSIVE
/// For storing our tackler datum so we can remove it after
@@ -28,7 +30,7 @@
if(!ishuman(user))
return
switch(slot) // I didn't like how it looked
- if(SLOT_GLOVES)
+ if(ITEM_SLOT_GLOVES)
var/mob/living/carbon/human/H = user
tackler = H.AddComponent(/datum/component/tackler, stamina_cost=tackle_stam_cost, base_knockdown = base_knockdown, range = tackle_range, speed = tackle_speed, skill_mod = skill_mod, min_distance = min_distance)
else
@@ -103,7 +105,7 @@
/obj/item/clothing/gloves/tackler/combat/insulated/infiltrator/equipped(mob/user, slot)
. = ..()
- if(slot == SLOT_GLOVES)
+ if(slot == ITEM_SLOT_GLOVES)
ADD_TRAIT(user, carrytrait, GLOVE_TRAIT)
/obj/item/clothing/gloves/tackler/combat/insulated/infiltrator/dropped(mob/user)
diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm
index 6ad3a19694..ea58d0bc88 100644
--- a/code/modules/clothing/head/_head.dm
+++ b/code/modules/clothing/head/_head.dm
@@ -34,7 +34,7 @@
var/obj/item/WH = H.head
H.visible_message("[src] bounces off [H]'s [WH.name]!", "[src] bounces off your [WH.name], falling to the floor.")
return
- if(H.equip_to_slot_if_possible(src, SLOT_HEAD, FALSE, TRUE))
+ if(H.equip_to_slot_if_possible(src, ITEM_SLOT_HEAD, FALSE, TRUE))
H.visible_message("[src] lands neatly on [H]'s head!", "[src] lands perfectly onto your head!")
return
if(iscyborg(hit_atom))
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 6b698f9619..126b1af40f 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -27,7 +27,7 @@
/obj/item/clothing/head/helmet/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_HEAD))
+ AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_HEAD))
/obj/item/clothing/head/helmet/examine(mob/user)
. = ..()
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 5af694ea1b..592614af61 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -220,7 +220,7 @@
/obj/item/clothing/head/warden/drill/equipped(mob/M, slot)
. = ..()
- if (slot == SLOT_HEAD)
+ if (slot == ITEM_SLOT_HEAD)
RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 76e8ca53df..eb48048c00 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -264,7 +264,8 @@
item_state = "that"
cold_protection = HEAD
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
-
+ heat_protection = HEAD
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
dog_fashion = /datum/dog_fashion/head/santa
beepsky_fashion = /datum/beepsky_fashion/santa
@@ -354,7 +355,7 @@
/obj/item/clothing/head/frenchberet/equipped(mob/M, slot)
. = ..()
- if (slot == SLOT_HEAD)
+ if (slot == ITEM_SLOT_HEAD)
RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 247062581d..21cec4f7d2 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -93,6 +93,8 @@
var/earflaps = TRUE
cold_protection = HEAD
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
+ heat_protection = HEAD
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
///Sprite visible when the ushanka flaps are folded up.
var/upsprite = "ushankaup"
///Sprite visible when the ushanka flaps are folded down.
@@ -147,7 +149,7 @@
beepsky_fashion = /datum/beepsky_fashion/cat
/obj/item/clothing/head/kitty/equipped(mob/living/carbon/human/user, slot)
- if(ishuman(user) && slot == SLOT_HEAD)
+ if(ishuman(user) && slot == ITEM_SLOT_HEAD)
update_icon(user)
user.update_inv_head() //Color might have been changed by update_icon.
..()
@@ -186,7 +188,7 @@
/obj/item/clothing/head/cardborg/equipped(mob/living/user, slot)
..()
- if(ishuman(user) && slot == SLOT_HEAD)
+ if(ishuman(user) && slot == ITEM_SLOT_HEAD)
var/mob/living/carbon/human/H = user
if(istype(H.wear_suit, /obj/item/clothing/suit/cardborg))
var/obj/item/clothing/suit/cardborg/CB = H.wear_suit
@@ -265,7 +267,7 @@
/obj/item/clothing/head/foilhat/equipped(mob/living/carbon/human/user, slot)
. = ..()
- if(slot != SLOT_HEAD || warped)
+ if(slot != ITEM_SLOT_HEAD || warped)
return
if(paranoia)
QDEL_NULL(paranoia)
@@ -295,7 +297,7 @@
if(!isliving(loc) || !paranoia)
return
var/mob/living/target = loc
- if(target.get_item_by_slot(SLOT_HEAD) != src)
+ if(target.get_item_by_slot(ITEM_SLOT_HEAD) != src)
return
QDEL_NULL(paranoia)
if(!target.IsUnconscious())
diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm
index ef7c6a1926..cca13ce1d8 100644
--- a/code/modules/clothing/masks/_masks.dm
+++ b/code/modules/clothing/masks/_masks.dm
@@ -18,7 +18,7 @@
/obj/item/clothing/mask/equipped(mob/M, slot)
. = ..()
- if (slot == SLOT_WEAR_MASK && modifies_speech)
+ if (slot == ITEM_SLOT_MASK && modifies_speech)
RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/masks/cluwne.dm b/code/modules/clothing/masks/cluwne.dm
index a1177e2b47..f39f5e73b8 100644
--- a/code/modules/clothing/masks/cluwne.dm
+++ b/code/modules/clothing/masks/cluwne.dm
@@ -55,7 +55,7 @@
. = ..()
if(!ishuman(user))
return
- if(slot == SLOT_WEAR_MASK)
+ if(slot == ITEM_SLOT_MASK)
var/mob/living/carbon/human/H = user
H.dna.add_mutation(CLUWNEMUT)
return
@@ -88,7 +88,7 @@
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
- if(slot == SLOT_WEAR_MASK)
+ if(slot == ITEM_SLOT_MASK)
if(is_cursed && can_cluwne) //logic predetermined
log_admin("[key_name(H)] was made into a cluwne by [src]")
message_admins("[key_name(H)] got cluwned by [src]")
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index e6a0425920..45da6a9a75 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -290,7 +290,7 @@
. = ..()
if(iscarbon(user))
var/mob/living/carbon/C = user
- if((C.get_item_by_slot(SLOT_HEAD == src)) || (C.get_item_by_slot(SLOT_WEAR_MASK) == src))
+ if((C.get_item_by_slot(ITEM_SLOT_HEAD == src)) || (C.get_item_by_slot(ITEM_SLOT_MASK) == src))
to_chat(user, "You can't tie [src] while wearing it!")
return
if(slot_flags & ITEM_SLOT_HEAD)
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index 28a3343ae6..1f40df0f57 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -226,7 +226,7 @@
return
/obj/item/clothing/neck/petcollar/locked/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
- if(loc == user && user.get_item_by_slot(SLOT_NECK) && lock != FALSE)
+ if(loc == user && user.get_item_by_slot(ITEM_SLOT_NECK) && lock != FALSE)
to_chat(user, "The collar is locked! You'll need unlock the collar before you can take it off!")
return
..()
@@ -323,7 +323,7 @@
. = ..()
if(iscarbon(user))
var/mob/living/carbon/C = user
- if(C.get_item_by_slot(SLOT_NECK) == src)
+ if(C.get_item_by_slot(ITEM_SLOT_NECK) == src)
to_chat(user, "You can't untie [src] while wearing it!")
return
if(user.is_holding(src))
diff --git a/code/modules/clothing/outfits/vr.dm b/code/modules/clothing/outfits/vr.dm
index ac852a35a8..99fc5d1359 100644
--- a/code/modules/clothing/outfits/vr.dm
+++ b/code/modules/clothing/outfits/vr.dm
@@ -36,7 +36,7 @@
. = ..()
var/key = H.key ? H.key : preference_source ? preference_source.key : null
var/obj/item/uplink/U = new /obj/item/uplink/nuclear_restricted(H, key, 80)
- H.equip_to_slot_or_del(U, SLOT_IN_BACKPACK)
+ H.equip_to_slot_or_del(U, ITEM_SLOT_BACKPACK)
var/obj/item/implant/weapons_auth/W = new
W.implant(H)
var/obj/item/implant/explosive/E = new
diff --git a/code/modules/clothing/outfits/vv_outfit.dm b/code/modules/clothing/outfits/vv_outfit.dm
index b9d9bf0b22..de230b254e 100644
--- a/code/modules/clothing/outfits/vv_outfit.dm
+++ b/code/modules/clothing/outfits/vv_outfit.dm
@@ -10,35 +10,35 @@
/datum/outfit/varedit/proc/set_equipement_by_slot(slot,item_path)
switch(slot)
- if(SLOT_W_UNIFORM)
+ if(ITEM_SLOT_ICLOTHING)
uniform = item_path
- if(SLOT_BACK)
+ if(ITEM_SLOT_BACK)
back = item_path
- if(SLOT_WEAR_SUIT)
+ if(ITEM_SLOT_OCLOTHING)
suit = item_path
- if(SLOT_BELT)
+ if(ITEM_SLOT_BELT)
belt = item_path
- if(SLOT_GLOVES)
+ if(ITEM_SLOT_GLOVES)
gloves = item_path
- if(SLOT_SHOES)
+ if(ITEM_SLOT_FEET)
shoes = item_path
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
head = item_path
- if(SLOT_WEAR_MASK)
+ if(ITEM_SLOT_MASK)
mask = item_path
- if(SLOT_NECK)
+ if(ITEM_SLOT_NECK)
neck = item_path
- if(SLOT_EARS)
+ if(ITEM_SLOT_EARS)
ears = item_path
- if(SLOT_GLASSES)
+ if(ITEM_SLOT_EYES)
glasses = item_path
- if(SLOT_WEAR_ID)
+ if(ITEM_SLOT_ID)
id = item_path
- if(SLOT_S_STORE)
+ if(ITEM_SLOT_SUITSTORE)
suit_store = item_path
- if(SLOT_L_STORE)
+ if(ITEM_SLOT_LPOCKET)
l_pocket = item_path
- if(SLOT_R_STORE)
+ if(ITEM_SLOT_RPOCKET)
r_pocket = item_path
@@ -68,7 +68,7 @@
//Copy equipment
var/list/result = list()
- var/list/slots_to_check = list(SLOT_W_UNIFORM,SLOT_BACK,SLOT_WEAR_SUIT,SLOT_BELT,SLOT_GLOVES,SLOT_SHOES,SLOT_HEAD,SLOT_WEAR_MASK,SLOT_NECK,SLOT_EARS,SLOT_GLASSES,SLOT_WEAR_ID,SLOT_S_STORE,SLOT_L_STORE,SLOT_R_STORE)
+ var/list/slots_to_check = list(ITEM_SLOT_ICLOTHING,ITEM_SLOT_BACK,ITEM_SLOT_OCLOTHING,ITEM_SLOT_BELT,ITEM_SLOT_GLOVES,ITEM_SLOT_FEET,ITEM_SLOT_HEAD,ITEM_SLOT_MASK,ITEM_SLOT_NECK,ITEM_SLOT_EARS,ITEM_SLOT_EYES,ITEM_SLOT_ID,ITEM_SLOT_SUITSTORE,ITEM_SLOT_LPOCKET,ITEM_SLOT_RPOCKET)
for(var/s in slots_to_check)
var/obj/item/I = get_item_by_slot(s)
var/vedits = collect_vv(I)
@@ -79,7 +79,7 @@
//Copy access
O.stored_access = list()
- var/obj/item/id_slot = get_item_by_slot(SLOT_WEAR_ID)
+ var/obj/item/id_slot = get_item_by_slot(ITEM_SLOT_ID)
if(id_slot)
O.stored_access |= id_slot.GetAccess()
//Copy hands
@@ -98,7 +98,7 @@
result["RHAND"] = vedits
O.vv_values = result
//Copy backpack contents if exist.
- var/obj/item/backpack = get_item_by_slot(SLOT_BACK)
+ var/obj/item/backpack = get_item_by_slot(ITEM_SLOT_BACK)
if(istype(backpack) && SEND_SIGNAL(backpack, COMSIG_CONTAINS_STORAGE))
var/list/bp_stuff = list()
var/list/typecounts = list()
@@ -136,7 +136,7 @@
for(var/vname in edits)
I.vv_edit_var(vname,edits[vname])
//Apply access
- var/obj/item/id_slot = H.get_item_by_slot(SLOT_WEAR_ID)
+ var/obj/item/id_slot = H.get_item_by_slot(ITEM_SLOT_ID)
if(id_slot)
var/obj/item/card/id/card = id_slot.GetID()
if(istype(card))
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index c98824fa7f..d8ac875df5 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -87,7 +87,7 @@
/obj/item/clothing/shoes/equipped(mob/user, slot)
. = ..()
- if(offset && slot_flags & slotdefine2slotbit(slot))
+ if(offset && (slot_flags & slot))
user.pixel_y += offset
worn_y_dimension -= (offset * 2)
user.update_inv_shoes()
diff --git a/code/modules/clothing/shoes/cluwne.dm b/code/modules/clothing/shoes/cluwne.dm
index fbe1ba624b..aec57a2148 100644
--- a/code/modules/clothing/shoes/cluwne.dm
+++ b/code/modules/clothing/shoes/cluwne.dm
@@ -23,7 +23,7 @@
. = ..()
if(!ishuman(user))
return
- if(slot == SLOT_SHOES)
+ if(slot == ITEM_SLOT_FEET)
var/mob/living/carbon/human/H = user
H.dna.add_mutation(CLUWNEMUT)
return
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index 773b1ac361..cd01d6f099 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -96,7 +96,7 @@
/obj/item/clothing/shoes/magboots/crushing/equipped(mob/user,slot)
. = ..()
- if (slot == SLOT_SHOES && magpulse)
+ if (slot == ITEM_SLOT_FEET && magpulse)
RegisterSignal(user, COMSIG_MOVABLE_MOVED,.proc/crush)
/obj/item/clothing/shoes/magboots/crushing/dropped(mob/user)
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 669ffa1780..7a67308760 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -28,7 +28,7 @@
/obj/item/clothing/shoes/combat/sneakboots/equipped(mob/user, slot)
. = ..()
- if(slot == SLOT_SHOES)
+ if(slot == ITEM_SLOT_FEET)
ADD_TRAIT(user, TRAIT_SILENT_STEP, SHOES_TRAIT)
/obj/item/clothing/shoes/combat/sneakboots/dropped(mob/user)
@@ -112,7 +112,7 @@
/obj/item/clothing/shoes/clown_shoes/equipped(mob/user, slot)
. = ..()
- if(slot == SLOT_SHOES)
+ if(slot == ITEM_SLOT_FEET)
if(enabled_waddle)
waddle = user.AddComponent(/datum/component/waddling)
if(user.mind && HAS_TRAIT(user.mind, TRAIT_CLOWN_MENTALITY))
@@ -340,7 +340,7 @@
/obj/item/clothing/shoes/wheelys/ui_action_click(mob/user, action)
if(!isliving(user))
return
- if(!istype(user.get_item_by_slot(SLOT_SHOES), /obj/item/clothing/shoes/wheelys))
+ if(!istype(user.get_item_by_slot(ITEM_SLOT_FEET), /obj/item/clothing/shoes/wheelys))
to_chat(user, "You must be wearing the wheely-heels to use them!")
return
if(!(W.is_occupant(user)))
@@ -460,7 +460,7 @@
/obj/item/clothing/shoes/wallwalkers/equipped(mob/user,slot)
. = ..()
- if(slot == SLOT_SHOES)
+ if(slot == ITEM_SLOT_FEET)
RegisterSignal(user, COMSIG_MOB_CLIENT_MOVE,.proc/intercept_user_move)
/obj/item/clothing/shoes/wallwalkers/dropped(mob/user)
diff --git a/code/modules/clothing/shoes/taeclowndo.dm b/code/modules/clothing/shoes/taeclowndo.dm
index c0f8a77543..82f467d8b1 100644
--- a/code/modules/clothing/shoes/taeclowndo.dm
+++ b/code/modules/clothing/shoes/taeclowndo.dm
@@ -15,7 +15,7 @@
var/mob/living/carbon/human/H = user
if(!(HAS_TRAIT(H, TRAIT_CLUMSY)) && !(H.mind && HAS_TRAIT(H.mind, TRAIT_CLOWN_MENTALITY)))
return
- if(slot == SLOT_SHOES)
+ if(slot == ITEM_SLOT_FEET)
spells = new
for(var/spell in spelltypes)
var/obj/effect/proc_holder/spell/S = new spell
@@ -29,7 +29,7 @@
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
- if(H.get_item_by_slot(SLOT_SHOES) == src)
+ if(H.get_item_by_slot(ITEM_SLOT_FEET) == src)
for(var/spell in spells)
var/obj/effect/proc_holder/spell/S = spell
H.mind.spell_list.Remove(S)
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 6642731d8b..e30b0953c6 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -107,7 +107,7 @@
teleport_now.UpdateButtonIcon()
- var/list/nonsafe_slots = list(SLOT_BELT, SLOT_BACK)
+ var/list/nonsafe_slots = list(ITEM_SLOT_BELT, ITEM_SLOT_BACK)
var/list/exposed = list()
for(var/slot in nonsafe_slots)
var/obj/item/slot_item = user.get_item_by_slot(slot)
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 18138bf4b6..d8a6426295 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -50,12 +50,12 @@
soundloop.stop(user)
/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot, mob/user, datum/action/A)
- if(slot == SLOT_HEAD)
+ if(slot == ITEM_SLOT_HEAD)
return 1
/obj/item/clothing/head/helmet/space/hardsuit/equipped(mob/user, slot)
..()
- if(slot != SLOT_HEAD)
+ if(slot != ITEM_SLOT_HEAD)
if(suit)
suit.RemoveHelmet()
soundloop.stop(user)
@@ -118,7 +118,7 @@
if(jetpack)
to_chat(user, "[src] already has a jetpack installed.")
return
- if(src == user.get_item_by_slot(SLOT_WEAR_SUIT)) //Make sure the player is not wearing the suit before applying the upgrade.
+ if(src == user.get_item_by_slot(ITEM_SLOT_OCLOTHING)) //Make sure the player is not wearing the suit before applying the upgrade.
to_chat(user, "You cannot install the upgrade to [src] while wearing it.")
return
@@ -130,7 +130,7 @@
if(!jetpack)
to_chat(user, "[src] has no jetpack installed.")
return
- if(src == user.get_item_by_slot(SLOT_WEAR_SUIT))
+ if(src == user.get_item_by_slot(ITEM_SLOT_OCLOTHING))
to_chat(user, "You cannot remove the jetpack from [src] while wearing it.")
return
@@ -145,7 +145,7 @@
/obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot)
..()
if(jetpack)
- if(slot == SLOT_WEAR_SUIT)
+ if(slot == ITEM_SLOT_OCLOTHING)
for(var/X in jetpack.actions)
var/datum/action/A = X
A.Grant(user)
@@ -158,7 +158,7 @@
A.Remove(user)
/obj/item/clothing/suit/space/hardsuit/item_action_slot_check(slot, mob/user, datum/action/A)
- if(slot == SLOT_WEAR_SUIT) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit.
+ if(slot == ITEM_SLOT_OCLOTHING) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit.
return 1
//Engineering
@@ -488,7 +488,7 @@
/obj/item/clothing/head/helmet/space/hardsuit/medical/equipped(mob/living/carbon/human/user, slot)
..()
- if (slot == SLOT_HEAD)
+ if (slot == ITEM_SLOT_HEAD)
var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED]
DHUD.add_hud_to(user)
@@ -528,7 +528,7 @@
/obj/item/clothing/head/helmet/space/hardsuit/rd/equipped(mob/living/carbon/human/user, slot)
..()
- if (slot == SLOT_HEAD)
+ if (slot == ITEM_SLOT_HEAD)
var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC]
DHUD.add_hud_to(user)
@@ -702,7 +702,7 @@
/obj/item/clothing/head/helmet/space/hardsuit/ancient/mason/equipped(mob/living/carbon/human/user, slot)
..()
- if (slot == SLOT_HEAD)
+ if (slot == ITEM_SLOT_HEAD)
var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC]
DHUD.add_hud_to(user)
ADD_TRAIT(user, TRAIT_TESLA_SHOCKIMMUNE, "mason_hardsuit")
@@ -726,7 +726,7 @@
/obj/item/clothing/suit/space/hardsuit/ancient/equipped(mob/user, slot)
. = ..()
- if(slot != SLOT_WEAR_SUIT)
+ if(slot != ITEM_SLOT_OCLOTHING)
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
return
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 513ad94365..57d2ae5c69 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -206,7 +206,7 @@
/obj/item/clothing/suit/cardborg/equipped(mob/living/user, slot)
..()
- if(slot == SLOT_WEAR_SUIT)
+ if(slot == ITEM_SLOT_OCLOTHING)
disguise(user)
/obj/item/clothing/suit/cardborg/dropped(mob/living/user)
@@ -279,7 +279,9 @@
item_state = "labcoat"
body_parts_covered = CHEST|GROIN|ARMS|LEGS|FEET
cold_protection = CHEST|GROIN|ARMS
+ heat_protection = CHEST|GROIN|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Space carp like space, so you should too
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/gun/ballistic/automatic/speargun, /obj/item/staff/bostaff)
hoodtype = /obj/item/clothing/head/hooded/carp_hood
@@ -289,7 +291,9 @@
icon_state = "carp_casual"
body_parts_covered = HEAD
cold_protection = HEAD
+ heat_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
flags_inv = HIDEHAIR|HIDEEARS
/obj/item/clothing/suit/hooded/ian_costume //It's Ian, rub his bell- oh god what happened to his inside parts?
@@ -362,7 +366,10 @@
item_state = "ran_suit"
body_parts_covered = CHEST|GROIN|LEGS
flags_inv = HIDEJUMPSUIT|HIDETAUR
- heat_protection = CHEST|GROIN|LEGS //fluffy tails!
+ cold_protection = CHEST|GROIN|LEGS //fluffy tails!
+ min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Bleh, same as winter coat
+ heat_protection = CHEST|GROIN|LEGS
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
/obj/item/clothing/head/ran
@@ -419,7 +426,9 @@
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/radio)
body_parts_covered = CHEST|ARMS
cold_protection = CHEST|GROIN|ARMS
+ heat_protection = CHEST|GROIN|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
/obj/item/clothing/suit/jacket/flannel
@@ -520,6 +529,7 @@
icon_state = "leathercoat"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
cold_protection = CHEST|GROIN|ARMS|LEGS
+ heat_protection = CHEST|GROIN|ARMS|LEGS
mutantrace_variation = STYLE_DIGITIGRADE
/obj/item/clothing/suit/jacket/puffer
@@ -537,6 +547,7 @@
item_state = "armor"
body_parts_covered = CHEST|GROIN
cold_protection = CHEST|GROIN
+ heat_protection = CHEST|GROIN
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 30, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/suit/jacket/miljacket
@@ -655,7 +666,9 @@
item_state = "coatwinter"
body_parts_covered = CHEST|GROIN|ARMS
cold_protection = CHEST|GROIN|ARMS
+ heat_protection = CHEST|GROIN|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
@@ -666,7 +679,9 @@
icon_state = "winterhood"
body_parts_covered = HEAD
cold_protection = HEAD
+ heat_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
+ max_heat_protection_temperature = COAT_MAX_TEMP_PROTECT
flags_inv = HIDEHAIR|HIDEEARS
rad_flags = RAD_NO_CONTAMINATE
@@ -1012,7 +1027,7 @@
/obj/item/clothing/suit/hooded/wintercoat/ratvar/equipped(mob/living/user,slot)
..()
- if (slot != SLOT_WEAR_SUIT || !real)
+ if (slot != ITEM_SLOT_OCLOTHING || !real)
return
if (is_servant_of_ratvar(user))
return
@@ -1034,7 +1049,7 @@
/obj/item/clothing/suit/hooded/wintercoat/narsie/equipped(mob/living/user,slot)
..()
- if (slot != SLOT_WEAR_SUIT || !real)
+ if (slot != ITEM_SLOT_OCLOTHING || !real)
return
if (iscultist(user))
return
diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm
index 98fb836c38..608aca2aad 100644
--- a/code/modules/clothing/suits/reactive_armour.dm
+++ b/code/modules/clothing/suits/reactive_armour.dm
@@ -51,7 +51,7 @@
icon_state = "reactiveoff"
item_state = "reactiveoff"
add_fingerprint(user)
- if(user.get_item_by_slot(SLOT_WEAR_SUIT) == src)
+ if(user.get_item_by_slot(ITEM_SLOT_OCLOTHING) == src)
user.update_inv_wear_suit()
/obj/item/clothing/suit/armor/reactive/emp_act(severity)
@@ -177,7 +177,7 @@
/obj/item/clothing/suit/armor/reactive/tesla/equipped(mob/user, slot)
..()
- if(slot_flags & slotdefine2slotbit(slot)) //Was equipped to a valid slot for this item?
+ if(slot_flags & slot) //Was equipped to a valid slot for this item?
ADD_TRAIT(user, TRAIT_TESLA_SHOCKIMMUNE, "reactive_tesla_armor")
/obj/item/clothing/suit/armor/reactive/tesla/block_action(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm
index 78708f54bb..5ee247e135 100644
--- a/code/modules/clothing/suits/toggles.dm
+++ b/code/modules/clothing/suits/toggles.dm
@@ -31,11 +31,11 @@
ToggleHood()
/obj/item/clothing/suit/hooded/item_action_slot_check(slot, mob/user, datum/action/A)
- if(slot == SLOT_WEAR_SUIT || slot == SLOT_NECK)
+ if(slot == ITEM_SLOT_OCLOTHING || slot == ITEM_SLOT_NECK)
return 1
/obj/item/clothing/suit/hooded/equipped(mob/user, slot)
- if(slot != SLOT_WEAR_SUIT && slot != SLOT_NECK)
+ if(slot != ITEM_SLOT_OCLOTHING && slot != ITEM_SLOT_NECK)
RemoveHood()
..()
@@ -80,7 +80,7 @@
if(H.head)
to_chat(H, "You're already wearing something on your head!")
return
- else if(H.equip_to_slot_if_possible(hood,SLOT_HEAD,0,0,1))
+ else if(H.equip_to_slot_if_possible(hood,ITEM_SLOT_HEAD,0,0,1))
suittoggled = TRUE
update_icon()
H.update_inv_wear_suit()
@@ -102,7 +102,7 @@
/obj/item/clothing/head/hooded/equipped(mob/user, slot)
..()
- if(slot != SLOT_HEAD)
+ if(slot != ITEM_SLOT_HEAD)
if(suit)
suit.RemoveHood()
else
@@ -177,7 +177,7 @@
/obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot)
if(!helmettype)
return
- if(slot != SLOT_WEAR_SUIT)
+ if(slot != ITEM_SLOT_OCLOTHING)
RemoveHelmet()
..()
@@ -222,7 +222,7 @@
if(message)
to_chat(H, "You're already wearing something on your head!")
return
- else if(H.equip_to_slot_if_possible(helmet,SLOT_HEAD,0,0,1))
+ else if(H.equip_to_slot_if_possible(helmet,ITEM_SLOT_HEAD,0,0,1))
if(message)
to_chat(H, "You engage the helmet on the hardsuit.")
suittoggled = TRUE
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 977e916f87..5b131749b8 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -167,7 +167,7 @@
actions_types = list(/datum/action/item_action/stickmen)
/obj/item/clothing/suit/wizrobe/paper/item_action_slot_check(slot, mob/user, datum/action/A)
- if(A.type == /datum/action/item_action/stickmen && slot != SLOT_WEAR_SUIT)
+ if(A.type == /datum/action/item_action/stickmen && slot != ITEM_SLOT_OCLOTHING)
return FALSE
return ..()
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index 59af632d2a..61e4bb5149 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -114,7 +114,7 @@
if(!alt_covers_chest)
body_parts_covered |= CHEST
- if(attached_accessory && slot != SLOT_HANDS && ishuman(user))
+ if(attached_accessory && slot != ITEM_SLOT_HANDS && ishuman(user))
var/mob/living/carbon/human/H = user
attached_accessory.on_uniform_equip(src, user)
if(attached_accessory.above_suit)
diff --git a/code/modules/clothing/under/cluwne.dm b/code/modules/clothing/under/cluwne.dm
index 5a908c5663..e1af4b5171 100644
--- a/code/modules/clothing/under/cluwne.dm
+++ b/code/modules/clothing/under/cluwne.dm
@@ -16,7 +16,7 @@
/obj/item/clothing/under/cluwne/equipped(mob/living/carbon/user, slot)
if(!ishuman(user))
return
- if(slot == SLOT_W_UNIFORM)
+ if(slot == ITEM_SLOT_ICLOTHING)
var/mob/living/carbon/human/H = user
H.dna.add_mutation(CLUWNEMUT)
return ..()
diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm
index 824f026e8c..06d2771d88 100644
--- a/code/modules/clothing/under/color.dm
+++ b/code/modules/clothing/under/color.dm
@@ -17,7 +17,7 @@
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
- H.equip_to_slot_or_del(new C(H), SLOT_W_UNIFORM) //or else you end up with naked assistants running around everywhere...
+ H.equip_to_slot_or_del(new C(H), ITEM_SLOT_ICLOTHING) //or else you end up with naked assistants running around everywhere...
else
new C(loc)
return INITIALIZE_HINT_QDEL
@@ -30,7 +30,7 @@
var/obj/item/clothing/under/color/jumpskirt/C = pick(subtypesof(/obj/item/clothing/under/color/jumpskirt) - /obj/item/clothing/under/color/jumpskirt/random)
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
- H.equip_to_slot_or_del(new C(H), SLOT_W_UNIFORM)
+ H.equip_to_slot_or_del(new C(H), ITEM_SLOT_ICLOTHING)
else
new C(loc)
return INITIALIZE_HINT_QDEL
diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm
index 2f0b9c68f8..061de0ea7c 100644
--- a/code/modules/events/wizard/curseditems.dm
+++ b/code/modules/events/wizard/curseditems.dm
@@ -18,23 +18,23 @@
switch(item_set)
if("wizardmimic")
- loadout[SLOT_WEAR_SUIT] = /obj/item/clothing/suit/wizrobe
- loadout[SLOT_SHOES] = /obj/item/clothing/shoes/sandal/magic
- loadout[SLOT_HEAD] = /obj/item/clothing/head/wizard
+ loadout[ITEM_SLOT_OCLOTHING] = /obj/item/clothing/suit/wizrobe
+ loadout[ITEM_SLOT_FEET] = /obj/item/clothing/shoes/sandal/magic
+ loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/wizard
ruins_spaceworthiness = 1
if("swords")
- loadout[SLOT_HANDS] = /obj/item/katana/cursed
+ loadout[ITEM_SLOT_HANDS] = /obj/item/katana/cursed
if("bigfatdoobie")
- loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/cigarette/rollie/trippy
+ loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/cigarette/rollie/trippy
ruins_spaceworthiness = 1
if("boxing")
- loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/luchador
- loadout[SLOT_GLOVES] = /obj/item/clothing/gloves/boxing
+ loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/luchador
+ loadout[ITEM_SLOT_GLOVES] = /obj/item/clothing/gloves/boxing
ruins_spaceworthiness = 1
if("voicemodulators")
- loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/chameleon
+ loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/chameleon
if("catgirls2015")
- loadout[SLOT_HEAD] = /obj/item/clothing/head/kitty
+ loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/kitty
ruins_spaceworthiness = 1
ruins_wizard_loadout = 1
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index a43bb0cff5..6845c4ef00 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -739,7 +739,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(close_other) //increase the odds
for(var/i in 1 to 5)
message_pool.Add("You feel a tiny prick!")
- var/obj/item/storage/equipped_backpack = other.get_item_by_slot(SLOT_BACK)
+ var/obj/item/storage/equipped_backpack = other.get_item_by_slot(ITEM_SLOT_BACK)
if(istype(equipped_backpack))
for(var/i in 1 to 5) //increase the odds
message_pool.Add("[other] puts the [pick(\
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index f650a935ea..1c151511af 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -35,7 +35,7 @@
//If they have a hat/helmet and the user is targeting their head.
if(affecting == BODY_ZONE_HEAD)
- var/obj/item/I = target.get_item_by_slot(SLOT_HEAD)
+ var/obj/item/I = target.get_item_by_slot(ITEM_SLOT_HEAD)
if(I)
headarmor = I.armor.melee
diff --git a/code/modules/holiday/dynamic.dm b/code/modules/holiday/dynamic.dm
new file mode 100644
index 0000000000..f75dd37542
--- /dev/null
+++ b/code/modules/holiday/dynamic.dm
@@ -0,0 +1,10 @@
+/datum/holiday/dynamic
+ name = "Dynamic Day"
+
+/datum/holiday/dynamic/shouldCelebrate(dd, mm, yy, ww, ddd)
+ var/list/days = CONFIG_GET(keyed_list/dynamic_mode_days)
+ return lowertext(ddd) in days
+
+/datum/holiday/dynamic/celebrate()
+ GLOB.dynamic_forced_threat_level = rand(90, 100)
+ CONFIG_SET(string/force_gamemode, "dynamic") // prevents the round vote, which prevents extended
diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm
index 1ebacf0968..723b404717 100644
--- a/code/modules/holiday/halloween/jacqueen.dm
+++ b/code/modules/holiday/halloween/jacqueen.dm
@@ -432,7 +432,7 @@
var/obj/item/W = C.head
C.dropItemToGround(W, TRUE)
var/jaqc_latern = new /obj/item/clothing/head/hardhat/pumpkinhead/jaqc
- C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1)
+ C.equip_to_slot(jaqc_latern, ITEM_SLOT_HEAD, 1, 1)
if(4)
visible_message("[src] waves their arms around, \"In your body there's something amiss, you'll find it's a chem made by my sis!\"")
jacqrunes("In your body there's something amiss, you'll find it's a chem made by my sis!", C)
@@ -449,7 +449,7 @@
var/obj/item/W = H.wear_suit
H.dropItemToGround(W, TRUE)
var/ghost = new /obj/item/clothing/suit/ghost_sheet/sticky
- H.equip_to_slot(ghost, SLOT_WEAR_SUIT, 1, 1)
+ H.equip_to_slot(ghost, ITEM_SLOT_OCLOTHING, 1, 1)
poof()
//Blame Fel
diff --git a/code/modules/integrated_electronics/subtypes/smart.dm b/code/modules/integrated_electronics/subtypes/smart.dm
index 5dc866c556..e1fdc36552 100644
--- a/code/modules/integrated_electronics/subtypes/smart.dm
+++ b/code/modules/integrated_electronics/subtypes/smart.dm
@@ -97,7 +97,7 @@
return
idc.access = assembly.access_card.access
var/turf/a_loc = get_turf(assembly)
- var/list/P = cir_get_path_to(assembly, locate(get_pin_data(IC_INPUT, 1),get_pin_data(IC_INPUT, 2),a_loc.z), /turf/proc/Distance_cardinal, 0, 200, id=idc, exclude=get_turf(get_pin_data_as_type(IC_INPUT,3, /atom)), simulated_only = 0)
+ var/list/P = get_path_to(assembly, locate(get_pin_data(IC_INPUT, 1),get_pin_data(IC_INPUT, 2),a_loc.z), 200, id=idc, exclude=get_turf(get_pin_data_as_type(IC_INPUT,3, /atom)), simulated_only = 0)
if(!P)
activate_pin(3)
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index 1f5becace8..6eaad5e2dc 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -241,7 +241,7 @@
var/satchel = /obj/item/storage/backpack/satchel
var/duffelbag = /obj/item/storage/backpack/duffelbag
- var/pda_slot = SLOT_BELT
+ var/pda_slot = ITEM_SLOT_BELT
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
var/preference_backpack = preference_source?.prefs.backbag
diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm
index de66c32138..82eae55bde 100644
--- a/code/modules/jobs/job_types/atmospheric_technician.dm
+++ b/code/modules/jobs/job_types/atmospheric_technician.dm
@@ -40,7 +40,7 @@
satchel = /obj/item/storage/backpack/satchel/eng
duffelbag = /obj/item/storage/backpack/duffelbag/engineering
box = /obj/item/storage/box/survival/engineer
- pda_slot = SLOT_L_STORE
+ pda_slot = ITEM_SLOT_LPOCKET
backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1)
/datum/outfit/job/atmos/rig
@@ -49,4 +49,4 @@
mask = /obj/item/clothing/mask/gas
suit = /obj/item/clothing/suit/space/hardsuit/engine/atmos
suit_store = /obj/item/tank/internals/oxygen
- internals_slot = SLOT_S_STORE
+ internals_slot = ITEM_SLOT_SUITSTORE
diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm
index a9e891a303..7789e3c614 100644
--- a/code/modules/jobs/job_types/chaplain.dm
+++ b/code/modules/jobs/job_types/chaplain.dm
@@ -34,7 +34,7 @@
B.icon_state = GLOB.bible_icon_state
B.item_state = GLOB.bible_item_state
to_chat(H, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.")
- H.equip_to_slot_or_del(B, SLOT_IN_BACKPACK)
+ H.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK)
var/nrt = GLOB.holy_weapon_type || /obj/item/nullrod
var/obj/item/nullrod/N = new nrt(H)
H.put_in_hands(N)
@@ -108,7 +108,7 @@
GLOB.bible_name = B.name
GLOB.deity = B.deity_name
- H.equip_to_slot_or_del(B, SLOT_IN_BACKPACK)
+ H.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK)
SSblackbox.record_feedback("text", "religion_name", 1, "[new_religion]", 1)
SSblackbox.record_feedback("text", "religion_deity", 1, "[new_deity]", 1)
diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm
index 804952dbb2..6fbf546e95 100644
--- a/code/modules/jobs/job_types/chief_engineer.dm
+++ b/code/modules/jobs/job_types/chief_engineer.dm
@@ -55,7 +55,7 @@
satchel = /obj/item/storage/backpack/satchel/eng
duffelbag = /obj/item/storage/backpack/duffelbag/engineering
box = /obj/item/storage/box/survival/engineer
- pda_slot = SLOT_L_STORE
+ pda_slot = ITEM_SLOT_LPOCKET
chameleon_extras = /obj/item/stamp/ce
/datum/outfit/job/ce/rig
@@ -68,4 +68,4 @@
glasses = /obj/item/clothing/glasses/meson/engine
gloves = /obj/item/clothing/gloves/color/yellow
head = null
- internals_slot = SLOT_S_STORE
+ internals_slot = ITEM_SLOT_SUITSTORE
diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm
index 331bad9bfe..b9fc5809e3 100644
--- a/code/modules/jobs/job_types/paramedic.dm
+++ b/code/modules/jobs/job_types/paramedic.dm
@@ -41,7 +41,7 @@
r_pocket = /obj/item/pinpointer/crew
l_pocket = /obj/item/pda/medical
backpack_contents = list(/obj/item/roller=1)
- pda_slot = SLOT_L_STORE
+ pda_slot = ITEM_SLOT_LPOCKET
backpack = /obj/item/storage/backpack/medic
satchel = /obj/item/storage/backpack/satchel/med
diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm
index 6c2cb94d13..e70e747ae6 100644
--- a/code/modules/jobs/job_types/research_director.dm
+++ b/code/modules/jobs/job_types/research_director.dm
@@ -63,4 +63,4 @@
mask = /obj/item/clothing/mask/breath
suit = /obj/item/clothing/suit/space/hardsuit/rd
suit_store = /obj/item/tank/internals/oxygen
- internals_slot = SLOT_S_STORE
+ internals_slot = ITEM_SLOT_SUITSTORE
diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm
index b44d536cd2..90dacc0482 100644
--- a/code/modules/jobs/job_types/roboticist.dm
+++ b/code/modules/jobs/job_types/roboticist.dm
@@ -37,4 +37,4 @@
backpack = /obj/item/storage/backpack/science
satchel = /obj/item/storage/backpack/satchel/tox
- pda_slot = SLOT_L_STORE
+ pda_slot = ITEM_SLOT_LPOCKET
diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm
index 3462fb96c9..1823a2498a 100644
--- a/code/modules/jobs/job_types/security_officer.dm
+++ b/code/modules/jobs/job_types/security_officer.dm
@@ -84,7 +84,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S
if(ears)
if(H.ears)
qdel(H.ears)
- H.equip_to_slot_or_del(new ears(H),SLOT_EARS)
+ H.equip_to_slot_or_del(new ears(H),ITEM_SLOT_EARS)
var/obj/item/card/id/W = H.wear_id
W.access |= dep_access
diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm
index 0c04380afe..273f74defa 100644
--- a/code/modules/jobs/job_types/shaft_miner.dm
+++ b/code/modules/jobs/job_types/shaft_miner.dm
@@ -60,7 +60,7 @@
mask = /obj/item/clothing/mask/gas/explorer
glasses = /obj/item/clothing/glasses/meson
suit_store = /obj/item/tank/internals/oxygen
- internals_slot = SLOT_S_STORE
+ internals_slot = ITEM_SLOT_SUITSTORE
backpack_contents = list(
/obj/item/flashlight/seclite=1,\
/obj/item/kitchen/knife/combat/survival=1,
diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm
index 25bd2196a0..83b11b22f6 100644
--- a/code/modules/jobs/job_types/station_engineer.dm
+++ b/code/modules/jobs/job_types/station_engineer.dm
@@ -43,7 +43,7 @@
satchel = /obj/item/storage/backpack/satchel/eng
duffelbag = /obj/item/storage/backpack/duffelbag/engineering
box = /obj/item/storage/box/survival/engineer
- pda_slot = SLOT_L_STORE
+ pda_slot = ITEM_SLOT_LPOCKET
backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1)
/datum/outfit/job/engineer/gloved
@@ -56,6 +56,6 @@
suit = /obj/item/clothing/suit/space/hardsuit/engine
suit_store = /obj/item/tank/internals/oxygen
head = null
- internals_slot = SLOT_S_STORE
+ internals_slot = ITEM_SLOT_SUITSTORE
diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm
index 9c503279d4..9eed296851 100644
--- a/code/modules/mining/equipment/wormhole_jaunter.dm
+++ b/code/modules/mining/equipment/wormhole_jaunter.dm
@@ -20,7 +20,7 @@
/obj/item/wormhole_jaunter/equipped(mob/user, slot)
. = ..()
- if(slot == SLOT_BELT)
+ if(slot == ITEM_SLOT_BELT)
RegisterSignal(user, COMSIG_MOVABLE_CHASM_DROP, .proc/chasm_react)
/obj/item/wormhole_jaunter/dropped(mob/user)
@@ -68,7 +68,7 @@
var/mob/M = loc
if(istype(M))
- if(M.get_item_by_slot(SLOT_BELT) == src)
+ if(M.get_item_by_slot(ITEM_SLOT_BELT) == src)
if(prob(severity))
M.visible_message("[src] overloads and activates!")
SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 0d46912a5a..0b394e0fc5 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -307,7 +307,7 @@
var/mob/living/carbon/human/active_owner
/obj/item/clothing/neck/necklace/memento_mori/item_action_slot_check(slot, mob/user, datum/action/A)
- return slot == SLOT_NECK
+ return slot == ITEM_SLOT_NECK
/obj/item/clothing/neck/necklace/memento_mori/dropped(mob/user)
..()
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
index 1dc50bfe73..08ae75d728 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
@@ -28,10 +28,9 @@
for(var/path in typesof(prototype))
if(path == prototype && skip_prototype)
continue
- if(roundstart)
- var/datum/sprite_accessory/P = path
- if(initial(P.locked))
- continue
+ var/datum/sprite_accessory/P = path
+ if((roundstart && initial(P.locked)))
+ continue
var/datum/sprite_accessory/D = new path()
if(D.icon_state)
@@ -64,6 +63,7 @@
var/mutant_part_string //Also used in species.handle_mutant_bodyparts() to generate the overlay icon state.
var/alpha_mask_state
var/matrixed_sections = MATRIX_NONE //if color_src is MATRIXED, how many sections does it have? 1-3
+ var/ignore = FALSE //NEVER include in customization if set to TRUE
//Special / holdover traits for Citadel specific sprites.
var/extra = FALSE
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm
index c525a13ef8..11fde50a37 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm
@@ -126,6 +126,11 @@
hide_legs = USE_SNEK_CLIP_MASK
matrixed_sections = MATRIX_RED_GREEN
+/datum/sprite_accessory/taur/naga/coiled
+ name = "Naga (coiled)"
+ icon_state = "naga_coiled"
+ ignore = TRUE
+
/datum/sprite_accessory/taur/otie
name = "Otie"
icon_state = "otie"
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 67a95006ab..849bbb9e38 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -182,7 +182,7 @@
held_items[hand_index] = I
I.layer = ABOVE_HUD_LAYER
I.plane = ABOVE_HUD_PLANE
- I.equipped(src, SLOT_HANDS)
+ I.equipped(src, ITEM_SLOT_HANDS)
if(I.pulledby)
I.pulledby.stop_pulling()
update_inv_hands()
@@ -375,14 +375,14 @@
if(!slot_priority)
slot_priority = list( \
- SLOT_BACK, SLOT_WEAR_ID,\
- SLOT_W_UNIFORM, SLOT_WEAR_SUIT,\
- SLOT_WEAR_MASK, SLOT_HEAD, SLOT_NECK,\
- SLOT_SHOES, SLOT_GLOVES,\
- SLOT_EARS, SLOT_GLASSES,\
- SLOT_BELT, SLOT_S_STORE,\
- SLOT_L_STORE, SLOT_R_STORE,\
- SLOT_GENERC_DEXTROUS_STORAGE\
+ ITEM_SLOT_BACK, ITEM_SLOT_ID,\
+ ITEM_SLOT_ICLOTHING, ITEM_SLOT_OCLOTHING,\
+ ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_NECK,\
+ ITEM_SLOT_FEET, ITEM_SLOT_GLOVES,\
+ ITEM_SLOT_EARS, ITEM_SLOT_EYES,\
+ ITEM_SLOT_BELT, ITEM_SLOT_SUITSTORE,\
+ ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET,\
+ ITEM_SLOT_DEX_STORAGE\
)
for(var/slot in slot_priority)
@@ -424,7 +424,7 @@
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))
+ var/list/obj/item/possible = list(M.get_inactive_held_item(), M.get_item_by_slot(ITEM_SLOT_BELT), M.get_item_by_slot(ITEM_SLOT_DEX_STORAGE), M.get_item_by_slot(ITEM_SLOT_BACK))
for(var/i in possible)
if(!i)
continue
@@ -446,10 +446,10 @@
//used in code for items usable by both carbon and drones, this gives the proper back slot for each mob.(defibrillator, backpack watertank, ...)
/mob/proc/getBackSlot()
- return SLOT_BACK
+ return ITEM_SLOT_BACK
/mob/proc/getBeltSlot()
- return SLOT_BELT
+ return ITEM_SLOT_BELT
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index ca2946fd8a..7dedf5a739 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -172,7 +172,7 @@
if(target.dropItemToGround(W))
target.visible_message("[src] tears [W] off of [target]'s face!", \
"[src] tears [W] off of [target]'s face!")
- target.equip_to_slot_if_possible(src, SLOT_WEAR_MASK, 0, 1, 1)
+ target.equip_to_slot_if_possible(src, ITEM_SLOT_MASK, 0, 1, 1)
return TRUE // time for a smoke
/obj/item/clothing/mask/facehugger/proc/Attach(mob/living/M)
@@ -259,7 +259,7 @@
return 1
var/mob/living/carbon/C = M
- if(ishuman(C) && !(SLOT_WEAR_MASK in C.dna.species.no_equip))
+ if(ishuman(C) && !(ITEM_SLOT_MASK in C.dna.species.no_equip))
var/mob/living/carbon/human/H = C
if(H.is_mouth_covered(head_only = 1))
return FALSE
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 61839ce123..969e63563d 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -261,7 +261,7 @@
// too soon.
var/buckle_cd = 600
if(handcuffed)
- var/obj/item/restraints/O = src.get_item_by_slot(SLOT_HANDCUFFED)
+ var/obj/item/restraints/O = src.get_item_by_slot(ITEM_SLOT_HANDCUFFED)
buckle_cd = O.breakouttime
MarkResistTime()
visible_message("[src] attempts to unbuckle [p_them()]self!", \
@@ -1137,15 +1137,15 @@
/mob/living/carbon/check_obscured_slots()
if(head)
if(head.flags_inv & HIDEMASK)
- LAZYOR(., SLOT_WEAR_MASK)
+ LAZYOR(., ITEM_SLOT_MASK)
if(head.flags_inv & HIDEEYES)
- LAZYOR(., SLOT_GLASSES)
+ LAZYOR(., ITEM_SLOT_EYES)
if(head.flags_inv & HIDEEARS)
- LAZYOR(., SLOT_EARS)
+ LAZYOR(., ITEM_SLOT_EARS)
if(wear_mask)
if(wear_mask.flags_inv & HIDEEYES)
- LAZYOR(., SLOT_GLASSES)
+ LAZYOR(., ITEM_SLOT_EYES)
// if any of our bodyparts are bleeding
/mob/living/carbon/proc/is_bleeding()
diff --git a/code/modules/mob/living/carbon/carbon_stripping.dm b/code/modules/mob/living/carbon/carbon_stripping.dm
index 45ff02f0d5..afbd6edaeb 100644
--- a/code/modules/mob/living/carbon/carbon_stripping.dm
+++ b/code/modules/mob/living/carbon/carbon_stripping.dm
@@ -1,10 +1,10 @@
/datum/strippable_item/mob_item_slot/head
key = STRIPPABLE_ITEM_HEAD
- item_slot = SLOT_HEAD
+ item_slot = ITEM_SLOT_HEAD
/datum/strippable_item/mob_item_slot/back
key = STRIPPABLE_ITEM_BACK
- item_slot = SLOT_BACK
+ item_slot = ITEM_SLOT_BACK
/datum/strippable_item/mob_item_slot/back/get_alternate_action(atom/source, mob/user)
if(..() == FALSE)
@@ -18,15 +18,15 @@
/datum/strippable_item/mob_item_slot/mask
key = STRIPPABLE_ITEM_MASK
- item_slot = SLOT_WEAR_MASK
+ item_slot = ITEM_SLOT_MASK
/datum/strippable_item/mob_item_slot/neck
key = STRIPPABLE_ITEM_NECK
- item_slot = SLOT_NECK
+ item_slot = ITEM_SLOT_NECK
/datum/strippable_item/mob_item_slot/handcuffs
key = STRIPPABLE_ITEM_HANDCUFFS
- item_slot = SLOT_HANDCUFFED
+ item_slot = ITEM_SLOT_HANDCUFFED
/datum/strippable_item/mob_item_slot/handcuffs/should_show(atom/source, mob/user)
if (!iscarbon(source))
@@ -41,7 +41,7 @@
/datum/strippable_item/mob_item_slot/legcuffs
key = STRIPPABLE_ITEM_LEGCUFFS
- item_slot = SLOT_LEGCUFFED
+ item_slot = ITEM_SLOT_LEGCUFFED
/datum/strippable_item/mob_item_slot/legcuffs/should_show(atom/source, mob/user)
if (!iscarbon(source))
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index c3fb82de36..32a4fac90f 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -31,7 +31,7 @@
. += "[t_He] [t_is] a [spec_trait_examine_font()][dna.custom_species ? dna.custom_species : dna.species.name]!"
//uniform
- if(w_uniform && !(SLOT_W_UNIFORM in obscured))
+ if(w_uniform && !(ITEM_SLOT_ICLOTHING in obscured))
//accessory
var/accessory_msg
if(istype(w_uniform, /obj/item/clothing/under))
@@ -47,7 +47,7 @@
if(wear_suit && !(wear_suit.obj_flags & EXAMINE_SKIP))
. += "[t_He] [t_is] wearing [wear_suit.get_examine_string(user)]."
//suit/armor storage
- if(s_store && !(SLOT_S_STORE in obscured))
+ if(s_store && !(ITEM_SLOT_SUITSTORE in obscured))
. += "[t_He] [t_is] carrying [s_store.get_examine_string(user)] on [t_his] [wear_suit.name]."
//back
if(back)
@@ -59,7 +59,7 @@
. += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))]."
//gloves
- if(gloves && !(SLOT_GLOVES in obscured))
+ if(gloves && !(ITEM_SLOT_GLOVES in obscured))
. += "[t_He] [t_has] [gloves.get_examine_string(user)] on [t_his] hands."
else if(length(blood_DNA))
var/hand_number = get_num_arms(FALSE)
@@ -78,18 +78,18 @@
. += "[t_He] [t_has] [belt.get_examine_string(user)] about [t_his] waist."
//shoes
- if(shoes && !(SLOT_SHOES in obscured))
+ if(shoes && !(ITEM_SLOT_FEET in obscured))
. += "[t_He] [t_is] wearing [shoes.get_examine_string(user)] on [t_his] feet."
//mask
- if(wear_mask && !(SLOT_WEAR_MASK in obscured))
+ if(wear_mask && !(ITEM_SLOT_MASK in obscured))
. += "[t_He] [t_has] [wear_mask.get_examine_string(user)] on [t_his] face."
- if(wear_neck && !(SLOT_NECK in obscured))
+ if(wear_neck && !(ITEM_SLOT_NECK in obscured))
. += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck."
//eyes
- if(!(SLOT_GLASSES in obscured))
+ if(!(ITEM_SLOT_EYES in obscured))
if(glasses)
. += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes."
else if((left_eye_color == BLOODCULT_EYE || right_eye_color == BLOODCULT_EYE) && iscultist(src) && HAS_TRAIT(src, TRAIT_CULT_EYES))
@@ -100,7 +100,7 @@
. += "[t_His] eyes are flickering a bright yellow!"
//ears
- if(ears && !(SLOT_EARS in obscured))
+ if(ears && !(ITEM_SLOT_EARS in obscured))
. += "[t_He] [t_has] [ears.get_examine_string(user)] on [t_his] ears."
//ID
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 5a58289316..0f149928df 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -372,11 +372,11 @@
. = ..()
if(wear_suit)
if(wear_suit.flags_inv & HIDEGLOVES)
- LAZYOR(., SLOT_GLOVES)
+ LAZYOR(., ITEM_SLOT_GLOVES)
if(wear_suit.flags_inv & HIDEJUMPSUIT)
- LAZYOR(., SLOT_W_UNIFORM)
+ LAZYOR(., ITEM_SLOT_ICLOTHING)
if(wear_suit.flags_inv & HIDESHOES)
- LAZYOR(., SLOT_SHOES)
+ LAZYOR(., ITEM_SLOT_FEET)
/mob/living/carbon/human/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null)
if(judgement_criteria & JUDGE_EMAGGED)
@@ -942,6 +942,9 @@
. += "[t_He] [t_is] a [spec_trait_examine_font()][dna.custom_species ? dna.custom_species : dna.species.name]"
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, usr, .)
+/mob/living/carbon/human/chestonly
+ bodyparts = list(/obj/item/bodypart/chest)
+
/mob/living/carbon/human/species/abductor
race = /datum/species/abductor
diff --git a/code/modules/mob/living/carbon/human/human_stripping.dm b/code/modules/mob/living/carbon/human/human_stripping.dm
index 6197241ef3..cd05e06731 100644
--- a/code/modules/mob/living/carbon/human/human_stripping.dm
+++ b/code/modules/mob/living/carbon/human/human_stripping.dm
@@ -35,15 +35,15 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
/datum/strippable_item/mob_item_slot/eyes
key = STRIPPABLE_ITEM_EYES
- item_slot = SLOT_GLASSES
+ item_slot = ITEM_SLOT_EYES
/datum/strippable_item/mob_item_slot/ears
key = STRIPPABLE_ITEM_EARS
- item_slot = SLOT_EARS
+ item_slot = ITEM_SLOT_EARS
/datum/strippable_item/mob_item_slot/jumpsuit
key = STRIPPABLE_ITEM_JUMPSUIT
- item_slot = SLOT_W_UNIFORM
+ item_slot = ITEM_SLOT_ICLOTHING
/datum/strippable_item/mob_item_slot/jumpsuit/get_alternate_action(atom/source, mob/user)
if(..() == FALSE)
@@ -75,7 +75,7 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
/datum/strippable_item/mob_item_slot/suit
key = STRIPPABLE_ITEM_SUIT
- item_slot = SLOT_WEAR_SUIT
+ item_slot = ITEM_SLOT_OCLOTHING
/datum/strippable_item/mob_item_slot/suit/get_alternate_action(atom/source, mob/user)
if(..() == FALSE)
@@ -108,11 +108,11 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
/datum/strippable_item/mob_item_slot/gloves
key = STRIPPABLE_ITEM_GLOVES
- item_slot = SLOT_GLOVES
+ item_slot = ITEM_SLOT_GLOVES
/datum/strippable_item/mob_item_slot/feet
key = STRIPPABLE_ITEM_FEET
- item_slot = SLOT_SHOES
+ item_slot = ITEM_SLOT_FEET
/datum/strippable_item/mob_item_slot/feet/get_alternate_action(atom/source, mob/user)
if(..() == FALSE)
@@ -141,7 +141,7 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
/datum/strippable_item/mob_item_slot/suit_storage
key = STRIPPABLE_ITEM_SUIT_STORAGE
- item_slot = SLOT_S_STORE
+ item_slot = ITEM_SLOT_SUITSTORE
/datum/strippable_item/mob_item_slot/suit_storage/get_alternate_action(atom/source, mob/user)
if(..() == FALSE)
@@ -155,11 +155,11 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
/datum/strippable_item/mob_item_slot/id
key = STRIPPABLE_ITEM_ID
- item_slot = SLOT_WEAR_ID
+ item_slot = ITEM_SLOT_ID
/datum/strippable_item/mob_item_slot/belt
key = STRIPPABLE_ITEM_BELT
- item_slot = SLOT_BELT
+ item_slot = ITEM_SLOT_BELT
/datum/strippable_item/mob_item_slot/belt/get_alternate_action(atom/source, mob/user)
if(..() == FALSE)
@@ -212,12 +212,12 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
/datum/strippable_item/mob_item_slot/pocket/left
key = STRIPPABLE_ITEM_LPOCKET
- item_slot = SLOT_L_STORE
+ item_slot = ITEM_SLOT_LPOCKET
pocket_side = "left"
/datum/strippable_item/mob_item_slot/pocket/right
key = STRIPPABLE_ITEM_RPOCKET
- item_slot = SLOT_R_STORE
+ item_slot = ITEM_SLOT_RPOCKET
pocket_side = "right"
/proc/get_strippable_alternate_action_internals(obj/item/item, atom/source)
diff --git a/code/modules/mob/living/carbon/human/innate_abilities/coiling.dm b/code/modules/mob/living/carbon/human/innate_abilities/coiling.dm
new file mode 100644
index 0000000000..52e2a87a7d
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/innate_abilities/coiling.dm
@@ -0,0 +1,89 @@
+
+/datum/action/innate/ability/coiling
+ name = "Coil Grabbed Mob"
+ check_flags = AB_CHECK_CONSCIOUS
+ button_icon_state = "coil_icon"
+ icon_icon = 'icons/mob/actions/actions_snake.dmi'
+ background_icon_state = "bg_alien"
+ required_mobility_flags = MOBILITY_STAND
+ var/currently_coiling = FALSE
+ var/mob/living/carbon/human/currently_coiled
+ var/mutable_appearance/tracked_overlay
+
+/datum/action/innate/ability/coiling/Activate()
+ // make sure they meet the mobility/check flags
+ if(IsAvailable())
+ // check that the user has grabbed someone and they are not currently coiling someone
+ if(ishuman(owner.pulling) && !currently_coiling)
+ coil_mob(owner.pulling)
+
+/datum/action/innate/ability/coiling/proc/update_coil_offset(atom/source, old_dir, new_dir)
+ // update the coiling offset on the coiled user depending on the way the owner is facing
+ switch(new_dir)
+ if(NORTH)
+ currently_coiled.pixel_x = -12
+ if(EAST)
+ currently_coiled.pixel_x = -12
+ if(SOUTH)
+ currently_coiled.pixel_x = 12
+ if(WEST)
+ currently_coiled.pixel_x = 12
+
+/datum/action/innate/ability/coiling/proc/coil_mob(var/mob/living/carbon/human/H)
+ // begin the coiling action
+ H.visible_message("[owner] coils [H] with their tail!", \
+ "[owner] coils you with their tail!")
+ currently_coiling = TRUE
+ currently_coiled = H
+
+ H.layer -= 0.1 // LISTEN I HATE TOUCHING MOB LAYERS TOO BUT THIS IS JUST SO THEY RENDER UNDER THE OTHER PLAYER SDFHSDFHDSFHDSH
+
+ // move user to same tile
+ H.forceMove(get_turf(owner))
+
+ // cancel the coiling action if certain things are done
+ RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/cancel_coil)
+ RegisterSignal(owner, COMSIG_LIVING_RESTING, .proc/cancel_coil)
+ RegisterSignal(owner, COMSIG_LIVING_STOPPED_PULLING, .proc/cancel_coil)
+
+ // update the coil offset, update again if owner changes direction
+ RegisterSignal(owner, COMSIG_ATOM_DIR_CHANGE, .proc/update_coil_offset)
+ update_coil_offset(null, null, owner.dir)
+
+ // set our overlay to new image
+ var/mob/living/carbon/human/user = owner
+ user.dna.species.mutant_bodyparts["taur"] = "Naga (coiled)"
+ user.dna.features["taur"] = "Naga (coiled)"
+ user.update_mutant_bodyparts()
+
+/datum/action/innate/ability/coiling/proc/cancel_coil()
+ var/mob/living/carbon/human/H = owner
+
+ // cancel the coiling action by removing the overlay
+ currently_coiled.pixel_x = 0
+
+ currently_coiling = FALSE
+ currently_coiled = null
+
+ // unregister signals
+ UnregisterSignal(owner, COMSIG_MOVABLE_MOVED)
+ UnregisterSignal(owner, COMSIG_LIVING_RESTING)
+ UnregisterSignal(owner, COMSIG_LIVING_STOPPED_PULLING)
+ UnregisterSignal(owner, COMSIG_ATOM_DIR_CHANGE)
+
+ // change overlay back to original image
+ H.dna.species.mutant_bodyparts["taur"] = "Naga"
+ H.dna.features["taur"] = "Naga"
+ H.update_mutant_bodyparts()
+
+ H.update_body()
+
+ H.layer += 0.1
+
+ // remove the added overlay
+ owner.cut_overlay(tracked_overlay)
+ tracked_overlay = null
+
+/datum/action/innate/ability/coiling/Remove(mob/M)
+ cancel_coil()
+ ..(M)
diff --git a/code/modules/mob/living/carbon/human/innate_abilities/customization.dm b/code/modules/mob/living/carbon/human/innate_abilities/customization.dm
index 363f6ecbb2..463cdfde1e 100644
--- a/code/modules/mob/living/carbon/human/innate_abilities/customization.dm
+++ b/code/modules/mob/living/carbon/human/innate_abilities/customization.dm
@@ -135,6 +135,8 @@
var/datum/sprite_accessory/taur/instance = GLOB.taur_list[path]
if(istype(instance, /datum/sprite_accessory))
var/datum/sprite_accessory/S = instance
+ if(S.ignore)
+ continue
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(H.client.ckey)))
snowflake_taur_list[S.name] = path
var/new_taur
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 199a6b44be..4c30a1d742 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -17,39 +17,39 @@
// Return the item currently in the slot ID
/mob/living/carbon/human/get_item_by_slot(slot_id)
switch(slot_id)
- if(SLOT_BACK)
+ if(ITEM_SLOT_BACK)
return back
- if(SLOT_WEAR_MASK)
+ if(ITEM_SLOT_MASK)
return wear_mask
- if(SLOT_NECK)
+ if(ITEM_SLOT_NECK)
return wear_neck
- if(SLOT_HANDCUFFED)
+ if(ITEM_SLOT_HANDCUFFED)
return handcuffed
- if(SLOT_LEGCUFFED)
+ if(ITEM_SLOT_LEGCUFFED)
return legcuffed
- if(SLOT_BELT)
+ if(ITEM_SLOT_BELT)
return belt
- if(SLOT_WEAR_ID)
+ if(ITEM_SLOT_ID)
return wear_id
- if(SLOT_EARS)
+ if(ITEM_SLOT_EARS)
return ears
- if(SLOT_GLASSES)
+ if(ITEM_SLOT_EYES)
return glasses
- if(SLOT_GLOVES)
+ if(ITEM_SLOT_GLOVES)
return gloves
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
return head
- if(SLOT_SHOES)
+ if(ITEM_SLOT_FEET)
return shoes
- if(SLOT_WEAR_SUIT)
+ if(ITEM_SLOT_OCLOTHING)
return wear_suit
- if(SLOT_W_UNIFORM)
+ if(ITEM_SLOT_ICLOTHING)
return w_uniform
- if(SLOT_L_STORE)
+ if(ITEM_SLOT_LPOCKET)
return l_store
- if(SLOT_R_STORE)
+ if(ITEM_SLOT_RPOCKET)
return r_store
- if(SLOT_S_STORE)
+ if(ITEM_SLOT_SUITSTORE)
return s_store
return null
@@ -98,17 +98,17 @@
var/not_handled = FALSE //Added in case we make this type path deeper one day
switch(slot)
- if(SLOT_BELT)
+ if(ITEM_SLOT_BELT)
belt = I
update_inv_belt()
- if(SLOT_WEAR_ID)
+ if(ITEM_SLOT_ID)
wear_id = I
sec_hud_set_ID()
update_inv_wear_id()
- if(SLOT_EARS)
+ if(ITEM_SLOT_EARS)
ears = I
update_inv_ears()
- if(SLOT_GLASSES)
+ if(ITEM_SLOT_EYES)
glasses = I
var/obj/item/clothing/glasses/G = I
if(G.glass_colour_type)
@@ -121,13 +121,13 @@
if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha))
update_sight()
update_inv_glasses()
- if(SLOT_GLOVES)
+ if(ITEM_SLOT_GLOVES)
gloves = I
update_inv_gloves()
- if(SLOT_SHOES)
+ if(ITEM_SLOT_FEET)
shoes = I
update_inv_shoes()
- if(SLOT_WEAR_SUIT)
+ if(ITEM_SLOT_OCLOTHING)
wear_suit = I
if(I.flags_inv & HIDEJUMPSUIT)
update_inv_w_uniform()
@@ -135,17 +135,17 @@
stop_pulling() //can't pull if restrained
update_action_buttons_icon() //certain action buttons will no longer be usable.
update_inv_wear_suit()
- if(SLOT_W_UNIFORM)
+ if(ITEM_SLOT_ICLOTHING)
w_uniform = I
update_suit_sensors()
update_inv_w_uniform()
- if(SLOT_L_STORE)
+ if(ITEM_SLOT_LPOCKET)
l_store = I
update_inv_pockets()
- if(SLOT_R_STORE)
+ if(ITEM_SLOT_RPOCKET)
r_store = I
update_inv_pockets()
- if(SLOT_S_STORE)
+ if(ITEM_SLOT_SUITSTORE)
s_store = I
update_inv_s_store()
else
@@ -296,7 +296,7 @@
if(incapacitated())
return
var/obj/item/thing = get_active_held_item()
- var/obj/item/equipped_back = get_item_by_slot(SLOT_BACK)
+ var/obj/item/equipped_back = get_item_by_slot(ITEM_SLOT_BACK)
if(!equipped_back) // We also let you equip a backpack like this
if(!thing)
to_chat(src, "You have no backpack to take something out of!")
@@ -327,7 +327,7 @@
if(incapacitated())
return
var/obj/item/thing = get_active_held_item()
- var/obj/item/equipped_belt = get_item_by_slot(SLOT_BELT)
+ var/obj/item/equipped_belt = get_item_by_slot(ITEM_SLOT_BELT)
if(!equipped_belt) // We also let you equip a belt like this
if(!thing)
to_chat(src, "You have no belt to take something out of!")
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index bbe2781403..ee98288c5d 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -612,7 +612,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(Q.type in blacklisted_quirks)
removed_quirks += Q.type
. += 1
- qdel(Q)
+ qdel(Q)
else
var/point_overhead = 0
for(var/datum/quirk/Q as anything in C.roundstart_quirks)
@@ -906,6 +906,22 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/tauric = mutant_bodyparts["taur"] && H.dna.features["taur"] && H.dna.features["taur"] != "None"
+ // stuff for adding/removing the coiling ability if you have a taur part
+ // if another action is ever based on mutant parts we should probably make a system for it so it's all done in one proc with less overhead
+ var/datum/action/found_action
+
+ for(var/datum/action/A in H.actions)
+ if(A.type == /datum/action/innate/ability/coiling)
+ found_action = A
+
+ if(found_action && (!tauric || (H.dna.features["taur"] != "Naga" && H.dna.features["taur"] != "Naga (coiled)")))
+ found_action.Remove(H)
+
+ if(!found_action && tauric && H.dna.features["taur"] == "Naga")
+ found_action = new /datum/action/innate/ability/coiling()
+ found_action.Grant(H)
+
+
for(var/mutant_part in mutant_bodyparts)
var/reference_list = GLOB.mutant_reference_list[mutant_part]
if(reference_list)
@@ -1220,7 +1236,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!HAS_TRAIT(H, TRAIT_ROBOTIC_ORGANISM))
H.adjustBruteLoss(1)
else
- H.adjustFireLoss(1) //Robots melt instead of taking brute.
+ H.adjustFireLoss(1) //Robots melt instead of taking brute.
/datum/species/proc/spec_death(gibbed, mob/living/carbon/human/H)
if(H)
@@ -1244,11 +1260,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/num_legs = H.get_num_legs(FALSE)
switch(slot)
- if(SLOT_HANDS)
+ if(ITEM_SLOT_HANDS)
if(H.get_empty_held_indexes())
return TRUE
return FALSE
- if(SLOT_WEAR_MASK)
+ if(ITEM_SLOT_MASK)
if(H.wear_mask)
return FALSE
if(!(I.slot_flags & ITEM_SLOT_MASK))
@@ -1256,25 +1272,25 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!H.get_bodypart(BODY_ZONE_HEAD))
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_NECK)
+ if(ITEM_SLOT_NECK)
if(H.wear_neck)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_NECK) )
return FALSE
return TRUE
- if(SLOT_BACK)
+ if(ITEM_SLOT_BACK)
if(H.back)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_BACK) )
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_WEAR_SUIT)
+ if(ITEM_SLOT_OCLOTHING)
if(H.wear_suit)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_OCLOTHING) )
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_GLOVES)
+ if(ITEM_SLOT_GLOVES)
if(H.gloves)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_GLOVES) )
@@ -1282,7 +1298,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(num_arms < 2)
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_SHOES)
+ if(ITEM_SLOT_FEET)
if(H.shoes)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_FEET) )
@@ -1295,7 +1311,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
else
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_BELT)
+ if(ITEM_SLOT_BELT)
if(H.belt)
return FALSE
if(!(I.item_flags & NO_UNIFORM_REQUIRED))
@@ -1307,7 +1323,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!(I.slot_flags & ITEM_SLOT_BELT))
return
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_GLASSES)
+ if(ITEM_SLOT_EYES)
if(H.glasses)
return FALSE
if(!(I.slot_flags & ITEM_SLOT_EYES))
@@ -1315,7 +1331,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!H.get_bodypart(BODY_ZONE_HEAD))
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
if(H.head)
return FALSE
if(!(I.slot_flags & ITEM_SLOT_HEAD))
@@ -1323,7 +1339,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!H.get_bodypart(BODY_ZONE_HEAD))
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_EARS)
+ if(ITEM_SLOT_EARS)
if(H.ears)
return FALSE
if(!(I.slot_flags & ITEM_SLOT_EARS))
@@ -1331,13 +1347,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!H.get_bodypart(BODY_ZONE_HEAD))
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_W_UNIFORM)
+ if(ITEM_SLOT_ICLOTHING)
if(H.w_uniform)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_ICLOTHING) )
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_WEAR_ID)
+ if(ITEM_SLOT_ID)
if(H.wear_id)
return FALSE
if(!(I.item_flags & NO_UNIFORM_REQUIRED))
@@ -1349,7 +1365,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if( !(I.slot_flags & ITEM_SLOT_ID) )
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
- if(SLOT_L_STORE)
+ if(ITEM_SLOT_LPOCKET)
if(HAS_TRAIT(I, TRAIT_NODROP)) //Pockets aren't visible, so you can't move TRAIT_NODROP items into them.
return FALSE
if(H.l_store)
@@ -1361,11 +1377,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(return_warning)
return_warning[1] = "You need a jumpsuit before you can attach this [I.name]!"
return FALSE
- if(I.slot_flags & ITEM_SLOT_DENYPOCKET)
- return FALSE
- if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & ITEM_SLOT_POCKET) )
+ if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & ITEM_SLOT_POCKETS) )
return TRUE
- if(SLOT_R_STORE)
+ if(ITEM_SLOT_RPOCKET)
if(HAS_TRAIT(I, TRAIT_NODROP))
return FALSE
if(H.r_store)
@@ -1377,12 +1391,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(return_warning)
return_warning[1] = "You need a jumpsuit before you can attach this [I.name]!"
return FALSE
- if(I.slot_flags & ITEM_SLOT_DENYPOCKET)
- return FALSE
- if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & ITEM_SLOT_POCKET) )
+ if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & ITEM_SLOT_POCKETS) )
return TRUE
return FALSE
- if(SLOT_S_STORE)
+ if(ITEM_SLOT_SUITSTORE)
if(HAS_TRAIT(I, TRAIT_NODROP))
return FALSE
if(H.s_store)
@@ -1402,7 +1414,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if( istype(I, /obj/item/pda) || istype(I, /obj/item/pen) || is_type_in_list(I, H.wear_suit.allowed) )
return TRUE
return FALSE
- if(SLOT_HANDCUFFED)
+ if(ITEM_SLOT_HANDCUFFED)
if(H.handcuffed)
return FALSE
if(!istype(I, /obj/item/restraints/handcuffs))
@@ -1410,7 +1422,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(num_arms < 2)
return FALSE
return TRUE
- if(SLOT_LEGCUFFED)
+ if(ITEM_SLOT_LEGCUFFED)
if(H.legcuffed)
return FALSE
if(!istype(I, /obj/item/restraints/legcuffs))
@@ -1418,7 +1430,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(num_legs < 2)
return FALSE
return TRUE
- if(SLOT_IN_BACKPACK)
+ if(ITEM_SLOT_BACKPACK)
if(H.back)
if(SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE))
return TRUE
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index ac25c9e021..f90199c8ee 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -12,7 +12,7 @@
punchdamagelow = 5
punchdamagehigh = 14
punchstunthreshold = 10
- no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM, SLOT_S_STORE)
+ no_equip = list(ITEM_SLOT_MASK, ITEM_SLOT_OCLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET, ITEM_SLOT_ICLOTHING, ITEM_SLOT_SUITSTORE)
nojumpsuit = 1
sexes = 1
damage_overlay_type = ""
diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
index 0655b28197..afcec291e9 100644
--- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
@@ -16,7 +16,7 @@
punchdamagehigh = 12 //still better than humans
punchstunthreshold = 10
- no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM)
+ no_equip = list(ITEM_SLOT_MASK, ITEM_SLOT_OCLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET, ITEM_SLOT_ICLOTHING)
burnmod = 1.25
heatmod = 1.5
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 bfef310cdf..f412099831 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -37,7 +37,7 @@
limbs_id = SPECIES_SHADOW
burnmod = 1.5
blacklisted = TRUE
- no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM, SLOT_S_STORE)
+ no_equip = list(ITEM_SLOT_MASK, ITEM_SLOT_OCLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET, ITEM_SLOT_ICLOTHING, ITEM_SLOT_SUITSTORE)
species_traits = list(NOBLOOD,NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYES,NOGENITALS,NOAROUSAL)
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER)
mutanteyes = /obj/item/organ/eyes/night_vision/nightmare
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 52d736f9ce..cb2458e376 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -128,7 +128,7 @@ There are several things that need to be remembered:
remove_overlay(UNIFORM_LAYER)
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_ICLOTHING) + 1]
inv.update_icon()
if(istype(w_uniform, /obj/item/clothing/under))
@@ -180,7 +180,7 @@ There are several things that need to be remembered:
remove_overlay(ID_LAYER)
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_ID) + 1]
inv.update_icon()
var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER]
@@ -204,8 +204,8 @@ There are several things that need to be remembered:
if(!HAS_TRAIT(src, TRAIT_HUMAN_NO_RENDER))
remove_overlay(GLOVES_LAYER)
- if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES])
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES]
+ if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_GLOVES) + 1])
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_GLOVES) + 1]
inv.update_icon()
if(!gloves && bloody_hands)
@@ -242,7 +242,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_EYES) + 1]
inv.update_icon()
if(glasses)
@@ -269,7 +269,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_EARS) + 1]
inv.update_icon()
if(ears)
@@ -295,7 +295,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_FEET) + 1]
inv.update_icon()
if(dna.species.mutant_bodyparts["taur"])
@@ -330,7 +330,7 @@ There are several things that need to be remembered:
remove_overlay(SUIT_STORE_LAYER)
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_SUITSTORE) + 1]
inv.update_icon()
if(s_store)
@@ -357,7 +357,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_HEAD) + 1]
inv.update_icon()
if(head)
@@ -394,7 +394,7 @@ There are several things that need to be remembered:
remove_overlay(BELT_LAYER)
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BELT) + 1]
inv.update_icon()
if(belt)
@@ -416,7 +416,7 @@ There are several things that need to be remembered:
remove_overlay(SUIT_LAYER)
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_OCLOTHING) + 1]
inv.update_icon()
if(wear_suit)
@@ -479,10 +479,10 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv
- inv = hud_used.inv_slots[SLOT_L_STORE]
+ inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_LPOCKET) + 1]
inv.update_icon()
- inv = hud_used.inv_slots[SLOT_R_STORE]
+ inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_RPOCKET) + 1]
inv.update_icon()
if(l_store)
@@ -506,7 +506,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1]
inv.update_icon()
if(wear_mask)
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index 13f811196e..2422528d21 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -1,16 +1,16 @@
/mob/living/carbon/get_item_by_slot(slot_id)
switch(slot_id)
- if(SLOT_BACK)
+ if(ITEM_SLOT_BACK)
return back
- if(SLOT_WEAR_MASK)
+ if(ITEM_SLOT_MASK)
return wear_mask
- if(SLOT_NECK)
+ if(ITEM_SLOT_NECK)
return wear_neck
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
return head
- if(SLOT_HANDCUFFED)
+ if(ITEM_SLOT_HANDCUFFED)
return handcuffed
- if(SLOT_LEGCUFFED)
+ if(ITEM_SLOT_LEGCUFFED)
return legcuffed
return null
@@ -20,17 +20,17 @@
return slot
if(critical) //it is CRITICAL they get this item, no matter what
//do they have a backpack?
- var/obj/item/backpack = get_item_by_slot(SLOT_BACK)
+ var/obj/item/backpack = get_item_by_slot(ITEM_SLOT_BACK)
if(!backpack)
//nothing on their back
backpack = new /obj/item/storage/backpack(get_turf(src))
- if(equip_to_slot(backpack, SLOT_BACK)) //worst-case-scenario, something that shouldnt wear a backpack gets one
+ if(equip_to_slot(backpack, ITEM_SLOT_BACK)) //worst-case-scenario, something that shouldnt wear a backpack gets one
I.forceMove(backpack)
- return SLOT_BACK
+ return ITEM_SLOT_BACK
else if(istype(backpack) && SEND_SIGNAL(backpack, COMSIG_CONTAINS_STORAGE))
//place it in here, regardless of storage capacity
I.forceMove(backpack)
- return SLOT_BACK
+ return ITEM_SLOT_BACK
else
//this should NEVER happen, but if it does, report it with the appropriate information
var/conclusion = qdel_on_fail ? "deleted" : "not moved, staying at current position [I.x], [I.y], [I.z]"
@@ -69,28 +69,28 @@
I.appearance_flags |= NO_CLIENT_COLOR
var/not_handled = FALSE
switch(slot)
- if(SLOT_BACK)
+ if(ITEM_SLOT_BACK)
back = I
update_inv_back()
- if(SLOT_WEAR_MASK)
+ if(ITEM_SLOT_MASK)
wear_mask = I
wear_mask_update(I, toggle_off = 0)
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
head = I
head_update(I)
- if(SLOT_NECK)
+ if(ITEM_SLOT_NECK)
wear_neck = I
update_inv_neck(I)
- if(SLOT_HANDCUFFED)
+ if(ITEM_SLOT_HANDCUFFED)
handcuffed = I
update_handcuffed()
- if(SLOT_LEGCUFFED)
+ if(ITEM_SLOT_LEGCUFFED)
legcuffed = I
update_inv_legcuffed()
- if(SLOT_HANDS)
+ if(ITEM_SLOT_HANDS)
put_in_hands(I)
update_inv_hands()
- if(SLOT_IN_BACKPACK)
+ if(ITEM_SLOT_BACKPACK)
if(!back || !SEND_SIGNAL(back, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE))
not_handled = TRUE
else
@@ -170,7 +170,7 @@
if(!offered_item)
to_chat(src, "You're not holding anything to give!")
return
-
+
if(IS_DEAD_OR_INCAP(src))
to_chat(src, span_warning("You're unable to offer anything in your current state!"))
return
@@ -184,7 +184,7 @@
visible_message(span_notice("[src] is offering [offered_item]."), \
span_notice("You offer [offered_item]."), null, 2)
-
+
apply_status_effect(STATUS_EFFECT_OFFERING, offered_item)
/**
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 182ae1afb8..27f795015e 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -676,7 +676,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
/mob/living/carbon/proc/get_cooling_efficiency()
if(!HAS_TRAIT(src, TRAIT_ROBOTIC_ORGANISM))
return 1
-
+
var/integration_bonus = min(blood_volume * SYNTH_INTEGRATION_COOLANT_CAP, integrating_blood * SYNTH_INTEGRATION_COOLANT_PENALTY) //Integration blood somewhat helps, though only at 40% impact and to a cap of 25% of current blood level.
var/blood_effective_volume = blood_volume + integration_bonus
var/coolant_efficiency = min(blood_effective_volume / BLOOD_VOLUME_SAFE, 1) //Low coolant is only a negative, adding more than needed will not help you.
@@ -706,13 +706,13 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
return total_environment_efficiency
/mob/living/carbon/proc/check_suitlinking()
- var/suit_item = get_item_by_slot(SLOT_WEAR_SUIT)
- var/head_item = get_item_by_slot(SLOT_HEAD)
+ var/suit_item = get_item_by_slot(ITEM_SLOT_OCLOTHING)
+ var/head_item = get_item_by_slot(ITEM_SLOT_HEAD)
var/turf/T = get_turf(src)
-
+
if(istype(head_item, /obj/item/clothing/head/helmet/space) && istype(suit_item, /obj/item/clothing/suit/space))
return 1
-
+
if(T && is_mining_level(T.z) && istype(head_item, /obj/item/clothing/head/hooded/explorer) && istype(suit_item, /obj/item/clothing/suit/hooded/explorer))
return 1
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index 13d234092c..0c9895c729 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -30,7 +30,7 @@
return 0
if(myPath.len <= 0)
- myPath = get_path_to(src, get_turf(target), /turf/proc/Distance, MAX_RANGE_FIND + 1, 250,1)
+ myPath = get_path_to(src, target, 250, 1)
if(myPath)
if(myPath.len > 0)
diff --git a/code/modules/mob/living/carbon/monkey/inventory.dm b/code/modules/mob/living/carbon/monkey/inventory.dm
index 34599028f7..156eef9b6b 100644
--- a/code/modules/mob/living/carbon/monkey/inventory.dm
+++ b/code/modules/mob/living/carbon/monkey/inventory.dm
@@ -5,29 +5,29 @@
return FALSE
switch(slot)
- if(SLOT_HANDS)
+ if(ITEM_SLOT_HANDS)
if(get_empty_held_indexes())
return TRUE
return FALSE
- if(SLOT_WEAR_MASK)
+ if(ITEM_SLOT_MASK)
if(wear_mask)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_MASK) )
return FALSE
return TRUE
- if(SLOT_NECK)
+ if(ITEM_SLOT_NECK)
if(wear_neck)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_NECK) )
return FALSE
return TRUE
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
if(head)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_HEAD) )
return FALSE
return TRUE
- if(SLOT_BACK)
+ if(ITEM_SLOT_BACK)
if(back)
return FALSE
if( !(I.slot_flags & ITEM_SLOT_BACK) )
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index f8ac8c6716..8a029613e2 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -184,5 +184,5 @@ GLOBAL_LIST_INIT(strippable_monkey_items, create_strippable_list(list(
. = ..()
if(prob(10))
var/obj/item/clothing/head/helmet/justice/escape/helmet = new(src)
- equip_to_slot_or_del(helmet,SLOT_HEAD)
+ equip_to_slot_or_del(helmet,ITEM_SLOT_HEAD)
INVOKE_ASYNC(helmet, /obj/item.proc/attack_self, src) // todo encapsulate toggle
diff --git a/code/modules/mob/living/carbon/monkey/punpun.dm b/code/modules/mob/living/carbon/monkey/punpun.dm
index c59218a8a3..d71a989c1d 100644
--- a/code/modules/mob/living/carbon/monkey/punpun.dm
+++ b/code/modules/mob/living/carbon/monkey/punpun.dm
@@ -29,9 +29,9 @@
if(ancestor_chain > 1)
generate_fake_scars(rand(ancestor_chain, ancestor_chain * 4))
if(relic_hat)
- equip_to_slot_or_del(new relic_hat, SLOT_HEAD)
+ equip_to_slot_or_del(new relic_hat, ITEM_SLOT_HEAD)
if(relic_mask)
- equip_to_slot_or_del(new relic_mask, SLOT_WEAR_MASK)
+ equip_to_slot_or_del(new relic_mask, ITEM_SLOT_MASK)
/mob/living/carbon/monkey/punpun/BiologicalLife(seconds, times_fired)
if(!(. = ..()))
diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm
index 43e0db1f08..cd9cd5db4c 100644
--- a/code/modules/mob/living/carbon/update_icons.dm
+++ b/code/modules/mob/living/carbon/update_icons.dm
@@ -91,7 +91,7 @@
return
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1]
inv?.update_icon()
if(wear_mask)
@@ -104,8 +104,8 @@
/mob/living/carbon/update_inv_neck()
remove_overlay(NECK_LAYER)
- if(client && hud_used && hud_used.inv_slots[SLOT_NECK])
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_NECK]
+ if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1])
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1]
inv.update_icon()
if(wear_neck)
@@ -119,7 +119,7 @@
remove_overlay(BACK_LAYER)
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BACK]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1]
inv?.update_icon()
if(back)
@@ -135,7 +135,7 @@
return
if(client && hud_used)
- var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_HEAD) + 1]
inv?.update_icon()
if(head)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 2070d07e14..bf3094cb08 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -395,6 +395,7 @@
..()
update_pull_movespeed()
update_pull_hud_icon()
+ SEND_SIGNAL(src, COMSIG_LIVING_STOPPED_PULLING)
/mob/living/verb/stop_pulling1()
set name = "Stop Pulling"
diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm
index af34fb54cf..6aed30ab83 100644
--- a/code/modules/mob/living/living_mobility.dm
+++ b/code/modules/mob/living/living_mobility.dm
@@ -9,6 +9,8 @@
resting = new_resting
if(!silent)
to_chat(src, "You are now [resting? "resting" : "getting up"].")
+ if(resting == 1)
+ SEND_SIGNAL(src, COMSIG_LIVING_RESTING)
update_resting(updating)
/mob/living/proc/update_resting(update_mobility = TRUE)
diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm
index 2b1c2de17a..e9bf3c5d49 100644
--- a/code/modules/mob/living/login.dm
+++ b/code/modules/mob/living/login.dm
@@ -2,7 +2,10 @@
..()
//Mind updates
sync_mind()
- mind.show_memory(src, 0)
+//ambition start
+ if(mind.memory || mind.antag_datums)
+ to_chat(src, "[mind.show_memory()]")
+//ambition end
//Round specific stuff
if(SSticker.mode)
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index ca9ca75e6c..3aec65f6fb 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -551,7 +551,7 @@ Pass a positive integer as an argument to override a bot's default speed.
var/datum/job/captain/All = new/datum/job/captain
all_access.access = All.get_access()
- set_path(get_path_to(src, waypoint, /turf/proc/Distance_cardinal, 0, 200, id=all_access))
+ set_path(get_path_to(src, waypoint, 200, id=all_access))
calling_ai = caller //Link the AI to the bot!
ai_waypoint = waypoint
@@ -730,6 +730,7 @@ Pass a positive integer as an argument to override a bot's default speed.
access_card.access = user_access + prev_access //Adds the user's access, if any.
mode = BOT_SUMMON
speak("Responding.", radio_channel)
+
calc_summon_path()
if("ejectpai")
@@ -765,12 +766,12 @@ Pass a positive integer as an argument to override a bot's default speed.
// given an optional turf to avoid
/mob/living/simple_animal/bot/proc/calc_path(turf/avoid)
check_bot_access()
- set_path(get_path_to(src, patrol_target, /turf/proc/Distance_cardinal, 0, 120, id=access_card, exclude=avoid))
+ set_path(get_path_to(src, patrol_target, 120, id=access_card, exclude=avoid))
/mob/living/simple_animal/bot/proc/calc_summon_path(turf/avoid)
check_bot_access()
spawn()
- set_path(get_path_to(src, summon_target, /turf/proc/Distance_cardinal, 0, 150, id=access_card, exclude=avoid))
+ set_path(get_path_to(src, summon_target, 150, id=access_card, exclude=avoid))
if(!path.len) //Cannot reach target. Give up and announce the issue.
speak("Summon command failed, destination unreachable.",radio_channel)
bot_reset()
diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
index c683267a58..ed68d4d272 100644
--- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
@@ -302,7 +302,7 @@
if(!path || path.len == 0) //No path, need a new one
//Try to produce a path to the target, and ignore airlocks to which it has access.
- path = get_path_to(src, target.loc, /turf/proc/Distance_cardinal, 0, 30, id=access_card)
+ path = get_path_to(src, target, 30, id=access_card)
if(!bot_move(target))
add_to_ignore(target)
target = null
diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm
index 66d1955502..9eea7a85b1 100644
--- a/code/modules/mob/living/simple_animal/bot/firebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/firebot.dm
@@ -223,7 +223,7 @@
if(target_fire && (get_dist(src, target_fire) > 2))
- path = get_path_to(src, get_turf(target_fire), /turf/proc/Distance_cardinal, 0, 30, 1, id=access_card)
+ path = get_path_to(src, target_fire, 30, 1, id=access_card)
mode = BOT_MOVING
if(!path.len)
soft_reset()
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
index 5f0075aaa2..c8b502f032 100644
--- a/code/modules/mob/living/simple_animal/bot/floorbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm
@@ -263,9 +263,9 @@
if(path.len == 0)
if(!isturf(target))
var/turf/TL = get_turf(target)
- path = get_path_to(src, TL, /turf/proc/Distance_cardinal, 0, 30, id=access_card,simulated_only = 0)
+ path = get_path_to(src, TL, 30, id=access_card,simulated_only = 0)
else
- path = get_path_to(src, target, /turf/proc/Distance_cardinal, 0, 30, id=access_card,simulated_only = 0)
+ path = get_path_to(src, target, 30, id=access_card,simulated_only = 0)
if(!bot_move(target))
add_to_ignore(target)
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index e00adfd8e8..0b21f4a825 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -492,10 +492,10 @@
return
if(patient && path.len == 0 && (get_dist(src,patient) > 1))
- path = get_path_to(src, get_turf(patient), /turf/proc/Distance_cardinal, 0, 30,id=access_card)
+ path = get_path_to(src, patient, 30, id=access_card)
mode = BOT_MOVING
if(!path.len) //try to get closer if you can't reach the patient directly
- path = get_path_to(src, get_turf(patient), /turf/proc/Distance_cardinal, 0, 30,1,id=access_card)
+ path = get_path_to(src, patient, 30, 1, id=access_card)
if(!path.len) //Do not chase a patient we cannot reach.
soft_reset()
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index dcb5e5f237..56e2f66feb 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -530,7 +530,7 @@
// calculates a path to the current destination
// given an optional turf to avoid
/mob/living/simple_animal/bot/mulebot/calc_path(turf/avoid = null)
- path = get_path_to(src, target, /turf/proc/Distance_cardinal, 0, 250, id=access_card, exclude=avoid)
+ path = get_path_to(src, target, 250, id=access_card, exclude=avoid)
// sets the current destination
// signals all beacons matching the delivery code
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 ecd5db3ccf..dfb00f2657 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
@@ -88,10 +88,10 @@
if(default_storage)
var/obj/item/I = new default_storage(src)
- equip_to_slot_or_del(I, SLOT_GENERC_DEXTROUS_STORAGE)
+ equip_to_slot_or_del(I, ITEM_SLOT_DEX_STORAGE)
if(default_hatmask)
var/obj/item/I = new default_hatmask(src)
- equip_to_slot_or_del(I, SLOT_HEAD)
+ equip_to_slot_or_del(I, ITEM_SLOT_HEAD)
ADD_TRAIT(access_card, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT)
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 948be53abc..df4d1e0673 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
@@ -61,7 +61,7 @@
if(!D.default_hatmask && seasonal_hats && possible_seasonal_hats.len)
var/hat_type = pick(possible_seasonal_hats)
var/obj/item/new_hat = new hat_type(D)
- D.equip_to_slot_or_del(new_hat, SLOT_HEAD)
+ D.equip_to_slot_or_del(new_hat, ITEM_SLOT_HEAD)
D.flags_1 |= (flags_1 & ADMIN_SPAWNED_1)
user.transfer_ckey(D, FALSE)
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
index 00be08bb1d..4c112858da 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
@@ -21,13 +21,13 @@
/mob/living/simple_animal/drone/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
switch(slot)
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
if(head)
return 0
if(!((I.slot_flags & ITEM_SLOT_HEAD) || (I.slot_flags & ITEM_SLOT_MASK)))
return 0
return 1
- if(SLOT_GENERC_DEXTROUS_STORAGE)
+ if(ITEM_SLOT_DEX_STORAGE)
if(internal_storage)
return 0
return 1
@@ -36,9 +36,9 @@
/mob/living/simple_animal/drone/get_item_by_slot(slot_id)
switch(slot_id)
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
return head
- if(SLOT_GENERC_DEXTROUS_STORAGE)
+ if(ITEM_SLOT_DEX_STORAGE)
return internal_storage
return ..()
@@ -63,10 +63,10 @@
I.plane = ABOVE_HUD_PLANE
switch(slot)
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
head = I
update_inv_head()
- if(SLOT_GENERC_DEXTROUS_STORAGE)
+ if(ITEM_SLOT_DEX_STORAGE)
internal_storage = I
update_inv_internal_storage()
else
@@ -77,7 +77,7 @@
I.equipped(src, slot)
/mob/living/simple_animal/drone/getBackSlot()
- return SLOT_GENERC_DEXTROUS_STORAGE
+ return ITEM_SLOT_DEX_STORAGE
/mob/living/simple_animal/drone/getBeltSlot()
- return SLOT_GENERC_DEXTROUS_STORAGE
+ return ITEM_SLOT_DEX_STORAGE
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 a079507a63..6d421d326e 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
@@ -52,7 +52,7 @@
/mob/living/simple_animal/hostile/guardian/dextrous/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
switch(slot)
- if(SLOT_GENERC_DEXTROUS_STORAGE)
+ if(ITEM_SLOT_DEX_STORAGE)
if(internal_storage)
return 0
return 1
@@ -63,17 +63,17 @@
return
switch(slot)
- if(SLOT_GENERC_DEXTROUS_STORAGE)
+ if(ITEM_SLOT_DEX_STORAGE)
internal_storage = I
update_inv_internal_storage()
else
to_chat(src, "You are trying to equip this item to an unsupported inventory slot. Report this to a coder!")
/mob/living/simple_animal/hostile/guardian/dextrous/getBackSlot()
- return SLOT_GENERC_DEXTROUS_STORAGE
+ return ITEM_SLOT_DEX_STORAGE
/mob/living/simple_animal/hostile/guardian/dextrous/getBeltSlot()
- return SLOT_GENERC_DEXTROUS_STORAGE
+ return ITEM_SLOT_DEX_STORAGE
/mob/living/simple_animal/hostile/guardian/dextrous/proc/update_inv_internal_storage()
if(internal_storage && client && hud_used && hud_used.hud_shown)
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 fa67fd8e3b..6bd55d06ae 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
@@ -191,7 +191,7 @@
continue
visible_message("[src] grabs hold of [L]!")
var/mob/living/carbon/C = L
- var/obj/item/clothing/S = C.get_item_by_slot(SLOT_WEAR_SUIT)
+ var/obj/item/clothing/S = C.get_item_by_slot(ITEM_SLOT_OCLOTHING)
if(S && S.resistance_flags & GOLIATH_RESISTANCE)
L.Stun(25)
else if(S && S.resistance_flags & GOLIATH_WEAKNESS)
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 7c7a684cf3..4cc66bc4bd 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -655,7 +655,7 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list(
item = I
break
if(item)
- if(!AStar(src, get_turf(item), /turf/proc/Distance_cardinal))
+ if(!get_path_to(src, item))
item = null
continue
return item
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 03c5e76e87..4b8fa75aee 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -439,7 +439,11 @@
set category = "IC"
set desc = "View your character's notes memory."
if(mind)
- mind.show_memory(src)
+//ambition start
+ var/datum/browser/popup = new(src, "memory", "Memory and Notes")
+ popup.set_content(mind.show_memory())
+ popup.open()
+//ambition end
else
to_chat(src, "You don't have a mind datum for some reason, so you can't look at your notes, if you had any.")
diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm
index cf895924b0..f59a06dc69 100644
--- a/code/modules/ninja/energy_katana.dm
+++ b/code/modules/ninja/energy_katana.dm
@@ -111,7 +111,7 @@
if(user.put_in_hands(src))
msg = "Your Energy Katana teleports into your hand!"
- else if(user.equip_to_slot_if_possible(src, SLOT_BELT, 0, 1, 1))
+ else if(user.equip_to_slot_if_possible(src, ITEM_SLOT_BELT, 0, 1, 1))
msg = "Your Energy Katana teleports back to you, sheathing itself as it does so!"
else
msg = "Your Energy Katana teleports to your location!"
diff --git a/code/modules/ninja/outfit.dm b/code/modules/ninja/outfit.dm
index ca740d9ad7..f9ce438ed9 100644
--- a/code/modules/ninja/outfit.dm
+++ b/code/modules/ninja/outfit.dm
@@ -11,7 +11,7 @@
l_pocket = /obj/item/grenade/plastic/c4/ninja
r_pocket = /obj/item/hypospray/mkii/CMO/combat
suit_store = /obj/item/tank/internals/oxygen
- internals_slot = SLOT_S_STORE
+ internals_slot = ITEM_SLOT_SUITSTORE
belt = /obj/item/energy_katana
implants = list(/obj/item/implant/explosive)
diff --git a/code/modules/ninja/suit/shoes.dm b/code/modules/ninja/suit/shoes.dm
index 6fba60a6ef..4f46a1bfc6 100644
--- a/code/modules/ninja/suit/shoes.dm
+++ b/code/modules/ninja/suit/shoes.dm
@@ -22,7 +22,7 @@
/obj/item/clothing/shoes/space_ninja/equipped(mob/user, slot)
. = ..()
- if(slot == SLOT_SHOES)
+ if(slot == ITEM_SLOT_FEET)
ADD_TRAIT(user, TRAIT_SILENT_STEP, SHOES_TRAIT)
/obj/item/clothing/shoes/space_ninja/dropped(mob/user)
diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
index f07ad0bc39..8c26f40d8b 100644
--- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
+++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
@@ -163,7 +163,7 @@
icon = 'icons/obj/ammo.dmi'
icon_state = "shotgunclip"
caliber = "shotgun" // slapped in to allow shell mix n match
- slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_POCKET
+ slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_POCKETS
w_class = WEIGHT_CLASS_NORMAL
w_volume = ITEM_VOLUME_STRIPPER_CLIP
ammo_type = /obj/item/ammo_casing/shotgun
diff --git a/code/modules/projectiles/boxes_magazines/external/rechargable.dm b/code/modules/projectiles/boxes_magazines/external/rechargable.dm
index 5b774b111a..76d8f217ab 100644
--- a/code/modules/projectiles/boxes_magazines/external/rechargable.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rechargable.dm
@@ -54,7 +54,7 @@
desc = "A miniature battery for an energy weapon."
icon = 'icons/obj/ammo.dmi'
icon_state = "mws_batt"
- slot_flags = SLOT_BELT | SLOT_EARS
+ slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_EARS
throwforce = 1
caliber = "mws"
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index bbd77ad665..a1c7c312ab 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -619,7 +619,7 @@
. += knife_overlay
/obj/item/gun/item_action_slot_check(slot, mob/user, datum/action/A)
- if(istype(A, /datum/action/item_action/toggle_scope_zoom) && slot != SLOT_HANDS)
+ if(istype(A, /datum/action/item_action/toggle_scope_zoom) && slot != ITEM_SLOT_HANDS)
return FALSE
return ..()
diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm
index e7f26670d4..1f0601ac77 100644
--- a/code/modules/projectiles/guns/ballistic/toy.dm
+++ b/code/modules/projectiles/guns/ballistic/toy.dm
@@ -140,6 +140,6 @@
recoil = 0.1
inaccuracy_modifier = 0.25
dualwield_spread_mult = 1.4
- slot_flags = SLOT_BELT
+ slot_flags = ITEM_SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
weapon_weight = WEAPON_MEDIUM
diff --git a/code/modules/projectiles/guns/energy/laser_gatling.dm b/code/modules/projectiles/guns/energy/laser_gatling.dm
index a0274d76d7..2bb1ece906 100644
--- a/code/modules/projectiles/guns/energy/laser_gatling.dm
+++ b/code/modules/projectiles/guns/energy/laser_gatling.dm
@@ -32,7 +32,7 @@
/obj/item/minigunpack/on_attack_hand(var/mob/living/carbon/user)
if(src.loc == user)
if(!armed)
- if(user.get_item_by_slot(SLOT_BACK) == src)
+ if(user.get_item_by_slot(ITEM_SLOT_BACK) == src)
armed = 1
if(!user.put_in_hands(gun))
armed = 0
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index 2899f0ca11..cdad332def 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -14,6 +14,7 @@
GLOB.chemical_reagents_list[path] = D
/proc/build_chemical_reactions_list()
+ message_admins("STARTY START START!")
//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
// It is filtered into multiple lists within a list.
// For example:
@@ -26,11 +27,20 @@
//Randomized need to go last since they need to check against conflicts with normal recipes
var/paths = subtypesof(/datum/chemical_reaction) - typesof(/datum/chemical_reaction/randomized) + subtypesof(/datum/chemical_reaction/randomized)
GLOB.chemical_reactions_list = list()
+ GLOB.normalized_chemical_reactions_list = list() // chemistry pda
+ GLOB.drink_reactions_list = list() // bartender pda
for(var/path in paths)
var/datum/chemical_reaction/D = new path()
var/list/reaction_ids = list()
+ // store recipes separately for bartender/chemistry cartridges
+ if(D.id && !D.is_secret) // don't show things like secretcatchem or secret sauce
+ var/datum/reagent/r = D.id
+ if(ispath(D.id, /datum/reagent/consumable))
+ GLOB.drink_reactions_list[initial(r.name)] = D
+ if(ispath(D.id, /datum/reagent))
+ GLOB.normalized_chemical_reactions_list[initial(r.name)] = D
if(D.required_reagents && D.required_reagents.len)
for(var/reaction in D.required_reagents)
@@ -43,6 +53,31 @@
GLOB.chemical_reactions_list[id] += D
break // Don't bother adding ourselves to other reagent ids, it is redundant
+/proc/recipe_search(mob/M, list/reaction_list)
+ var/option = input(M, "Enter keyword to return a recipe.")
+ if(option)
+ option = lowertext(option)
+ var/list/reagents_required
+ var/found_reagent_name
+ var/required_temp
+ for(var/reagent_name in reaction_list)
+ if(findtext(lowertext(reagent_name), option))
+ var/datum/chemical_reaction/reaction = reaction_list[reagent_name]
+ found_reagent_name = reagent_name
+ reagents_required = reaction.required_reagents
+ required_temp = reaction.required_temp
+ break
+ if(length(reagents_required))
+ to_chat(M, "Recipe found: [found_reagent_name][required_temp ? " Required Temperature: [required_temp]K" : ""] Required Reagents:")
+ var/reagents_required_string = ""
+ for(var/r in reagents_required)
+ var/datum/reagent/reagent = r
+ reagents_required_string += " [initial(reagent.name)]: [reagents_required[r]]"
+ to_chat(M, reagents_required_string)
+ return
+ else
+ to_chat(M, "Reagent with term: [option] could not be located!")
+
///////////////////////////////////////////////////////////////////////////////////
/datum/reagents
diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm
index 41c0ed717e..aab46bc3e4 100644
--- a/code/modules/reagents/chemistry/recipes.dm
+++ b/code/modules/reagents/chemistry/recipes.dm
@@ -38,6 +38,8 @@
var/clear_conversion //bitflags for clear conversions; REACTION_CLEAR_IMPURE or REACTION_CLEAR_INVERSE
var/PurityMin = 0.15 //If purity is below 0.15, it explodes too. Set to 0 to disable this.
+ var/is_secret = FALSE // If it should show in recipe searchers such as the bartender/chemistry PDA functions
+
/datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, multiplier, specialreact)
set waitfor = FALSE
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index fddff17a9d..03b0e1b715 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -581,7 +581,7 @@
if(istype(extract))
if(extract.Uses > 0)
var/mob/lastheld = get_mob_by_key(holder.my_atom.fingerprintslast)
- if(lastheld && !lastheld.equip_to_slot_if_possible(extract, SLOT_HANDS, disable_warning = TRUE))
+ if(lastheld && !lastheld.equip_to_slot_if_possible(extract, ITEM_SLOT_HANDS, disable_warning = TRUE))
extract.forceMove(get_turf(lastheld))
use_slime_core(holder)
diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm
index ad277ef4ff..4aab8e4046 100644
--- a/code/modules/reagents/chemistry/recipes/special.dm
+++ b/code/modules/reagents/chemistry/recipes/special.dm
@@ -54,6 +54,8 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
var/max_result_reagents = 1
var/list/possible_results = list()
+ is_secret = TRUE
+
/datum/chemical_reaction/randomized/proc/GenerateRecipe()
created = world.time
if(randomize_container)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 6e1b753c32..cc7ff43bab 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -300,14 +300,14 @@
resistance_flags = NONE
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 50) //Weak melee protection, because you can wear it on your head
slot_equipment_priority = list( \
- SLOT_BACK, SLOT_WEAR_ID,\
- SLOT_W_UNIFORM, SLOT_WEAR_SUIT,\
- SLOT_WEAR_MASK, SLOT_HEAD, SLOT_NECK,\
- SLOT_SHOES, SLOT_GLOVES,\
- SLOT_EARS, SLOT_GLASSES,\
- SLOT_BELT, SLOT_S_STORE,\
- SLOT_L_STORE, SLOT_R_STORE,\
- SLOT_GENERC_DEXTROUS_STORAGE
+ ITEM_SLOT_BACK, ITEM_SLOT_ID,\
+ ITEM_SLOT_ICLOTHING, ITEM_SLOT_OCLOTHING,\
+ ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_NECK,\
+ ITEM_SLOT_FEET, ITEM_SLOT_GLOVES,\
+ ITEM_SLOT_EARS, ITEM_SLOT_EYES,\
+ ITEM_SLOT_BELT, ITEM_SLOT_SUITSTORE,\
+ ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET,\
+ ITEM_SLOT_DEX_STORAGE
)
container_flags = APTFT_ALTCLICK|APTFT_VERB
container_HP = 1
@@ -330,11 +330,11 @@
/obj/item/reagent_containers/glass/bucket/equipped(mob/user, slot)
..()
- if (slot == SLOT_HEAD)
+ if (slot == ITEM_SLOT_HEAD)
if(reagents.total_volume)
to_chat(user, "[src]'s contents spill all over you!")
var/R = reagents.log_list()
- log_reagent("SPLASH: [user] splashed [src] on their head via bucket/equipped(self, SLOT_HEAD) - [R]")
+ log_reagent("SPLASH: [user] splashed [src] on their head via bucket/equipped(self, ITEM_SLOT_HEAD) - [R]")
reagents.reaction(user, TOUCH)
reagents.clear_reagents()
reagent_flags = NONE
@@ -345,10 +345,10 @@
/obj/item/reagent_containers/glass/bucket/equip_to_best_slot(var/mob/M)
if(reagents.total_volume) //If there is water in a bucket, don't quick equip it to the head
- var/index = slot_equipment_priority.Find(SLOT_HEAD)
- slot_equipment_priority.Remove(SLOT_HEAD)
+ var/index = slot_equipment_priority.Find(ITEM_SLOT_HEAD)
+ slot_equipment_priority.Remove(ITEM_SLOT_HEAD)
. = ..()
- slot_equipment_priority.Insert(index, SLOT_HEAD)
+ slot_equipment_priority.Insert(index, ITEM_SLOT_HEAD)
return
return ..()
diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm
index c26ed4db31..78cb9d43ea 100644
--- a/code/modules/reagents/reagent_containers/rags.dm
+++ b/code/modules/reagents/reagent_containers/rags.dm
@@ -150,11 +150,11 @@
/obj/item/reagent_containers/rag/towel/equipped(mob/living/user, slot)
. = ..()
switch(slot)
- if(SLOT_BELT)
+ if(ITEM_SLOT_BELT)
body_parts_covered = GROIN|LEGS
- if(SLOT_WEAR_SUIT)
+ if(ITEM_SLOT_OCLOTHING)
body_parts_covered = CHEST|GROIN|LEGS
- if(SLOT_HEAD)
+ if(ITEM_SLOT_HEAD)
body_parts_covered = HEAD
flags_inv = HIDEHAIR
diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm
index 8da18c453c..e30cdfb5ef 100644
--- a/code/modules/research/designs/limbgrower_designs.dm
+++ b/code/modules/research/designs/limbgrower_designs.dm
@@ -2,6 +2,18 @@
//////////Limb Grower Designs ///////
/////////////////////////////////////
+
+/datum/design/chestmob
+ name = "Synthetic Humanoid Framework Chest"
+ id = "chestmob"
+ // Mobs don't make very good roundstart icons
+ research_icon = 'icons/mob/human_parts.dmi'
+ research_icon_state = "default_human_chest"
+ build_type = LIMBGROWER
+ reagents_list = list(/datum/reagent/medicine/synthflesh = 100, /datum/reagent/blood = BLOOD_VOLUME_SURVIVE)
+ build_path = /mob/living/carbon/human/chestonly
+ category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno")
+
/datum/design/leftarm
name = "Left Arm"
id = "leftarm"
diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm
index 1ac09652b5..b30a53c27d 100644
--- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm
@@ -19,7 +19,7 @@ Slimecrossing Armor
/obj/item/clothing/mask/nobreath/equipped(mob/living/carbon/human/user, slot)
. = ..()
- if(slot == SLOT_WEAR_MASK)
+ if(slot == ITEM_SLOT_MASK)
ADD_TRAIT(user, TRAIT_NOBREATH, "breathmask_[REF(src)]")
user.failed_last_breath = FALSE
user.clear_alert("not_enough_oxy")
@@ -39,7 +39,7 @@ Slimecrossing Armor
var/glasses_color = "#FFFFFF"
/obj/item/clothing/glasses/prism_glasses/item_action_slot_check(slot)
- if(slot == SLOT_GLASSES)
+ if(slot == ITEM_SLOT_EYES)
return TRUE
/obj/structure/light_prism
@@ -111,7 +111,7 @@ Slimecrossing Armor
/obj/item/clothing/head/peaceflower/equipped(mob/living/carbon/human/user, slot)
. = ..()
- if(slot == SLOT_HEAD)
+ if(slot == ITEM_SLOT_HEAD)
ADD_TRAIT(user, TRAIT_PACIFISM, "peaceflower_[REF(src)]")
/obj/item/clothing/head/peaceflower/dropped(mob/living/carbon/human/user)
diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
index dee7b1cf45..f871cac778 100644
--- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm
+++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
@@ -127,10 +127,10 @@ Regenerative extracts:
/obj/item/slimecross/regenerative/darkpurple/core_effect(mob/living/target, mob/user)
var/equipped = 0
- equipped += target.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/purple(null), SLOT_SHOES)
- equipped += target.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(null), SLOT_W_UNIFORM)
- equipped += target.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/purple(null), SLOT_GLOVES)
- equipped += target.equip_to_slot_or_del(new /obj/item/clothing/head/soft/purple(null), SLOT_HEAD)
+ equipped += target.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/purple(null), ITEM_SLOT_FEET)
+ equipped += target.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(null), ITEM_SLOT_ICLOTHING)
+ equipped += target.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/purple(null), ITEM_SLOT_GLOVES)
+ equipped += target.equip_to_slot_or_del(new /obj/item/clothing/head/soft/purple(null), ITEM_SLOT_HEAD)
if(equipped > 0)
target.visible_message("The milky goo congeals into clothing!")
@@ -142,13 +142,13 @@ Regenerative extracts:
return
var/mob/living/carbon/human/H = target
var/fireproofed = FALSE
- if(H.get_item_by_slot(SLOT_WEAR_SUIT))
+ if(H.get_item_by_slot(ITEM_SLOT_OCLOTHING))
fireproofed = TRUE
- var/obj/item/clothing/C = H.get_item_by_slot(SLOT_WEAR_SUIT)
+ var/obj/item/clothing/C = H.get_item_by_slot(ITEM_SLOT_OCLOTHING)
fireproof(C)
- if(H.get_item_by_slot(SLOT_HEAD))
+ if(H.get_item_by_slot(ITEM_SLOT_HEAD))
fireproofed = TRUE
- var/obj/item/clothing/C = H.get_item_by_slot(SLOT_HEAD)
+ var/obj/item/clothing/C = H.get_item_by_slot(ITEM_SLOT_HEAD)
fireproof(C)
if(fireproofed)
target.visible_message("Some of [target]'s clothing gets coated in the goo, and turns blue!")
diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm
index fbe7a0ea40..bf6051c87c 100644
--- a/code/modules/spells/spell_types/lichdom.dm
+++ b/code/modules/spells/spell_types/lichdom.dm
@@ -63,9 +63,9 @@
H.dropItemToGround(H.w_uniform)
H.dropItemToGround(H.wear_suit)
H.dropItemToGround(H.head)
- H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(H), SLOT_WEAR_SUIT)
- H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(H), SLOT_HEAD)
- H.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(H), SLOT_W_UNIFORM)
+ H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(H), ITEM_SLOT_OCLOTHING)
+ H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(H), ITEM_SLOT_HEAD)
+ H.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(H), ITEM_SLOT_ICLOTHING)
// you only get one phylactery.
M.mind.RemoveSpell(src)
@@ -132,10 +132,10 @@
var/mob/old_body = mind.current
var/mob/living/carbon/human/lich = new(item_turf)
- lich.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(lich), SLOT_SHOES)
- lich.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(lich), SLOT_W_UNIFORM)
- lich.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(lich), SLOT_WEAR_SUIT)
- lich.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(lich), SLOT_HEAD)
+ lich.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(lich), ITEM_SLOT_FEET)
+ lich.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(lich), ITEM_SLOT_ICLOTHING)
+ lich.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(lich), ITEM_SLOT_OCLOTHING)
+ lich.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(lich), ITEM_SLOT_HEAD)
lich.real_name = mind.name
mind.transfer_to(lich)
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index 3e0e71446d..d4a87a0f1e 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -102,7 +102,7 @@
var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals))
unbuckle_mob(H)
H.throw_at(throw_target, 3, 2)
- var/head_slot = H.get_item_by_slot(SLOT_HEAD)
+ var/head_slot = H.get_item_by_slot(ITEM_SLOT_HEAD)
if(!head_slot || !(istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat)))
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
H.updatehealth()
@@ -281,7 +281,7 @@
H.throw_at(throw_target, 4, 3)
H.DefaultCombatKnockdown(30)
H.adjustStaminaLoss(30)
- var/head_slot = H.get_item_by_slot(SLOT_HEAD)
+ var/head_slot = H.get_item_by_slot(ITEM_SLOT_HEAD)
if(!head_slot || !(istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat)))
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1)
H.updatehealth()
diff --git a/dependencies.sh b/dependencies.sh
index 4474cc8736..0a27dd623f 100644
--- a/dependencies.sh
+++ b/dependencies.sh
@@ -18,7 +18,7 @@ export NODE_VERSION_PRECISE=12.22.4
export SPACEMAN_DMM_VERSION=suite-1.7
# Python version for mapmerge and other tools
-export PYTHON_VERSION=3.6.8
+export PYTHON_VERSION=3.7.9
# Auxmos git tag
export AUXMOS_VERSION=v0.3.0
diff --git a/html/changelogs/archive/2022-02.yml b/html/changelogs/archive/2022-02.yml
index 8ae10a7f5c..12ad63274c 100644
--- a/html/changelogs/archive/2022-02.yml
+++ b/html/changelogs/archive/2022-02.yml
@@ -128,3 +128,49 @@
- bugfix: '[Omega] Toxins Mix Chamber no longer starts bolted'
- bugfix: '[Omega] Missing pipe above Security leading into Perma'
- bugfix: '[Omega] Secure Tech Storage now properly has an area'
+2022-02-23:
+ SandPoot:
+ - bugfix: You know the training targets? You can grab them again now with your own
+ hands, instead of using telekinesis.
+ TripleShades:
+ - rscadd: '[Omega] Trash chute to space in Virology'
+ - rscadd: '[Omega] Trash chute to space in Xenobiology'
+ - rscadd: '[Omega] Airlock leading out to Supermatter cooling pipeline'
+ - rscadd: '[Omega] Two more air pumps to Toxins'
+ - rscadd: '[Omega] Robotics circuitry printer'
+ - rscadd: '[Omega] Windoor to Cargo delivery flaps'
+ - rscdel: '[Omega] Backdoor to Gravity Generator'
+ - rscdel: '[Omega] Bunched up cameras tweak: [Omega] Pipes leading to the Incinerator
+ burn chamber are now black tweak: [Omega] Gravity Generator airlocks are now
+ accessible by engineers tweak: [Omega] Chapel mass driver and mass driver bulkhead
+ are now controlled by one button instead of two'
+ - bugfix: '[Omega] Lawyer''s carpet is no longer airless'
+2022-02-25:
+ TripleShades:
+ - rscadd: '[Omega] Additional Solar Panels to both existing arrays'
+ - rscadd: '[Omega] Floor tile underneath library maint airlock'
+ - rscadd: '[Omega] Contraband locker to Armoury'
+ - bugfix: '[Omega] Solar Array SMES Units actually connect to the grid properly
+ now'
+ timothyteakettle:
+ - rscadd: adds snake coiling
+2022-02-26:
+ Putnam3145:
+ - balance: Now slightly easier to get 50,000 points with toxins (50,000 point baseline
+ changed from 200 light range to 175)
+2022-02-28:
+ Arturlang:
+ - rscadd: The limbgrower can make human chest parts that you can build onto into
+ a person.
+ Putnam3145:
+ - rscadd: Configurable weekly high-chaos days
+ SandPoot:
+ - refactor: Kills off SLOT_ in favor of ITEM_SLOT_
+ SandPoot and Crowbar764:
+ - rscadd: TGUI for the player playtimes menu.
+ bunny232:
+ - rscadd: Cold weather gear can now provide insulation against temperatures of up
+ to 57C (330K)
+ timothyteakettle:
+ - rscadd: adds a cartridge for the bartender's PDA that lets them search drink recipes
+ - rscadd: updates chemist cartridge to be able to search all chemical recipes
diff --git a/html/statbrowser.html b/html/statbrowser.html
index 1cb089a189..ecb47c419c 100644
--- a/html/statbrowser.html
+++ b/html/statbrowser.html
@@ -12,16 +12,27 @@
font-size: 12px !important;
margin: 0 !important;
padding: 0 !important;
+ overflow-x: hidden;
+ overflow-y: scroll;
}
+
body.dark {
background-color: #131313;
- color: #abc6ec;
+ color: #b2c4dd;
+ scrollbar-base-color: #1c1c1c;
+ scrollbar-face-color: #3b3b3b;
+ scrollbar-3dlight-color: #252525;
+ scrollbar-highlight-color: #252525;
+ scrollbar-track-color: #1c1c1c;
+ scrollbar-arrow-color: #929292;
+ scrollbar-shadow-color: #3b3b3b;
}
#menu {
background-color: #F0F0F0;
position: fixed;
width: 100%;
+ z-index: 100;
}
.dark #menu {
@@ -38,7 +49,7 @@
}
.dark a {
- color: #abc6ec;
+ color: #b2c4dd;
}
a:hover, .dark a:hover {
@@ -80,73 +91,115 @@
.button {
background-color: #dfdfdf;
- border-color: #cecece;
- border-width: 1px;
- border-style: solid;
+ border: 1px solid #cecece;
+ border-bottom-width: 2px;
color: rgba(0, 0, 0, 0.7);
- padding: 6px 4px;
+ padding: 6px 4px 4px;
text-align: center;
text-decoration: none;
font-size: 12px;
margin: 0;
cursor: pointer;
- transition-duration: 0.25s;
+ transition-duration: 100ms;
order: 3;
min-width: 40px;
}
.dark button {
- background-color: #444444;
+ background-color: #222222;
border-color: #343434;
- color: rgba(255, 255, 255, 0.7);
+ color: rgba(255, 255, 255, 0.5);
}
.button:hover {
background-color: #ececec;
+ transition-duration: 0;
}
.dark button:hover {
- background-color: #4d4d4d;
+ background-color: #2e2e2e;
}
.button:active, .button.active {
background-color: #ffffff;
color: black;
- border-top: 1px solid #cecece;
- border-left: 1px solid #cecece;
- border-right: 1px solid #cecece;
- border-bottom: 1px solid #ffffff;
+ border-top-color: #cecece;
+ border-left-color: #cecece;
+ border-right-color: #cecece;
+ border-bottom-color: #ffffff;
}
.dark .button:active, .dark .button.active {
- background-color: #131313;
+ background-color: #444444;
color: white;
- border-top: 1px solid #343434;
- border-left: 1px solid #343434;
- border-right: 1px solid #343434;
- border-bottom: 1px solid #131313;
+ border-top-color: #343434;
+ border-left-color: #343434;
+ border-right-color: #343434;
+ border-bottom-color: #ffffff;
}
.grid-container {
- display: inline-flex;
- flex-wrap: wrap;
- justify-content: flex-start;
- align-items: flex-start;
- min-width: 0;
- min-height: 0;
- white-space: pre-wrap;
+ margin: -2px;
+ margin-right: -15px;
}
.grid-item {
- color: black;
- width: 150px;
- font-size: 11px;
- line-height: 24px;
- text-align: left;
- min-width: 0;
- min-height: 0;
- white-space: pre-wrap;
- padding-right: 12px; /* A little more than two spaces, to look good in IE8 where flex-justify does nothing */
+ position: relative;
+ display: inline-block;
+ width: 100%;
+ box-sizing: border-box;
+ overflow: visible;
+ padding: 3px 2px;
+ text-decoration: none;
+ }
+
+ @media only screen and (min-width: 300px) {
+ .grid-item {
+ width: 50%;
+ }
+ }
+
+ @media only screen and (min-width: 430px) {
+ .grid-item {
+ width: 33%;
+ }
+ }
+
+ @media only screen and (min-width: 560px) {
+ .grid-item {
+ width: 25%;
+ }
+ }
+
+ @media only screen and (min-width: 770px) {
+ .grid-item {
+ width: 20%;
+ }
+ }
+
+ .grid-item:hover {
+ z-index: 1;
+ }
+
+ .grid-item:hover .grid-item-text {
+ width: auto;
+ text-decoration: underline;
+ }
+
+ .grid-item-text {
+ display: inline-block;
+ width: 100%;
+ background-color: #ffffff;
+ margin: 0 -6px;
+ padding: 0 6px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ pointer-events: none;
+ }
+
+ .dark .grid-item-text {
+ background-color: #131313;
}
.link {
@@ -173,6 +226,10 @@
-ms-interpolation-mode: nearest-neighbor;
image-rendering: pixelated;
}
+
+ .interview_panel_controls, .interview_panel_stats {
+ margin-bottom: 10px;
+ }
@@ -242,53 +299,6 @@ if (!String.prototype.trim) {
}, 0, 'test');
}())
-// Browser passthrough code ---------------------------------------------------
-if (window.location) {
- var anti_spam = []; // wow I wish I could use e.repeat but IE is dumb and doesn't have it.
- document[addEventListenerKey]("keydown", function(e) {
- if(e.target && (e.target.localName == "input" || e.target.localName == "textarea"))
- return;
- if(e.defaultPrevented)
- return; // do e.preventDefault() to prevent this behavior.
- if(e.which) {
- if(!anti_spam[e.which]) {
- anti_spam[e.which] = true;
- var key = String.fromCharCode(e.which);
- var x = event.x || event.clientX;
- var y = event.y || event.clientY;
- if(x || y ) // if either of these exist this is happening after a click
- return;
- window.location.href = "byond://winset?command=keyDown " + e.key;
- }
- }
- });
- document[addEventListenerKey]("keyup", function(e) {
- if(e.target && (e.target.localName == "input" || e.target.localName == "textarea"))
- return;
- if(e.defaultPrevented)
- return;
- if(e.which) {
- anti_spam[e.which] = false;
- var key = String.fromCharCode(e.which);
- var x = event.x || event.clientX;
- var y = event.y || event.clientY;
- if( x || y ) // if either of these exist this is happening after a click
- return;
-
- window.location.href = "byond://winset?command=keyUp " + e.key;
- }
- });
-}
-/* document.addEventListener("mousedown", function(e){
- var shiftPressed=0;
- var evt = e?e:window.event;
- shiftPressed=evt.shiftKey;
- if (shiftPressed) {
- return false;
- }
- return true;
-}); */
-
// Status panel implementation ------------------------------------------------
var status_tab_parts = ["Loading..."];
var current_tab = null;
@@ -300,20 +310,80 @@ var spell_tabs = [];
var verb_tabs = [];
var verbs = [["", ""]]; // list with a list inside
var tickets = [];
+var interviewManager = {status: "", interviews: []};
var sdql2 = [];
var permanent_tabs = []; // tabs that won't be cleared by wipes
var turfcontents = [];
var turfname = "";
var imageRetryDelay = 500;
var imageRetryLimit = 50;
-var menu = document.querySelector('#menu');
-var under_menu = document.querySelector('#under_menu');
-var statcontentdiv = document.querySelector('#statcontent');
+var menu = document.getElementById('menu');
+var under_menu = document.getElementById('under_menu');
+var statcontentdiv = document.getElementById('statcontent');
var storedimages = [];
+var split_admin_tabs = false;
+
+var connected = false;
+var commandQueue = [];
+
+// Any BYOND verb call must go through this, as if a verb is sent during reconnect then
+// it will cause the reconnect to fail.
+// This function will either call immediately, or queue until
+// BYOND confirms we are connected.
+function send_byond_command(command) {
+ var href = "byond://winset?command=" + command;
+
+ if (connected) {
+ window.location.href = href;
+ } else {
+ commandQueue.push(href);
+ }
+}
+
+// Any BYOND commands that could result in the client's focus changing go through this
+// to ensure that when we relinquish our focus, we don't do it after the result of
+// a command has already taken focus for itself.
+function run_after_focus(callback) {
+ setTimeout(callback, 0);
+}
+
+function connected_to_server() {
+ if (connected) {
+ return;
+ }
+
+ connected = true;
+
+ for (var index = 0; index < commandQueue.length; index++) {
+ // This is just setting it a lot, is this not going to cancel?
+ window.location.href = commandQueue[index];
+ }
+
+ commandQueue = [];
+}
+
+function update_split_admin_tabs(status) {
+ status = (status == true);
+
+ if (split_admin_tabs !== status) {
+ if (split_admin_tabs === true) {
+ removeStatusTab("Events");
+ removeStatusTab("Fun");
+ removeStatusTab("Game");
+ }
+ update_verbs();
+ }
+ split_admin_tabs = status;
+}
function createStatusTab(name) {
- if (name.indexOf(".") != -1)
- name = name.split(".")[0];
+ if (name.indexOf(".") != -1) {
+ var splitName = name.split(".");
+ if (split_admin_tabs && splitName[0] === "Admin")
+ name = splitName[1];
+ else
+ name = splitName[0];
+ }
if(document.getElementById(name) || name.trim() == "")
return;
if(!verb_tabs.includes(name) && !permanent_tabs.includes(name))
@@ -386,6 +456,7 @@ function checkStatusTab() {
if(!verb_tabs.includes(menu.children[i].id) && !permanent_tabs.includes(menu.children[i].id))
menu.removeChild(menu.children[i]);
}
+
function remove_verb(v) {
var verb_to_remove = v; // to_remove = [verb:category, verb:name]
for(var i = verbs.length - 1; i >= 0; i--){
@@ -403,7 +474,14 @@ function check_verbs() {
}
function verbs_cat_check(cat) {
- var tabCat = cat.indexOf(".") != -1 ? cat.split(".")[0] : cat;
+ var tabCat = cat;
+ if (cat.indexOf(".") != -1) {
+ var splitName = cat.split(".");
+ if (split_admin_tabs && splitName[0] === "Admin")
+ tabCat = splitName[1];
+ else
+ tabCat = splitName[0];
+ }
var verbs_in_cat = 0;
var verbcat = "";
if(!verb_tabs.includes(tabCat)){
@@ -412,7 +490,14 @@ function verbs_cat_check(cat) {
}
for(var v = 0; v < verbs.length; v++){
var part = verbs[v];
- verbcat = part[0].indexOf(".") != -1 ? part[0].split(".")[0] : part[0];
+ verbcat = part[0];
+ if (verbcat.indexOf(".") != -1) {
+ var splitName = verbcat.split(".");
+ if (split_admin_tabs && splitName[0] === "Admin")
+ verbcat = splitName[1];
+ else
+ verbcat = splitName[0];
+ }
if(verbcat != tabCat || verbcat.trim() == ""){
continue;
}
@@ -441,6 +526,11 @@ function wipe_verbs() {
checkStatusTab(); // remove all empty verb tabs
}
+function update_verbs() {
+ wipe_verbs();
+ send_byond_command("Update-Verbs");
+}
+
function add_verb_list(v) {
var to_add = JSON.parse(v); // list of a list with category and verb inside it
to_add.sort(); // sort what we're adding
@@ -448,7 +538,14 @@ function add_verb_list(v) {
var part = to_add[i];
if(!part[0])
continue;
- var category = part[0].indexOf(".") == -1 ? part[0] : part[0].split(".")[0];
+ var category = part[0];
+ if (category.indexOf(".") != -1) {
+ var splitName = category.split(".");
+ if (split_admin_tabs && splitName[0] === "Admin")
+ category = splitName[1];
+ else
+ category = splitName[0];
+ }
if(findVerbindex(part[1], verbs))
continue;
if(verb_tabs.includes(category)){
@@ -478,6 +575,7 @@ function remove_verb_list(v) {
// passes a 2D list of (verbcategory, verbname) creates tabs and adds verbs to respective list
// example (IC, Say)
function init_verbs(c, v) {
+ connected_to_server();
wipe_verbs(); // remove all verb categories so we can replace them
checkStatusTab(); // remove all status tabs
verb_tabs = JSON.parse(c);
@@ -510,12 +608,12 @@ function SendTabsToByond(){
}
function SendTabToByond(tab) {
- window.location.href = "byond://winset?command=Send-Tabs " + tab;
+ send_byond_command("Send-Tabs " + tab);
}
//Byond can't have this tab anymore since we're removing it
function TakeTabFromByond(tab) {
- window.location.href = "byond://winset?command=Remove-Tabs " + tab;
+ send_byond_command("Remove-Tabs " + tab);
}
function update(global_data, ping_entry, other_entries) {
@@ -625,6 +723,7 @@ function tab_change(tab) {
draw_debug();
} else if(tab == "Tickets") {
draw_tickets();
+// draw_interviews();
} else if(tab == "SDQL2") {
draw_sdql2();
}else if(tab == turfname) {
@@ -636,8 +735,9 @@ function tab_change(tab) {
}
function set_byond_tab(tab){
- window.location.href = "byond://winset?command=Set-Tab " + tab;
+ send_byond_command("Set-Tab " + tab);
}
+
function draw_debug() {
statcontentdiv[textContentKey] = "";
var wipeverbstabs = document.createElement("div");
@@ -646,12 +746,26 @@ function draw_debug() {
link[textContentKey] = "Wipe All Verbs";
wipeverbstabs.appendChild(link);
document.getElementById("statcontent").appendChild(wipeverbstabs);
+ var wipeUpdateVerbsTabs = document.createElement("div");
+ var updateLink = document.createElement("a");
+ updateLink.onclick = function() {update_verbs()};
+ updateLink[textContentKey] = "Wipe and Update All Verbs";
+ wipeUpdateVerbsTabs.appendChild(updateLink);
+ document.getElementById("statcontent").appendChild(wipeUpdateVerbsTabs);
var text = document.createElement("div");
text[textContentKey] = "Verb Tabs:";
document.getElementById("statcontent").appendChild(text);
var table1 = document.createElement("table");
for(var i=0; i < verb_tabs.length ; i++) {
var part = verb_tabs[i];
+ // Hide subgroups except admin subgroups if they are split
+ if (verb_tabs[i].lastIndexOf(".") != -1) {
+ var splitName = verb_tabs[i].split(".");
+ if (split_admin_tabs && splitName[0] === "Admin")
+ part = splitName[1];
+ else
+ continue;
+ }
var tr = document.createElement("tr");
var td1 = document.createElement("td");
td1[textContentKey] = part;
@@ -740,7 +854,7 @@ function draw_status() {
}
if(verb_tabs.length == 0 || !verbs)
{
- window.location.href = "byond://winset?command=Fix-Stat-Panel";
+ send_byond_command("Fix-Stat-Panel");
}
}
@@ -776,6 +890,11 @@ function update_tickets(T){
if(current_tab == "Tickets")
draw_tickets();
}
+function update_interviews(I){
+ interviewManager = JSON.parse(I);
+ if(current_tab == "Tickets")
+ draw_interviews();
+}
function update_sdql2(S) {
sdql2 = JSON.parse(S);
if(sdql2.length > 0 && !verb_tabs.includes("SDQL2")) {
@@ -805,12 +924,21 @@ function remove_tickets() {
}
checkStatusTab();
}
+
+function remove_interviews() {
+ if(tickets) {
+ tickets = [];
+ }
+ checkStatusTab();
+}
+
// removes MC, Tickets and MC tabs.
function remove_admin_tabs() {
href_token = null;
remove_mc();
remove_tickets();
remove_sdql2();
+// remove_interviews();
}
function add_admin_tabs(ht) {
@@ -875,7 +1003,17 @@ function draw_listedturf() {
// rather than every onmousedown getting the "part" of the last entry.
return function(e) {
e.preventDefault();
- clickcatcher = "?src=_statpanel_;statpanel_item_target=" + part[1] + ";statpanel_item_click=1";
+ clickcatcher = "?src=_statpanel_;statpanel_item_target=" + part[1];
+ switch(e.button){
+ case 1:
+ clickcatcher += ";statpanel_item_click=middle"
+ break;
+ case 2:
+ clickcatcher += ";statpanel_item_click=right"
+ break;
+ default:
+ clickcatcher += ";statpanel_item_click=left"
+ }
if(e.shiftKey){
clickcatcher += ";statpanel_item_shiftclick=1";
}
@@ -912,7 +1050,7 @@ function draw_sdql2(){
var td2 = document.createElement("td");
if(part[2]) {
var a = document.createElement("a");
- a.href = "?src=" + "_statpanel_" + ";statpanel_item_target=" + part[2] + ";statpanel_item_click=1";
+ a.href = "?src=" + "_statpanel_" + ";statpanel_item_target=" + part[2] + ";statpanel_item_click=left";
a[textContentKey] = part[1];
td2.appendChild(a);
} else {
@@ -938,12 +1076,12 @@ function draw_tickets() {
var td2 = document.createElement("td");
if(part[2]) {
var a = document.createElement("a");
- a.href = "?_src_=holder;admin_token=" + href_token + ";ahelp=" + part[2] + ";ahelp_action=ticket;statpanel_item_click=1;action=ticket" ;
+ a.href = "?_src_=holder;admin_token=" + href_token + ";ahelp=" + part[2] + ";ahelp_action=ticket;statpanel_item_click=left;action=ticket" ;
a[textContentKey] = part[1];
td2.appendChild(a);
} else if(part[3]){
var a = document.createElement("a");
- a.href = "?src=_statpanel_" + ";statpanel_item_target=" + part[3] + ";statpanel_item_click=1";
+ a.href = "?src=_statpanel_" + ";statpanel_item_target=" + part[3] + ";statpanel_item_click=left";
a[textContentKey] = part[1];
td2.appendChild(a);
} else {
@@ -956,6 +1094,55 @@ function draw_tickets() {
document.getElementById("statcontent").appendChild(table);
}
+function draw_interviews() {
+ var body = document.createElement("div");
+ var header = document.createElement("h3");
+ header[textContentKey] = "Interviews";
+ body.appendChild(header);
+ var manDiv = document.createElement("div");
+ manDiv.className = "interview_panel_controls"
+ var manLink = document.createElement("a");
+ manLink[textContentKey] = "Open Interview Manager Panel";
+ manLink.href = "?_src_=holder;admin_token=" + href_token + ";interview_man=1;statpanel_item_click=left";
+ manDiv.appendChild(manLink);
+ body.appendChild(manDiv);
+
+ // List interview stats
+ var statsDiv = document.createElement("table");
+ statsDiv.className="interview_panel_stats";
+ for (var key in interviewManager.status) {
+ var d = document.createElement("div");
+ var tr = document.createElement("tr");
+ var stat_name = document.createElement("td");
+ var stat_text = document.createElement("td");
+ stat_name[textContentKey] = key;
+ stat_text[textContentKey] = interviewManager.status[key];
+ tr.appendChild(stat_name);
+ tr.appendChild(stat_text);
+ statsDiv.appendChild(tr);
+ }
+ body.appendChild(statsDiv);
+ document.getElementById("statcontent").appendChild(body);
+
+ // List interviews if any are open
+ var table = document.createElement("table");
+ table.className = "interview_panel_table";
+ if(!interviewManager)
+ return;
+ for(var i = 0; i < interviewManager.interviews.length; i++) {
+ var part = interviewManager.interviews[i];
+ var tr = document.createElement("tr");
+ var td = document.createElement("td");
+ var a = document.createElement("a");
+ a[textContentKey] = part["status"];
+ a.href = "?_src_=holder;admin_token=" + href_token + ";interview=" + part["ref"] + ";statpanel_item_click=left";
+ td.appendChild(a);
+ tr.appendChild(td);
+ table.appendChild(tr);
+ }
+ document.getElementById("statcontent").appendChild(table);
+}
+
function draw_spells(cat) {
statcontentdiv[textContentKey] = "";
var table = document.createElement("table");
@@ -968,7 +1155,7 @@ function draw_spells(cat) {
var td2 = document.createElement("td");
if(part[3]) {
var a = document.createElement("a");
- a.href = "?src=" + part[3] + ";statpanel_item_click=1";
+ a.href = "?src=" + part[3] + ";statpanel_item_click=left";
a[textContentKey] = part[2];
td2.appendChild(a);
} else {
@@ -981,16 +1168,34 @@ function draw_spells(cat) {
document.getElementById("statcontent").appendChild(table);
}
+function make_verb_onclick(command) {
+ return function() {
+ run_after_focus(function() {
+ send_byond_command(command);
+ });
+ };
+}
+
function draw_verbs(cat){
statcontentdiv[textContentKey] = "";
var table = document.createElement("div");
var additions = {}; // additional sub-categories to be rendered
table.className = "grid-container";
sortVerbs();
+ if (split_admin_tabs && cat.lastIndexOf(".") != -1) {
+ var splitName = cat.split(".");
+ if (splitName[0] === "Admin")
+ cat = splitName[1];
+ }
verbs.reverse(); // sort verbs backwards before we draw
for (var i = 0; i < verbs.length; ++i) {
var part = verbs[i];
var name = part[0];
+ if (split_admin_tabs && name.lastIndexOf(".") != -1) {
+ var splitName = name.split(".");
+ if (splitName[0] === "Admin")
+ name = splitName[1];
+ }
var command = part[1];
if (command && name.lastIndexOf(cat, 0) != -1 && (name.length == cat.length || name.charAt(cat.length) == ".")) {
@@ -1002,9 +1207,13 @@ function draw_verbs(cat){
}
var a = document.createElement("a");
- a.href = "byond://winset?command=" + command.replace(/\s/g, "-");
- a[textContentKey] = command;
+ a.href = "#"
+ a.onclick = make_verb_onclick(command.replace(/\s/g, "-"));
a.className = "grid-item";
+ var t = document.createElement("span");
+ t[textContentKey] = command;
+ t.className = "grid-item-text";
+ a.appendChild(t);
(subCat ? additions[subCat] : table).appendChild(a);
}
}
@@ -1029,7 +1238,7 @@ function set_theme(which) {
if (which == "light") {
document.body.className = "";
set_style_sheet("browserOutput_white");
- } else if (which == "dark" || which == "default") {
+ } else if (which == "dark") {
document.body.className = "dark";
set_style_sheet("browserOutput");
}
@@ -1040,7 +1249,7 @@ function set_style_sheet(sheet) {
var currentSheet = document.getElementById("goonStyle");
currentSheet.parentElement.removeChild(currentSheet);
}
- var head = document.getElementsByTagName('head')[0];
+ var head = document.getElementsByTagName('head')[0];
var sheetElement = document.createElement("link");
sheetElement.id = "goonStyle";
sheetElement.rel = "stylesheet";
@@ -1050,9 +1259,14 @@ function set_style_sheet(sheet) {
head.appendChild(sheetElement);
}
-document[addEventListenerKey]("click", function(e) {
- window.location.href = "byond://winset?map.focus=true";
-});
+function restoreFocus() {
+ run_after_focus(function() {
+ window.location.href = "byond://winset?map.focus=true";
+ });
+}
+
+document[addEventListenerKey]("mouseup", restoreFocus);
+document[addEventListenerKey]("keyup", restoreFocus);
if(!current_tab) {
addPermanentTab("Status");
@@ -1061,7 +1275,7 @@ if(!current_tab) {
window.onload = function() {
NotifyByondOnload();
- };
+};
function NotifyByondOnload() {
window.location.href = "byond://winset?command=Panel-Ready";
diff --git a/icons/mob/actions/actions_snake.dmi b/icons/mob/actions/actions_snake.dmi
new file mode 100644
index 0000000000..6856171b0d
Binary files /dev/null and b/icons/mob/actions/actions_snake.dmi differ
diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi
index 8992f4a4a1..f968d15860 100644
Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ
diff --git a/interface/skin.dmf b/interface/skin.dmf
index ccfcd76571..82a35160e6 100644
--- a/interface/skin.dmf
+++ b/interface/skin.dmf
@@ -2,21 +2,21 @@ macro "default"
menu "menu"
- elem
+ elem
name = "&File"
command = ""
saved-params = "is-checked"
- elem
+ elem
name = "&Quick screenshot\tF2"
command = ".screenshot auto"
category = "&File"
saved-params = "is-checked"
- elem
+ elem
name = "&Save screenshot as...\tShift+F2"
command = ".screenshot"
category = "&File"
saved-params = "is-checked"
- elem
+ elem
name = ""
command = ""
category = "&File"
@@ -26,21 +26,21 @@ menu "menu"
command = ".reconnect"
category = "&File"
saved-params = "is-checked"
- elem
+ elem
name = "&Quit\tAlt-F4"
command = ".quit"
category = "&File"
saved-params = "is-checked"
- elem
+ elem
name = "&Help"
command = ""
saved-params = "is-checked"
- elem
+ elem
name = "&Admin Help\tF1"
command = "adminhelp"
category = "&Help"
saved-params = "is-checked"
- elem
+ elem
name = "&Hotkeys"
command = "hotkeys-help"
category = "&Help"
@@ -56,6 +56,7 @@ window "mainwindow"
anchor2 = none
is-default = true
saved-params = "pos;size;is-minimized;is-maximized"
+ statusbar = false
icon = 'icons\\ss13_64.png'
macro = "default"
menu = "menu"
@@ -95,6 +96,7 @@ window "mapwindow"
anchor2 = none
saved-params = "pos;size;is-minimized;is-maximized"
is-pane = true
+ on-status = ".winset \"status_bar.text=[[*]]\" "
elem "map"
type = MAP
pos = 0,0
@@ -107,6 +109,16 @@ window "mapwindow"
is-default = true
saved-params = "zoom;letterbox;zoom-mode"
style = ".center { text-align: center; } .maptext { font-family: 'Small Fonts'; font-size: 7px; -dm-text-outline: 1px black; color: white; line-height: 1.1; } .command_headset { font-weight: bold;\tfont-size: 8px; } .small { font-size: 6px; } .big { font-size: 8px; } .reallybig { font-size: 8px; } .extremelybig { font-size: 8px; } .greentext { color: #00FF00; font-size: 7px; } .redtext { color: #FF0000; font-size: 7px; } .clown { color: #FF69Bf; font-size: 7px; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-size: 6px; }"
+ elem "status_bar"
+ type = LABEL
+ pos = 0,1008
+ size = 280x16
+ anchor1 = 0,100
+ text = ""
+ align = left
+ background-color = #222222
+ text-color = #ffffff
+ border = line
window "infowindow"
elem "infowindow"
diff --git a/modular_citadel/code/datums/components/souldeath.dm b/modular_citadel/code/datums/components/souldeath.dm
index ab45210a46..01e6acb795 100644
--- a/modular_citadel/code/datums/components/souldeath.dm
+++ b/modular_citadel/code/datums/components/souldeath.dm
@@ -32,4 +32,4 @@
playsound(wearer, 'sound/misc/souldeath.ogg', 100, FALSE)
/datum/component/souldeath/neck
- equip_slot = SLOT_NECK
+ equip_slot = ITEM_SLOT_NECK
diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm
index f2c7b398cf..fe53574470 100644
--- a/modular_citadel/code/modules/client/loadout/__donator.dm
+++ b/modular_citadel/code/modules/client/loadout/__donator.dm
@@ -2,289 +2,289 @@
/datum/gear/donator
name = "IF YOU SEE THIS, PING A CODER RIGHT NOW!"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/bikehorn/golden
category = LOADOUT_CATEGORY_DONATOR
ckeywhitelist = list("This entry should never appear with this variable set.") //If it does, then that means somebody fucked up the whitelist system pretty hard
/datum/gear/donator/pet
name = "Pet Beacon"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/choice_beacon/pet
ckeywhitelist = list()
donator_group_id = DONATOR_GROUP_TIER_1 // can be accessed by all donators
/datum/gear/donator/carpet
name = "Carpet Beacon"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/choice_beacon/box/carpet
ckeywhitelist = list()
donator_group_id = DONATOR_GROUP_TIER_1
/datum/gear/donator/chameleon_bedsheet
name = "Chameleon Bedsheet"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/bedsheet/chameleon
ckeywhitelist = list()
donator_group_id = DONATOR_GROUP_TIER_1
/datum/gear/donator/donortestingbikehorn
name = "Donor item testing bikehorn"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/bikehorn
geargroupID = list("DONORTEST") //This is a list mainly for the sake of testing, but geargroupID works just fine with ordinary strings
/datum/gear/donator/kevhorn
name = "Airhorn"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/bikehorn/airhorn
ckeywhitelist = list("kevinz000")
/datum/gear/donator/kiaracloak
name = "Kiara's cloak"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/cloak/inferno
ckeywhitelist = list("inferno707")
/datum/gear/donator/kiaracollar
name = "Kiara's collar"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/petcollar/inferno
ckeywhitelist = list("inferno707")
/datum/gear/donator/kiaramedal
name = "Insignia of Steele"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/accessory/medal/steele
ckeywhitelist = list("inferno707")
/datum/gear/donator/hheart
name = "The Hollow Heart"
- slot = SLOT_WEAR_MASK
+ slot = ITEM_SLOT_MASK
path = /obj/item/clothing/mask/hheart
ckeywhitelist = list("inferno707")
/datum/gear/donator/engravedzippo
name = "Engraved zippo"
- slot = SLOT_HANDS
+ slot = ITEM_SLOT_HANDS
path = /obj/item/lighter/gold
ckeywhitelist = list("dirtyoldharry")
/datum/gear/donator/geisha
name = "Geisha suit"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/costume/geisha
ckeywhitelist = list("atiefling")
/datum/gear/donator/specialscarf
name = "Special scarf"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/scarf/zomb
ckeywhitelist = list("zombierobin")
/datum/gear/donator/redmadcoat
name = "The Mad's labcoat"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/toggle/labcoat/mad/red
ckeywhitelist = list("zombierobin")
/datum/gear/donator/santahat
name = "Santa hat"
- slot = SLOT_HEAD
+ slot = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/donator/reindeerhat
name = "Reindeer hat"
- slot = SLOT_HEAD
+ slot = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/hardhat/reindeer/fluff
ckeywhitelist = list("illotafv")
/datum/gear/donator/treeplushie
name = "Christmas tree plushie"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/toy/plush/tree
ckeywhitelist = list("illotafv")
/datum/gear/donator/santaoutfit
name = "Santa costume"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/space/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/donator/treecloak
name = "Christmas tree cloak"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/cloak/festive
ckeywhitelist = list("illotafv")
/datum/gear/donator/carrotplush
name = "Carrot plushie"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/toy/plush/carrot
ckeywhitelist = list("improvedname")
/datum/gear/donator/carrotcloak
name = "Carrot cloak"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/cloak/carrot
ckeywhitelist = list("improvedname")
/datum/gear/donator/albortorosamask
name = "Alborto Rosa mask"
- slot = SLOT_WEAR_MASK
+ slot = ITEM_SLOT_MASK
path = /obj/item/clothing/mask/luchador/zigfie
ckeywhitelist = list("zigfie")
/datum/gear/donator/mankini
name = "Mankini"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/misc/stripper/mankini
ckeywhitelist = list("zigfie")
/datum/gear/donator/pinkshoes
name = "Pink shoes"
- slot = SLOT_SHOES
+ slot = ITEM_SLOT_FEET
path = /obj/item/clothing/shoes/sneakers/pink
ckeywhitelist = list("zigfie")
/datum/gear/donator/reecesgreatcoat
name = "Reece's Great Coat"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/trenchcoat/green
ckeywhitelist = list("geemiesif")
/datum/gear/donator/russianflask
name = "Russian flask"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/reagent_containers/food/drinks/flask/russian
cost = 2
ckeywhitelist = list("slomka")
/datum/gear/donator/stalkermask
name = "S.T.A.L.K.E.R. mask"
- slot = SLOT_WEAR_MASK
+ slot = ITEM_SLOT_MASK
path = /obj/item/clothing/mask/gas/stalker
ckeywhitelist = list("slomka")
/datum/gear/donator/stripedcollar
name = "Striped collar"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/petcollar/stripe
ckeywhitelist = list("jademanique")
/datum/gear/donator/performersoutfit
name = "Bluish performer's outfit"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/costume/singer/yellow/custom
ckeywhitelist = list("killer402402")
/datum/gear/donator/vermillion
name = "Vermillion clothing"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/suit/vermillion
ckeywhitelist = list("fractious")
/datum/gear/donator/AM4B
name = "Foam Force AM4-B"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/gun/ballistic/automatic/AM4B
ckeywhitelist = list("zeronetalpha")
/datum/gear/donator/carrotsatchel
name = "Carrot Satchel"
- slot = SLOT_HANDS
+ slot = ITEM_SLOT_HANDS
path = /obj/item/storage/backpack/satchel/carrot
ckeywhitelist = list("improvedname")
/datum/gear/donator/naomisweater
name = "worn black sweater"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/sweater/black/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/donator/naomicollar
name = "worn pet collar"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/petcollar/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/donator/gladiator
name = "Gladiator Armor"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/under/costume/gladiator
ckeywhitelist = list("aroche")
/datum/gear/donator/bloodredtie
name = "Blood Red Tie"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/tie/bloodred
ckeywhitelist = list("kyutness")
/datum/gear/donator/puffydress
name = "Puffy Dress"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/puffydress
ckeywhitelist = list("stallingratt")
/datum/gear/donator/labredblack
name = "Black and Red Coat"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/toggle/labcoat/labredblack
ckeywhitelist = list("blakeryan", "durandalphor")
/datum/gear/donator/torisword
name = "Rainbow Zweihander"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/dualsaber/hypereutactic/toy/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/donator/darksabre
name = "Dark Sabre"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/toy/darksabre
ckeywhitelist = list("inferno707")
/datum/gear/donator/darksabresheath
name = "Dark Sabre Sheath"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/storage/belt/sabre/darksabre
ckeywhitelist = list("inferno707")
/datum/gear/donator/toriball
name = "Rainbow Tennis Ball"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/toy/fluff/tennis_poly/tri/squeak/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/donator/izzyball
name = "Katlin's Ball"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/toy/fluff/tennis_poly/tri/squeak/izzy
ckeywhitelist = list("izzyinbox")
/datum/gear/donator/cloak
name = "Green Cloak"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/cloak/green
ckeywhitelist = list("killer402402")
/datum/gear/donator/steelflask
name = "Steel Flask"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/reagent_containers/food/drinks/flask/steel
cost = 2
ckeywhitelist = list("nik707")
/datum/gear/donator/paperhat
name = "Paper Hat"
- slot = SLOT_HEAD
+ slot = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/paperhat
ckeywhitelist = list("kered2")
/datum/gear/donator/cloakce
name = "Polychromic CE Cloak"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/neck/cloak/polychromic/polyce
ckeywhitelist = list("worksbythesea", "blakeryan")
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
@@ -292,290 +292,290 @@
/datum/gear/donator/ssk
name = "Stun Sword Kit"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/ssword_kit
ckeywhitelist = list("phillip458")
/datum/gear/donator/techcoat
name = "Techomancers Labcoat"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/suit/toggle/labcoat/mad/techcoat
ckeywhitelist = list("wilchen")
/datum/gear/donator/leechjar
name = "Jar of Leeches"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/custom/leechjar
ckeywhitelist = list("sgtryder")
/datum/gear/donator/darkarmor
name = "Dark Armor"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/suit/armor/vest/darkcarapace
ckeywhitelist = list("inferno707")
/datum/gear/donator/devilwings
name = "Strange Wings"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/devilwings
ckeywhitelist = list("kitsun")
/datum/gear/donator/flagcape
name = "US Flag Cape"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/neck/flagcape
ckeywhitelist = list("darnchacha")
/datum/gear/donator/luckyjack
name = "Lucky Jackboots"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/shoes/lucky
ckeywhitelist = list("donaldtrumpthecommunist")
/datum/gear/donator/raiqbawks
name = "Miami Boombox"
- slot = SLOT_HANDS
+ slot = ITEM_SLOT_HANDS
cost = 2
path = /obj/item/boombox/raiq
ckeywhitelist = list("chefferz")
/datum/gear/donator/m41
name = "Toy M41"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/toy/gun/m41
ckeywhitelist = list("thalverscholen")
/datum/gear/donator/Divine_robes
name = "Divine robes"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/custom/lunasune
ckeywhitelist = list("invader4352")
/datum/gear/donator/gothcoat
name = "Goth Coat"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/gothcoat
ckeywhitelist = list("norko")
/datum/gear/donator/corgisuit
name = "Corgi Suit"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/hooded/ian_costume
ckeywhitelist = list("cathodetherobot")
/datum/gear/donator/sharkcloth
name = "Leon's Skimpy Outfit"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/under/custom/leoskimpy
ckeywhitelist = list("spectrosis")
/datum/gear/donator/mimemask
name = "Mime Mask"
- slot = SLOT_WEAR_MASK
+ slot = ITEM_SLOT_MASK
path = /obj/item/clothing/mask/gas/mime
ckeywhitelist = list("pireamaineach")
/datum/gear/donator/mimeoveralls
name = "Mime's Overalls"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/under/custom/mimeoveralls
ckeywhitelist = list("pireamaineach")
/datum/gear/donator/soulneck
name = "Soul Necklace"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/undertale
ckeywhitelist = list("twilightic")
/datum/gear/donator/frenchberet
name = "French Beret"
- slot = SLOT_HEAD
+ slot = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/frenchberet
ckeywhitelist = list("notazoltan")
/datum/gear/donator/zuliecloak
name = "Project: Zul-E"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/hooded/cloak/zuliecloak
ckeywhitelist = list("asky")
/datum/gear/donator/blackredgold
name = "Black, Red, and Gold Coat"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/blackredgold
ckeywhitelist = list("ttbnc")
/datum/gear/donator/fritzplush
name = "Fritz Plushie"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/toy/plush/mammal/dog/fritz
ckeywhitelist = list("analwerewolf")
/datum/gear/donator/kimono
name = "Kimono"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/kimono
ckeywhitelist = list("sfox63")
/datum/gear/donator/commjacket
name = "Dusty Commisar's Cloak"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/commjacket
ckeywhitelist = list("sadisticbatter")
/datum/gear/donator/mw2_russian_para
name = "Russian Paratrooper Jumper"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/custom/mw2_russian_para
ckeywhitelist = list("investigator77")
/datum/gear/donator/longblackgloves
name = "Luna's Gauntlets"
- slot = SLOT_GLOVES
+ slot = ITEM_SLOT_GLOVES
path = /obj/item/clothing/gloves/longblackgloves
ckeywhitelist = list("bigmanclancy")
/datum/gear/donator/trendy_fit
name = "Trendy Fit"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/custom/trendy_fit
ckeywhitelist = list("midgetdragon")
/datum/gear/donator/singery
name = "Yellow Performer Outfit"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/costume/singer/yellow
ckeywhitelist = list("maxlynchy")
/datum/gear/donator/csheet
name = "NT Bedsheet"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/bedsheet/captain
ckeywhitelist = list("tikibomb")
/datum/gear/donator/borgplush
name = "Robot Plush"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/toy/plush/borgplushie
ckeywhitelist = list("nicholaiavenicci")
/datum/gear/donator/donorberet
name = "Atmos Beret"
- slot = SLOT_HEAD
+ slot = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/blueberet
ckeywhitelist = list("foxystalin")
/datum/gear/donator/donorgoggles
name = "Flight Goggles"
- slot = SLOT_HEAD
+ slot = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/flight
ckeywhitelist = list("maxlynchy")
/datum/gear/donator/onionneck
name = "Onion Necklace"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/necklace/onion
ckeywhitelist = list("cdrcross")
/datum/gear/donator/mikubikini
name = "starlight singer bikini"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/custom/mikubikini
ckeywhitelist = list("grandvegeta")
/datum/gear/donator/mikujacket
name = "starlight singer jacket"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/mikujacket
ckeywhitelist = list("grandvegeta")
/datum/gear/donator/mikuhair
name = "starlight singer hair"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/head/mikuhair
ckeywhitelist = list("grandvegeta")
/datum/gear/donator/mikugloves
name = "starlight singer gloves"
- slot = SLOT_GLOVES
+ slot = ITEM_SLOT_GLOVES
path = /obj/item/clothing/gloves/mikugloves
ckeywhitelist = list("grandvegeta")
/datum/gear/donator/mikuleggings
name = "starlight singer leggings"
- slot = SLOT_SHOES
+ slot = ITEM_SLOT_FEET
path = /obj/item/clothing/shoes/sneakers/mikuleggings
ckeywhitelist = list("grandvegeta")
/datum/gear/donator/cosmos
name = "cosmic space bedsheet"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/bedsheet/cosmos
ckeywhitelist = list("grunnyyy")
/datum/gear/donator/customskirt
name = "custom atmos skirt"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/under/custom/customskirt
ckeywhitelist = list("thakyz")
/datum/gear/donator/hisakaki
name = "halo"
- slot = SLOT_HEAD
+ slot = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/halo
ckeywhitelist = list("hisakaki")
/datum/gear/donator/vest
name = "vest and shirt"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/custom/vest
ckeywhitelist = list("maylowfox")
/datum/gear/donator/exo
name = "exo frame"
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/custom/exo
ckeywhitelist = list("jesterz7")
/datum/gear/donator/choker
name = "NT Choker"
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
path = /obj/item/clothing/neck/petcollar/donorchoker
ckeywhitelist = list("trigillass")
/datum/gear/donator/strangemask
name = "Strange Metal Mask"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/mask/breath/mmask
ckeywhitelist = list("sneka")
/datum/gear/donator/smaiden
name = "shrine maiden outfit"
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/smaiden
ckeywhitelist = list("ultimarifox")
/datum/gear/donator/mgasmask
name = "Military Gas Mask"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/clothing/mask/gas/military
ckeywhitelist = list("unclebourbon")
/datum/gear/donator/clownmask
name = "Clown Mask"
- path = SLOT_WEAR_MASK
+ path = ITEM_SLOT_MASK
path = /obj/item/clothing/mask/gas/clown_hat
ckeywhitelist = list("djkouta")
/datum/gear/donator/spacehoodie
name = "Space Hoodie"
- path = SLOT_WEAR_SUIT
+ path = ITEM_SLOT_OCLOTHING
path = /obj/item/clothing/suit/spacehoodie
ckeywhitelist = list("bidlink2")
/datum/gear/donator/pokerchips
name = "pokerchip set"
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
path = /obj/item/storage/box/pockerchips
ckeywhitelist = list("greed2323")
diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm
index 466ee50474..3824993009 100644
--- a/modular_citadel/code/modules/client/loadout/backpack.dm
+++ b/modular_citadel/code/modules/client/loadout/backpack.dm
@@ -1,7 +1,7 @@
/datum/gear/backpack
category = LOADOUT_CATEGORY_BACKPACK
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_GENERAL
- slot = SLOT_IN_BACKPACK
+ slot = ITEM_SLOT_BACKPACK
/datum/gear/backpack/plushbox
name = "Plushie Choice Box"
diff --git a/modular_citadel/code/modules/client/loadout/glasses.dm b/modular_citadel/code/modules/client/loadout/glasses.dm
index f3b07657f4..fe44abc3de 100644
--- a/modular_citadel/code/modules/client/loadout/glasses.dm
+++ b/modular_citadel/code/modules/client/loadout/glasses.dm
@@ -1,6 +1,6 @@
/datum/gear/glasses
category = LOADOUT_CATEGORY_GLASSES
- slot = SLOT_GLASSES
+ slot = ITEM_SLOT_EYES
/datum/gear/glasses/blindfold
name = "Blindfold"
diff --git a/modular_citadel/code/modules/client/loadout/gloves.dm b/modular_citadel/code/modules/client/loadout/gloves.dm
index 09694ddec7..2a80d43bb1 100644
--- a/modular_citadel/code/modules/client/loadout/gloves.dm
+++ b/modular_citadel/code/modules/client/loadout/gloves.dm
@@ -1,6 +1,6 @@
/datum/gear/gloves
category = LOADOUT_CATEGORY_GLOVES
- slot = SLOT_GLOVES
+ slot = ITEM_SLOT_GLOVES
/datum/gear/gloves/fingerless
name = "Fingerless Gloves"
@@ -9,7 +9,7 @@
/datum/gear/gloves/evening
name = "Evening gloves"
path = /obj/item/clothing/gloves/evening
-
+
/datum/gear/gloves/midnight
name = "Midnight gloves"
path = /obj/item/clothing/gloves/evening/black
diff --git a/modular_citadel/code/modules/client/loadout/hands.dm b/modular_citadel/code/modules/client/loadout/hands.dm
index eb496ed78c..5dbe8b33dd 100644
--- a/modular_citadel/code/modules/client/loadout/hands.dm
+++ b/modular_citadel/code/modules/client/loadout/hands.dm
@@ -1,6 +1,6 @@
/datum/gear/hands
category = LOADOUT_CATEGORY_HANDS
- slot = SLOT_HANDS
+ slot = ITEM_SLOT_HANDS
/datum/gear/hands/cane
name = "Cane"
diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm
index 6d6c803ef1..f2a7ead5be 100644
--- a/modular_citadel/code/modules/client/loadout/head.dm
+++ b/modular_citadel/code/modules/client/loadout/head.dm
@@ -1,7 +1,7 @@
/datum/gear/head
category = LOADOUT_CATEGORY_HEAD
subcategory = LOADOUT_SUBCATEGORY_HEAD_GENERAL
- slot = SLOT_HEAD
+ slot = ITEM_SLOT_HEAD
/datum/gear/head/baseball
name = "Ballcap"
@@ -156,12 +156,12 @@
/*Commenting out Until next Christmas or made automatic
/datum/gear/santahatr
name = "Red Santa Hat"
- category = SLOT_HEAD
+ category = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/christmashat
/datum/gear/santahatg
name = "Green Santa Hat"
- category = SLOT_HEAD
+ category = ITEM_SLOT_HEAD
path = /obj/item/clothing/head/christmashatg
*/
diff --git a/modular_citadel/code/modules/client/loadout/mask.dm b/modular_citadel/code/modules/client/loadout/mask.dm
index 52e79884c2..16b47e60e7 100644
--- a/modular_citadel/code/modules/client/loadout/mask.dm
+++ b/modular_citadel/code/modules/client/loadout/mask.dm
@@ -1,6 +1,6 @@
/datum/gear/mask
category = LOADOUT_CATEGORY_MASK
- slot = SLOT_WEAR_MASK
+ slot = ITEM_SLOT_MASK
/datum/gear/mask/balaclava
name = "Balaclava"
diff --git a/modular_citadel/code/modules/client/loadout/neck.dm b/modular_citadel/code/modules/client/loadout/neck.dm
index 128285628a..b07ddf98db 100644
--- a/modular_citadel/code/modules/client/loadout/neck.dm
+++ b/modular_citadel/code/modules/client/loadout/neck.dm
@@ -1,7 +1,7 @@
/datum/gear/neck
category = LOADOUT_CATEGORY_NECK
subcategory = LOADOUT_SUBCATEGORY_NECK_GENERAL
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
/datum/gear/neck/bluetie
name = "Blue tie"
diff --git a/modular_citadel/code/modules/client/loadout/shoes.dm b/modular_citadel/code/modules/client/loadout/shoes.dm
index e2b3916ae0..394c957f36 100644
--- a/modular_citadel/code/modules/client/loadout/shoes.dm
+++ b/modular_citadel/code/modules/client/loadout/shoes.dm
@@ -1,6 +1,6 @@
/datum/gear/shoes
category = LOADOUT_CATEGORY_SHOES
- slot = SLOT_SHOES
+ slot = ITEM_SLOT_FEET
/datum/gear/shoes/laceup
name = "Laceup shoes"
diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm
index 066bcf14c7..1d4a29ef3e 100644
--- a/modular_citadel/code/modules/client/loadout/suit.dm
+++ b/modular_citadel/code/modules/client/loadout/suit.dm
@@ -1,7 +1,7 @@
/datum/gear/suit
category = LOADOUT_CATEGORY_SUIT
subcategory = LOADOUT_SUBCATEGORY_SUIT_GENERAL
- slot = SLOT_WEAR_SUIT
+ slot = ITEM_SLOT_OCLOTHING
/datum/gear/suit/poncho
name = "Poncho"
diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm
index c16aa5ea55..2b2f3b53e4 100644
--- a/modular_citadel/code/modules/client/loadout/uniform.dm
+++ b/modular_citadel/code/modules/client/loadout/uniform.dm
@@ -1,7 +1,7 @@
/datum/gear/uniform
category = LOADOUT_CATEGORY_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_GENERAL
- slot = SLOT_W_UNIFORM
+ slot = ITEM_SLOT_ICLOTHING
/datum/gear/uniform/suit
name = "Black suit"
@@ -636,27 +636,27 @@
/*Commenting out Until next Christmas or made automatic
/datum/gear/uniform/christmasmaler
name = "Red Masculine Christmas Suit"
- category = SLOT_W_UNIFORM
+ category = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/costume/christmas
/datum/gear/uniform/christmasmaleg
name = "Green Masculine Christmas Suit"
- category = SLOT_W_UNIFORM
+ category = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/costume/christmas/green
/datum/gear/uniform/christmasfemaler
name = "Red Feminine Christmas Suit"
- category = SLOT_W_UNIFORM
+ category = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/costume/christmas/croptop
/datum/gear/uniform/christmasfemaleg
name = "Green Feminine Christmas Suit"
- category = SLOT_W_UNIFORM
+ category = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/costume/christmas/croptop/green
/datum/gear/uniform/pinkstripper
name = "Pink stripper outfit"
- category = SLOT_W_UNIFORM
+ category = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/misc/stripper
cost = 3
*/
diff --git a/modular_citadel/code/modules/client/loadout/unlockable.dm b/modular_citadel/code/modules/client/loadout/unlockable.dm
index 67e0c06d8c..9db05a66e9 100644
--- a/modular_citadel/code/modules/client/loadout/unlockable.dm
+++ b/modular_citadel/code/modules/client/loadout/unlockable.dm
@@ -1,6 +1,6 @@
/datum/gear/unlockable
category = LOADOUT_CATEGORY_UNLOCKABLE
- slot = SLOT_NECK
+ slot = ITEM_SLOT_NECK
var/progress_required //what does our progress need to be to unlock it
var/progress_key //what is the key used to retrieve existing progress for this unlockable
diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm
index cb1b9728af..b8ee221e73 100644
--- a/modular_citadel/code/modules/custom_loadout/custom_items.dm
+++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm
@@ -77,7 +77,7 @@
item_state = "gold_zippo"
w_class = WEIGHT_CLASS_TINY
flags_1 = CONDUCT_1
- slot_flags = SLOT_BELT
+ slot_flags = ITEM_SLOT_BELT
heat = 1500
resistance_flags = FIRE_PROOF
light_color = LIGHT_COLOR_FIRE
@@ -404,7 +404,7 @@
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
hoodtype = /obj/item/clothing/head/hooded/cloakhood/zuliecloak
body_parts_covered = CHEST|GROIN|ARMS
- slot_flags = SLOT_WEAR_SUIT | ITEM_SLOT_NECK //it's a cloak. it's cosmetic. so why the hell not? what could possibly go wrong?
+ slot_flags = ITEM_SLOT_OCLOTHING | ITEM_SLOT_NECK //it's a cloak. it's cosmetic. so why the hell not? what could possibly go wrong?
mutantrace_variation = NONE
/obj/item/clothing/head/hooded/cloakhood/zuliecloak
diff --git a/modular_citadel/code/modules/custom_loadout/load_to_mob.dm b/modular_citadel/code/modules/custom_loadout/load_to_mob.dm
index 79f17afc74..1d28c7320c 100644
--- a/modular_citadel/code/modules/custom_loadout/load_to_mob.dm
+++ b/modular_citadel/code/modules/custom_loadout/load_to_mob.dm
@@ -52,7 +52,7 @@
loaded_atom.forceMove(T)
continue
var/obj/item/loaded = loaded_atom
- var/obj/item/storage/S = H.get_item_by_slot(SLOT_BACK)
+ var/obj/item/storage/S = H.get_item_by_slot(ITEM_SLOT_BACK)
if(istype(S))
SEND_SIGNAL(S, COMSIG_TRY_STORAGE_INSERT,loaded, TRUE, H) //Force it into their backpack
continue
diff --git a/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm b/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm
index dbf5ad0648..85bbf109bf 100644
--- a/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm
+++ b/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm
@@ -1024,7 +1024,7 @@ GLOBAL_LIST_EMPTY(rain_sounds)
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
icon_state = "umbrella_closed"
- slot_flags = SLOT_BELT
+ slot_flags = ITEM_SLOT_BELT
force = 5
throwforce = 5
w_class = WEIGHT_CLASS_SMALL
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 537eb76a66..bc598e81e3 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -48,7 +48,7 @@
var/obj/item/W = M.head
M.dropItemToGround(W, TRUE)
var/hat = new /obj/item/clothing/head/hattip()
- M.equip_to_slot(hat, SLOT_HEAD, 1, 1)
+ M.equip_to_slot(hat, ITEM_SLOT_HEAD, 1, 1)
/datum/reagent/fermi/hatmium/on_mob_life(mob/living/carbon/human/M)
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index a78092988e..ce27433c07 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -548,6 +548,8 @@
FermiExplode = FALSE
PurityMin = 0.2
+ is_secret = TRUE
+
/datum/chemical_reaction/fermi/secretcatchem/New()
//rand doesn't seem to work with n^-e
OptimalTempMin += rand(-100, 100)
diff --git a/modular_citadel/code/modules/reagents/objects/clothes.dm b/modular_citadel/code/modules/reagents/objects/clothes.dm
index ab4d49c56f..b6391ba82d 100644
--- a/modular_citadel/code/modules/reagents/objects/clothes.dm
+++ b/modular_citadel/code/modules/reagents/objects/clothes.dm
@@ -37,7 +37,7 @@
/obj/item/clothing/head/hattip/equipped(mob/M, slot)
. = ..()
- if (slot == SLOT_HEAD)
+ if (slot == ITEM_SLOT_HEAD)
RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/modular_citadel/icons/mob/mam_taur.dmi b/modular_citadel/icons/mob/mam_taur.dmi
index cf332019af..cc4bc0446c 100644
Binary files a/modular_citadel/icons/mob/mam_taur.dmi and b/modular_citadel/icons/mob/mam_taur.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index cd5a1eb823..de8e9ccddc 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -171,7 +171,6 @@
#include "code\__HELPERS\_string_lists.dm"
#include "code\__HELPERS\angles.dm"
#include "code\__HELPERS\areas.dm"
-#include "code\__HELPERS\AStar.dm"
#include "code\__HELPERS\chat.dm"
#include "code\__HELPERS\cmp.dm"
#include "code\__HELPERS\config.dm"
@@ -193,6 +192,7 @@
#include "code\__HELPERS\mobs.dm"
#include "code\__HELPERS\mouse_control.dm"
#include "code\__HELPERS\names.dm"
+#include "code\__HELPERS\path.dm"
#include "code\__HELPERS\priority_announce.dm"
#include "code\__HELPERS\pronouns.dm"
#include "code\__HELPERS\qdel.dm"
@@ -288,6 +288,7 @@
#include "code\_onclick\hud\revenanthud.dm"
#include "code\_onclick\hud\robot.dm"
#include "code\_onclick\hud\screen_objects.dm"
+#include "code\_onclick\hud\screentip.dm"
#include "code\_onclick\hud\simple_animal.dm"
#include "code\_onclick\hud\swarmer.dm"
#include "code\_onclick\hud\screen_objects\clickdelay.dm"
@@ -1472,6 +1473,7 @@
#include "code\modules\admin\outfits.dm"
#include "code\modules\admin\permissionedit.dm"
#include "code\modules\admin\player_panel.dm"
+#include "code\modules\admin\playtimes.dm"
#include "code\modules\admin\sound_emitter.dm"
#include "code\modules\admin\sql_message_system.dm"
#include "code\modules\admin\stickyban.dm"
@@ -2263,6 +2265,7 @@
#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm"
#include "code\modules\games\cas.dm"
#include "code\modules\games\unum.dm"
+#include "code\modules\holiday\dynamic.dm"
#include "code\modules\holiday\easter.dm"
#include "code\modules\holiday\holidays.dm"
#include "code\modules\holiday\halloween\bartholomew.dm"
@@ -2699,6 +2702,7 @@
#include "code\modules\mob\living\carbon\human\typing_indicator.dm"
#include "code\modules\mob\living\carbon\human\update_icons.dm"
#include "code\modules\mob\living\carbon\human\innate_abilities\blobform.dm"
+#include "code\modules\mob\living\carbon\human\innate_abilities\coiling.dm"
#include "code\modules\mob\living\carbon\human\innate_abilities\customization.dm"
#include "code\modules\mob\living\carbon\human\innate_abilities\limb_regeneration.dm"
#include "code\modules\mob\living\carbon\human\species_types\abductor.dm"
diff --git a/tgui/packages/tgui/interfaces/Limbgrower.js b/tgui/packages/tgui/interfaces/Limbgrower.js
index b91c7e4b45..e7e04d4f51 100644
--- a/tgui/packages/tgui/interfaces/Limbgrower.js
+++ b/tgui/packages/tgui/interfaces/Limbgrower.js
@@ -1,5 +1,5 @@
import { useBackend, useSharedState } from '../backend';
-import { Box, Button, Dimmer, Icon, LabeledList, Section, Tabs } from '../components';
+import { Box, Button, Dimmer, Icon, LabeledList, Section, Tabs, ProgressBar } from '../components';
import { Window } from '../layouts';
export const Limbgrower = (props, context) => {
@@ -22,7 +22,7 @@ export const Limbgrower = (props, context) => {
+ height={760}>
{!!busy && (
@@ -42,12 +42,19 @@ export const Limbgrower = (props, context) => {
Containing data for {disk['name']},
Attempting to create genitalia will use the disk's data.
+ Any Synthetic Frameworks created will
+ overwrite the race category selected.