Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions code/__DEFINES/dcs/signals/signals_heretic.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/// Heretic signals

/// From /obj/item/melee/touch_attack/mansus_fist/on_mob_hit : (mob/living/source, mob/living/target)
#define COMSIG_HERETIC_MANSUS_GRASP_ATTACK "mansus_grasp_attack"
/// Default behavior is to use the hand, so return this to blocks the mansus fist from being consumed after use.
#define COMPONENT_BLOCK_HAND_USE (1<<0)
/// From /obj/item/melee/touch_attack/mansus_fist/afterattack_secondary : (mob/living/source, atom/target)
#define COMSIG_HERETIC_MANSUS_GRASP_ATTACK_SECONDARY "mansus_grasp_attack_secondary"
/// Default behavior is to continue attack chain and do nothing else, so return this to use up the hand after use.
#define COMPONENT_USE_HAND (1<<0)

/// From /obj/item/melee/sickly_blade/afterattack (with proximity) : (mob/living/source, mob/living/target)
#define COMSIG_HERETIC_BLADE_ATTACK "blade_attack"
/// From /obj/item/melee/sickly_blade/afterattack (without proximity) : (mob/living/source, mob/living/target)
#define COMSIG_HERETIC_RANGED_BLADE_ATTACK "ranged_blade_attack"
6 changes: 3 additions & 3 deletions code/__DEFINES/hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@
//Middle right (status indicators)
#define ui_healthdoll "EAST-1:28,CENTER-2:13"
#define ui_health "EAST-1:28,CENTER-1:15"
#define ui_internal "EAST-1:28,CENTER:17"
#define ui_mood "EAST-1:28,CENTER-4:10"
#define ui_internal "EAST-1:28,CENTER+1:17"
#define ui_mood "EAST-1:28,CENTER:17"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moves mood up since we cleaned space

#define ui_stamina "EAST-1:28,CENTER-3:10"

//living
Expand Down Expand Up @@ -208,7 +208,7 @@

//Ghosts

#define ui_ghost_jumptomob "SOUTH:6,CENTER-3:24"
#define ui_ghost_jump_to_mob "SOUTH:6,CENTER-3:24"
#define ui_ghost_orbit "SOUTH:6,CENTER-2:24"
#define ui_ghost_reenter_corpse "SOUTH:6,CENTER-1:24"
#define ui_ghost_teleport "SOUTH:6,CENTER:24"
Expand Down
26 changes: 22 additions & 4 deletions code/__byond_version_compat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,37 @@
#define LIBCALL call_ext
#endif

// So we want to have compile time guarantees these procs exist on local type, unfortunately 515 killed the .proc/procname syntax so we have to use nameof()
// So we want to have compile time guarantees these methods exist on local type, unfortunately 515 killed the .proc/procname and .verb/verbname syntax so we have to use nameof()
// For the record: GLOBAL_VERB_REF would be useless as verbs can't be global.

#if DM_VERSION < 515

/// Call by name proc reference, checks if the proc exists on this type or as a global proc
#define PROC_REF(X) (.proc/##X)
/// Call by name verb references, checks if the verb exists on either this type or as a global verb.
#define VERB_REF(X) (.verb/##X)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

needed for 515 but wasn't ported before


/// Call by name proc reference, checks if the proc exists on given type or as a global proc
#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X)
/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb
#define TYPE_VERB_REF(TYPE, X) (##TYPE.verb/##X)

/// Call by name proc reference, checks if the proc is existing global proc
#define GLOBAL_PROC_REF(X) (/proc/##X)

#else
/// Call by name proc reference, checks if the proc exists on this type or as a global proc

/// Call by name proc references, checks if the proc exists on either this type or as a global proc.
#define PROC_REF(X) (nameof(.proc/##X))
/// Call by name proc reference, checks if the proc exists on given type or as a global proc
/// Call by name verb references, checks if the verb exists on either this type or as a global verb.
#define VERB_REF(X) (nameof(.verb/##X))

/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc
#define TYPE_PROC_REF(TYPE, X) (nameof(##TYPE.proc/##X))
/// Call by name proc reference, checks if the proc is existing global proc
/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb
#define TYPE_VERB_REF(TYPE, X) (nameof(##TYPE.verb/##X))

/// Call by name proc reference, checks if the proc is an existing global proc
#define GLOBAL_PROC_REF(X) (/proc/##X)

#endif
12 changes: 6 additions & 6 deletions code/_onclick/hud/ghost.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
/atom/movable/screen/ghost/MouseEntered()
flick(icon_state + "_anim", src)

/atom/movable/screen/ghost/jumptomob
/atom/movable/screen/ghost/jump_to_mob
name = "Jump to mob"
icon_state = "jumptomob"
icon_state = "jump_to_mob"

/atom/movable/screen/ghost/jumptomob/Click()
/atom/movable/screen/ghost/jump_to_mob/Click()
var/mob/dead/observer/G = usr
G.jumptomob()
G.jump_to_mob()

/atom/movable/screen/ghost/orbit
name = "Orbit"
Expand Down Expand Up @@ -48,8 +48,8 @@
..()
var/atom/movable/screen/using

using = new /atom/movable/screen/ghost/jumptomob()
using.screen_loc = ui_ghost_jumptomob
using = new /atom/movable/screen/ghost/jump_to_mob()
using.screen_loc = ui_ghost_jump_to_mob
static_inventory += using

using = new /atom/movable/screen/ghost/orbit()
Expand Down
2 changes: 0 additions & 2 deletions code/_onclick/hud/hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list(

var/atom/movable/screen/healths
var/atom/movable/screen/healthdoll
var/atom/movable/screen/internals
var/atom/movable/screen/stamina

// subtypes can override this to force a specific UI style
Expand Down Expand Up @@ -115,7 +114,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
healths = null
stamina = null
healthdoll = null
internals = null
devilsouldisplay = null
blobpwrdisplay = null
alien_plasma_display = null
Expand Down
3 changes: 0 additions & 3 deletions code/_onclick/hud/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -276,9 +276,6 @@
rest_icon.screen_loc = ui_above_movement
static_inventory += rest_icon

internals = new /atom/movable/screen/internals()
infodisplay += internals

healths = new /atom/movable/screen/healths()
infodisplay += healths

Expand Down
3 changes: 0 additions & 3 deletions code/_onclick/hud/monkey.dm
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,6 @@
throw_icon.screen_loc = ui_drop_throw
hotkeybuttons += throw_icon

internals = new /atom/movable/screen/internals()
infodisplay += internals

healths = new /atom/movable/screen/healths()
infodisplay += healths

Expand Down
53 changes: 0 additions & 53 deletions code/_onclick/hud/screen_objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -324,59 +324,6 @@
icon = 'icons/mob/screen_cyborg.dmi'
screen_loc = ui_borg_intents

/atom/movable/screen/internals
name = "toggle internals"
icon_state = "internal0"
screen_loc = ui_internal

/atom/movable/screen/internals/Click()
if(!iscarbon(usr))
return

var/mob/living/carbon/C = usr
if(C.incapacitated())
return

if(C.internal)
C.close_internals()
to_chat(C, span_notice("You are no longer running on internals."))
icon_state = "internal0"
else
if (!C.can_breathe_internals())
to_chat(C, span_warning("You are not wearing a suitable internals mask!"))
return

var/obj/item/I = C.is_holding_item_of_type(/obj/item/tank)
if(I)
to_chat(C, span_notice("You are now running on internals from [I] in your [C.get_held_index_name(C.get_held_index_of_item(I))]."))
C.open_internals(I)
else if(ishuman(C))
var/mob/living/carbon/human/H = C
if(istype(H.s_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.s_store] on your [H.wear_suit.name]."))
H.open_internals(H.s_store)
else if(istype(H.belt, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.belt] on your belt."))
H.open_internals(H.belt)
else if(istype(H.l_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.l_store] in your left pocket."))
H.open_internals(H.l_store)
else if(istype(H.r_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.r_store] in your right pocket."))
H.open_internals(H.r_store)

//Separate so CO2 jetpacks are a little less cumbersome.
if(!C.internal && istype(C.back, /obj/item/tank))
to_chat(C, span_notice("You are now running on internals from [C.back] on your back."))
C.open_internals(C.back)

if(C.internal)
icon_state = "internal1"
else
to_chat(C, span_warning("You don't have a suitable tank!"))
return
C.update_mob_action_buttons()

/atom/movable/screen/mov_intent
name = "run/walk toggle"
icon = 'icons/mob/screen_midnight.dmi'
Expand Down
2 changes: 1 addition & 1 deletion code/datums/actions/action.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(clear_ref), override = TRUE)

if(isatom(target))
RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, PROC_REF(update_status_on_signal))
RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, PROC_REF(on_target_icon_update))

if(istype(target, /datum/mind))
RegisterSignal(target, COMSIG_MIND_TRANSFERRED, PROC_REF(on_target_mind_swapped))
Expand Down
13 changes: 0 additions & 13 deletions code/datums/actions/items/clockcult.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,6 @@
return FALSE
return ..()

/datum/action/item_action/clock/toggle_visor
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove this in favor of the cooldown one

name = "Create Judicial Marker"
desc = "Allows you to create a stunning Judicial Marker at any location in view. Click again to disable."

/datum/action/item_action/clock/toggle_visor/IsAvailable(feedback = FALSE)
if(!is_servant_of_ratvar(owner))
return FALSE
if(istype(target, /obj/item/clothing/glasses/judicial_visor))
var/obj/item/clothing/glasses/judicial_visor/visor = target
if(visor.recharging)
return FALSE
return ..()

/datum/action/item_action/clock/hierophant
name = "Hierophant Network"
desc = "Lets you discreetly talk with all other servants. Nearby listeners can hear you whispering, so make sure to do this privately."
Expand Down
2 changes: 2 additions & 0 deletions code/datums/components/nanites.dm
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,13 @@
var/icon/I = icon(host_mob.icon, host_mob.icon_state, host_mob.dir)
holder.pixel_y = I.Height() - world.icon_size
holder.icon_state = null
host_mob.set_hud_image_inactive(DIAG_NANITE_FULL_HUD)
if(remove || stealth)
return //bye icon
var/nanite_percent = (nanite_volume / max_nanites) * 100
nanite_percent = clamp(CEILING(nanite_percent, 10), 10, 100)
holder.icon_state = "nanites[nanite_percent]"
host_mob.set_hud_image_active(DIAG_NANITE_FULL_HUD)

/datum/component/nanites/proc/on_emp(datum/source, severity)
var/datum/component/empprotection/empproof = host_mob.GetExactComponent(/datum/component/empprotection)
Expand Down
1 change: 1 addition & 0 deletions code/datums/mutations/cold.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
name = "Cryobeam"
desc = "This power fires a frozen bolt at a target."
button_icon_state = "icebeam"
active_icon_state = "icebeam_active"
base_icon_state = "icebeam"
active_overlay_icon_state = "bg_spell_border_active_blue"
cooldown_time = 16 SECONDS
Expand Down
2 changes: 1 addition & 1 deletion code/datums/mutations/fire_breath.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
/datum/action/cooldown/spell/cone/staggered/fire_breath
name = "Fire Breath"
desc = "You breathe a cone of fire directly in front of you."
button_icon_state = "fireball0"
button_icon_state = "fireball"
sound = 'sound/magic/demon_dies.ogg' //horrifying lizard noises

school = SCHOOL_EVOCATION
Expand Down
1 change: 0 additions & 1 deletion code/game/atoms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1390,7 +1390,6 @@
* Override this if you want custom behaviour in whatever gets hit by the rust
*/
/atom/proc/rust_heretic_act()
return

/**
* Used to set something as 'open' if it's being used as a supplypod
Expand Down
9 changes: 5 additions & 4 deletions code/game/data_huds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
/datum/atom_hud/data

/datum/atom_hud/data/human/medical
hud_icons = list(STATUS_HUD, HEALTH_HUD)
hud_icons = list(STATUS_HUD, HEALTH_HUD, NANITE_HUD)

/datum/atom_hud/data/human/medical/basic

Expand Down Expand Up @@ -55,10 +55,10 @@
/datum/atom_hud/data/diagnostic

/datum/atom_hud/data/diagnostic/basic
hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_LAUNCHPAD_HUD)
hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_LAUNCHPAD_HUD, DIAG_NANITE_FULL_HUD)

/datum/atom_hud/data/diagnostic/advanced
hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_LAUNCHPAD_HUD, DIAG_PATH_HUD)
hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_LAUNCHPAD_HUD, DIAG_PATH_HUD, DIAG_NANITE_FULL_HUD)

/datum/atom_hud/data/bot_path
// This hud exists so the bot can see itself, that's all
Expand Down Expand Up @@ -248,7 +248,6 @@ Security HUDs! Basic mode shows only the job.
set_hud_image_inactive(WANTED_HUD)
return


var/datum/data/record/target = find_record("name", perp_name, GLOB.data_core.security)
if(!target || target.fields["criminal"] == WANTED_NONE)
holder.icon_state = null
Expand Down Expand Up @@ -278,8 +277,10 @@ Diagnostic HUDs!
var/icon/I = icon(icon, icon_state, dir)
holder.pixel_y = I.Height() - world.icon_size
holder.icon_state = null
set_hud_image_inactive(NANITE_HUD)
if(src in SSnanites.nanite_monitored_mobs)
holder.icon_state = "nanite_ping"
set_hud_image_active(NANITE_HUD)

//For Diag health and cell bars!
/proc/RoundDiagBar(value)
Expand Down
1 change: 1 addition & 0 deletions code/game/machinery/computer/camera_advanced.dm
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,7 @@
if(QDELETED(target) || !(ishuman(owner) || iscyborg(owner)) || !owner.canUseTopic(target))
return
if(!GLOB.servants_active) //No leaving unless there's servants from the get-go
to_chat(owner, "[span_sevtug_small("The Ark doesn't let you leave!")]")
return
if(warping)
cancel = TRUE
Expand Down
2 changes: 1 addition & 1 deletion code/modules/admin/admin_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ GLOBAL_PROTECT(admin_verbs_admin)
// /client/proc/sendmob, /*sends a mob somewhere*/ -Removed due to it needing two sorting procs to work, which were executed every time an admin right-clicked. ~Errorage
/client/proc/jumptoarea,
/client/proc/jumptokey, /*allows us to jump to the location of a mob with a certain ckey*/
/client/proc/jumptomob, /*allows us to jump to a specific mob*/
/client/proc/jump_to_mob, /*allows us to jump to a specific mob*/
/client/proc/jumptoturf, /*allows us to jump to a specific turf*/
/client/proc/admin_call_shuttle, /*allows us to call the emergency shuttle*/
/client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcom*/
Expand Down
2 changes: 1 addition & 1 deletion code/modules/admin/topic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1457,7 +1457,7 @@
return

var/mob/M = locate(href_list["jumpto"])
usr.client.jumptomob(M)
usr.client.jump_to_mob(M)

else if(href_list["getmob"])
if(!check_rights(R_ADMIN))
Expand Down
2 changes: 1 addition & 1 deletion code/modules/admin/verbs/adminjump.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return

/client/proc/jumptomob(mob/M in GLOB.mob_list)
/client/proc/jump_to_mob(mob/M in GLOB.mob_list)
set category = "Admin"
set name = "Jump to Mob"

Expand Down
5 changes: 1 addition & 4 deletions code/modules/antagonists/bloodsuckers/bloodsucker_flaws.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
/datum/antagonist/bloodsucker/proc/assign_clan_and_bane(tzimisce = FALSE)
if(tzimisce)
my_clan = new /datum/bloodsucker_clan/tzimisce(owner.current)
return
/datum/antagonist/bloodsucker/proc/assign_clan_and_bane()
if(my_clan)
return
var/list/options = list()
Expand Down
18 changes: 10 additions & 8 deletions code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,6 @@
/datum/action/innate/slab/IsAvailable(feedback = FALSE)
return TRUE

/datum/action/innate/slab/unset_ranged_ability(mob/living/on_who)
. = ..()
finished = TRUE
QDEL_IN(src, 1 SECONDS)

/datum/action/innate/slab/InterceptClickOn(mob/living/caller, params, atom/clicked_on)
if(in_progress)
return FALSE
Expand All @@ -26,8 +21,15 @@
return FALSE

. = ..()
if(.)
unset_ranged_ability(caller || usr)
if(!.)
return FALSE
var/mob/living/i_hate_this = caller || owner || usr
i_hate_this?.client?.mouse_override_icon = initial(caller?.client?.mouse_override_icon)
i_hate_this?.update_mouse_pointer()
i_hate_this?.click_intercept = null
finished = TRUE
QDEL_IN(src, 0.1 SECONDS)
return TRUE

//For the Hateful Manacles scripture; applies replicant handcuffs to the clicked_on.
/datum/action/innate/slab/hateful_manacles
Expand Down Expand Up @@ -242,7 +244,7 @@

//For the cyborg Judicial Marker scripture, places a judicial marker
/datum/action/innate/slab/judicial
ranged_mousepointer = 'icons/effects/visor_reticule.dmi'
ranged_mousepointer = 'icons/effects/mouse_pointers/visor_reticule.dmi'

/datum/action/innate/slab/judicial/do_ability(mob/living/caller, params, atom/clicked_on)
var/turf/T = caller.loc
Expand Down
Loading