Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
376c482
Move APC content into a power subfolder
out-of-phaze Sep 10, 2025
1756c5e
Make APCs not a subtype of /obj/machinery/power
out-of-phaze Oct 10, 2025
ac2e3f5
Clean up breaker box code
out-of-phaze Oct 9, 2025
b04c84e
Various supporting changes for modular map generator.
MistakeNot4892 Oct 10, 2025
4b3144a
Added nails.
MistakeNot4892 Jan 23, 2025
45bc4fa
Merge pull request #5153 from MistakeNot4892/tweak/mapload
out-of-phaze Oct 11, 2025
ca97d7e
Merge pull request #5151 from out-of-phaze/codequality/apc
out-of-phaze Oct 11, 2025
c14e710
Make the supermatter crystal not a machine
out-of-phaze Oct 10, 2025
1b1f08d
Fix the supermatter crystal melting
out-of-phaze Oct 11, 2025
9151a17
Remove the last vestiges of struts
out-of-phaze Oct 11, 2025
0bb59f7
Remove unnecessary powernet == 0 check
out-of-phaze Oct 11, 2025
56a1a61
Move keybinding definitions into their own folder
out-of-phaze Oct 12, 2025
7c23c3a
Move pies to empty pies file
out-of-phaze Oct 12, 2025
4f1126b
Remove two blank files
out-of-phaze Oct 12, 2025
26ee7dc
Fix readme files not being detected by validation on Unix
out-of-phaze Oct 12, 2025
1f77779
Use mend_fracture helper proc where possible
out-of-phaze Mar 24, 2025
f326caf
Merge pull request #5154 from out-of-phaze/codequality/breaker-quality
MistakeNot4892 Oct 12, 2025
de7a00c
Add feedback for when a bone is too damaged to mend
out-of-phaze Oct 12, 2025
11cfc73
Merge pull request #5159 from out-of-phaze/removal/struts
out-of-phaze Oct 13, 2025
20eb631
Move powernet sensor into main power module
out-of-phaze Sep 10, 2025
00a9824
Make powernet sensors not a subtype of /obj/machinery/power
out-of-phaze Oct 10, 2025
c7ad5cc
Move light fixtures and bulbs/tubes into their own module
out-of-phaze Sep 10, 2025
1a58688
Merge pull request #5163 from out-of-phaze/codequality/blankfiles
MistakeNot4892 Oct 13, 2025
b032b9a
Merge pull request #5164 from out-of-phaze/codequality/mend-fracture
MistakeNot4892 Oct 13, 2025
161135b
Merge pull request #5152 from out-of-phaze/codequality/supermatter-ma…
MistakeNot4892 Oct 13, 2025
f617cc6
Merge pull request #5162 from out-of-phaze/codequality/keybindings
MistakeNot4892 Oct 13, 2025
7b30058
Merge pull request #5160 from out-of-phaze/codequality/powernet-zero
MistakeNot4892 Oct 13, 2025
f40272e
Reorganize lights module
out-of-phaze Oct 13, 2025
4c2dc31
Merge pull request #5166 from out-of-phaze/codequality/lights-module
MistakeNot4892 Oct 16, 2025
89556a5
Merge pull request #5165 from out-of-phaze/codequality/powernet-sensor
MistakeNot4892 Oct 16, 2025
a86982b
Eliminate useless flufftext 'module'
out-of-phaze Oct 17, 2025
8e5f82f
Merge pull request #5156 from MistakeNot4892/feature/nails
out-of-phaze Oct 18, 2025
c051af3
Added barrel rims and basic coopery for crafted barrels.
MistakeNot4892 Jan 23, 2025
f513e6a
Backporting zombies/skellymans from Pyrelight.
MistakeNot4892 Oct 19, 2025
f88ae72
Merge pull request #5167 from out-of-phaze/codequality/flufftext
MistakeNot4892 Oct 19, 2025
750adcc
Merge pull request #5155 from MistakeNot4892/feature/coopery
out-of-phaze Oct 19, 2025
c1d671c
Automatic changelog generation for PR #5155 [ci skip]
NebulaSS13Bot Oct 19, 2025
59197d9
Lobotomises the laundry basket.
MistakeNot4892 Oct 20, 2025
08a88ef
Greyscales laundry icons.
MistakeNot4892 Oct 20, 2025
80fbea9
Automatic changelog generation [ci skip]
NebulaSS13Bot Oct 20, 2025
7c03a10
Clarifying/standardizing random language getter procs and some associ…
MistakeNot4892 Oct 20, 2025
f041131
Added subtypes for tradeship level data.
MistakeNot4892 Oct 20, 2025
3498daa
Reorganize materials module
out-of-phaze Oct 20, 2025
94140be
Make boiling checks use phase_at_temperature
out-of-phaze Oct 20, 2025
e4d71c5
Implement integrated electronics assembly cell_type var
out-of-phaze Mar 24, 2025
0224d1e
Implement unused IC component idle power draw proc
out-of-phaze Mar 24, 2025
dd9961d
Merge pull request #5172 from MistakeNot4892/tweak/laundry
out-of-phaze Oct 20, 2025
92c76a7
Consolidate some redundant logic in drill code
out-of-phaze Mar 24, 2025
34b0e70
Consolidate some redundant logic in planet flora spawner code
out-of-phaze Mar 24, 2025
28aa44f
Clean up redundant code in synthesized instruments module
out-of-phaze Mar 24, 2025
6fe2b9a
Implement sprite accessory metadata sanitize_data proc
out-of-phaze Mar 24, 2025
73ec00c
Implement unused maxfuel parameter in FTL computer
out-of-phaze Mar 24, 2025
bc0def1
Remove unused get_linked_to_desc helper
out-of-phaze Oct 20, 2025
c876d1f
Remove redundant prefab assembly_name variable
out-of-phaze Oct 20, 2025
b4cdb48
Implement added_to_assembly and removed_from_assembly methods
out-of-phaze Oct 20, 2025
16fb914
Fix circuit assembly names always starting with an uppercase letter
out-of-phaze Oct 20, 2025
6455014
Automatic changelog generation [ci skip]
NebulaSS13Bot Oct 24, 2025
6c806aa
Merge pull request #5181 from out-of-phaze/codequality/ftl-maxfuel
MistakeNot4892 Oct 24, 2025
e05ece0
Merge pull request #5180 from out-of-phaze/codequality/sprite-accesso…
MistakeNot4892 Oct 24, 2025
3dfee54
Merge pull request #5179 from out-of-phaze/codequality/redundant-cleanup
MistakeNot4892 Oct 24, 2025
b20e449
Merge pull request #5175 from MistakeNot4892/tweak/tradeship_levels
out-of-phaze Oct 24, 2025
ea50f3f
Generalizing some default colour retrieval code.
MistakeNot4892 Oct 19, 2025
360c0a7
Merge pull request #5178 from out-of-phaze/codequality/ic-unused
MistakeNot4892 Oct 25, 2025
54b2720
Merge pull request #5177 from out-of-phaze/codequality/geology
MistakeNot4892 Oct 25, 2025
1ff2147
Merge pull request #5171 from MistakeNot4892/port/aminals
out-of-phaze Oct 25, 2025
6dbe466
Merge pull request #5173 from MistakeNot4892/tweak/randomname
out-of-phaze Oct 25, 2025
db5cfdf
Merge pull request #5169 from MistakeNot4892/port/undead
out-of-phaze Oct 27, 2025
1cc7512
Backporting animal ears from Pyrelight as biomod modpack.
MistakeNot4892 Oct 19, 2025
e5a542b
Adding UID to flooring decls.
MistakeNot4892 Oct 28, 2025
f0560f6
Merge pull request #5168 from MistakeNot4892/port/pyrelight
out-of-phaze Oct 29, 2025
28b0cad
Predators can now eat internal organs and cannot rip off unamputatabl…
MistakeNot4892 Oct 29, 2025
3fbdb74
Ramps no longer get colour applied twice.
MistakeNot4892 Oct 29, 2025
73beee6
Fixes drake spit/abilities not working.
MistakeNot4892 Oct 29, 2025
8081307
A turf becoming open will cause everything on it to fall.
MistakeNot4892 Oct 29, 2025
bdf17c8
Barren ground will no longer drop soil.
MistakeNot4892 Oct 29, 2025
f77d5cf
get_all_flooring() no longer duplicates flooring for lists.
MistakeNot4892 Oct 29, 2025
3d1c30c
Drakes will default to clawing as their unarmed attack, instead of ra…
MistakeNot4892 Oct 29, 2025
06f00cf
Drake claws work as picks (too soft for stone) and not as hoes (why w…
MistakeNot4892 Oct 29, 2025
31dc87b
Give new_player and observer mobs skillsets again
out-of-phaze Oct 29, 2025
eedba7d
Remove unnecessary skill_link nulling
out-of-phaze Oct 29, 2025
2508c70
Update BYOND and SpacemanDMM versions in CI
out-of-phaze Oct 29, 2025
dc2da95
Update CI to use ubuntu-latest
out-of-phaze Oct 29, 2025
8817d93
Various changes to allow digging through a turf and carving a ramp fr…
MistakeNot4892 Oct 29, 2025
36b4be5
Downgrade CI BYOND version to 1663 to avoid libcurl4 requirement
out-of-phaze Oct 30, 2025
3119596
Automatic changelog generation [ci skip]
NebulaSS13Bot Oct 31, 2025
c332eee
Merge pull request #5187 from out-of-phaze/fix/occupation_skill_link
MistakeNot4892 Oct 31, 2025
cd31769
Merge pull request #5182 from MistakeNot4892/tweak/flooring_uid
out-of-phaze Oct 31, 2025
c9f08ec
Adding a couple of decl-related helpers.
MistakeNot4892 Oct 31, 2025
6040b07
Flooring lists are now handled as JSON text.
MistakeNot4892 Oct 31, 2025
0a042c4
Merge pull request #5185 from MistakeNot4892/tweaks/drakes
out-of-phaze Nov 1, 2025
24d01b7
Automatic changelog generation for PR #5185 [ci skip]
NebulaSS13Bot Nov 1, 2025
e39ec59
Unified brick/log/stone/natural walls with a consistent ramp/style.
MistakeNot4892 Oct 30, 2025
4b6c0e9
Implemented chisels and wall smoothing.
MistakeNot4892 Oct 30, 2025
c014ead
Automatic changelog generation [ci skip]
NebulaSS13Bot Nov 2, 2025
915e062
Merge pull request #5186 from out-of-phaze/tooling/update-spacemandmm
MistakeNot4892 Nov 2, 2025
db8d8b9
Moving paint_color to /atom.
MistakeNot4892 Nov 1, 2025
8a2f965
Reworking some really bad code in borg hypos.
MistakeNot4892 Oct 31, 2025
7f7887d
Cleaning up current_health setting in atom definitions.
MistakeNot4892 Oct 31, 2025
9c2ba22
Fixes issues with chest trim.
MistakeNot4892 Oct 31, 2025
cf309cb
Moving various material references onto /atom and cleaning up use of …
MistakeNot4892 Oct 31, 2025
e9319b6
Replacing floor_material with material.
MistakeNot4892 Oct 31, 2025
fc3dc45
Replaces implicit_material with material.
MistakeNot4892 Oct 31, 2025
a8cee8a
Replaces airlock mineral with material, replaces glass_material with …
MistakeNot4892 Oct 31, 2025
cff0e59
Merge pull request #5193 from MistakeNot4892/rework/flooring
out-of-phaze Nov 3, 2025
67991b1
Merge pull request #5188 from MistakeNot4892/feature/wall_smoothing
out-of-phaze Nov 3, 2025
53c4148
Merge pull request #5195 from MistakeNot4892/tweak/material_ref
out-of-phaze Nov 3, 2025
e44fedf
Reworking how chems are tracked on /datum/seed.
MistakeNot4892 Oct 24, 2025
3ac58ae
Adding plant dissection based on Pyrelight implementation.
MistakeNot4892 Oct 24, 2025
2b98638
Simplifying hand offset logic.
MistakeNot4892 Nov 3, 2025
9e227b3
Merge pull request #5170 from MistakeNot4892/port/plants
out-of-phaze Nov 4, 2025
a0efe85
/datum/composite_sound/var/volume -> play_volume
MistakeNot4892 Oct 31, 2025
2d3fd2f
/decl/music_track/var/volume -> music_volume
MistakeNot4892 Oct 31, 2025
1d38cb9
Jukebox and boombox volume -> music_volume
MistakeNot4892 Oct 31, 2025
1eca96a
Atmospherics device/item volume -> air_volume
MistakeNot4892 Oct 31, 2025
2efd349
Various local uses of var/volume -> disambiguated var names.
MistakeNot4892 Oct 31, 2025
ed4b6d7
/datum/sound_player/var/volume -> play_volume
MistakeNot4892 Oct 31, 2025
f300289
Food, chem, various bespoke local volume vars -> chem_volume, many in…
MistakeNot4892 Oct 31, 2025
5c49df3
Updating uses of volume in maps.
MistakeNot4892 Oct 31, 2025
48a3867
create_reagents() -> create_or_update_reagents() or chem_volume set.
MistakeNot4892 Oct 31, 2025
deecd2e
Addressing some changes requested on the chems PR.
MistakeNot4892 Nov 2, 2025
d1e4e2f
air_volume -> total_volume, gas_volume
MistakeNot4892 Nov 3, 2025
98699f1
Merge pull request #5189 from MistakeNot4892/rework/chem_volume
out-of-phaze Nov 5, 2025
da44a9c
Reworks sealant gun code to use reagents instead of bespoke tracking …
MistakeNot4892 Oct 31, 2025
b262998
Adding a quern-stone.
MistakeNot4892 Dec 4, 2024
fa8d5d6
Generalising some structure reagent-handling code.
MistakeNot4892 Oct 10, 2025
3989f99
Adding querns to the shadyhills map.
MistakeNot4892 Oct 31, 2025
54ac680
Merge pull request #5198 from MistakeNot4892/tweak/hands
out-of-phaze Nov 7, 2025
5a9ba3d
Merge pull request #5191 from MistakeNot4892/rework/sealant_gun
out-of-phaze Nov 7, 2025
84c5d13
Merge pull request #5157 from MistakeNot4892/feature/quern
out-of-phaze Nov 7, 2025
7271d22
Merge branch 'dev' of github.com:NebulaSS13/Nebula into pyrelight
MistakeNot4892 Nov 20, 2025
0889415
Integrating pyrelight content with backported content that went to Ne…
MistakeNot4892 Nov 20, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/generate_documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
workflow_dispatch:

env:
SPACEMAN_DMM_VERSION: suite-1.9
SPACEMAN_DMM_VERSION: suite-1.11

jobs:
generate_documentation:
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ on:
workflow_dispatch:

env:
BYOND_MAJOR: "515"
BYOND_MINOR: "1647"
SPACEMAN_DMM_VERSION: suite-1.9
BYOND_MAJOR: "516"
BYOND_MINOR: "1663"
SPACEMAN_DMM_VERSION: suite-1.11

jobs:
DreamChecker:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Cache
Expand Down Expand Up @@ -52,7 +52,7 @@ jobs:
chmod +x send.sh
./send.sh failure $WEBHOOK_URL
OpenDream:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Python setup
Expand All @@ -69,7 +69,7 @@ jobs:
- name: Run OpenDream
run: ./DMCompiler_linux-x64/DMCompiler nebula.dme --define=UNIT_TEST --suppress-unimplemented --skip-anything-typecheck --version=${BYOND_MAJOR}.${BYOND_MINOR} | bash test/annotate_od.sh
Code:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Cache
Expand All @@ -95,7 +95,7 @@ jobs:
chmod +x send.sh
./send.sh failure $WEBHOOK_URL
Maps:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
strategy:
matrix:
map_path: [example, tradeship, exodus, ministation, shaded_hills, karzerfeste, away_sites_testing, modpack_testing, planets_testing]
Expand Down
6 changes: 6 additions & 0 deletions code/__defines/hydroponics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,9 @@
#define GROWTH_VINES "vines"
#define GROWTH_BIOMASS "mass"
#define GROWTH_MOLD "mold"

#define PLANT_SEG_BODY "body" // Non-dissectable plants

#define PLANT_STATE_FRESH "fresh"
#define PLANT_STATE_ROASTED "roasted"
#define PLANT_STATE_DRIED "dried"
3 changes: 2 additions & 1 deletion code/__defines/tools.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#define TOOL_PEN /decl/tool_archetype/pen
#define TOOL_STAMP /decl/tool_archetype/stamp
#define TOOL_SHEARS /decl/tool_archetype/shears
#define TOOL_CHISEL /decl/tool_archetype/chisel

// Surgical tools.
#define TOOL_SCALPEL /decl/tool_archetype/scalpel
Expand Down Expand Up @@ -63,7 +64,7 @@
#define IS_HAMMER(A) IS_TOOL(A, TOOL_HAMMER)
#define IS_HOE(A) IS_TOOL(A, TOOL_HOE)
#define IS_SHEARS(A) IS_TOOL(A, TOOL_SHEARS)

#define IS_CHISEL(A) IS_TOOL(A, TOOL_CHISEL)
#define IS_HEMOSTAT(A) IS_TOOL(A, TOOL_HEMOSTAT)
#define IS_RETRACTOR(A) IS_TOOL(A, TOOL_RETRACTOR)

Expand Down
3 changes: 2 additions & 1 deletion code/__globals.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Defined here due to being used immediately below.
#define GET_DECL(D) (ispath(D, /decl) ? (decls_repository.fetched_decls[D] || decls_repository.get_decl(D)) : null)
#define IMPLIED_DECL GET_DECL(__IMPLIED_TYPE__)
#define RESOLVE_TO_DECL(D) (istype(D, /decl) ? D : GET_DECL(D))
#define RESOLVE_TO_DECL(D) (istype(D, /decl) ? D : (istext(D) ? decls_repository.get_decl_by_id(D, validate_decl_type = FALSE) : GET_DECL(D)))
#define DECLS_ARE_EQUIVALENT(F, S) ((RESOLVE_TO_DECL(F) == RESOLVE_TO_DECL(S)))

// Defined here due to compile order; overrides in macros make the compiler complain.
/decl/global_vars
Expand Down
6 changes: 4 additions & 2 deletions code/_helpers/logging.dm
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,8 @@ var/global/log_end= world.system_type == UNIX ? ascii2text(13) : ""
return json_encode(d)
return d.get_log_info_line()

var/global/_gag_report_progress = 0
/proc/report_progress(var/progress_message)
admin_notice("<span class='boldannounce'>[progress_message]</span>", R_DEBUG)
log_world(progress_message)
if(global._gag_report_progress <= 0)
admin_notice("<span class='boldannounce'>[progress_message]</span>", R_DEBUG)
to_world_log(progress_message)
3 changes: 2 additions & 1 deletion code/_helpers/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
if(current_species)
var/decl/background_detail/background = current_species.get_default_background_datum_by_flag(BACKGROUND_FLAG_NAMING)
if(background)
return background.get_random_name(null, gender)
return background.get_random_cultural_name(gender = gender, species = species)

return capitalize(pick(gender == FEMALE ? global.using_map.first_names_female : global.using_map.first_names_male)) + " " + capitalize(pick(global.using_map.last_names))

/proc/random_skin_tone(var/decl/bodytype/current_bodytype)
Expand Down
2 changes: 1 addition & 1 deletion code/_helpers/unsorted.dm
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
Checks if that loc and dir has a item on the wall
*/
var/global/list/WALLITEMS = list(
/obj/machinery/power/apc, /obj/machinery/alarm, /obj/item/radio/intercom,
/obj/machinery/apc, /obj/machinery/alarm, /obj/item/radio/intercom,
/obj/structure/extinguisher_cabinet, /obj/structure/reagent_dispensers/peppertank,
/obj/machinery/status_display, /obj/machinery/network/requests_console, /obj/machinery/light_switch, /obj/structure/sign,
/obj/machinery/newscaster, /obj/machinery/firealarm, /obj/structure/noticeboard,
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/ai.dm
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@
Topic(src, list("command"="bolts", "activate" = "1"))
return TRUE

/obj/machinery/power/apc/AICtrlClick(mob/living/silicon/user) // turns off/on APCs.
/obj/machinery/apc/AICtrlClick(mob/living/silicon/user) // turns off/on APCs.
if(user.incapacitated())
return FALSE
Topic(src, list("breaker"="1"))
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/cyborg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
/obj/machinery/door/airlock/BorgCtrlClick(mob/living/silicon/robot/user) // Bolts doors. Forwards to AI code.
return AICtrlClick(user)

/obj/machinery/power/apc/BorgCtrlClick(mob/living/silicon/robot/user) // turns off/on APCs. Forwards to AI code.
/obj/machinery/apc/BorgCtrlClick(mob/living/silicon/robot/user) // turns off/on APCs. Forwards to AI code.
return AICtrlClick(user)

/obj/machinery/turretid/BorgCtrlClick(mob/living/silicon/robot/user) //turret control on/off. Forwards to AI code.
Expand Down
1 change: 0 additions & 1 deletion code/_onclick/hud/hud_elements/hud_robot.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/datum/hud/robot
offset_hands_vertically = FALSE
gun_mode_toggle_type = /obj/screen/gun/mode
omit_hud_elements = list(
/decl/hud_element/health,
Expand Down
34 changes: 10 additions & 24 deletions code/_onclick/hud/hud_types/_hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,6 @@
VAR_PRIVATE/obj/screen/gun/item/gun_item_use_toggle
VAR_PRIVATE/obj/screen/gun/radio/gun_radio_use_toggle

var/offset_hands_vertically = TRUE

/datum/hud/New(mob/_owner)
if(istype(_owner))
owner = weakref(_owner)
Expand Down Expand Up @@ -353,30 +351,18 @@
qdel(inv_box)

// Rebuild offsets for the hand elements.
var/const/elems_per_row = 4
var/hand_y_offset = 21
var/list/elements = hud_elements_hands?.Copy()
if(length(elements))
if(offset_hands_vertically)
while(length(elements))
var/copy_index = min(length(elements), 2)+1
var/list/sublist = elements.Copy(1, copy_index)
elements.Cut(1, copy_index)
var/obj/screen/inventory/inv_box
if(length(sublist) == 1)
inv_box = sublist[1]
inv_box.screen_loc = "CENTER,BOTTOM:[hand_y_offset]"
else
inv_box = sublist[1]
inv_box.screen_loc = "CENTER:-[world.icon_size/2],BOTTOM:[hand_y_offset]"
inv_box = sublist[2]
inv_box.screen_loc = "CENTER:[world.icon_size/2],BOTTOM:[hand_y_offset]"
hand_y_offset += world.icon_size
else
var/hand_x_offset = -((length(elements) * world.icon_size) / 2) + (world.icon_size/2)
for(var/obj/screen/inventory/inv_box in elements)
inv_box.screen_loc = "CENTER:[hand_x_offset],BOTTOM:[hand_y_offset]"
hand_x_offset += world.icon_size
hand_y_offset += world.icon_size
while(length(elements))
var/copy_index = min(length(elements), elems_per_row)+1
var/list/sublist = elements.Copy(1, copy_index)
elements.Cut(1, copy_index)
var/hand_x_offset = (world.icon_size/2) * (1 - length(sublist))
for(var/obj/screen/inventory/inv_box in sublist)
inv_box.screen_loc = "CENTER:[hand_x_offset],BOTTOM:[hand_y_offset]"
hand_x_offset += world.icon_size
hand_y_offset += world.icon_size

if(mymob.client && islist(hud_elements_hands) && length(hud_elements_hands))
mymob.client.screen |= hud_elements_hands
Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystems/initialization/codex_dump.dm
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ TODO: work out how to implement an external search function.
// Copied from del_the_world UT exceptions list.
var/static/list/skip_types = typesof(
/obj/item/organ/external/chest,
/obj/machinery/power/apc,
/obj/machinery/apc,
/obj/machinery/alarm,
/obj/structure/stairs
)
Expand Down
7 changes: 6 additions & 1 deletion code/controllers/subsystems/mapping.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ SUBSYSTEM_DEF(mapping)
var/list/submaps = list()
var/list/map_templates_by_category = list()
var/list/map_templates_by_type = list()
var/list/spawnable_map_templates = list()
var/list/banned_maps = list()
var/list/banned_template_names = list()

Expand Down Expand Up @@ -169,11 +170,15 @@ SUBSYSTEM_DEF(mapping)
map_templates = SSmapping.map_templates
map_templates_by_category = SSmapping.map_templates_by_category
map_templates_by_type = SSmapping.map_templates_by_type
spawnable_map_templates = SSmapping.spawnable_map_templates

/datum/controller/subsystem/mapping/proc/register_map_template(var/datum/map_template/map_template)
if(!validate_map_template(map_template) || !map_template.preload())
return FALSE
map_templates[map_template.name] = map_template
map_templates[map_template.name] = map_template
map_templates_by_type[map_template.type] = map_template
if(map_template.is_spawnable)
spawnable_map_templates += map_template
for(var/temple_cat in map_template.template_categories) // :3
LAZYINITLIST(map_templates_by_category[temple_cat])
LAZYSET(map_templates_by_category[temple_cat], map_template.name, map_template)
Expand Down
6 changes: 3 additions & 3 deletions code/datums/composite_sounds/_composite_sound.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
start_length (num) How long to wait before starting the main loop after playing start_sound
end_sound (soundfile) The sound played after the main loop has concluded
chance (num) Chance per loop to play a mid_sound
volume (num) Sound output volume
play_volume (num) Sound output volume
max_loops (num) The max amount of loops to run for.
direct (bool) If true plays directly to provided atoms instead of from them
*/
Expand All @@ -19,7 +19,7 @@
var/start_length
var/end_sound
var/chance
var/volume = 100
var/play_volume = 100
var/max_loops
var/direct
var/timerid
Expand Down Expand Up @@ -71,7 +71,7 @@
/datum/composite_sound/proc/play(soundfile)
var/sound/S = sound(soundfile)
for(var/atom/thing as anything in output_atoms)
playsound(thing, S, volume)
playsound(thing, S, play_volume)

/datum/composite_sound/proc/get_sound(starttime, _mid_sounds)
. = _mid_sounds || mid_sounds
Expand Down
4 changes: 2 additions & 2 deletions code/datums/composite_sounds/fire_sounds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
)
mid_length = 10
end_sound = 'sound/ambience/firecrackle06.ogg'
volume = 10
play_volume = 10

/datum/composite_sound/grill
start_sound = 'sound/machines/kitchen/grill/grill-start.ogg'
start_length = 10
mid_sounds = list('sound/machines/kitchen/grill/grill-mid1.ogg'=10)
mid_length = 40
end_sound = 'sound/machines/kitchen/grill/grill-stop.ogg'
volume = 50
play_volume = 50
4 changes: 2 additions & 2 deletions code/datums/composite_sounds/loom.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
'sound/items/loom3.ogg'
)
end_sound = 'sound/items/loomstop.ogg'
volume = 40
play_volume = 40

// Spinning wheel sampled from 'Wooden Spinning Wheel' by Kessir on freesound.org: https://freesound.org/people/kessir/sounds/414554/
/datum/composite_sound/spinning_wheel_working
Expand All @@ -22,4 +22,4 @@
'sound/items/spinningwheel3.ogg'
)
end_sound = 'sound/items/spinningwheelstop.ogg'
volume = 60
play_volume = 60
2 changes: 1 addition & 1 deletion code/datums/composite_sounds/machinery_sounds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
mid_sounds = list('sound/machines/microwave/microwave-mid1.ogg'=10, 'sound/machines/microwave/microwave-mid2.ogg'=1)
mid_length = 10
end_sound = 'sound/machines/microwave/microwave-end.ogg'
volume = 1
play_volume = 1
31 changes: 26 additions & 5 deletions code/datums/extensions/abilities/abilities_predator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,23 +56,44 @@
to_chat(user, SPAN_WARNING("\The [victim] is too big for you to dismember."))
return TRUE

var/target_zone = user.get_target_zone()
var/obj/item/organ/external/limb = victim.get_organ(target_zone)
if(!limb)
to_chat(user, SPAN_WARNING("\The [victim] is missing that limb!"))
return TRUE

to_chat(user, SPAN_NOTICE("You dig into \the [victim], hunting for something edible."))
if(!do_after(user, max(2 SECONDS, victim.get_object_size() * 5), victim) || QDELETED(victim) || !victim.butchery_data || victim.stat != DEAD)
return TRUE

// Changing zone means we cancel.
if(target_zone != user.get_target_zone())
return

var/list/external_organs = victim.get_external_organs()
if(length(external_organs) <= 1)
user.visible_message(SPAN_DANGER("\The [user] tears \the [victim] apart!"))
victim.gib()
return TRUE

var/obj/item/organ/external/limb = victim.get_organ(user.get_target_zone())
limb = victim.get_organ(target_zone) // In case it was removed in the interim.
if(!limb)
to_chat(user, SPAN_WARNING("\The [victim] is missing that limb!"))
return TRUE

user.visible_message(SPAN_DANGER("\The [user] tears \the [limb] from \the [victim]!"))
limb.dismember(FALSE, DISMEMBER_METHOD_EDGE, silent = TRUE)
if(!QDELETED(limb))
user.put_in_hands(limb)
if(length(limb.internal_organs))
var/obj/item/organ/internal/stolen = pick(limb.internal_organs)
user.visible_message(SPAN_DANGER("\The [user] tears \the [stolen] out of \the [victim]'s [limb.name]!"))
victim.remove_organ(stolen, TRUE, TRUE)
if(!QDELETED(stolen))
user.put_in_hands(stolen)
return TRUE

if(!(limb.limb_flags & ORGAN_FLAG_CAN_AMPUTATE))
to_chat(user, SPAN_WARNING("You gnaw on \the [victim]'s [limb.name], but can't pull it loose."))
else
user.visible_message(SPAN_DANGER("\The [user] tears \the [limb] from \the [victim]!"))
limb.dismember(FALSE, DISMEMBER_METHOD_EDGE, silent = TRUE)
if(!QDELETED(limb))
user.put_in_hands(limb)
return TRUE
4 changes: 2 additions & 2 deletions code/datums/extensions/milkable/milkable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
to_chat(user, SPAN_WARNING("Wait for \the [critter] to stop moving before you try milking it."))
return TRUE

if(container.reagents.total_volume >= container.volume)
if(REAGENTS_FREE_SPACE(container.reagents) <= 0)
to_chat(user, SPAN_WARNING("\The [container] is full."))
return TRUE

Expand All @@ -112,7 +112,7 @@
to_chat(user, SPAN_WARNING("\The [critter]'s udder is dry. Wait a little longer."))
return TRUE

if(container.reagents.total_volume >= container.volume)
if(REAGENTS_FREE_SPACE(container.reagents) <= 0)
to_chat(user, SPAN_NOTICE("\The [container] is full."))
return TRUE

Expand Down
4 changes: 2 additions & 2 deletions code/datums/music_tracks/_music_track.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
var/decl/license/license
var/song
var/url // Remember to include http:// or https:// or BYOND will be sad
var/volume = 70
var/music_volume = 70
abstract_type = /decl/music_track

/decl/music_track/Initialize()
Expand Down Expand Up @@ -34,7 +34,7 @@
to_chat(listener, url)

to_chat(listener, "<span class='good'>License: <a href='[license.url]'>[license.name]</a></span>")
sound_to(listener, sound(song, repeat = 1, wait = 0, volume = volume, channel = sound_channels.lobby_channel))
sound_to(listener, sound(song, repeat = 1, wait = 0, volume = music_volume, channel = sound_channels.lobby_channel))

// No VV editing anything about music tracks
/decl/music_track/VV_static()
Expand Down
Loading
Loading