Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into turbine_crimes
Browse files Browse the repository at this point in the history
  • Loading branch information
amylizzle committed Jan 24, 2025
2 parents bd472ba + 6c3e7d1 commit db028fe
Show file tree
Hide file tree
Showing 27 changed files with 287 additions and 141 deletions.
2 changes: 2 additions & 0 deletions _std/macros/atom_properties.dm
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,8 @@ To remove:
#define PROP_MOB_CANNOT_VOMIT(x) x("cannot_vomit", APPLY_ATOM_PROPERTY_SIMPLE, REMOVE_ATOM_PROPERTY_SIMPLE)
#define PROP_MOB_PRE_POSSESSION(x) x("pre_possession", APPLY_ATOM_PROPERTY_SIMPLE, REMOVE_ATOM_PROPERTY_SIMPLE)

#define PROP_HUMAN_DROP_BRAIN_ON_GIB(x) x("drop_brain_on_gib", APPLY_ATOM_PROPERTY_SIMPLE, REMOVE_ATOM_PROPERTY_SIMPLE)

/// Hides med/sec HUDs and name tags from the mob
#define PROP_MOB_HIDE_ICONS(x) x("hide_icons", APPLY_ATOM_PROPERTY_SIMPLE, REMOVE_ATOM_PROPERTY_SIMPLE, PROP_UPDATE_HIDE_ICONS)

Expand Down
2 changes: 1 addition & 1 deletion browserassets/tgui/tgui.bundle.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion browserassets/tgui/tgui.bundle.js

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions code/WorkInProgress/salvager/salvager.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
inventory_counter_enabled = 1
/// do we really actually for real want this to work in adventure zones?? just do this with varedit dont make children with this on
var/really_actually_bypass_z_restriction = FALSE
var/decon_time_mult = 1

New()
..()
Expand Down Expand Up @@ -114,6 +115,8 @@
if(user.traitHolder.hasTrait("carpenter") || user.traitHolder.hasTrait("training_engineer"))
. = round(. * 0.75)

. *= src.decon_time_mult

if(.)
. = max(., 2 SECONDS)
icon_state = "salvager-on"
Expand Down
5 changes: 4 additions & 1 deletion code/datums/limb.dm
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@
return
. = TRUE
current_shots--
if (pointblank)
if (pointblank && ismob(target))
src.shoot_pointblank(target, user)
else
src.shoot_range(target, user, params)
Expand Down Expand Up @@ -312,6 +312,9 @@
reload_time = 30 SECONDS
muzzle_flash = "muzzle_flash"

no_reload
reload_time = 0 SECONDS


cannon
proj = new /datum/projectile/bullet/cannon
Expand Down
2 changes: 1 addition & 1 deletion code/datums/mutantraces.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1752,7 +1752,7 @@ TYPEINFO(/datum/mutantrace/premature_clone)
human_compatible = 1
uses_human_clothes = 1
mutant_appearance_flags = (NOT_DIMORPHIC | HAS_HUMAN_SKINTONE | HAS_HUMAN_HAIR | HAS_HUMAN_EYES | HAS_NO_HEAD | USES_STATIC_ICON)
dna_mutagen_banned = FALSE
dna_mutagen_banned = TRUE


on_attach()
Expand Down
4 changes: 2 additions & 2 deletions code/mob/living/carbon/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2658,13 +2658,13 @@
processed += organHolder.brain
if (organHolder.head)
processed += organHolder.head
if (prob(40))
if (prob(40) || HAS_ATOM_PROPERTY(src, PROP_HUMAN_DROP_BRAIN_ON_GIB))
if (prob(15) && organHolder.head && organHolder.head.loc == src)
ret += organHolder.drop_organ("head", src)
else
if (organHolder.skull && organHolder.skull.loc == src)
ret += organHolder.skull
if (prob(15) && organHolder.brain && organHolder.brain.loc == src)
if ((prob(15) || HAS_ATOM_PROPERTY(src, PROP_HUMAN_DROP_BRAIN_ON_GIB)) && organHolder.brain && organHolder.brain.loc == src)
ret += organHolder.brain
if (organHolder.left_eye)
processed += organHolder.left_eye
Expand Down
5 changes: 4 additions & 1 deletion code/mob/living/critter/gunbot/engibot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
return 2

setup_equipment_slots()
return
equipment += new /datum/equipmentHolder/ears/intercom/syndicate(src)

/mob/living/critter/robotic/gunbot/engineerbot/strong // Midrounds
hand_count = 3
Expand Down Expand Up @@ -90,6 +90,7 @@
msgs.damage_type = DAMAGE_BURN
msgs.flush(SUPPRESS_LOGS)
user.lastattacked = target
attack_twitch(user)
ON_COOLDOWN(src, "limb_cooldown", 3 SECONDS)

/datum/targetable/critter/nano_repair
Expand Down Expand Up @@ -146,6 +147,7 @@
interrupt(INTERRUPT_ALWAYS)
return
var/sound = pick('sound/effects/elec_bzzz.ogg', 'sound/items/Welder.ogg', 'sound/items/mining_drill.ogg', 'sound/impact_sounds/Metal_Clang_1.ogg', 'sound/impact_sounds/Metal_Clang_3.ogg')
user.set_dir(get_dir(user, target))
attack_twitch(user)
playsound(user.loc, sound, 50, TRUE)

Expand All @@ -168,6 +170,7 @@
//Borrowing this, sorry Azrun!
/obj/item/salvager/gunbot
name = "deconstructor"
decon_time_mult = 0.5
use_power(watts)
return TRUE

Expand Down
4 changes: 3 additions & 1 deletion code/mob/living/critter/gunbot/medibot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
..()
APPLY_ATOM_PROPERTY(src, PROP_MOB_NIGHTVISION_WEAK, src)
abilityHolder.addAbility(/datum/targetable/critter/robofast)
APPLY_ATOM_PROPERTY(src, PROP_MOB_EXAMINE_HEALTH, src)
get_image_group(CLIENT_IMAGE_GROUP_HEALTH_MON_ICONS).add_mob(src)

setup_hands()
..()
Expand All @@ -37,7 +39,7 @@
return 2

setup_equipment_slots()
return
equipment += new /datum/equipmentHolder/ears/intercom/syndicate(src)

/mob/living/critter/robotic/gunbot/medibot/strong
hand_count = 3
Expand Down
2 changes: 1 addition & 1 deletion code/mob/living/critter/gunbot/meleebot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
return 2

setup_equipment_slots()
return
equipment += new /datum/equipmentHolder/ears/intercom/syndicate(src)

setStatus(statusId, duration, optional)
if (statusId == "slowed")
Expand Down
15 changes: 12 additions & 3 deletions code/mob/living/critter/gunbot/riotbot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,14 @@
werewolf_defense.handleCast(target)
return TRUE


get_melee_protection(zone, damage_type)
return 4

get_ranged_protection()
return 2

setup_equipment_slots()
return
equipment += new /datum/equipmentHolder/ears/intercom/syndicate(src)

/mob/living/critter/robotic/gunbot/riotbot/strong // Midrounds
hand_count = 3
Expand All @@ -67,7 +66,17 @@

setup_hands()
. = ..()
var/datum/handHolder/HH = hands[2]
var/datum/handHolder/HH = hands[1]
HH.limb = new /datum/limb/gun/kinetic/abg/no_reload
HH.name = "ABG Riot Suppression Appendage"
HH.icon = 'icons/mob/critter_ui.dmi'
HH.icon_state = "handabg"
HH.limb_name = "ABG Riot Suppression Appendage"
HH.can_hold_items = FALSE
HH.can_attack = TRUE
HH.can_range_attack = TRUE

HH = hands[2]
HH.limb = new /datum/limb/syndie_shield
HH.name = "Mod. 81 Alcor Shield"
HH.icon = 'icons/mob/critter_ui.dmi'
Expand Down
18 changes: 9 additions & 9 deletions code/mob/living/silicon/robot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2733,11 +2733,11 @@
if (part == "l_arm" || update_all)
if (src.part_arm_l && !src.automaton_skin && !src.alohamaton_skin && !src.metalman_skin)
if (src.part_arm_l.slot == "arm_both")
src.i_arm_l = image('icons/mob/robots.dmi', "arm-" + src.part_arm_l.appearanceString, layer=MOB_LIMB_LAYER)
src.i_hand_l = image('icons/mob/robots.dmi', "hand-" + src.part_arm_l.appearanceString, layer=MOB_HAND_LAYER1)
src.i_arm_l = image('icons/mob/robots.dmi', "arm-" + src.part_arm_l.appearanceString, layer=MOB_HAND_LAYER1)
src.i_hand_l = image('icons/mob/robots.dmi', "hand-" + src.part_arm_l.appearanceString, layer=MOB_HAND_LAYER2)
else
src.i_arm_l = image('icons/mob/robots.dmi', "l_arm-" + src.part_arm_l.appearanceString, layer=MOB_LIMB_LAYER)
src.i_hand_l = image('icons/mob/robots.dmi', "l_hand-" + src.part_arm_l.appearanceString, layer=MOB_HAND_LAYER1)
src.i_arm_l = image('icons/mob/robots.dmi', "l_arm-" + src.part_arm_l.appearanceString, layer=MOB_HAND_LAYER1)
src.i_hand_l = image('icons/mob/robots.dmi', "l_hand-" + src.part_arm_l.appearanceString, layer=MOB_HAND_LAYER2)
if (color_matrix)
src.internal_paint_part(src.i_arm_l, color_matrix)
src.internal_paint_part(src.i_hand_l, color_matrix)
Expand All @@ -2748,11 +2748,11 @@
if (part == "r_arm" || update_all)
if (src.part_arm_r && !src.automaton_skin && !src.alohamaton_skin && !src.metalman_skin)
if (src.part_arm_r.slot == "arm_both")
src.i_arm_r = image('icons/mob/robots.dmi', "arm-" + src.part_arm_r.appearanceString, layer=MOB_LIMB_LAYER)
src.i_hand_r = image('icons/mob/robots.dmi', "hand-" + src.part_arm_r.appearanceString, layer=MOB_HAND_LAYER1)
src.i_arm_r = image('icons/mob/robots.dmi', "arm-" + src.part_arm_r.appearanceString, layer=MOB_HAND_LAYER1)
src.i_hand_r = image('icons/mob/robots.dmi', "hand-" + src.part_arm_r.appearanceString, layer=MOB_HAND_LAYER2)
else
src.i_arm_r = image('icons/mob/robots.dmi', "r_arm-" + src.part_arm_r.appearanceString, layer=MOB_LIMB_LAYER)
src.i_hand_r = image('icons/mob/robots.dmi', "r_hand-" + src.part_arm_r.appearanceString, layer=MOB_HAND_LAYER1)
src.i_arm_r = image('icons/mob/robots.dmi', "r_arm-" + src.part_arm_r.appearanceString, layer=MOB_HAND_LAYER1)
src.i_hand_r = image('icons/mob/robots.dmi', "r_hand-" + src.part_arm_r.appearanceString, layer=MOB_HAND_LAYER2)
if (color_matrix)
src.internal_paint_part(src.i_arm_r, color_matrix)
src.internal_paint_part(src.i_hand_r, color_matrix)
Expand All @@ -2777,7 +2777,7 @@
src.i_head_decor = null

if (C.ches_mod && src.part_chest)
src.i_chest_decor = image('icons/mob/robots_decor.dmi', "body-" + C.ches_mod, layer=MOB_BODYDETAIL_LAYER2)
src.i_chest_decor = image('icons/mob/robots_decor.dmi', "body-" + C.ches_mod, layer=MOB_ARMOR_LAYER - 0.1) //layer just under outer suits
else
src.i_chest_decor = null

Expand Down
2 changes: 2 additions & 0 deletions code/modules/antagonists/wizard/abilities/phaseshift.dm
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,8 @@
if(owner)
owner.set_loc(src.loc)
owner = 0
for(var/atom/movable/AM in src)
AM.set_loc(src.loc)
//overlay_image = 0
if (use_cloakofdarkness)
processing_items.Remove(src)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/events/antagonist_critter_ghost_respawn.dm
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
) = 100,
list(new /datum/eventSpawnedCritter(
name = "gunbots",
critter_types = list(/mob/living/critter/robotic/gunbot/strong),
critter_types = list(/mob/living/critter/robotic/gunbot/strong, /mob/living/critter/robotic/gunbot/meleebot/strong),
drop_tables = list(
new /datum/event_item_drop_table(
potential_drop_items = list(/obj/item/property_setter/reinforce, /obj/item/property_setter/thermal, /obj/item/property_setter/speedy),
Expand Down
8 changes: 8 additions & 0 deletions code/modules/food_and_drink/plants.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ ABSTRACT_TYPE(/obj/item/reagent_containers/food/snacks/plant)
src.plantgenes = new /datum/plantgenes(src)
src.make_reagents()

clamp_act(mob/clamper, obj/item/clamp)
playsound(src.loc, 'sound/impact_sounds/Slimy_Splat_1.ogg', 100, 1)
if(src.reagents)
var/turf/T = get_turf(src)
T.fluid_react(src.reagents, src.reagents.total_volume, FALSE)
qdel(src)
return TRUE

HYPsetup_DNA(var/datum/plantgenes/passed_genes, var/obj/machinery/plantpot/harvested_plantpot, var/datum/plant/origin_plant, var/quality_status)
// If we've got a piece of fruit or veg that contains seeds. More often than
// not this is fruit but some veg do this too.
Expand Down
98 changes: 36 additions & 62 deletions code/modules/networks/computer3/sniffer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
var/filter_id = null
var/list/sniffFilters = list()
var/last_intercept = 0
var/list/packet_stamps = list()
var/list/packet_data = list()
var/max_logs = 8

Expand All @@ -22,12 +23,12 @@

attack_ai(mob/user as mob)
if(mode)
src.interacted(user)
src.ui_interact(user)
return

attack_hand(mob/user)
if(mode)
src.interacted(user)
src.ui_interact(user)
return

else
Expand Down Expand Up @@ -69,65 +70,37 @@
..()

attack_self(mob/user as mob)
return interacted(user)

proc/interacted(mob/user as mob)

var/dat = "<html><head><title>Packet Sniffer</title></head><body>"

dat += "Current sender filter: <a href='byond://?src=\ref[src];filtid=1'>[src.filter_id ? src.filter_id : "NONE"]</a><br>"

dat += "<hr><b>Packet log:</b><hr>"
if(packet_data.len)
for(var/a in packet_data)
dat += "<tt>[a]</tt><br>"
else
dat += "<b>NONE</b>"

dat += "<hr>"
user.Browse(dat,"window=packets")
onclose(user,"packets")
return

Topic(href, href_list)
..()

if (!issilicon(usr) && !isAIeye(usr))
if (!(src in usr.contents) && !(src.master in usr.contents) && !(istype(src.loc, /turf) && (BOUNDS_DIST(src, usr) == 0)))
return
if (usr.stat || usr.restrained())
return

src.add_fingerprint(usr)
src.add_dialog(usr)

if(href_list["filtid"])
var/t = input(usr, "Please enter new filter net id", src.name, src.filter_id) as text
if (!t)
src.filter_id = null
src.updateIntDialog()
return

if (!issilicon(usr) && !isAIeye(usr))//Only check range for organics
if (!in_interact_range(src, usr) || usr.stat || usr.restrained())
return

if(length(t) != 8 || !is_hex(t))
src.filter_id = null
src.updateIntDialog()
return

src.filter_id = t
src.updateIntDialog()

return
src.ui_interact(user)

ui_interact(mob/user, datum/tgui/ui)
ui = tgui_process.try_update_ui(user, src, ui)
if (!ui)
ui = new(user, src, "PacketSniffer")
ui.open()

ui_data(mob/user)
. = list(
"packet_stamps" = src.packet_stamps,
"packet_data" = src.packet_data,
"filter" = src.filter_id
)

ui_act(action, params)
. = ..()
if (.)
return
. = TRUE
switch (action)
if ("set_filter")
src.set_filter()

proc/set_filter()
var/filt_id = tgui_input_text(usr, "Please enter new 8 digit hex value filter net id", src.name, src.filter_id, 8)
if(length(filt_id) != 8 || !is_hex(filt_id))
src.filter_id = null
return

proc/updateIntDialog()
if(mode)
src.updateUsrDialog()
else
src.updateSelfDialog()
return
src.filter_id = filt_id

receive_signal(datum/signal/signal)
if(!mode || !src.link)
Expand All @@ -153,7 +126,8 @@
if(!src.last_intercept || src.last_intercept + 40 <= world.time)
playsound(src.loc, 'sound/machines/twobeep.ogg', 25, 1)
//src.packet_data = signal.data:Copy()
var/newdat = "<b>\[[time2text(world.timeofday,"mm:ss")]:[(world.timeofday%10)]\]:</b>"
src.packet_stamps += "\[[time2text(world.timeofday,"mm:ss")]:[(world.timeofday%10)]\]"
var/newdat
for (var/i in signal.data)
newdat += "[strip_html(i)][isnull(signal.data[i]) ? "; " : "=[strip_html(signal.data[i])]; "]"

Expand All @@ -163,7 +137,7 @@

src.packet_data += newdat
if (length(src.packet_data) > src.max_logs)
src.packet_stamps.Cut(1, 2)
src.packet_data.Cut(1,2)
src.last_intercept = world.time
src.updateIntDialog()
return
3 changes: 3 additions & 0 deletions code/modules/projectiles/projectile_parent.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,9 @@
var/immunity = check_target_immunity(A, source = src)
if (immunity)
log_shot(src, A, 1)
var/turf/sanctuary_check = get_turf(A)
if (sanctuary_check.is_sanctuary())
die()
A.visible_message(SPAN_ALERT("<b>The projectile narrowly misses [A]!</b>"))
//A.visible_message(SPAN_ALERT("<b>The projectile thuds into [A] uselessly!</b>"))
//die()
Expand Down
Loading

0 comments on commit db028fe

Please sign in to comment.