mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts: # .github/CODEOWNERS # .github/workflows/compile_changelogs.yml # .github/workflows/stale.yml # SQL/database_changelog.md # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/__DEFINES/atom_hud.dm # code/__DEFINES/inventory.dm # code/__DEFINES/mobs.dm # code/__DEFINES/species_clothing_paths.dm # code/__DEFINES/subsystems.dm # code/__DEFINES/surgery.dm # code/__HELPERS/global_lists.dm # code/_globalvars/lists/maintenance_loot.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/minor_mapping.dm # code/controllers/subsystem/processing/quirks.dm # code/controllers/subsystem/shuttle.dm # code/datums/components/palette.dm # code/datums/components/surgery_initiator.dm # code/datums/diseases/advance/advance.dm # code/datums/hud.dm # code/datums/mood.dm # code/datums/mutations/chameleon.dm # code/datums/quirks/negative_quirks/nyctophobia.dm # code/datums/status_effects/debuffs/debuffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/slime/slime_leech.dm # code/datums/weather/weather.dm # code/game/data_huds.dm # code/game/objects/items.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/frog_statue.dm # code/game/objects/items/rcd/RLD.dm # code/game/objects/items/robot/items/hypo.dm # code/game/objects/items/stacks/medical.dm # code/game/objects/items/stacks/wrap.dm # code/game/objects/items/storage/garment.dm # code/game/objects/items/tools/medical/defib.dm # code/game/objects/items/weaponry.dm # code/game/objects/items/weaponry/melee/misc.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/game/objects/structures/curtains.dm # code/game/objects/structures/dresser.dm # code/game/objects/structures/girders.dm # code/game/objects/structures/maintenance.dm # code/game/objects/structures/mirror.dm # code/modules/admin/greyscale_modify_menu.dm # code/modules/admin/verbs/light_debug.dm # code/modules/antagonists/ashwalker/ashwalker.dm # code/modules/antagonists/heretic/knowledge/starting_lore.dm # code/modules/antagonists/ninja/ninjaDrainAct.dm # code/modules/art/paintings.dm # code/modules/client/preferences.dm # code/modules/client/verbs/ooc.dm # code/modules/clothing/head/wig.dm # code/modules/events/disease_outbreak.dm # code/modules/holodeck/holo_effect.dm # code/modules/jobs/job_types/head_of_security.dm # code/modules/jobs/job_types/security_officer.dm # code/modules/library/skill_learning/generic_skillchips/point.dm # code/modules/mining/lavaland/ash_flora.dm # code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/basic/guardian/guardian.dm # code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm # code/modules/mob/living/carbon/carbon.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/human_defines.dm # code/modules/mob/living/carbon/life.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/mob.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mod/mod_control.dm # code/modules/mod/modules/modules_general.dm # code/modules/modular_computers/computers/item/computer_ui.dm # code/modules/paperwork/paper.dm # code/modules/paperwork/paperbin.dm # code/modules/power/lighting/light.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/projectiles/projectile.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/food_reagents.dm # code/modules/reagents/chemistry/reagents/other_reagents.dm # code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm # code/modules/research/xenobiology/crossbreeding/_clothing.dm # code/modules/research/xenobiology/crossbreeding/prismatic.dm # code/modules/surgery/advanced/brainwashing.dm # code/modules/surgery/advanced/lobotomy.dm # code/modules/surgery/amputation.dm # code/modules/surgery/blood_filter.dm # code/modules/surgery/bodyparts/_bodyparts.dm # code/modules/surgery/brain_surgery.dm # code/modules/surgery/cavity_implant.dm # code/modules/surgery/coronary_bypass.dm # code/modules/surgery/gastrectomy.dm # code/modules/surgery/healing.dm # code/modules/surgery/limb_augmentation.dm # code/modules/surgery/organ_manipulation.dm # code/modules/surgery/revival.dm # code/modules/surgery/sleeper_protocol.dm # code/modules/surgery/surgery_helpers.dm # code/modules/surgery/surgery_step.dm # code/modules/unit_tests/_unit_tests.dm # code/modules/unit_tests/designs.dm # code/modules/unit_tests/icon_state_worn.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png # code/modules/unit_tests/screenshots/screenshot_husk_body.png # code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png # icons/map_icons/clothing/head/_head.dmi # icons/map_icons/clothing/shoes.dmi # icons/map_icons/items/_item.dmi # icons/mob/huds/hud.dmi # icons/mob/inhands/64x64_lefthand.dmi # icons/mob/inhands/64x64_righthand.dmi # icons/obj/machines/computer.dmi # tgui/packages/tgui/interfaces/OperatingComputer.jsx # tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx # tgui/packages/tgui/interfaces/PreferencesMenu/types.ts # tgui/packages/tgui/interfaces/SurgeryInitiator.tsx # tools/icon_cutter/check.py
This commit is contained in:
@@ -89,45 +89,39 @@
|
||||
desc = "A bubbling pool of oil. This would probably be valuable, had bluespace technology not destroyed the need for fossil fuels 200 years ago."
|
||||
icon = 'icons/obj/watercloset.dmi'
|
||||
icon_state = "puddle-oil"
|
||||
capacity = 20
|
||||
dispensedreagent = /datum/reagent/fuel/oil
|
||||
pixel_shift = 0
|
||||
|
||||
/obj/structure/sink/oil_well/Initialize(mapload)
|
||||
.=..()
|
||||
create_reagents(20)
|
||||
reagents.add_reagent(dispensedreagent, 20)
|
||||
. = ..()
|
||||
//I'm pretty much aware that, because how oil wells and sinks work, attackby() won't work unless in combat mode.
|
||||
//Thankfully, the user can cast the line from a distance.
|
||||
AddComponent(/datum/component/fishing_spot, /datum/fish_source/oil_well)
|
||||
|
||||
/obj/structure/sink/oil_well/find_and_mount_on_atom(mark_for_late_init, late_init)
|
||||
///Oil wells exist indepent of any wall structure
|
||||
return FALSE
|
||||
|
||||
/obj/structure/sink/oil_well/attack_hand(mob/user, list/modifiers)
|
||||
flick("puddle-oil-splash",src)
|
||||
reagents.expose(user, TOUCH, 20) //Covers target in 20u of oil.
|
||||
to_chat(user, span_notice("You touch the pool of oil, only to get oil all over yourself. It would be wise to wash this off with water."))
|
||||
|
||||
/obj/structure/sink/oil_well/attackby(obj/item/O, mob/living/user, list/modifiers, list/attack_modifiers)
|
||||
flick("puddle-oil-splash",src)
|
||||
if(O.tool_behaviour == TOOL_SHOVEL) //attempt to deconstruct the puddle with a shovel
|
||||
to_chat(user, "You fill in the oil well with soil.")
|
||||
O.play_tool_sound(src)
|
||||
deconstruct()
|
||||
return 1
|
||||
if(is_reagent_container(O)) //Refilling bottles with oil
|
||||
var/obj/item/reagent_containers/RG = O
|
||||
if(RG.is_refillable())
|
||||
if(!RG.reagents.holder_full())
|
||||
RG.reagents.add_reagent(dispensedreagent, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this))
|
||||
to_chat(user, span_notice("You fill [RG] from [src]."))
|
||||
return TRUE
|
||||
to_chat(user, span_notice("\The [RG] is full."))
|
||||
return FALSE
|
||||
if(!user.combat_mode)
|
||||
to_chat(user, span_notice("You won't have any luck getting \the [O] out if you drop it in the oil."))
|
||||
return 1
|
||||
else
|
||||
return ..()
|
||||
/obj/structure/sink/oil_well/wrench_act(mob/living/user, obj/item/tool)
|
||||
//we deconstruct with a shovel
|
||||
return NONE
|
||||
|
||||
/obj/structure/sink/oil_well/drop_materials()
|
||||
/obj/structure/sink/oil_well/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
||||
flick("puddle-oil-splash",src)
|
||||
if(tool.tool_behaviour == TOOL_SHOVEL) //attempt to deconstruct the puddle with a shovel
|
||||
to_chat(user, "You fill in the oil well with soil.")
|
||||
tool.play_tool_sound(src)
|
||||
deconstruct(TRUE)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/structure/sink/oil_well/atom_deconstruct(dissambled = TRUE)
|
||||
new /obj/effect/decal/cleanable/blood/oil(loc)
|
||||
|
||||
//***Grave mounds.
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
|
||||
/obj/structure/puzzle_element
|
||||
name = "mysterious pillar"
|
||||
desc = "puzzling..."
|
||||
desc = "Puzzling..."
|
||||
icon = 'icons/obj/mining_zones/artefacts.dmi'
|
||||
icon_state = "puzzle_pillar"
|
||||
anchored = FALSE
|
||||
@@ -315,7 +315,7 @@
|
||||
return
|
||||
|
||||
/obj/item/prisoncube
|
||||
name = "Prison Cube"
|
||||
name = "prison cube"
|
||||
desc = "Dusty cube with humanoid imprint on it."
|
||||
icon = 'icons/obj/mining_zones/artefacts.dmi'
|
||||
icon_state = "prison_cube"
|
||||
|
||||
@@ -165,6 +165,8 @@
|
||||
|
||||
/obj/effect/watcher_orbiter/Initialize(mapload)
|
||||
. = ..()
|
||||
if(LAZYLEN(target_faction))
|
||||
target_faction = string_list(target_faction)
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
// Shuttle rotation fucks with our position, we just want to stick with our guy
|
||||
@@ -182,7 +184,7 @@
|
||||
for (var/mob/living/potential_target in oview(5, src))
|
||||
if (!ismining(potential_target) || potential_target.stat == DEAD)
|
||||
continue
|
||||
if (!faction_check(target_faction, potential_target.faction))
|
||||
if (!potential_target.has_faction(target_faction))
|
||||
continue
|
||||
shoot_at(potential_target)
|
||||
return
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
desc = "State of the art machinery for general overwatch purposes."
|
||||
upperinfo = "Bravo Overwatch Console"
|
||||
icon_screen = "explosive"
|
||||
content = list("<B>Operator:</B> Cas Ashpole <BR> <BR> <B><center>Squad Overwatch:</B> Cas Ashpole <BR> <BR> <b>Squad Leader Deployed</b> <BR> <b>Squad Smartgunners:</b> 1 Deployed <BR> <b>Squad Corpsmen:</b> 1 Deployed <BR> <b>Squad Engineers:</b> 2 Deployed <BR> <b>Squad Marines:</b> 4 Deployed <BR> <b>Total:</b> 9 Deployed <BR> <b>Marines Alive:</b> 0 <BR> <BR> <table> <tr> <th>Name</th> <th>Role</th> <th>State</th> <th>Location</th> <th>SL Distance</th> </tr> <tr> <td>Chip Mello</td> <td>Squad Leader</td> <td>Dead</td> <td>Self-Destruct Core Room</td> <td> N/A </td> </tr> <tr> <td>Sophie Knight</td> <td>Squad Smartgunner</td> <td>Dead</td> <td>Self-Destruct Core Room</td> <td>4</td> </tr> <tr> <td>Marie Newman</td> <td>Squad Corpsman</td> <td>Dead</td> <td>Unknown</td> <td> N/A </td> </tr> <tr> <td>Angelo Patton</td> <td>Squad Engineer</td> <td>Dead</td> <td>Sulaco Maintenence</td> <td>19</td> </tr> <tr> <td>Marlon Foster</td> <td>Squad Engineer</td> <td>Dead</td> <td>Sulaco Dropship Hangar</td> <td>28</td> </tr> <tr> <td>Doug Davidson</td> <td>Squad Marine</td> <td>Dead</td> <td>Sulaco Hangar Workshop</td> <td>33</td> </tr> <tr> <td>Courtney Miller</td> <td>Squad Marine</td> <td>Dead</td> <td>Sulaco Hangar Workshop</td> <td>42</td> </tr> <tr> <td>Cesar Jefferson</td> <td>Squad Marine</td> <td>Dead</td> <td>Self-Destruct Core Room</td> <td>14</td> </tr> </table> <BR> <b>Primary Objective:</b> Defend the self-destruct core. <BR> <b>Secondary Objective:</b> Give them hell!</center>")
|
||||
content = list("<B>Operator:</B> Cas Ashpole <BR> <BR> <B><center>Squad Overwatch:</B> Cas Ashpole <BR> <BR> <b>Squad Leader Deployed</b> <BR> <b>Squad Smartgunners:</b> 1 Deployed <BR> <b>Squad Corpsmen:</b> 1 Deployed <BR> <b>Squad Engineers:</b> 2 Deployed <BR> <b>Squad Marines:</b> 4 Deployed <BR> <b>Total:</b> 9 Deployed <BR> <b>Marines Alive:</b> 0 <BR> <BR> <table> <tr> <th>Name</th> <th>Role</th> <th>State</th> <th>Location</th> <th>SL Distance</th> </tr> <tr> <td>Chip Mello</td> <td>Squad Leader</td> <td>Dead</td> <td>Self-Destruct Core Room</td> <td> N/A </td> </tr> <tr> <td>Sophie Knight</td> <td>Squad Smartgunner</td> <td>Dead</td> <td>Self-Destruct Core Room</td> <td>4</td> </tr> <tr> <td>Marie Newman</td> <td>Squad Corpsman</td> <td>Dead</td> <td>Unknown</td> <td> N/A </td> </tr> <tr> <td>Angelo Patton</td> <td>Squad Engineer</td> <td>Dead</td> <td>Sulaco Maintenance</td> <td>19</td> </tr> <tr> <td>Marlon Foster</td> <td>Squad Engineer</td> <td>Dead</td> <td>Sulaco Dropship Hangar</td> <td>28</td> </tr> <tr> <td>Doug Davidson</td> <td>Squad Marine</td> <td>Dead</td> <td>Sulaco Hangar Workshop</td> <td>33</td> </tr> <tr> <td>Courtney Miller</td> <td>Squad Marine</td> <td>Dead</td> <td>Sulaco Hangar Workshop</td> <td>42</td> </tr> <tr> <td>Cesar Jefferson</td> <td>Squad Marine</td> <td>Dead</td> <td>Self-Destruct Core Room</td> <td>14</td> </tr> </table> <BR> <b>Primary Objective:</b> Defend the self-destruct core. <BR> <b>Secondary Objective:</b> Give them hell!</center>")
|
||||
|
||||
/obj/machinery/computer/terminal/sulaco/overwatch/main
|
||||
name = "main overwatch console"
|
||||
|
||||
@@ -78,7 +78,12 @@ GLOBAL_VAR_INIT(fscpassword, generate_password())
|
||||
/obj/item/disk/surgery/forgottenship
|
||||
name = "Advanced Surgery Disk"
|
||||
desc = "A disk that contains advanced surgery procedures, must be loaded into an Operating Console."
|
||||
surgeries = list(/datum/surgery/advanced/lobotomy, /datum/surgery/advanced/bioware/vein_threading, /datum/surgery/advanced/bioware/nerve_splicing)
|
||||
surgeries = list(
|
||||
/datum/surgery_operation/organ/lobotomy,
|
||||
/datum/surgery_operation/organ/lobotomy/mechanic,
|
||||
/datum/surgery_operation/limb/bioware/vein_threading,
|
||||
/datum/surgery_operation/limb/bioware/nerve_splicing,
|
||||
)
|
||||
|
||||
/obj/structure/fluff/empty_sleeper/syndicate/captain
|
||||
icon_state = "sleeper_s-open"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/obj/machinery/rnd/server/oldstation/add_context(atom/source, list/context, obj/item/held_item, mob/user)
|
||||
. = ..()
|
||||
|
||||
if(held_item && istype(held_item, /obj/item/research_notes))
|
||||
if(istype(held_item, /obj/item/research_notes))
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Generate research points"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
@@ -23,16 +23,17 @@
|
||||
|
||||
. += span_notice("Insert [EXAMINE_HINT("Research Notes")] to generate points.")
|
||||
|
||||
/obj/machinery/rnd/server/oldstation/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers)
|
||||
if(istype(attacking_item, /obj/item/research_notes) && stored_research)
|
||||
var/obj/item/research_notes/research_notes = attacking_item
|
||||
/obj/machinery/rnd/server/oldstation/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
||||
if(istype(tool, /obj/item/research_notes) && stored_research)
|
||||
var/obj/item/research_notes/research_notes = tool
|
||||
stored_research.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = research_notes.value))
|
||||
playsound(src, 'sound/machines/copier.ogg', 50, TRUE)
|
||||
qdel(research_notes)
|
||||
return
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
return ..()
|
||||
|
||||
///Ancient computer that starts with dissection to tell players they have it.
|
||||
/obj/machinery/computer/operating/oldstation
|
||||
name = "ancient operating computer"
|
||||
advanced_surgeries = list(/datum/surgery/advanced/experimental_dissection)
|
||||
advanced_surgeries = list(/datum/surgery_operation/basic/dissection)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
/obj/item/paper/pamphlet/ruin/originalcontent/pennywise
|
||||
name = "Painting - 'Pennywise'"
|
||||
default_raw_text = "<i>This picture depicts a smiling clown. Something doesn't feel right about this..</i>"
|
||||
default_raw_text = "<i>This picture depicts a smiling clown. Something doesn't feel right about this...</i>"
|
||||
icon_state = "painting3"
|
||||
|
||||
/obj/item/paper/pamphlet/ruin/originalcontent/yelling
|
||||
|
||||
Reference in New Issue
Block a user