Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
4fb5067
Add new rough-hewn wood plank turfs
noelle-lavenza Dec 17, 2024
21854d5
Add rough-hewn wood floors to Shaded Hills maps
noelle-lavenza Dec 17, 2024
44b370d
Add new mud turf sprite and dirt color
noelle-lavenza Dec 17, 2024
debc2e8
Adjust wood floor color ramp
noelle-lavenza Dec 17, 2024
d4020b9
Add temperature requirements to cooking recipes
noelle-lavenza Dec 17, 2024
2ac7a44
Add doc comments to lighting_turf.dm
noelle-lavenza Dec 17, 2024
cc76d55
Add Doe's new chest sprites
noelle-lavenza Dec 19, 2024
9c958bf
Add recipes for rough wooden tiles
noelle-lavenza Dec 19, 2024
ce03e41
Add heights to mob inventory slots
out-of-phaze May 30, 2024
14ba304
Add more slot helpers to items
out-of-phaze May 30, 2024
dfa2dcb
Make fluids check tables, floating/throwing, and turf height
out-of-phaze Dec 21, 2024
fb4f7ac
Bowls cannot be lidded.
MistakeNot4892 Dec 21, 2024
fa74516
Basic hammers can also be used as crowbars.
MistakeNot4892 Dec 21, 2024
9cac761
Hammers now function as wrenches/crowbars for unanchoring/dismantling…
MistakeNot4892 Dec 21, 2024
de42c73
Structure parts_type does not get applied to non-main materials.
MistakeNot4892 Dec 21, 2024
2f86284
Garlic oil can be used as a weaker antibiotic.
MistakeNot4892 Dec 21, 2024
34eda11
Ethanol is now an abstract type.
MistakeNot4892 Dec 21, 2024
7051ae2
Dirt/clay/sand items cannot hold reagents.
MistakeNot4892 Dec 21, 2024
32e096a
Disables ethanol boiling.
MistakeNot4892 Dec 21, 2024
19f193b
Moved spoon handling code to /glass.
MistakeNot4892 Dec 21, 2024
794afeb
Should prevent 'You can taste .'
MistakeNot4892 Dec 21, 2024
01e1be6
Cherrypicking reagent holder interactions from dev for quick-fixing b…
MistakeNot4892 Dec 21, 2024
3e4d4c1
Repathing waterskins to /glass.
MistakeNot4892 Dec 21, 2024
8cb6b6d
Fixes slings requiring a sling that they cannot take.
MistakeNot4892 Dec 21, 2024
3efa978
Fix items being affected by fluids when they shouldn't be
out-of-phaze Dec 21, 2024
234373b
Fix ticks2readable giving a blank output
out-of-phaze Dec 21, 2024
5d16462
Fix flame sources not updating held icon when extinguished
out-of-phaze Dec 21, 2024
5036372
Fix torch color breaking in water/tall grass
out-of-phaze Dec 21, 2024
c229bb5
Fix filter removal using the wrong return value
out-of-phaze Dec 21, 2024
b45e854
Fix standing in fluid causing layer flickering
out-of-phaze Dec 21, 2024
5756ca6
Repaths ethanol to alcohol.
MistakeNot4892 Dec 21, 2024
11bd76f
Various drake fixes.
MistakeNot4892 Dec 22, 2024
5cb77d0
Adding cooldowns to unarmed attacks.
MistakeNot4892 Dec 22, 2024
3f657ed
Drakes now have natural armor.
MistakeNot4892 Dec 22, 2024
74fec02
Merge pull request #4653 from noelle-lavenza/sprites/grimmturfs
MistakeNot4892 Dec 22, 2024
af964e4
Automatic changelog generation for PR #4653 [ci skip]
NebulaSS13Bot Dec 22, 2024
e23cf8a
Drakes can dig. :D
MistakeNot4892 Dec 22, 2024
e52ea37
Adjusting how fire sources work with atoms.
MistakeNot4892 Dec 22, 2024
96c6cb7
Allowed prone or clientless mobs to be pushed into fires.
MistakeNot4892 Dec 22, 2024
5c96abc
Fixes some grass issues.
MistakeNot4892 Dec 22, 2024
dba692c
Sit and Rest verb only prompts when appropriate.
MistakeNot4892 Dec 22, 2024
35ea53a
Ginseng will now restore blood.
MistakeNot4892 Dec 22, 2024
2c4a22e
Automatic changelog generation [ci skip]
NebulaSS13Bot Dec 23, 2024
591ffc7
Tweaks to burning PR.
MistakeNot4892 Dec 23, 2024
8441a4d
Merge pull request #4670 from MistakeNot4892/fix/grass
out-of-phaze Dec 24, 2024
e0db0f5
Merge pull request #4662 from MistakeNot4892/fixes/staging
out-of-phaze Dec 24, 2024
4c1de0d
Automatic changelog generation [ci skip]
NebulaSS13Bot Dec 25, 2024
39687ed
Merge pull request #4667 from MistakeNot4892/fixes/drakes
out-of-phaze Dec 25, 2024
ddb2d75
Merge pull request #4668 from MistakeNot4892/feature/diggy
out-of-phaze Dec 25, 2024
85b234d
Milking cows/goats will also give cream, which can be skimmed off the…
MistakeNot4892 Dec 26, 2024
14cd7d0
Add covered wells
out-of-phaze Dec 23, 2024
d20a8b6
Replace Shaded Hills well with covered well
out-of-phaze Dec 26, 2024
ee71c8b
Enforcing UID on skill decls.
MistakeNot4892 Dec 26, 2024
a10634b
Merge pull request #4669 from MistakeNot4892/fixes/burning
out-of-phaze Dec 26, 2024
4c7527a
Merge pull request #4671 from MistakeNot4892/fixes/bloodrestore
out-of-phaze Dec 26, 2024
a818487
Adding UID to skills missing it.
MistakeNot4892 Dec 26, 2024
65ab55d
Merge pull request #4665 from out-of-phaze/fix/misc-fluid-etc
MistakeNot4892 Dec 27, 2024
f2a9177
Merge pull request #4664 from out-of-phaze/temp/fluid-table
MistakeNot4892 Dec 27, 2024
27e82d5
Fish and chips use the right icon.
MistakeNot4892 Dec 27, 2024
9262e16
Merge branch 'staging' of github.com:NebulaSS10/Nebula into devupdate
MistakeNot4892 Dec 27, 2024
191601d
Merge pull request #4676 from MistakeNot4892/devupdate
MistakeNot4892 Dec 27, 2024
b485b3e
Combine unnecessary duplicate proc overrides in core code
out-of-phaze Dec 27, 2024
762711c
Condense assembly and timer side-overrides into definitions
out-of-phaze Dec 27, 2024
4f98b9c
Make smokable extinguishing code more consistent
out-of-phaze Dec 27, 2024
3a5aaf7
Condense clothing OnDisguise overrides
out-of-phaze Dec 27, 2024
6e9683e
Fix non-chest lung organ subtypes not showing ruptures on scan
out-of-phaze Dec 27, 2024
4bdf373
Adding lantern fish and cave fish.
MistakeNot4892 Dec 27, 2024
3863d08
Move oldpod ruin into corporate modpack
out-of-phaze Dec 27, 2024
d5bee9b
Make the game compile without the corporate modpack included
out-of-phaze Dec 27, 2024
c97f7bc
Fix mispathed proc overrides
out-of-phaze Dec 27, 2024
dea3f36
Remove accidental duplicate proc overrides
out-of-phaze Dec 27, 2024
dc8f140
Move ERT RIGs out of corporate modpack
out-of-phaze Dec 27, 2024
f092387
Remove mind.original
out-of-phaze Dec 27, 2024
7c0d3ea
Compiled tweaks from old codex dump branch.
MistakeNot4892 Feb 15, 2023
253a241
Fixed copypaste error with liddables.
MistakeNot4892 Dec 28, 2024
a5be12a
Merge pull request #4674 from MistakeNot4892/fixes/staging
out-of-phaze Dec 28, 2024
aab6ba6
Merge pull request #4679 from out-of-phaze/fix/side-overrides
MistakeNot4892 Dec 28, 2024
b0d6aac
Merge pull request #4678 from out-of-phaze/codequality/side-override-…
MistakeNot4892 Dec 28, 2024
aada602
Merge pull request #4673 from out-of-phaze/feature/covered-well
MistakeNot4892 Dec 28, 2024
acd8d61
Merge pull request #4683 from MistakeNot4892/fix/lids
out-of-phaze Dec 29, 2024
fb11510
Merge pull request #4681 from MistakeNot4892/wip/codex_dump
out-of-phaze Dec 29, 2024
8ef8f68
Cleaning up attack_hand interactions.
MistakeNot4892 Dec 29, 2024
b88309e
Buffs hook hand dexterity.
MistakeNot4892 Dec 29, 2024
d8924ed
Attempts to fix cleanbots becoming fixated on 1 bit of dirt they can'…
MistakeNot4892 Dec 29, 2024
bda2770
Enables melting of items inside stomachs.
MistakeNot4892 Dec 29, 2024
e6bc444
Cleaning up floorbot logic.
MistakeNot4892 Dec 30, 2024
07fabaa
Ported chicken nuggets from Polaris.
MistakeNot4892 Dec 21, 2024
5d7c35f
Reworking oil subtypes and lantern fuel.
MistakeNot4892 Dec 27, 2024
37dcd2c
Rename code files with spaces in their name
out-of-phaze Dec 31, 2024
7594500
Rename asset files with spaces in their path
out-of-phaze Dec 31, 2024
5709089
Move security levels into security levels module folder
out-of-phaze Dec 31, 2024
62365c5
Disable security state on Shaded Hills
out-of-phaze Jan 1, 2025
8be56cc
Move inertial dampener into a modpack
out-of-phaze Jan 1, 2025
20f95d6
Allow modpacks to include NanoUI template folders
out-of-phaze Jan 1, 2025
ae35726
Fix runtime from security states with fewer than two levels
out-of-phaze Jan 1, 2025
1880e40
Merge pull request #4677 from MistakeNot4892/feature/lanternfish
out-of-phaze Jan 2, 2025
1523969
Automatic changelog generation for PR #4677 [ci skip]
NebulaSS13Bot Jan 2, 2025
105aee6
Merge pull request #4689 from out-of-phaze/codequality/space-files
MistakeNot4892 Jan 2, 2025
34a0976
Merge pull request #4682 from out-of-phaze/codequality/mind-unoriginal
MistakeNot4892 Jan 2, 2025
8dec28a
Add a hack for interior ambience and multiz daycycle
out-of-phaze May 31, 2024
48d91e1
Merge pull request #4686 from MistakeNot4892/fixes/staging
out-of-phaze Jan 2, 2025
7e1d545
Automatic changelog generation [ci skip]
NebulaSS13Bot Jan 3, 2025
a670b1e
Merge pull request #4661 from MistakeNot4892/port/nuggets
out-of-phaze Jan 3, 2025
6d3a929
Merge pull request #4675 from MistakeNot4892/feature/cream
out-of-phaze Jan 3, 2025
bf7524d
Merge pull request #4680 from out-of-phaze/fix/daycycle-vertical
MistakeNot4892 Jan 3, 2025
5bea942
Merge branch 'staging' of github.com:NebulaSS13/Nebula into devupdate
MistakeNot4892 Jan 4, 2025
2493db2
Merge pull request #4694 from MistakeNot4892/devupdate
MistakeNot4892 Jan 4, 2025
eb401a1
Merge branch 'dev' of github.com:NebulaSS13/Nebula into fork/pyrelight
MistakeNot4892 Jan 4, 2025
832bb32
Updating karzerfeste oil type.
MistakeNot4892 Jan 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion code/_helpers/emissive.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/proc/emissive_overlay(var/icon, var/icon_state, var/loc, var/dir, var/color)
/proc/emissive_overlay(icon, icon_state, loc, dir, color, flags)
var/image/I = image(icon, loc, icon_state, EMISSIVE_LAYER, dir)
I.plane = EMISSIVE_PLANE
I.color = color
I.appearance_flags |= flags
return I
2 changes: 1 addition & 1 deletion code/_helpers/time.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ var/global/round_start_time = 0
out += "[seconds] second\s"
if(length(out))
return english_list(out)
return null
return "less than a second"

/proc/roundduration2text()
if(!round_start_time)
Expand Down
5 changes: 1 addition & 4 deletions code/_helpers/unsorted.dm
Original file line number Diff line number Diff line change
Expand Up @@ -719,11 +719,8 @@ Turf and target are seperate in case you want to teleport some distance from a t
/obj/item/weldingtool/can_puncture()
return 1

/obj/item/screwdriver/can_puncture()
return 1

/obj/item/clothing/mask/smokable/cigarette/can_puncture()
return src.lit
return ..() || lit // in case someone has a sharp cigarette for some reason

/*
Checks if that loc and dir has a item on the wall
Expand Down
4 changes: 2 additions & 2 deletions code/_helpers/visual_filters.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@
LAZYREMOVE(filter_data, filter_name)
filters -= thing
update_filters()
return FALSE
return TRUE
return TRUE
return FALSE

/// Animate a given filter on this atom. All params after the first are passed to animate().
/atom/movable/proc/animate_filter(filter_name, list/params)
Expand Down
22 changes: 1 addition & 21 deletions code/_onclick/click.dm
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,6 @@
var/sdepth = A.storage_depth(src)
if((!isturf(A) && A == loc) || (sdepth != -1 && sdepth <= 1))
if(holding)

// AI driven mobs have a melee telegraph that needs to be handled here.
if(check_intent(I_FLAG_HARM) && istype(A) && (!do_attack_windup_checking(A) || holding != get_active_held_item()))
return TRUE

var/resolved = holding.resolve_attackby(A, src, params)
if(!resolved && A && holding)
holding.afterattack(A, src, 1, params) // 1 indicates adjacency
Expand All @@ -143,10 +138,6 @@
if(A.Adjacent(src)) // see adjacent.dm
if(holding)

// AI driven mobs have a melee telegraph that needs to be handled here.
if(check_intent(I_FLAG_HARM) && istype(A) && (!do_attack_windup_checking(A) || holding != get_active_held_item()))
return TRUE

// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
var/resolved = holding.resolve_attackby(A, src, params)
if(!resolved && A && holding)
Expand Down Expand Up @@ -217,18 +208,7 @@
if(istype(G) && G.Touch(A,1))
return TRUE

// Pick up items.
if(check_dexterity(DEXTERITY_HOLD_ITEM, silent = TRUE))
return A.attack_hand(src)

// TODO: some way to check if we SHOULD be doing an attack windup here;
// corgis attacking a tree, for example, will do the windup animation despite
// having no interaction or message shown at the end of it.
// AI driven mobs have a melee telegraph that needs to be handled here.
if(check_intent(I_FLAG_HARM) && istype(A) && !do_attack_windup_checking(A))
return TRUE

return FALSE
return A.attack_hand(src)

/*
Ranged unarmed attack:
Expand Down
6 changes: 6 additions & 0 deletions code/_onclick/other_mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,15 @@
/atom/proc/can_interact_with_storage(user, strict = FALSE)
return isliving(user)

/atom/proc/get_required_interaction_dexterity()
return DEXTERITY_NONE

/atom/proc/attack_hand(mob/user)
SHOULD_CALL_PARENT(TRUE)

if(!user.check_dexterity(get_required_interaction_dexterity(), silent = TRUE))
return FALSE

if(can_interact_with_storage(user, strict = TRUE) && storage && user.check_dexterity((DEXTERITY_HOLD_ITEM|DEXTERITY_EQUIP_ITEM), TRUE))
add_fingerprint(user)
storage.open(user)
Expand Down
17 changes: 15 additions & 2 deletions code/controllers/subsystems/ambience.dm
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,23 @@ SUBSYSTEM_DEF(ambience)

// Grab what we need to set ambient light from our level handler.
var/datum/level_data/level_data = SSmapping.levels_by_z[z]
var/daycycle_id = level_data.daycycle_id
// if we don't have a daycycle ourselves, and we're indoors because of a turf blocking us
// find the first daycycle above us to use
if(!outsideness && !daycycle_id && HasAbove(z))
var/turf/above = src
var/datum/level_data/above_level_data
while ((above = GetAbove(above)))
if((above.z_flags & ZM_TERMINATOR) || !HasAbove(above.z))
break
above_level_data = SSmapping.levels_by_z[above.z]
if(above_level_data.daycycle_id)
daycycle_id = above_level_data.daycycle_id
break

// Check for daycycle ambience.
if(level_data.daycycle_id)
var/datum/daycycle/daycycle = SSdaycycle.get_daycycle(level_data.daycycle_id)
if(daycycle_id)
var/datum/daycycle/daycycle = SSdaycycle.get_daycycle(daycycle_id)
var/new_power = daycycle?.current_period?.power
if(!isnull(new_power))
if(new_power > 0)
Expand Down
1 change: 1 addition & 0 deletions code/controllers/subsystems/initialization/modpacks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ SUBSYSTEM_DEF(modpacks)
// Compiled modpack information.
var/list/default_submap_whitelisted_species = list()
var/list/default_submap_blacklisted_species = list(SPECIES_ALIEN, SPECIES_GOLEM)
var/list/modpack_nanoui_directories = list()

/datum/controller/subsystem/modpacks/Initialize()
var/list/all_modpacks = decls_repository.get_decls_of_subtype(/decl/modpack)
Expand Down
60 changes: 36 additions & 24 deletions code/datums/ai/aggressive.dm
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,14 @@
return TRUE

/datum/mob_controller/aggressive/proc/attack_target()

set waitfor = FALSE

var/atom/target = get_target()
if(!istype(target))
lose_target()
return

if(isliving(target) && body.buckled_mob == target && (!body.faction || body.buckled_mob.faction != body.faction))
body.visible_message(SPAN_DANGER("\The [body] attempts to unseat \the [body.buckled_mob]!"))
body.set_dir(pick(global.cardinal))
Expand All @@ -105,11 +109,21 @@
var/mob/living/victim = target
SET_STATUS_MAX(victim, STAT_WEAK, 3)
return target
if(body.Adjacent(target))
body.set_intent(I_FLAG_HARM)
body.ClickOn(target)

if(!body.Adjacent(target))
return target

// AI-driven mobs have a melee telegraph that needs to be handled here.
if(!body.do_attack_windup_checking(target))
return target

if(QDELETED(body) || body.incapacitated() || QDELETED(target))
return target

body.set_intent(I_FLAG_HARM)
body.ClickOn(target)
return target

/datum/mob_controller/aggressive/destroy_surroundings()

if(!body.can_act())
Expand Down Expand Up @@ -172,27 +186,25 @@
if(!(. = ..()))
return

if(!only_attack_enemies)
if(source)
set_target(source)
move_to_target(move_only = TRUE)
return

var/list/allies
var/list/around = view(body, 7)
for(var/atom/movable/A in around)
if(A == body || !isliving(A))
continue
var/mob/living/M = A
if(attack_same_faction || M.faction != body.faction)
add_enemy(M)
else if(istype(M.ai))
LAZYADD(allies, M.ai)

var/list/enemies = get_enemies()
if(LAZYLEN(enemies) && LAZYLEN(allies))
for(var/datum/mob_controller/ally as anything in allies)
ally.add_enemies(enemies)
if(only_attack_enemies)
var/list/allies
var/list/around = view(body, 7)
for(var/atom/movable/A in around)
if(A == body || !isliving(A))
continue
var/mob/living/M = A
if(attack_same_faction || M.faction != body.faction)
add_enemy(M)
else if(istype(M.ai))
LAZYADD(allies, M.ai)
var/list/enemies = get_enemies()
if(LAZYLEN(enemies) && LAZYLEN(allies))
for(var/datum/mob_controller/ally as anything in allies)
ally.add_enemies(enemies)

if(source)
set_target(source)
move_to_target(move_only = TRUE)

/datum/mob_controller/aggressive/move_to_target(var/move_only = FALSE)
if(!body.can_act())
Expand Down
6 changes: 1 addition & 5 deletions code/datums/communication/dsay.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,8 @@

keyname = C.key
if(C.mob) //Most of the time this is the dead/observer mob; we can totally use him if there is no better name
var/mindname
var/mindname = C.mob.mind?.name // the mind's "original name"
var/realname = C.mob.real_name
if(C.mob.mind)
mindname = C.mob.mind.name
if(C.mob.mind.original && C.mob.mind.original.real_name)
realname = C.mob.mind.original.real_name
if(mindname && mindname != realname)
name = "[realname] died as [mindname]"
else
Expand Down
7 changes: 0 additions & 7 deletions code/datums/datum.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,3 @@
*/
/datum/proc/PopulateClone(var/datum/clone)
return clone

/////////////////////////////////////////////////////////////
//Common implementations
/////////////////////////////////////////////////////////////

/image/GetCloneArgs()
return list(icon, loc, icon_state, layer, dir)
16 changes: 15 additions & 1 deletion code/datums/extensions/abilities/abilities_predator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,26 @@
return istype(user) && !user.incapacitated() && isatom(target) && target.Adjacent(user)

/datum/ability_handler/predator/do_melee_invocation(mob/user, atom/target)
// Nibbles

// Nibbles!
if(user.check_intent(I_FLAG_HARM))
if(isliving(target))
return handle_dismemberment(user, target)
if(istype(target, /obj/item/organ))
return handle_organ_destruction(user, target)

// Digging!
var/static/list/diggable_types = list(
/turf/floor,
/turf/wall,
/obj/structure/pit,
/obj/machinery/portable_atmospherics/hydroponics/soil
)
if(is_type_in_list(target, diggable_types))
var/obj/item/organ/external/paw = user.get_usable_hand_slot_organ()
if(paw)
return target.attackby(paw, user)

return FALSE

/datum/ability_handler/predator/proc/handle_organ_destruction(mob/user, obj/item/organ/chewtoy)
Expand Down
19 changes: 15 additions & 4 deletions code/datums/extensions/milkable/milkable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
var/milk_min = 5
var/milk_max = 10

var/cream_type = /decl/material/liquid/drink/milk/cream
var/cream_min = 2
var/cream_max = 5

var/impatience = 0
var/decl/skill/milking_skill = SKILL_BOTANY
var/milking_skill_req = SKILL_BASIC
Expand Down Expand Up @@ -42,9 +46,16 @@
create_milk()

/datum/extension/milkable/proc/create_milk()
var/create_milk = min(rand(milk_min, milk_max), REAGENTS_FREE_SPACE(udder))
if(create_milk > 0)
udder.add_reagent(milk_type, create_milk, get_milk_data())

var/create_milk = min(rand(milk_min, milk_max), REAGENTS_FREE_SPACE(udder))
var/create_cream = min(rand(cream_min, cream_max), REAGENTS_FREE_SPACE(udder) - create_milk)

if(create_milk <= 0 && create_cream <= 0)
return

var/list/milk_data = get_milk_data()
udder.add_reagent(milk_type, create_milk, milk_data)
udder.add_reagent(cream_type, create_cream, milk_data)

/datum/extension/milkable/proc/get_milk_data()
var/static/list/milk_data = list(
Expand Down Expand Up @@ -113,7 +124,7 @@
SPAN_NOTICE("\The [user] milks \the [critter] into \the [container]."),
SPAN_NOTICE("You milk \the [critter] into \the [container].")
)
udder.trans_type_to(container, milk_type, min(REAGENTS_FREE_SPACE(container.reagents), rand(15, 20)))
udder.trans_to(container, min(REAGENTS_FREE_SPACE(container.reagents), rand(15, 20)))
return TRUE

/datum/extension/milkable/proc/handle_milking_failure(mob/user, mob/living/critter)
Expand Down
2 changes: 2 additions & 0 deletions code/datums/inventory_slots/_inventory_slot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
var/requires_slot_flags
var/requires_organ_tag
var/quick_equip_priority = 0 // Higher priority means it will be checked first. If null, will not be considered for quick equip.
/// What depth of fluid is necessary for an item in this slot to be considered submerged?
var/fluid_height = FLUID_SHALLOW // we're treating FLUID_SHALLOW as waist level, basically

var/mob_overlay_layer
var/alt_mob_overlay_layer
Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/inventory_gripper.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
/// If set, use this icon_state for the hand slot overlay; otherwise, use slot_id.
var/hand_overlay
quick_equip_priority = null // you quick-equip stuff by holding it in a gripper, so this ought to be skipped
fluid_height = (FLUID_SHALLOW + FLUID_OVER_MOB_HEAD) / 2 // halfway between waist and top of head, so roughly chest level, reasoning that you can just hold it up out of the water

// For reference, grippers do not use ui_loc, they have it set dynamically during /datum/hud/proc/rebuild_hands()

Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/slots/slot_back.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
requires_slot_flags = SLOT_BACK
mob_overlay_layer = HO_BACK_LAYER
quick_equip_priority = 14
fluid_height = (FLUID_SHALLOW + FLUID_OVER_MOB_HEAD) / 2 // halfway between waist and top of head, so roughly chest level

/datum/inventory_slot/back/simple
requires_organ_tag = null
Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/slots/slot_ears.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
requires_slot_flags = SLOT_EARS
mob_overlay_layer = HO_L_EAR_LAYER
quick_equip_priority = 7
fluid_height = (FLUID_SHALLOW * 0.25 + FLUID_OVER_MOB_HEAD * 0.75) // 3/4 of the way between waist-level and the top of your head

/datum/inventory_slot/ear/update_mob_equipment_overlay(var/mob/living/user, var/obj/item/prop, var/redraw_mob = TRUE)
for(var/slot in global.airtight_slots)
Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/slots/slot_glasses.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
mob_overlay_layer = HO_GLASSES_LAYER
alt_mob_overlay_layer = HO_GOGGLES_LAYER
quick_equip_priority = 5
fluid_height = (FLUID_SHALLOW * 0.25 + FLUID_OVER_MOB_HEAD * 0.75) // 3/4 of the way between waist-level and the top of your head

/datum/inventory_slot/glasses/get_examined_string(mob/owner, mob/user, distance, hideflags, decl/pronouns/pronouns)
if(_holding && !(hideflags & HIDEEYES))
Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/slots/slot_head.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
requires_slot_flags = SLOT_HEAD
mob_overlay_layer = HO_HEAD_LAYER
quick_equip_priority = 9
fluid_height = FLUID_OVER_MOB_HEAD

/datum/inventory_slot/head/simple
requires_organ_tag = null
Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/slots/slot_id.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
requires_slot_flags = SLOT_ID
mob_overlay_layer = HO_ID_LAYER
quick_equip_priority = 13
fluid_height = (FLUID_SHALLOW + FLUID_OVER_MOB_HEAD) / 2 // halfway between waist and top of head, so roughly chest level

/datum/inventory_slot/id/update_mob_equipment_overlay(var/mob/living/user, var/obj/item/prop, var/redraw_mob = TRUE)
var/obj/item/clothing/clothes = user.get_equipped_item(slot_w_uniform_str)
Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/slots/slot_mask.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
can_be_hidden = TRUE
mob_overlay_layer = HO_FACEMASK_LAYER
quick_equip_priority = 10
fluid_height = (FLUID_SHALLOW * 0.25 + FLUID_OVER_MOB_HEAD * 0.75) // 3/4 of the way between waist-level and the top of your head

/datum/inventory_slot/mask/update_mob_equipment_overlay(var/mob/living/user, var/obj/item/prop, var/redraw_mob = TRUE)
if(prop?.flags_inv & BLOCK_ALL_HAIR)
Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/slots/slot_shoes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
)
requires_slot_flags = SLOT_FEET
quick_equip_priority = 3
fluid_height = 3

/datum/inventory_slot/shoes/update_mob_equipment_overlay(var/mob/living/user, var/obj/item/prop, var/redraw_mob = TRUE)
var/obj/item/suit = user.get_equipped_item(slot_wear_suit_str)
Expand Down
1 change: 1 addition & 0 deletions code/datums/inventory_slots/slots/slot_suit_storage.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
slot_id = slot_s_store_str
requires_organ_tag = BP_CHEST
mob_overlay_layer = HO_SUIT_STORE_LAYER
fluid_height = (FLUID_SHALLOW + FLUID_OVER_MOB_HEAD) / 2 // halfway between waist and top of head, so roughly chest level

/datum/inventory_slot/suit_storage/can_equip_to_slot(var/mob/user, var/obj/item/prop, var/disable_warning, var/ignore_equipped)
. = ..()
Expand Down
Loading
Loading