Skip to content

Commit

Permalink
Changes Gamemode Flags (#7778)
Browse files Browse the repository at this point in the history
# About the pull request
Changes the gamemode flags to datums, and updates the admin UI for it
Also replaced the No OB flag since i have never seen anyone use it
before

# Explain why it's good for the game
Better UI, will stop people from accidentally clicking it, and actually
explains what it does

# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>

</details>


# Changelog
:cl:
code: Changed gamemode flags to datums
admin: Changed gamemode flags from many buttons to one UI
/:cl:
  • Loading branch information
BeagleGaming1 authored Dec 11, 2024
1 parent d38675b commit b9a113c
Show file tree
Hide file tree
Showing 40 changed files with 309 additions and 371 deletions.
23 changes: 2 additions & 21 deletions code/__DEFINES/mode.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
#define IS_MODE_COMPILED(MODE) (ispath(text2path("/datum/game_mode/"+(MODE))))

#define MODE_HAS_FLAG(flag) (SSticker.mode.flags_round_type & flag)
#define MODE_HAS_TOGGLEABLE_FLAG(flag) (SSticker.mode.toggleable_flags & flag)
#define MODE_HAS_MODIFIER(modifier_type) (SSticker.mode?.get_gamemode_modifier(modifier_type))
#define MODE_SET_MODIFIER(modifier_type, enabled) (SSticker.mode?.set_gamemode_modifier(modifier_type, enabled))

// Gamemode Flags
#define MODE_INFESTATION (1<<0)
Expand All @@ -59,26 +60,6 @@
#define MODE_THUNDERSTORM (1<<13)// Enables thunderstorm effects on maps that are compatible with it. (Lit exterior tiles, rain effects)
#define MODE_FACTION_CLASH (1<<14)// Disables scopes, sniper sentries, OBs, shooting corpses, dragging enemy corpses, stripping enemy corpses, increase armor bullet/bomb/internal damage protection

// Gamemode Toggleable Flags
#define MODE_NO_SNIPER_SENTRY (1<<0) /// Upgrade kits will no longer allow you to select long-range upgrades
#define MODE_NO_ATTACK_DEAD (1<<1) /// People will not be able to shoot at corpses
#define MODE_NO_STRIPDRAG_ENEMY (1<<2) /// Can't strip or drag dead enemies
#define MODE_STRIP_NONUNIFORM_ENEMY (1<<3) /// Can strip enemy, but not their boots, uniform, armor, helmet, or ID
#define MODE_STRONG_DEFIBS (1<<4) /// Defibs Ignore Armor
#define MODE_BLOOD_OPTIMIZATION (1<<5) /// Blood spawns without a dry timer, and do not cause footprints
#define MODE_NO_COMBAT_CAS (1<<6) /// Prevents POs and DCCs from creating combat CAS equipment
#define MODE_LZ_PROTECTION (1<<7) /// Prevents the LZ from being mortared
#define MODE_SHIPSIDE_SD (1<<8) /// Toggles whether Predators can big SD when not on the groundmap
#define MODE_HARDCORE_PERMA (1<<9) /// Toggles Hardcore for all marines, meaning they instantly perma upon death
#define MODE_DISPOSABLE_MOBS (1<<10) // Toggles if mobs fit in disposals or not. Off by default.
#define MODE_BYPASS_JOE (1<<11) // Toggles if ghosts can bypass Working Joe spawn limitations, does NOT bypass WL requirement. Off by default.
#define MODE_DISABLE_JOE_RESPAWN (1<<12) // Toggles if ghosts can respawn as Working Joes after dying as one when 15 minutes have passed. Off by default
#define MODE_INDESTRUCTIBLE_SPLINTS (1<<13) //Toggle is splints are to become nanosplints
#define MODE_NO_INTERNAL_BLEEDING (1<<14) // Toggles all internal bleeding behavior to cause normal bleeding instead
#define MODE_LZ_HAZARD_ACTIVATED (1<<15) // Distress Signal: Spawns miasma 3 minutes after round start
#define MODE_MORTAR_LASER_WARNING (1<<16) // Blinking laser before mortar impact


#define ROUNDSTATUS_FOG_DOWN 1
#define ROUNDSTATUS_PODDOORS_OPEN 2

Expand Down
17 changes: 0 additions & 17 deletions code/_globalvars/bitfields.dm
Original file line number Diff line number Diff line change
Expand Up @@ -424,23 +424,6 @@ DEFINE_BITFIELD(flags_round_type, list(
"MODE_FACTION_CLASH" = MODE_FACTION_CLASH,
))

DEFINE_BITFIELD(toggleable_flags, list(
"MODE_NO_SNIPER_SENTRY" = MODE_NO_SNIPER_SENTRY,
"MODE_NO_ATTACK_DEAD" = MODE_NO_ATTACK_DEAD,
"MODE_NO_STRIPDRAG_ENEMY" = MODE_NO_STRIPDRAG_ENEMY,
"MODE_STRIP_NONUNIFORM_ENEMY" = MODE_STRIP_NONUNIFORM_ENEMY,
"MODE_STRONG_DEFIBS" = MODE_STRONG_DEFIBS,
"MODE_BLOOD_OPTIMIZATION" = MODE_BLOOD_OPTIMIZATION,
"MODE_NO_COMBAT_CAS" = MODE_NO_COMBAT_CAS,
"MODE_LZ_PROTECTION" = MODE_LZ_PROTECTION,
"MODE_SHIPSIDE_SD" = MODE_SHIPSIDE_SD,
"MODE_HARDCORE_PERMA" = MODE_HARDCORE_PERMA,
"MODE_DISPOSABLE_MOBS" = MODE_DISPOSABLE_MOBS,
"MODE_BYPASS_JOE" = MODE_BYPASS_JOE,
"MODE_DISABLE_JOE_RESPAWN" = MODE_DISABLE_JOE_RESPAWN,
"MODE_LZ_HAZARD_ACTIVATED" = MODE_LZ_HAZARD_ACTIVATED
))

DEFINE_BITFIELD(state, list(
"OBJECTIVE_INACTIVE" = OBJECTIVE_INACTIVE,
"OBJECTIVE_ACTIVE" = OBJECTIVE_ACTIVE,
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/item_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@


/obj/item/proc/attack(mob/living/M, mob/living/user)
if((flags_item & NOBLUDGEON) || (MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_ATTACK_DEAD) && M.stat == DEAD && !user.get_target_lock(M.faction_group)))
if((flags_item & NOBLUDGEON) || (MODE_HAS_MODIFIER(/datum/gamemode_modifier/disable_attacking_corpses) && M.stat == DEAD && !user.get_target_lock(M.faction_group)))
return FALSE

if(SEND_SIGNAL(M, COMSIG_ITEM_ATTEMPT_ATTACK, user, src) & COMPONENT_CANCEL_ATTACK) //Sent by target mob.
Expand Down
4 changes: 0 additions & 4 deletions code/controllers/subsystem/ticker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,6 @@ SUBSYSTEM_DEF(ticker)

REDIS_PUBLISH("byond.round", "type" = "round-start")

for(var/client/C in GLOB.admins)
remove_verb(C, GLOB.roundstart_mod_verbs)
GLOB.admin_verbs_minor_event -= GLOB.roundstart_mod_verbs

return TRUE

/// Try to effectively setup gamemode and start now
Expand Down
2 changes: 1 addition & 1 deletion code/datums/elements/strippable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@

if (ishuman(source))
var/mob/living/carbon/human/sourcehuman = source
if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (sourcehuman.stat == DEAD || sourcehuman.health < HEALTH_THRESHOLD_CRIT) && !sourcehuman.get_target_lock(user.faction_group))
if(MODE_HAS_MODIFIER(/datum/gamemode_modifier/disable_stripdrag_enemy) && (sourcehuman.stat == DEAD || sourcehuman.health < HEALTH_THRESHOLD_CRIT) && !sourcehuman.get_target_lock(user.faction_group))
to_chat(user, SPAN_WARNING("You can't strip items of a crit or dead member of another faction!"))
return FALSE

Expand Down
2 changes: 1 addition & 1 deletion code/datums/mob_hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,7 @@ GLOBAL_LIST_INIT_TYPED(huds, /datum/mob_hud, list(
holder2_set = 1
return

holder.icon_state = HAS_TRAIT(src, TRAIT_HARDCORE) || MODE_HAS_TOGGLEABLE_FLAG(MODE_HARDCORE_PERMA) ? "hudhcdead" : "huddead"
holder.icon_state = HAS_TRAIT(src, TRAIT_HARDCORE) || MODE_HAS_MODIFIER(/datum/gamemode_modifier/permadeath) ? "hudhcdead" : "huddead"
if(!holder2_set)
holder2.icon_state = holder.icon_state
holder3.icon_state = "huddead"
Expand Down
13 changes: 8 additions & 5 deletions code/game/gamemodes/cm_initialize.dm
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,10 @@ Additional game mode variables.
var/evolution_ovipositor_threshold = FALSE

var/flags_round_type = NO_FLAGS
var/toggleable_flags = NO_FLAGS
///List of references to all non-abstract /datum/gamemode_modifiers
var/round_modifiers = list()
///List of typepaths of all /datum/gamemode_modifiers that start enabled
var/starting_round_modifiers = list()


/datum/game_mode/proc/get_roles_list()
Expand Down Expand Up @@ -1169,24 +1172,24 @@ Additional game mode variables.
to_chat(joe_candidate, SPAN_WARNING("You are not whitelisted! You may apply on the forums to be whitelisted as a synth."))
return

if(MODE_HAS_TOGGLEABLE_FLAG(MODE_DISABLE_JOE_RESPAWN) && (joe_candidate.ckey in joes)) // No joe respawns if already a joe before
if(MODE_HAS_MODIFIER(/datum/gamemode_modifier/disable_wj_respawns) && (joe_candidate.ckey in joes)) // No joe respawns if already a joe before
to_chat(joe_candidate, SPAN_WARNING("Working Joe respawns are disabled!"))
return FALSE

var/deathtime = world.time - joe_candidate.timeofdeath
if((deathtime < JOE_JOIN_DEAD_TIME && (joe_candidate.ckey in joes)) && !MODE_HAS_TOGGLEABLE_FLAG(MODE_BYPASS_JOE))
if((deathtime < JOE_JOIN_DEAD_TIME && (joe_candidate.ckey in joes)) && !MODE_HAS_MODIFIER(/datum/gamemode_modifier/ignore_wj_restrictions))
to_chat(joe_candidate, SPAN_WARNING("You have been dead for [DisplayTimeText(deathtime)]. You need to wait <b>[DisplayTimeText(JOE_JOIN_DEAD_TIME - deathtime)]</b> before rejoining as a Working Joe!"))
return FALSE

// council doesn't count towards this conditional.
if(joe_job.get_whitelist_status(joe_candidate.client) == WHITELIST_NORMAL)
var/joe_max = joe_job.total_positions
if((joe_job.current_positions >= joe_max) && !MODE_HAS_TOGGLEABLE_FLAG(MODE_BYPASS_JOE))
if((joe_job.current_positions >= joe_max) && !MODE_HAS_MODIFIER(/datum/gamemode_modifier/ignore_wj_restrictions))
if(show_warning)
to_chat(joe_candidate, SPAN_WARNING("Only [joe_max] Working Joes may spawn per round."))
return

if(!GLOB.enter_allowed && !MODE_HAS_TOGGLEABLE_FLAG(MODE_BYPASS_JOE))
if(!GLOB.enter_allowed && !MODE_HAS_MODIFIER(/datum/gamemode_modifier/ignore_wj_restrictions))
if(show_warning)
to_chat(joe_candidate, SPAN_WARNING("There is an administrative lock from entering the game."))
return
Expand Down
6 changes: 3 additions & 3 deletions code/game/gamemodes/colonialmarines/colonialmarines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@
/datum/game_mode/colonialmarines/proc/start_lz_hazards()
if(SSobjectives.first_drop_complete)
return // Just for sanity
if(!MODE_HAS_TOGGLEABLE_FLAG(MODE_LZ_HAZARD_ACTIVATED))
if(!MODE_HAS_MODIFIER(/datum/gamemode_modifier/lz_roundstart_miasma))
return

log_game("Distress Signal LZ hazards active!")
Expand Down Expand Up @@ -419,8 +419,8 @@
evolution_ovipositor_threshold = TRUE
msg_admin_niche("Xenomorphs now require the queen's ovipositor for evolution progress.")

if(!GLOB.resin_lz_allowed && world.time >= SSticker.round_start_time + round_time_resin)
set_lz_resin_allowed(TRUE)
if(!MODE_HAS_MODIFIER(/datum/gamemode_modifier/lz_weeding) && world.time >= SSticker.round_start_time + round_time_resin)
MODE_SET_MODIFIER(/datum/gamemode_modifier/lz_weeding, TRUE)

if(next_stat_check <= world.time)
add_current_round_status_to_end_results((next_stat_check ? "" : "Round Start"))
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/colonialmarines/whiskey_outpost.dm
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
var/list/whiskey_outpost_waves = list()

hardcore = TRUE
starting_round_modifiers = list(/datum/gamemode_modifier/permadeath)

votable = TRUE
vote_cycle = 75 // approx. once every 5 days, if it wins the vote
Expand All @@ -91,7 +92,6 @@
return 1

/datum/game_mode/whiskey_outpost/pre_setup()
SSticker.mode.toggleable_flags ^= MODE_HARDCORE_PERMA
for(var/obj/effect/landmark/whiskey_outpost/xenospawn/X)
xeno_spawns += X.loc
for(var/obj/effect/landmark/whiskey_outpost/supplydrops/S)
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/extended/cm_vs_upp.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "Faction Clash UPP CM"
config_tag = "Faction Clash UPP CM"
flags_round_type = MODE_THUNDERSTORM|MODE_FACTION_CLASH
toggleable_flags = MODE_NO_SNIPER_SENTRY|MODE_NO_ATTACK_DEAD|MODE_NO_STRIPDRAG_ENEMY|MODE_STRONG_DEFIBS|MODE_BLOOD_OPTIMIZATION|MODE_NO_COMBAT_CAS|MODE_INDESTRUCTIBLE_SPLINTS|MODE_NO_INTERNAL_BLEEDING|MODE_MORTAR_LASER_WARNING
starting_round_modifiers = list(/datum/gamemode_modifier/blood_optimization, /datum/gamemode_modifier/defib_past_armor, /datum/gamemode_modifier/disable_combat_cas, /datum/gamemode_modifier/disable_ib, /datum/gamemode_modifier/disable_attacking_corpses, /datum/gamemode_modifier/disable_long_range_sentry, /datum/gamemode_modifier/disable_stripdrag_enemy, /datum/gamemode_modifier/indestructible_splints, /datum/gamemode_modifier/mortar_laser_warning)
taskbar_icon = 'icons/taskbar/gml_hvh.png'

/datum/game_mode/extended/faction_clash/cm_vs_upp/get_roles_list()
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/extended/extended_clash.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "Faction Clash"
config_tag = "Faction Clash"
flags_round_type = MODE_THUNDERSTORM|MODE_FACTION_CLASH
toggleable_flags = MODE_NO_SNIPER_SENTRY|MODE_NO_ATTACK_DEAD|MODE_NO_STRIPDRAG_ENEMY|MODE_STRONG_DEFIBS|MODE_BLOOD_OPTIMIZATION|MODE_NO_COMBAT_CAS|MODE_INDESTRUCTIBLE_SPLINTS|MODE_MORTAR_LASER_WARNING
starting_round_modifiers = list(/datum/gamemode_modifier/blood_optimization, /datum/gamemode_modifier/defib_past_armor, /datum/gamemode_modifier/disable_combat_cas, /datum/gamemode_modifier/disable_long_range_sentry, /datum/gamemode_modifier/disable_stripdrag_enemy, /datum/gamemode_modifier/indestructible_splints, /datum/gamemode_modifier/mortar_laser_warning)

/datum/game_mode/extended/faction_clash/get_roles_list()
return GLOB.ROLES_FACTION_CLASH
Expand Down
1 change: 1 addition & 0 deletions code/game/gamemodes/game_mode.dm
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ GLOBAL_VAR_INIT(cas_tracking_id_increment, 0) //this var used to assign unique t
spawn_static_comms()
if(corpses_to_spawn)
generate_corpses()
initialize_gamemode_modifiers()
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MODE_PRESETUP)
return 1

Expand Down
117 changes: 117 additions & 0 deletions code/game/gamemodes/round_modifiers.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
/// Sets and enables all applicable gamemode modifiers
/datum/game_mode/proc/initialize_gamemode_modifiers()
var/list/default_modifiers = starting_round_modifiers

for(var/datum/gamemode_modifier/current_modifier as anything in subtypesof(/datum/gamemode_modifier))
if(current_modifier == current_modifier::abstract_type)
continue

var/starts_enabled = FALSE
for(var/starting_modifier in default_modifiers)
if(starting_modifier != current_modifier)
continue
starts_enabled = TRUE
default_modifiers -= starting_modifier
break

var/datum/gamemode_modifier/modifier = new current_modifier
if(starts_enabled)
modifier.active = TRUE
round_modifiers[current_modifier] += modifier

/// Returns the state of the modifier, using its typepath
/datum/game_mode/proc/get_gamemode_modifier(modifier_typepath)
var/datum/gamemode_modifier/modifier = round_modifiers[modifier_typepath]
if(!modifier)
CRASH("Invalid gamemode modifier, [modifier_typepath], was attempted to be checked.")
return modifier.active

/// Sets the state of the modifier, using its typepath and the state to set it to
/datum/game_mode/proc/set_gamemode_modifier(modifier_typepath, enabled = FALSE)
var/datum/gamemode_modifier/modifier = round_modifiers[modifier_typepath]
if(!modifier)
CRASH("Invalid gamemode modifier, [modifier_typepath], was attempted to be set.")
modifier.active = enabled
return TRUE

/datum/gamemode_modifier
var/active = FALSE
var/modifier_name
var/modifier_desc
var/datum/gamemode_modifier/abstract_type = /datum/gamemode_modifier

/datum/gamemode_modifier/blood_optimization
modifier_name = "Blood Optimizations"
modifier_desc = "Blood dries instantly, footsteps cannot get bloodied."

/datum/gamemode_modifier/defib_past_armor
modifier_name = "Strong Defibrillators"
modifier_desc = "Allows defibrillators to ignore armor when reviving."

/datum/gamemode_modifier/disable_combat_cas
modifier_name = "Disable Combat CAS"
modifier_desc = "Prevents purchasing weapons or ammo in the dropship's part fabricators."

/datum/gamemode_modifier/disable_attacking_corpses
modifier_name = "Disable Attacking Corpses"
modifier_desc = "Prevents weapons from hitting dead mobs, and blocks executions."

/datum/gamemode_modifier/disable_ib
modifier_name = "Disable Internal Bleeding"
modifier_desc = "Prevents mobs from getting internal bleeding when injured."

/datum/gamemode_modifier/disable_long_range_sentry
modifier_name = "Disable Long Range Sentry Upgrades"
modifier_desc = "Prevents sentries from upgrading to long range variants. Applies to DMR and Long-Range Plasma upgrades."

/datum/gamemode_modifier/disable_ob
modifier_name = "Disable Orbital Bombardment Cannon"
modifier_desc = "Prevents the Orbital Bombardment system from firing OB warheads."

/datum/gamemode_modifier/disable_strip_essentials
modifier_name = "Disable Stripping Hostiles Essentials"
modifier_desc = "Requires Disable Stripping Hostiles enabled. Allows factions to strip non-essentials from other factions. Essentials are ID, helmet, armor, uniform, and boots."

/datum/gamemode_modifier/disable_stripdrag_enemy
modifier_name = "Disable Stripping Hostiles"
modifier_desc = "Prevents factions from stripping or dragging other factions. Applies to stripping, dragging, sensors, splints, and internals."

/datum/gamemode_modifier/disable_wj_respawns
modifier_name = "Disable Working Joe Respawning"
modifier_desc = "Prevents players from joining as Working Joe multiple times in a round."

/datum/gamemode_modifier/disposable_mobs
modifier_name = "Allow Disposing Mobs"
modifier_desc = "Allows non-crawler mobs to enter non-narrow disposals systems."

/datum/gamemode_modifier/ignore_wj_restrictions
modifier_name = "Disable Working Joe Joining Restrictions"
modifier_desc = "Removes all restrictions on Working Joe's joining. Applies to respawn cooldown, slot cap, and administrative locks."

/datum/gamemode_modifier/indestructible_splints
modifier_name = "Indestructible Splints"
modifier_desc = "Turns splints into nanosplints when the splint is created."

/datum/gamemode_modifier/lz_mortar_protection
modifier_name = "Landing Zone Mortar Protection"
modifier_desc = "Prevents mortars from targetting the primary landing zone."

/datum/gamemode_modifier/lz_roundstart_miasma
modifier_name = "Roundstart Landing Zone Miasma"
modifier_desc = "Miasma is applied to both landing zones roundstart. Does nothing if activated after miasma trigger 3 minutes into round."

/datum/gamemode_modifier/lz_weeding
modifier_name = "Landing Zone Weeding"
modifier_desc = "Allows xenomorphs to weed all landing zones."

/datum/gamemode_modifier/mortar_laser_warning
modifier_name = "Mortar Telegraphing"
modifier_desc = "Shows a visual warning of where a mortar will hit."

/datum/gamemode_modifier/permadeath
modifier_name = "Human Permadeath"
modifier_desc = "Humans will permanently die without possibility of revival."

/datum/gamemode_modifier/yautja_shipside_large_sd
modifier_name = "Yautja Shipside Large SD"
modifier_desc = "Allows Yautja to large self destruct on the mainship z-level."
4 changes: 2 additions & 2 deletions code/game/objects/effects/decals/cleanable/blood/blood.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
basecolor = b_color
update_icon()

if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_BLOOD_OPTIMIZATION))
if(MODE_HAS_MODIFIER(/datum/gamemode_modifier/blood_optimization))
amount = 0
return

Expand All @@ -49,7 +49,7 @@
if(!amount || !ishuman(AM))
return

if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_BLOOD_OPTIMIZATION))
if(MODE_HAS_MODIFIER(/datum/gamemode_modifier/blood_optimization))
return

var/mob/living/carbon/human/H = AM
Expand Down
6 changes: 0 additions & 6 deletions code/game/objects/effects/spawners/random.dm
Original file line number Diff line number Diff line change
Expand Up @@ -576,9 +576,6 @@
// OB spawners
*/


GLOBAL_VAR_INIT(spawn_ob, TRUE)

/obj/effect/spawner/random/warhead
name = "random orbital warhead"
desc = "This is a random orbital warhead."
Expand All @@ -588,9 +585,6 @@ GLOBAL_VAR_INIT(spawn_ob, TRUE)
spawn_on_roundstart = TRUE

/obj/effect/spawner/random/warhead/item_to_spawn()
if(!GLOB.spawn_ob)
return /obj/item/paper/warhead_recycle

var/list/spawnables = list(
/obj/structure/ob_ammo/warhead/explosive,
/obj/structure/ob_ammo/warhead/incendiary,
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/binoculars.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

if(SEND_SIGNAL(user, COMSIG_BINOCULAR_ATTACK_SELF, src))
return
if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_SNIPER_SENTRY))
if(MODE_HAS_MODIFIER(/datum/gamemode_modifier/disable_long_range_sentry))
zoom(user, hvh_tile_offset, hvh_zoom_viewsize)
else
zoom(user, tile_offset, viewsize)
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/devices/defibrillator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
currentuses = floor(dcell.charge / charge_cost)
if(maxuses != 1)
. += SPAN_INFO("It has [currentuses] out of [maxuses] uses left in its internal battery.")
if(MODE_HAS_TOGGLEABLE_FLAG(MODE_STRONG_DEFIBS) || !blocked_by_suit && !istype(src, /obj/item/device/defibrillator/synthetic))
if(MODE_HAS_MODIFIER(/datum/gamemode_modifier/defib_past_armor) || !blocked_by_suit && !istype(src, /obj/item/device/defibrillator/synthetic))
. += SPAN_NOTICE("This defibrillator will ignore worn armor.")

/obj/item/device/defibrillator/attack_self(mob/living/carbon/human/user)
Expand Down Expand Up @@ -172,7 +172,7 @@
user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Patient's general condition does not allow reviving."))
return

if((!MODE_HAS_TOGGLEABLE_FLAG(MODE_STRONG_DEFIBS) && blocked_by_suit) && H.wear_suit && (istype(H.wear_suit, /obj/item/clothing/suit/armor) || istype(H.wear_suit, /obj/item/clothing/suit/storage/marine)) && prob(95))
if((!MODE_HAS_MODIFIER(/datum/gamemode_modifier/defib_past_armor) && blocked_by_suit) && H.wear_suit && (istype(H.wear_suit, /obj/item/clothing/suit/armor) || istype(H.wear_suit, /obj/item/clothing/suit/storage/marine)) && prob(95))
user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Paddles registering >100,000 ohms, Possible cause: Suit or Armor interfering."))
return

Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/stacks/medical.dm
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@

/obj/item/stack/medical/splint/Initialize(mapload, amount)
. = ..()
if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_INDESTRUCTIBLE_SPLINTS))
if(MODE_HAS_MODIFIER(/datum/gamemode_modifier/indestructible_splints))
icon_state = "nanosplint"
indestructible_splints = TRUE
update_icon()
Expand Down
Loading

0 comments on commit b9a113c

Please sign in to comment.