diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm
index 17b6e60158..309489742c 100644
--- a/code/__DEFINES/antagonists.dm
+++ b/code/__DEFINES/antagonists.dm
@@ -16,3 +16,5 @@
#define ANTAG_DATUM_ABDUCTOR /datum/antagonist/abductor
#define ANTAG_DATUM_ABDUCTOR_SCIENTIST /datum/antagonist/abductor/scientist
#define ANTAG_DATUM_ABDUCTOR_AGENT /datum/antagonist/abductor/agent
+#define ANTAG_DATUM_MONKEY /datum/antagonist/monkey
+#define ANTAG_DATUM_MONKEY_LEADER /datum/antagonist/monkey/leader
diff --git a/code/datums/antagonists/monkey.dm b/code/datums/antagonists/monkey.dm
index 8d7462b567..b1c5642a39 100644
--- a/code/datums/antagonists/monkey.dm
+++ b/code/datums/antagonists/monkey.dm
@@ -7,14 +7,14 @@
name = "Monkey"
job_rank = ROLE_MONKEY
roundend_category = "monkeys"
- var/datum/objective_team/monkey/monkey_team
+ var/datum/team/monkey/monkey_team
/datum/antagonist/monkey/on_gain()
. = ..()
SSticker.mode.ape_infectees += owner
owner.special_role = "Infected Monkey"
- var/datum/disease/D = new /datum/disease/transformation/jungle_fever
+ var/datum/disease/D = new /datum/disease/transformation/jungle_fever/monkeymode
if(!owner.current.HasDisease(D))
D.affected_mob = owner
owner.current.viruses += D
@@ -38,13 +38,13 @@
if(D)
D.cure()
-/datum/antagonist/monkey/create_team(datum/objective_team/monkey/new_team)
+/datum/antagonist/monkey/create_team(datum/team/monkey/new_team)
if(!new_team)
for(var/datum/antagonist/monkey/N in get_antagonists(/datum/antagonist/monkey, TRUE))
if(N.monkey_team)
monkey_team = N.monkey_team
return
- monkey_team = new /datum/objective_team/monkey
+ monkey_team = new /datum/team/monkey
monkey_team.update_objectives()
return
if(!istype(new_team))
@@ -60,9 +60,6 @@
/datum/antagonist/monkey/leader/on_gain()
. = ..()
- var/datum/disease/D = (/datum/disease/transformation/jungle_fever in owner.current.viruses)
- if(D)
- D.visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC
var/obj/item/organ/heart/freedom/F = new
F.Insert(owner.current, drop_if_replaced = FALSE)
SSticker.mode.ape_leaders += owner
@@ -99,45 +96,45 @@
return TRUE
return FALSE
-/datum/objective_team/monkey
+/datum/team/monkey
name = "Monkeys"
-/datum/objective_team/monkey/proc/update_objectives()
+/datum/team/monkey/proc/update_objectives()
objectives = list()
var/datum/objective/monkey/O = new /datum/objective/monkey()
O.team = src
objectives += O
return
-/datum/objective_team/monkey/proc/infected_monkeys_alive()
+/datum/team/monkey/proc/infected_monkeys_alive()
var/datum/disease/D = new /datum/disease/transformation/jungle_fever()
for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list)
if(M.HasDisease(D))
return TRUE
return FALSE
-/datum/objective_team/monkey/proc/infected_monkeys_escaped()
+/datum/team/monkey/proc/infected_monkeys_escaped()
var/datum/disease/D = new /datum/disease/transformation/jungle_fever()
for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list)
if(M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase()))
return TRUE
return FALSE
-/datum/objective_team/monkey/proc/infected_humans_escaped()
+/datum/team/monkey/proc/infected_humans_escaped()
var/datum/disease/D = new /datum/disease/transformation/jungle_fever()
for(var/mob/living/carbon/human/M in GLOB.alive_mob_list)
if(M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase()))
return TRUE
return FALSE
-/datum/objective_team/monkey/proc/infected_humans_alive()
+/datum/team/monkey/proc/infected_humans_alive()
var/datum/disease/D = new /datum/disease/transformation/jungle_fever()
for(var/mob/living/carbon/human/M in GLOB.alive_mob_list)
if(M.HasDisease(D))
return TRUE
return FALSE
-/datum/objective_team/monkey/proc/get_result()
+/datum/team/monkey/proc/get_result()
if(infected_monkeys_escaped())
return MONKEYS_ESCAPED
if(infected_monkeys_alive())
@@ -146,7 +143,7 @@
return DISEASE_LIVED
return MONKEYS_DIED
-/datum/objective_team/monkey/roundend_report()
+/datum/team/monkey/roundend_report()
var/list/parts = list()
switch(get_result())
if(MONKEYS_ESCAPED)
@@ -161,10 +158,13 @@
if(MONKEYS_DIED)
parts += "Monkey Major Defeat!"
parts += "All the monkeys died, and Jungle Fever was wiped out!"
- if(LAZYLEN(SSticker.mode.ape_leaders))
+ var/list/leaders = get_antagonists(/datum/antagonist/monkey/leader, TRUE)
+ var/list/monkeys = get_antagonists(/datum/antagonist/monkey, TRUE)
+
+ if(LAZYLEN(leaders))
parts += ""
parts += printplayerlist(SSticker.mode.ape_leaders)
- if(LAZYLEN(SSticker.mode.ape_infectees))
+ if(LAZYLEN(monkeys))
parts += ""
parts += printplayerlist(SSticker.mode.ape_infectees)
return "
[parts.Join("
")]
"
\ No newline at end of file
diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm
index 7c08a3908f..ffc20cc9cb 100644
--- a/code/datums/diseases/_MobProcs.dm
+++ b/code/datums/diseases/_MobProcs.dm
@@ -3,29 +3,29 @@
for(var/thing in viruses)
var/datum/disease/DD = thing
if(D.IsSame(DD))
- return 1
- return 0
+ return TRUE
+ return FALSE
/mob/proc/CanContractDisease(datum/disease/D)
if(stat == DEAD)
- return 0
+ return FALSE
if(D.GetDiseaseID() in resistances)
- return 0
+ return FALSE
if(HasDisease(D))
- return 0
+ return FALSE
if(!(type in D.viable_mobtypes))
- return 0
+ return FALSE
- return 1
+ return TRUE
/mob/proc/ContactContractDisease(datum/disease/D)
if(!CanContractDisease(D))
- return 0
+ return FALSE
AddDisease(D)
@@ -53,12 +53,13 @@
else
DD.vars[V] = D.vars[V]
+ DD.after_add()
DD.affected_mob.med_hud_set_status()
/mob/living/carbon/ContactContractDisease(datum/disease/D, target_zone)
if(!CanContractDisease(D))
- return 0
+ return FALSE
var/obj/item/clothing/Cl = null
var/passed = TRUE
diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm
index 951edece23..5d49d7a523 100644
--- a/code/datums/diseases/_disease.dm
+++ b/code/datums/diseases/_disease.dm
@@ -60,14 +60,14 @@
/datum/disease/proc/has_cure()
if(!(disease_flags & CURABLE))
- return 0
+ return FALSE
. = cures.len
for(var/C_id in cures)
if(!affected_mob.reagents.has_reagent(C_id))
.--
if(!. || (needs_all_cures && . < cures.len))
- return 0
+ return FALSE
//Airborne spreading
/datum/disease/proc/spread(force_spread = 0)
@@ -111,8 +111,8 @@
/datum/disease/proc/IsSame(datum/disease/D)
if(istype(src, D.type))
- return 1
- return 0
+ return TRUE
+ return FALSE
/datum/disease/proc/Copy()
@@ -120,6 +120,9 @@
D.strain_data = strain_data.Copy()
return D
+/datum/disease/proc/after_add()
+ return
+
/datum/disease/proc/GetDiseaseID()
return "[type]"
diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm
index 60622f61cb..8bce15cf3c 100644
--- a/code/datums/diseases/transformation.dm
+++ b/code/datums/diseases/transformation.dm
@@ -65,8 +65,8 @@
/datum/disease/transformation/jungle_fever
name = "Jungle Fever"
- cure_text = "Bananas"
- cures = list("banana")
+ cure_text = "Death."
+ cures = list("adminordrazine")
spread_text = "Monkey Bites"
spread_flags = VIRUS_SPREAD_SPECIAL
viable_mobtypes = list(/mob/living/carbon/monkey, /mob/living/carbon/human)
@@ -88,9 +88,12 @@
stage5 = list("You feel like monkeying around.")
/datum/disease/transformation/jungle_fever/do_disease_transformation(mob/living/carbon/affected_mob)
- if(!ismonkey(affected_mob))
- SSticker.mode.add_monkey(affected_mob.mind)
- affected_mob.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE)
+ if(affected_mob.mind && !is_monkey(affected_mob))
+ add_monkey(affected_mob.mind)
+ if(ishuman(affected_mob))
+ var/mob/living/carbon/monkey/M = affected_mob.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE)
+ M.ventcrawler = VENTCRAWLER_ALWAYS
+
/datum/disease/transformation/jungle_fever/stage_act()
..()
@@ -107,9 +110,18 @@
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."))
/datum/disease/transformation/jungle_fever/cure()
- SSticker.mode.remove_monkey(affected_mob.mind)
+ remove_monkey(affected_mob.mind)
..()
+/datum/disease/transformation/jungle_fever/monkeymode
+ visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC
+ disease_flags = CAN_CARRY //no vaccines! no cure!
+
+/datum/disease/transformation/jungle_fever/monkeymode/after_add()
+ if(affected_mob && !is_monkey_leader(affected_mob.mind))
+ visibility_flags = NONE
+
+
/datum/disease/transformation/robot
diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm
index 2e5bd580bf..b452eff382 100644
--- a/code/datums/emotes.dm
+++ b/code/datums/emotes.dm
@@ -16,8 +16,9 @@
var/emote_type = EMOTE_VISIBLE //Whether the emote is visible or audible
var/restraint_check = FALSE //Checks if the mob is restrained before performing the emote
var/muzzle_ignore = FALSE //Will only work if the emote is EMOTE_AUDIBLE
- var/list/mob_type_allowed_typecache //Types that are allowed to use that emote
+ var/list/mob_type_allowed_typecache = list(/mob) //Types that are allowed to use that emote
var/list/mob_type_blacklist_typecache //Types that are NOT allowed to use that emote
+ var/list/mob_type_ignore_stat_typecache
var/stat_allowed = CONSCIOUS
var/static/list/emote_list = list()
@@ -26,6 +27,7 @@
emote_list[key_third_person] = src
mob_type_allowed_typecache = typecacheof(mob_type_allowed_typecache)
mob_type_blacklist_typecache = typecacheof(mob_type_blacklist_typecache)
+ mob_type_ignore_stat_typecache = typecacheof(mob_type_ignore_stat_typecache)
/datum/emote/proc/run_emote(mob/user, params, type_override)
. = TRUE
@@ -37,9 +39,10 @@
msg = replace_pronoun(user, msg)
- var/mob/living/L = user
- for(var/obj/item/implant/I in L.implants)
- I.trigger(key, L)
+ if(isliving(user))
+ var/mob/living/L = user
+ for(var/obj/item/implant/I in L.implants)
+ I.trigger(key, L)
if(!msg)
return
@@ -97,7 +100,7 @@
return FALSE
if(is_type_in_typecache(user, mob_type_blacklist_typecache))
return FALSE
- if(status_check)
+ if(status_check && !is_type_in_typecache(user, mob_type_ignore_stat_typecache))
if(user.stat > stat_allowed || (user.status_flags & FAKEDEATH))
to_chat(user, "You cannot [key] while unconscious.")
return FALSE
diff --git a/code/game/gamemodes/miniantags/monkey/monkey.dm b/code/game/gamemodes/miniantags/monkey/monkey.dm
index 8e02d41441..7e6d92d927 100644
--- a/code/game/gamemodes/miniantags/monkey/monkey.dm
+++ b/code/game/gamemodes/miniantags/monkey/monkey.dm
@@ -1,5 +1,6 @@
/datum/game_mode
var/list/ape_infectees = list()
+ var/list/ape_leaders = list()
/datum/game_mode/monkey
name = "monkey"
@@ -21,6 +22,9 @@
var/players_per_carrier = 30
+ var/datum/team/monkey/monkey_team
+
+
/datum/game_mode/monkey/pre_setup()
carriers_to_make = max(round(num_players()/players_per_carrier, 1), 1)
@@ -30,79 +34,59 @@
break
var/datum/mind/carrier = pick(antag_candidates)
carriers += carrier
- carrier.special_role = "monkey"
+ carrier.special_role = "Monkey Leader"
carrier.restricted_roles = restricted_jobs
log_game("[carrier.key] (ckey) has been selected as a Jungle Fever carrier")
antag_candidates -= carrier
if(!carriers.len)
- return 0
- return 1
+ return FALSE
+ return TRUE
/datum/game_mode/monkey/announce()
to_chat(world, "The current game mode is - Monkey!")
to_chat(world, "One or more crewmembers have been infected with Jungle Fever! Crew: Contain the outbreak. None of the infected monkeys may escape alive to CentCom. Monkeys: Ensure that your kind lives on! Rise up against your captors!")
-
-/datum/game_mode/monkey/proc/greet_carrier(datum/mind/carrier)
- to_chat(carrier.current, "You are the Jungle Fever patient zero!!")
- to_chat(carrier.current, "You have been planted onto this station by the Animal Rights Consortium.")
- to_chat(carrier.current, "Soon the disease will transform you into an ape. Afterwards, you will be able spread the infection to others with a bite.")
- to_chat(carrier.current, "While your infection strain is undetectable by scanners, any other infectees will show up on medical equipment.")
- to_chat(carrier.current, "Your mission will be deemed a success if any of the live infected monkeys reach CentCom.")
- carrier.current.playsound_local(get_turf(carrier.current), 'sound/ambience/antag/monkey.ogg', 100, FALSE, pressure_affected = FALSE)
- return
-
/datum/game_mode/monkey/post_setup()
for(var/datum/mind/carriermind in carriers)
- greet_carrier(carriermind)
- ape_infectees += carriermind
-
- var/datum/disease/D = new /datum/disease/transformation/jungle_fever
- D.visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC
- D.affected_mob = carriermind.current
- carriermind.current.viruses += D
- ..()
+ var/datum/antagonist/monkey/M = add_monkey_leader(carriermind, monkey_team)
+ if(M)
+ monkey_team = M.monkey_team
+ return ..()
/datum/game_mode/monkey/check_finished()
if((SSshuttle.emergency.mode == SHUTTLE_ENDGAME) || station_was_nuked)
- return 1
+ return TRUE
if(!round_converted)
for(var/datum/mind/monkey_mind in ape_infectees)
- continuous_sanity_checked = 1
+ continuous_sanity_checked = TRUE
if(monkey_mind.current && monkey_mind.current.stat != DEAD)
- return 0
+ return FALSE
var/datum/disease/D = new /datum/disease/transformation/jungle_fever() //ugly but unfortunately needed
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
- if(H.mind && H.stat != DEAD)
+ if(!(H.z in GLOB.station_z_levels))
+ continue
+ if(H.mind && H.client && H.stat != DEAD)
if(H.HasDisease(D))
- return 0
+ return FALSE
- ..()
+ return ..()
/datum/game_mode/monkey/proc/check_monkey_victory()
if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
- return 0
+ return FALSE
var/datum/disease/D = new /datum/disease/transformation/jungle_fever()
for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list)
if (M.HasDisease(D))
if(M.onCentCom() || M.onSyndieBase())
escaped_monkeys++
if(escaped_monkeys >= monkeys_to_win)
- return 1
+ return TRUE
else
- return 0
-
-/datum/game_mode/proc/add_monkey(datum/mind/monkey_mind)
- ape_infectees |= monkey_mind
- monkey_mind.special_role = "Infected Monkey"
-
-/datum/game_mode/proc/remove_monkey(datum/mind/monkey_mind)
- ape_infectees.Remove(monkey_mind)
- monkey_mind.special_role = null
+ return FALSE
/datum/game_mode/monkey/set_round_result()
@@ -120,3 +104,29 @@
/datum/game_mode/monkey/generate_report()
return "Reports of an ancient [pick("retrovirus", "flesh eating bacteria", "disease", "magical curse blamed on viruses", "banana blight")] outbreak that turn humans into monkeys has been reported in your quadrant. Any such infections may be treated with banana juice. If an outbreak occurs, ensure the station is quarantined to prevent a largescale outbreak at CentCom."
+
+/proc/add_monkey_leader(datum/mind/monkey_mind)
+ if(is_monkey_leader(monkey_mind))
+ return FALSE
+ var/datum/antagonist/monkey/leader/M = monkey_mind.add_antag_datum(ANTAG_DATUM_MONKEY_LEADER)
+ return M
+
+/proc/add_monkey(datum/mind/monkey_mind)
+ if(is_monkey(monkey_mind))
+ return FALSE
+ var/datum/antagonist/monkey/M = monkey_mind.add_antag_datum(ANTAG_DATUM_MONKEY)
+ return M
+
+/proc/remove_monkey(datum/mind/monkey_mind)
+ if(!is_monkey(monkey_mind))
+ return FALSE
+ var/datum/antagonist/monkey/M = monkey_mind.has_antag_datum(ANTAG_DATUM_MONKEY)
+ M.on_removal()
+ return TRUE
+
+/proc/is_monkey_leader(datum/mind/monkey_mind)
+ return monkey_mind && monkey_mind.has_antag_datum(ANTAG_DATUM_MONKEY_LEADER)
+
+/proc/is_monkey(datum/mind/monkey_mind)
+ return monkey_mind && (monkey_mind.has_antag_datum(ANTAG_DATUM_MONKEY) || is_monkey_leader(monkey_mind))
+
diff --git a/code/modules/projectiles/guns/beam_rifle.dm b/code/modules/projectiles/guns/beam_rifle.dm
index ee8036bf44..3b2a7cff08 100644
--- a/code/modules/projectiles/guns/beam_rifle.dm
+++ b/code/modules/projectiles/guns/beam_rifle.dm
@@ -63,7 +63,7 @@
var/projectile_setting_pierce = TRUE
var/delay = 65
var/lastfire = 0
-
+
var/lastprocess = 0
//ZOOMING
@@ -716,44 +716,6 @@
flags_1 = ABSTRACT_1
appearance_flags = 0
-/obj/effect/projectile_beam/proc/scale_to(nx,ny,override=TRUE)
- var/matrix/M
- if(!override)
- M = transform
- else
- M = new
- M.Scale(nx,ny)
- transform = M
-
-/obj/effect/projectile_beam/proc/turn_to(angle,override=TRUE)
- var/matrix/M
- if(!override)
- M = transform
- else
- M = new
- M.Turn(angle)
- transform = M
-
-/obj/effect/projectile_beam/New(angle_override, p_x, p_y, color_override, scaling = 1)
- if(angle_override && p_x && p_y && color_override && scaling)
- apply_vars(angle_override, p_x, p_y, color_override, scaling)
- return ..()
-
-/obj/effect/projectile_beam/proc/apply_vars(angle_override, p_x, p_y, color_override, scaling = 1, new_loc, increment = 0)
- var/mutable_appearance/look = new(src)
- look.pixel_x = p_x
- look.pixel_y = p_y
- if(color_override)
- look.color = color_override
- appearance = look
- scale_to(1,scaling, FALSE)
- turn_to(angle_override, FALSE)
- if(!isnull(new_loc)) //If you want to null it just delete it...
- forceMove(new_loc)
- for(var/i in 1 to increment)
- pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1)
- pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1)
-
/obj/effect/projectile_beam/tracer
icon_state = "tracer_beam"
diff --git a/code/modules/space_transition/space_transition.dm b/code/modules/space_transition/space_transition.dm
index ec5920eba7..edcad9b620 100644
--- a/code/modules/space_transition/space_transition.dm
+++ b/code/modules/space_transition/space_transition.dm
@@ -19,7 +19,7 @@ GLOBAL_LIST_EMPTY(z_levels_list)
neigbours[A] = src
/datum/space_level/proc/set_neigbours(list/L)
- for(var/datum/point/P in L)
+ for(var/datum/space_transition_point/P in L)
if(P.x == xi)
if(P.y == yi+1)
neigbours[TEXT_NORTH] = P.spl
@@ -35,13 +35,13 @@ GLOBAL_LIST_EMPTY(z_levels_list)
neigbours[TEXT_WEST] = P.spl
P.spl.neigbours[TEXT_EAST] = src
-/datum/space_transition //this is explicitly utilitarian datum type made specially for the space map generation and are absolutely unusable for anything else
+/datum/space_transition_point //this is explicitly utilitarian datum type made specially for the space map generation and are absolutely unusable for anything else
var/list/neigbours = list()
var/x
var/y
var/datum/space_level/spl
-/datum/point/New(nx, ny, list/point_grid)
+/datum/space_transition_point/New(nx, ny, list/point_grid)
if(!point_grid)
qdel(src)
return
@@ -55,7 +55,7 @@ GLOBAL_LIST_EMPTY(z_levels_list)
return
point_grid[x][y] = src
-/datum/point/proc/set_neigbours(list/grid)
+/datum/space_transition_point/proc/set_neigbours(list/grid)
var/max_X = grid.len
var/list/max_Y = grid[1]
max_Y = max_Y.len
@@ -86,13 +86,13 @@ GLOBAL_LIST_EMPTY(z_levels_list)
k++
var/list/point_grid[conf_set_len*2+1][conf_set_len*2+1]
var/list/grid = list()
- var/datum/point/P
+ var/datum/space_transition_point/P
for(var/i = 1, i<=conf_set_len*2+1, i++)
for(var/j = 1, j<=conf_set_len*2+1, j++)
- P = new/datum/point(i,j, point_grid)
+ P = new/datum/space_transition_point(i,j, point_grid)
point_grid[i][j] = P
grid.Add(P)
- for(var/datum/point/pnt in grid)
+ for(var/datum/space_transition_point/pnt in grid)
pnt.set_neigbours(point_grid)
P = point_grid[conf_set_len+1][conf_set_len+1]
var/list/possible_points = list()
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 21d15fb609..5da89f125f 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -152,3 +152,17 @@
/obj/item/organ/heart/cybernetic/emp_act()
Stop()
+
+/obj/item/organ/heart/freedom
+ name = "heart of freedom"
+ desc = "This heart pumps with the passion to give... something freedom."
+ var/min_next_adrenaline = 0
+
+/obj/item/organ/heart/freedom/on_life()
+ . = ..()
+ if(owner.health < 5 && world.time > min_next_adrenaline)
+ min_next_adrenaline = world.time + rand(250, 600) //anywhere from 4.5 to 10 minutes
+ to_chat(owner, "You feel yourself dying, but you refuse to give up!")
+ owner.heal_overall_damage(15, 15)
+ if(owner.reagents.get_reagent_amount("ephedrine") < 20)
+ owner.reagents.add_reagent("ephedrine", 10)
\ No newline at end of file
diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm
index d324c95511..385e9cd9d4 100644
--- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm
+++ b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm
@@ -317,7 +317,7 @@
unwield()
return
..()
- if(user.disabilities & CLUMSY && (wielded) && prob(40))
+ if(user.has_disability(DISABILITY_CLUMSY) && (wielded) && prob(40))
impale(user)
return